Skip to content

Approved isn't paid. Get paid for every foot your crews put in the ground.

A span of construction gets one identity when the drawing is issued, and the claim, the daily report, the client's approval and the statement line all reference it.

The goal, stated so it can be checked: at the end of a pay period every statement line matches a claim, and every claim is paid, pending inside the lag window, or flagged with a reason.

Two monitors running the SplicePilot console in a contractor's office at night, one showing a plan sheet, the other the day's activity.

216

Plan sheets tiled

1,421

Span callouts read

1,595

Structures proposed

1,015

Statement lines loaded

The console, on the machine that holds everything — the sheets, the log and the day's report, on one machine in one office.

The chain that has to hold

  1. 01Drawing
  2. 02Span
  3. 03Claim
  4. 04Report
  5. 05Outcome
  6. 06Statement

How the record is kept

Six links, one identifier, no place for the number to change.

Most of the loss in the current process is two people meaning different things by the same string. SplicePilot closes that by carrying one identity the whole way, and by refusing to invent the parts it cannot read.

  1. 01

    Drawing

    SHEET 12 OF 24

    The plan package is read: title block, page kinds, sheet numbers, numbering sets, key-map neighbours, drawn scale, geographic viewport. Every sheet is tiled into a PMTiles archive and served by HTTP range.

  2. 02

    Span

    SPAN ID: 073 (108')

    The spans the engineer named are read off the sheet with their printed footage. Sheet space is the primary coordinate system — footage is measured through each sheet's own ground metric, which on a sheet drawn in plain latitude and longitude is 60 ft to the inch one way and 45 the other.

  3. 03

    Claim

    IN / OUT / PIPE / TAIL

    A crew lead claims the span from a phone in a trench, with no signal. Identifiers are minted on the device, reel-counter arithmetic is checked at entry, and the four payable conditions are attested at the moment of claiming.

  4. 04

    Report

    DPR Form V2 · 232 fields

    The client's own DPR Form V2 — a fillable PDF with 232 fields — is filled exactly as a person fills it today, and sent with a plain-text body, a designed HTML body and the form attached. Nothing sends itself.

  5. 05

    Outcome

    Approved · Partial · Sent back

    The client answers by replying to the email. Those replies are read and classified — handoffs, rejections and partial approvals told apart from approvals — and recorded against the exact claims the report asserted.

  6. 06

    Statement

    LI_47 · unresolved

    Statement lines resolve through a ladder: exact, alias, glyph-fold, rate-as-proof, unresolved. Every resolution records how it was made. Both unmatched lists are mandatory.

Route geometry: OpenStreetMap

0 / 0 spans·0 / 0 ft

01 — The route

A segment is a run of conduit along real streets, cut into spans before anyone digs.

02 — The claim

A crew lays a span and claims it from the trench. The footage is the engineer's own, so nothing is estimated twice.

03 — The structures

A handhole or a vault sits at every boundary. Each turns green only once the span that reaches it is claimed.

The world view · one sheet, three surfaces

ground · sheet · spans · console · field · my day

01 — One stack

The plan, the ground it describes, and the three screens that read it are the same object seen from different jobs.

02 — Pull it apart

OSM streets and buildings underneath. The engineer's sheet placed on them at half strength. Every span standing where it actually is.

03 — Three surfaces

The office console, the crew lead's field client, and the worker's own day — each reading the same spans, each showing a different module.

The world view · authorship, the pull, the ground, one structure

DMJARSTK

01 — Who drew it

A span somebody drew is painted in that person's colour, with their initials on the line. The colour is derived from their id by one rule, shared by every surface.

02 — The pull

Conduit is placed, then fibre is pulled through it. The run is a sequence, not a shape, and the record follows it in order.

03 — On the real ground

The sheet is not a picture. A span sits where the conduit is, against the streets and buildings it was dug along — not floating on a drawing.

04 — Down to one structure

One continuous move from the whole segment to a single handhole, because that is the smallest thing anybody argues about.

Capabilities

Everything below exists, is deployed, and is exercised by a test.

Where a capability is a subset of what the plan asked for, the gap is stated rather than smoothed over.

Accountability

Append-only, hash-chained, forward-only

  • A correction is a new event. Nothing is edited or deleted, and a gap or an altered row breaks the chain.
  • The project log in both interfaces: who did what, on which device, when it happened, when it reached the office, and the hash.
  • Reversals and amendments carry reasons. Recording on someone else's behalf carries a reason.
  • Click a line in the log to open the sheet it is about.

Sheets and drawings

The plan set becomes queryable

  • Reads a plan package: title block, page kinds, sheet numbers, numbering sets, key-map neighbours, drawn scale, geographic viewport.
  • Tiles every plan sheet into a PMTiles archive, served by HTTP range, pannable and zoomable to the handhole number.
  • Reads the structures the engineer named, in two identifier schemes, and checks the count against each sheet's own legend.
  • Flags what it could not read: index pages, sheets whose legend disagrees, packages whose labels arrive as fragments.

Recording work

Built for a phone with no signal

  • Bilingual English and Spanish field client, designed for a phone in a trench.
  • Claims are held on the device and reach the office when there is signal; identifiers are minted locally, so nothing waits.
  • Sync is idempotent: a retry after a dropped signal cannot bill twice. A bad event is refused by name and the rest of the batch lands.
  • Work past the seven-day window is accepted with a mandatory reason rather than blocked.

Policy and the clocks

Every threshold is a row with a source

  • Each threshold carries a validity range and the document it came from — the seven-day claim window, the 10 a.m. approval deadline, the $250-per-day penalty for a missed report.
  • The four payable conditions and the four rejection reasons are data, not code.
  • The loss-report threshold is the ninetieth percentile of observed pay lag — 56 days, measured over 593 lines. The median is kept for reporting only.
  • Areas resolve as of the line's work date, so a segment renamed mid-project is a non-event.

Standing checks

Twenty questions the current process cannot answer

Each runs on demand and every morning. Empty is the goal, and a morning digest names every check with findings.

  • Approved work never billed
  • Reports never answered
  • Outcomes needing a person
  • Phones holding work
  • Claims past the window
  • Duplicate claims
  • Stale approvals
  • Clock skew
  • Sheets whose legend disagrees
  • Spans in use that nobody drew

Each runs on demand and every morning. Empty is the goal; a morning digest names every check that found something.

One identifier, carried the whole way.

The drawing names the span. The crew claims it from a phone with no signal. The report goes out on the client's own form. The answer comes back by email and lands against the claim it was about. Nothing is retyped, and nothing changes name on the way.

Get in touch

Tell us what you are running.

Which segments are live, how the crews record today, and what the client's report has to look like. That is enough to say whether this fits, and a person reads every one of these.