Upload a bid, derive the budgeted rate per scope item, and map labour cost codes onto it. A line with zero bid hours yields no rate at all — those fall back to crew-relative trending rather than a fabricated number.
Simulated data. Every capture in this demo is
origin: "simulated" — invented, not recorded on a jobsite. These
pages show how a productivity factor is derived. No model-accuracy
figure is reported anywhere: simulated captures may train a model and may never
measure one, so an accuracy number computed here would be meaningless.
This is the mapping layer, not a direct join. Cost-code data from
timekeeping systems arrives dirty, so a bid line and an hours record are matched
through an explicit mapping a human can correct. Anything unmapped or ambiguous is
held back and shown — never quietly joined into a productivity factor.
Upload a bid export as CSV
Columns: cost_code, trade, description, unit, bid_quantity, bid_hours
Bid lines
Cost-code alignment
Only an unambiguous single match auto-maps. A duplicated cost code stays unmapped
and waits for a human rather than silently picking the first line.
Assistant · fills forms and explains numbers. It never sets a quantity,
an abstention, or a face-blur declaration — those stay yours.