QA/QC

Bulk pole review at the scale utilities actually submit.

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.

Poles / month
250k

sustained throughput target

For 259 poles
87s

parse + DQ + clearance + sag + guying

Failure buckets
18

review like-with-like

Audit trail
100%

every action, every reviewer

In active pilot. Verified end-to-end on a real 469-file (259 unique pole) drone capture. Architected for 250k poles per month, headroom for 6× that. Pricing details land with onboarding — request early access to discuss your pole volume.
Running a BEAD build? Group your QA/QC batches into a BEAD project to track the FCC §1.1411 make-ready timeline and the §224 cost split between pole owner and new attacher. BEAD program toolkit →

What sets it apart

Bulk review, with the audit trail engineers actually need.

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.

Iteration-friendly by design

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.

Bucket-level batch actions

"Approve all 47 missing-guy findings in this bucket" with a confirmation modal showing the diff summary. j/k keyboard nav for individual review.

Audit trail as deliverable

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.

Versioned batches

Run v1 with one set of assumptions, v2 with another (different code year, loading area, ruleset). Diff bucket counts side-by-side.

Multi-tenant handoff

Drone vendor uploads → reviewer org reviews → utility receives. Or single-tenant for utilities reviewing in-house. Same workflow, configurable visibility.

Mass export

Cleaned-up batch ships as one PLA bundle (SPIDA today, more formats coming). ESRI push is a deliberate manual button — never automatic.

Inputs

Whatever your data shape is, the same fan-out runs against it.

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 + field capture

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.

SPIDA decks

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).

O-Calc workbooks

Per-pole structured payloads route to the O-Calc parser, then through the same fan-out as every other source.

PLS-CADD exports

PLS structures join the same Universal Pole Model so the same clearance, sag, framing, and guying analyzers fire.

GCS prefix ingest

Point at a gs:// folder; ingester finds every supported file underneath, dedupes, and queues per-pole tasks.

Universal Pole Model

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

An eight-step pass on every batch.

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.

  1. 01

    Drop the batch

    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.

  2. 02

    Split + dedupe

    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.

  3. 03

    Fan-out analyze

    Source-aware parser dispatch (drone JSON / SPIDA / O-Calc / PLS) → data quality → circuit classify → clearance → midspan → guying. Cloud-Tasks queued, ~16 poles/sec sustained.

  4. 04

    Bucket

    Findings sorted into ten failure buckets. The reviewer picks one and reviews like-with-like instead of pole-by-pole.

  5. 05

    Walk or batch

    j/k through findings or "Approve all" the whole bucket with a diff summary. Either way, audit-logged.

  6. 06

    Cross-pole DQ

    Re-runnable batch-level scan: duplicate IDs, GPS outliers, coincident pole locations, reference-integrity gaps.

  7. 07

    Mass export

    One bundled SPIDA file (or the format your utility wants), with the audit trail attached.

  8. 08

    Hand off

    Forward the cleaned batch to the receiving utility, or push selected fixes to ESRI on demand.

Buckets

Eighteen failure modes. One review per bucket.

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.

Data quality

Phantom poles, unit anomalies, missing fields, mislabeled measurements, GPS outliers, duplicate IDs.

Missing guying

Crossarm-level guying validation against ANSI strength tables and per-utility framing rules.

Guy upsize

Strength-based recommendations for under-sized down-guys and bisect guys.

Pole clearance

GO-95 Tables 1 & 2, NESC C2 Tables 232 & 235. Equipment-aware repack with cascading move-crossarm.

Midspan clearance

Vertical separation between conductor families at midspan, with terrain-aware sag.

Sag too low

Per-conductor GO-95 case-4 ground clearance verdicts under every code-mandated state.

Framing fault

Pin-insulator single-span ambiguity with three mutually-exclusive fix options.

Same-circuit pending

Same-voltage Table 2 pairs surfaced for a one-click "same circuit?" disambiguation.

Ampacity violation

IEEE 738 thermal balance against the conductor's rated ampacity table or recomputed from ambient + wind + solar.

Sag-tension limit

Change-of-state catenary against utility-published max tension per loading district + design temp.

Grounding resistance

IEEE 142 driven-rod resistance against the utility's max Ω limit (NESC §94B4 25Ω as the floor).

Vegetation clearance

Tree-trim clearance vs NESC §218 + GO-95 §37 fire-zone enhancement; flags clearance shortfalls before the next growth season.

Avian protection

Per-pole zone membership across raptor / eagle-buffer / sage-grouse / migratory-flyway zones; surfaces poles missing IEEE 1656 cover or bushing protection.

Transformer overload

IEEE C57.91 hottest-spot temperature + Arrhenius loss-of-life accelerator. Flags loading conditions above 110°C normal life.

Service voltage drop

ANSI C84.1 voltage drop on every secondary network sourced by a transformer on this pole.

Service flicker

IEEE 1453 motor-start screening for services on this pole that have flagged inrush-sensitive loads.

Parse failed

Source-data corruption, schema mismatches, blocking field absences — quarantined for re-shoot.

All clear

Poles that passed every check. Bulk-approve and move on.

Data quality is the moat

Catch the bad data before you waste analysis on it.

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

  • • Field completeness (class, species, height, GPS)
  • • Unit-range sanity on every distance value
  • • Phantom-pole detection (zero attachments / equipment / crossarms)
  • • Attachment heights vs pole top
  • • Equipment count anomalies (e.g. > 5 transformers on one pole)
  • • GLC-vs-tip mislabeling (vendor-specific)
  • • Set-depth derivation against ANSI O5.1 tables

Cross-pole DQ checks

  • • Duplicate external IDs across the batch
  • • GPS outliers (poles > 1 km from any neighbour)
  • • Coincident GPS (two poles at identical coordinates)

Run it on a real drone capture.

Bring a multi-thousand-pole project. We'll walk you through ingest, bucket review, batch-approve, and bundled export — in fifteen minutes.