Materials · Reconciliation

Every delivery.
Every invoice.
One ledger.

Purpose-built materials & delivery management for utility construction. Flux replaces multi-tab Excel with a ledger that treats what the field received — not what the supplier ticketed — as the source of truth. Catches overbilling, short deliveries, and duplicate invoices before AP cuts the check.

Built for contractors at scale

From single-crew subdivisions to nine-figure data center & public works programs — one ledger per job, every delivery attributable, every invoice reconciled.

Deliveries · today
04:17 PM CDT
Material Qty Status
8" HDPE SDR-17
STR-042 · main run
1,200 ft Reconciled
12" DI Fitting (ell 90°)
STR-088 · tie-in
6 ea Short 2
Tracer Wire · 10 AWG
STR-014 · utility run
3,500 ft Reconciled
Bedding Stone #57
STR-102 · trench
42.5 ton Variance
8" Gate Valve · MJ
STR-056 · blowoff
2 ea Reconciled
5 of 14 today $48,217.30
Built for the scale of a real job
Material SKUs
30+
per typical job
Structures
150+
rolled up to components
Delivery events
1,000s
logged from the tailgate
Tabs retired
5→1
one ledger per job
The variances that used to hide at the bottom of a column now light up copper at the top of the screen. Friday-afternoon reconciliation closed itself, and AP stopped paying invoices against quantities the crew never received.
The problem

Utility construction runs on spreadsheets. Until it doesn't.

A typical utility job involves thirty-plus material SKUs, a hundred-plus structures, a thousand-plus deliveries, and three departments reconciling bid vs. daily vs. invoiced across five-tab workbooks that get emailed around and inevitably forked.

Before The Excel labyrinth
Job_Materials_v4_FINAL_REALLY_use-this.xlsx
Catalog
Bid
Daily
Deliveries
Invoices
Summary
PM-notes
~tmp2
1 8" HDPE SDR-17 1200 =SUM(C7:C14) ??? #REF!
2 12" DI Fitting 6 6 4 short?
3 Tracer 10 AWG 3500 3500 3500 ok
4 Bedding Stone 42.5 43 45.2 var +2.7t
5 « see other tab »
6 'ask Dave which one is current
Kyle — the C column is wrong after row 12, use the v3 backup. —J
  • Six workbook versions in three inboxes, none of them authoritative.
  • Variances hidden in cells rolled off the right edge.
  • No audit trail. Yesterday's number quietly overwrites last week's.
After The Flux ledger
Active job · materials
Auto-saved · 04:17 PM
Material
Bid
Daily
Variance
8" HDPE SDR-17
pipe · 500ft spools
1,200
1,200
0.0%
12" DI Fitting (ell 90°)
fitting · each
6
4
−33.3%
Tracer Wire · 10 AWG
wire · ft
3,500
3,500
0.0%
Bedding Stone #57
aggregate · ton
42.5
45.2
+6.4%
31 SKUs · 4 variances
  • One source of truth. Zero workbook versions.
  • Variance surfaced automatically — bid vs. daily vs. invoiced.
  • Full audit log. Every edit attributable to a person and a timestamp.
The product

A dense, honest dashboard. Legible at a glance.

Tabular numerics, dashed rules, status chips — the UI language of the ledger, not the dashboard-kit-of-the-month. Information-dense on purpose, because that's what the field and the back office both need.

app.fluxmaterials.ai
Structures / STR-042

Main Run · Stations 12+00 → 24+50

1,250 LF · 8" HDPE SDR-17 · updated 14 min ago
In progress · 78%
Assembly progress 31 / 40 components
Installed 29 Delivered 2 Outstanding 9
Component
Needed
Delivered
Status
8" HDPE Pipe · 500 ft spool
CMP-042-01
3
3
Complete
Fusion Coupling · 8"
CMP-042-02
12
12
Complete
MJ Tap Saddle · 8×4
CMP-042-03
4
2
Partial
Tracer Wire · 10 AWG
CMP-042-04
1,250 ft
1,250 ft
Complete
Blowoff Assembly · 2"
CMP-042-05
1
Pending
How it works

Three handoffs,
one ledger.

Purchasing configures. The field captures. AP reconciles. Same record, live the whole time.

01
Actor
Purchasing

Configure the job

Paste the SKU list, define structures, attach suppliers. The setup wizard handles categories, bid quantities, and unit costs in one flow — normally 20 minutes per job.

31 SKUs · 186 structures · 804 components
02
Actor
PM · Field

Capture from the tailgate

Crews log deliveries on phones as trucks roll in. Camera capture pairs photos with line items. Auto-save keeps data safe even when the signal drops.

Autosaved · mobile-first · offline-tolerant
03
Actor
AP

Reconcile against invoices

Invoices land in Flux alongside the daily log. Variance chips fire before the check cuts. Short deliveries, price drift, double-billing — all caught at intake.

Bid ↔ Daily ↔ Invoiced · same screen

Every edit carries a name, a timestamp, and a role. The ledger is the record.

See it in your job
Capabilities

Purpose-built for the six workflows Procore and Vizzn leave in between.

Procore is $20K and way too broad. Vizzn only does tickets. Flux covers the whole materials loop — bid quantities through daily intake, structure assembly, ticket & invoice OCR, and reconciliation — so a PM on Monday morning sees what drifted before the 7:00 huddle.

· 01 / OCR

AI-powered intake

Snap a delivery ticket or invoice, OCR prefill pulls ticket number, material, quantity, supplier. User-in-the-loop confirm — nothing commits without a human. Every extraction is audit-logged.

· 02 / Field

Mobile delivery entry

Dedicated intake page built for the tailgate. Large touch targets, rear-camera capture, live autosave, idempotent on retry. Field foremen see only what they need.

· 03 / AP

Invoice reconciliation

Bid vs. received vs. invoiced — one view. Receiving is the source of truth: if the crew counted 800 ft and the invoice shows 1,000, Flux flags it before AP cuts the check.

· 04 / Assembly

Structure assembly

Every structure rolls up its components. Auto-template by type (catch inlet → base + riser + slab + grate). The copper rule fires when the last component lands.

· 05 / Bulk

Trucking & returns

Bulk in/out tickets (rock, haul-off) tracked separately from per-material deliveries. Returns subtract cleanly — no negative quantity hacks, no duplicate domains.

· 06 / Sync

ERP & PM sync

Job metadata — customer, team, program siblings, award date — enriches on demand from your ERP (Spectrum, Sage, Viewpoint) and PM tool (Monday, Procore, etc.). Admins trigger, Flux writes.

Security · access

Built like the back office runs: attributable, auditable, airtight.

Flux isn't a shared spreadsheet with Vista-era permissions. Every write is authorized by role and scoped to a job. Every edit carries a signature. The ledger is defensible by design.

Domain-locked SSO

Google & Microsoft OAuth with a per-tenant domain allowlist. No passwords, no accounts for the broader internet — only the domains you whitelist can sign in.

yourcompany.com · allowlist

Role-based access

Admin, Purchasing, AP, PM, Field, Viewer. Job membership enforced server-side on every write. Field users see intake only.

SSO → role → job → row

Full audit log

Every create, update, delete captured with actor, role, and timestamp. The ledger tells you who touched what.

append-only · per-tenant

Tenant isolation

Multi-tenant data kept strictly inside job & org boundaries. No leak across orgs, enforced at every query.

RLS denylist · app-level checks
Platform Modern, scalable stack 99.9% uptime target Daily automated backups Encrypted in transit & at rest
Request access

Ship the field,
not the spreadsheet.

Transparent pricing. Platform fee plus per-delivery — a fraction of a percent of materials spend at typical scale. Catch one invoice error, pay for the year.

All systems operational
·
Enterprise SSO
·
Built by Townes & Co