QA/QC
Drone, field-capture, and pole-loading calc-file batches (SPIDA, O-Calc, PLS) all land as one project. Fan-out analysis runs every analyzer on every pole in seconds. Engineers review like-with-like across ten failure buckets, batch-approve fixes, and ship one bundled deliverable — with an audit trail proving every action.
sustained throughput target
parse + DQ + clearance + sag + guying
review like-with-like
every action, every reviewer
What sets it apart
The chat agent is built around iterating on one pole at a time. QA/QC inverts the question: take a 5,000-pole submittal — drone-collected or pulled straight out of a SPIDA / O-Calc / PLS deck — find the 3% with real issues, fix them as a group, ship one clean export.
Reviewers can re-run analyzers, apply fixes, and re-export as many times as the batch needs without runaway cost. Pricing is structured around per-pole completion, not per-operation.
"Approve all 47 missing-guy findings in this bucket" with a confirmation modal showing the diff summary. j/k keyboard nav for individual review.
Every approve, dismiss, and bulk action is recorded with user, timestamp, before/after diff, and a bulk_action_id. The trail is the proof of human review for utility submittal.
Run v1 with one set of assumptions, v2 with another (different code year, loading area, ruleset). Diff bucket counts side-by-side.
Drone vendor uploads → reviewer org reviews → utility receives. Or single-tenant for utilities reviewing in-house. Same workflow, configurable visibility.
Cleaned-up batch ships as one PLA bundle (SPIDA today, more formats coming). ESRI push is a deliberate manual button — never automatic.
Inputs
QA/QC isn't just for drone data. Source-aware parsers turn drone + field-capture, pole-loading calc files, and bulk GCS folder uploads into the same Universal Pole Model — so every analyzer (clearance, sag, framing, guying, midspan, cross-pole DQ) fires regardless of where the data came from.
Drone-collected and field-capture data from the major vendors normalize through one pipeline. The data-quality validator gates noisy inputs before analyzer time burns.
Multi-pole .spida files split per-pole at upload. Source-aware DQ skips field-data-only checks (no GLC false-positives on declared-spec poles).
Per-pole structured payloads route to the O-Calc parser, then through the same fan-out as every other source.
PLS structures join the same Universal Pole Model so the same clearance, sag, framing, and guying analyzers fire.
Point at a gs:// folder; ingester finds every supported file underneath, dedupes, and queues per-pole tasks.
Every source — drone, calc-file, manual upload — normalizes to the same Universal Pole Model so analyzers don't care where data came from.
How it works
From folder drop to bundled export. Each step writes back to the same batch document so the next step picks up where the last one left off — and so does the next reviewer.
01
Drag-drop a folder of field captures, paste a GCS path, or upload a multi-pole pole-loading deck (SPIDA, O-Calc, PLS). Up to 10k poles per project.
02
Multi-pole calc-file decks are split into per-pole tasks. Repeat captures of the same pole are auto-collapsed to the most recent. ~45% bandwidth saved on a typical drone export.
03
Source-aware parser dispatch (drone JSON / SPIDA / O-Calc / PLS) → data quality → circuit classify → clearance → midspan → guying. Cloud-Tasks queued, ~16 poles/sec sustained.
04
Findings sorted into ten failure buckets. The reviewer picks one and reviews like-with-like instead of pole-by-pole.
05
j/k through findings or "Approve all" the whole bucket with a diff summary. Either way, audit-logged.
06
Re-runnable batch-level scan: duplicate IDs, GPS outliers, coincident pole locations, reference-integrity gaps.
07
One bundled SPIDA file (or the format your utility wants), with the audit trail attached.
08
Forward the cleaned batch to the receiving utility, or push selected fixes to ESRI on demand.
Buckets
Engineers don't think pole-by-pole at 5,000-pole scale — they think bucket-by-bucket. Walk every ampacity-violation finding in one sitting, then every transformer-overload flag, then every avian-protection gap. Walk-through nav with j/k or batch-approve the whole bucket.
Phantom poles, unit anomalies, missing fields, mislabeled measurements, GPS outliers, duplicate IDs.
Crossarm-level guying validation against ANSI strength tables and per-utility framing rules.
Strength-based recommendations for under-sized down-guys and bisect guys.
GO-95 Tables 1 & 2, NESC C2 Tables 232 & 235. Equipment-aware repack with cascading move-crossarm.
Vertical separation between conductor families at midspan, with terrain-aware sag.
Per-conductor GO-95 case-4 ground clearance verdicts under every code-mandated state.
Pin-insulator single-span ambiguity with three mutually-exclusive fix options.
Same-voltage Table 2 pairs surfaced for a one-click "same circuit?" disambiguation.
IEEE 738 thermal balance against the conductor's rated ampacity table or recomputed from ambient + wind + solar.
Change-of-state catenary against utility-published max tension per loading district + design temp.
IEEE 142 driven-rod resistance against the utility's max Ω limit (NESC §94B4 25Ω as the floor).
Tree-trim clearance vs NESC §218 + GO-95 §37 fire-zone enhancement; flags clearance shortfalls before the next growth season.
Per-pole zone membership across raptor / eagle-buffer / sage-grouse / migratory-flyway zones; surfaces poles missing IEEE 1656 cover or bushing protection.
IEEE C57.91 hottest-spot temperature + Arrhenius loss-of-life accelerator. Flags loading conditions above 110°C normal life.
ANSI C84.1 voltage drop on every secondary network sourced by a transformer on this pole.
IEEE 1453 motor-start screening for services on this pole that have flagged inrush-sensitive loads.
Source-data corruption, schema mismatches, blocking field absences — quarantined for re-shoot.
Poles that passed every check. Bulk-approve and move on.
Data quality is the moat
Drone capture is noisy. Phantom poles, GPS glitches, mislabeled circumferences, attachments above the pole top — every batch carries them, and every other tool assumes the input is clean.
We don't. The data-quality validator runs before any analyzer touches the model — eight per-pole checks plus a re-runnable cross-pole pass. On a real 259-pole pilot we caught 6 phantom poles, 15 attachment-height anomalies, 5 pairs of poles at identical GPS coordinates, and 259 mislabeled circumference fields — before a single clearance check ran.
Per-pole DQ checks
Cross-pole DQ checks
Bring a multi-thousand-pole project. We'll walk you through ingest, bucket review, batch-approve, and bundled export — in fifteen minutes.