Comparison · Plumbing
Hatchspan vs Jobber
Jobber dispatches a flat-rate swap and prints an invoice. It doesn't bill progress applications, it doesn't carry retainage, it doesn't run certified payroll. Hatchspan is the Work Object that does the same dispatch AND the five-phase contract on a single spine.
For plumbing shops running both halves of the week on different systems, Hatchspan is plumbing contractor software that does construction.
Jobber
Water-heater swap
Dispatched 07:42 · Marlborough St.
- TechM. Ruiz · Van 4
- InvoiceFlat · $1,840
- Phases—
- Retainage—
Hatchspan
Basement rough-in
Same record · 5 phases
- Cost code22-05-PLMB
- Phase 3 / 562% · billed
- Retainage10% withheld
- Certified payrollsource · live
Same spine · Different trade
Roofing demo: a leak-repair that became a tear-off project.
The same conversion pattern, applied to roofing. Default trade profile ships with a $25,000 cost threshold and a 4-phase project spine.
Service
Attic water-stain call
Dispatched 14:08 · Pine Ridge Cir.
- TechL. Park · Van 2
- Cost code22-05-ROOF
- Estimate$21,400 · below threshold
- Scope flag—
Tear-off project
Full tear-off + replacement
Same record · 5 cost codes · 4 phases
- Phase 1 / 4Tear-off · 22-05
- Cost codes22-05..22-20
- Materials tabpre-filled · DRAFT
- Audit logESCALATION_PRE_FILL
The conversion runs in a single transaction: re-verify the helper server-side, flip mode to PROJECT, seed the phase spine idempotently, stamp one LineItem per cost code with the right LineItemCategory, and drop matching DRAFT requisitions into the Materials tab. Customer, photos, and the original [22-05-ROOF/diagnostic] seed line ride through unchanged.
Scorecard
What the comparison actually turns on.
Seven rows. The plumbing shop running Jobber today will recognize every one of them.
| Capability | Jobber | Hatchspan |
|---|---|---|
| Dispatch | Native board, single crew, one job per truck. | Native board, multi-crew scheduling, materials dispatched against cost codes. |
| Multi-mode Work Object | A job is a job. | One record, SERVICE | PROJECT lifecycle with modeChangedAt — flips mid-flight without losing state. |
| Phases | Not a primitive, no phase state. | 5-phase project ledger on the same record; BillingEntry.phaseId drives the SOV row. |
| Schedule of values | Flat-rate invoicing only. | AIA-style SOV per phase (percentBilledThisPeriod, appliedForCents). |
| Retainage | Not modeled. | Per-entry retainagePercentBps + retainageCents in BillingEntry, computed from BPS only. |
| Certified payroll | No labor ledger; exports time from QuickBooks after re-keying. | LaborEntry { technicianName, hoursHundredths, techRateCents, workDate } is the source. Certified-payroll export is a downstream view. |
| QuickBooks sync posture | Bidirectional invoice/customer sync, two-system reconciliation. | Source-of-truth push to QB; QB reconciles from, no re-keying in the Monday AP pass. |
All Hatchspan claims are backed by the schema in prisma/schema/work-object.prisma, billing.prisma, labor.prisma.
Failure mode
What the mixed shop looks like on Jobber + QB + a whiteboard.
A composite of how a $1M–$15M plumbing shop actually runs the week — built from owner interviews, not from sales slides.
Same-day flat-rate swap on the board in seconds. Tech on the way, parts on the van, invoice prints at the door.
Customer paid the invoice, the deposit hit the bank. Fine for what it was. No phases, no cost codes, no retainage, no payroll ledger.
The GC's Friday pay-app. Five phases. Ten percent withheld. Prevailing-wage hours per technician, per cost code. The foreman drew it on the wall; the controller re-keys it Sunday night.
The collage
Monday morning, the same customer's flat-rate swap from last week is now a $40k scope of work. Jobber still sees one job — a closed invoice. QuickBooks sees one invoice — paid. The foreman's clipboard has five phases, ten percent retainage, and prevailing-wage hours per cost code that have to be ready for the GC's Friday pay-app. The controller re-keys the Sunday night. The margin disappears between three systems and a whiteboard.
Hatchspan is the one record that flips modes mid-flight without losing state — dispatch, phases, retainage, certified payroll, QB push, all on the same spine.
Talk to us
See it on your own data.
Walk us through the last five weeks on your shop — one of those swaps that turned into a $40k scope we'll trace from dispatch through pay-app. Owner and controller on the same call; we'll show the spine doing both halves on the same record. If Jobber + QB + whiteboard is still working for you, we'll say so.