Business · General Contracting
Job Costing
Assumes you know: Cash Flow: Why Profitable Contractors Go Broke
Job costing is tracking what each job actually costs, broken into categories, while the job is still running. It is the difference between knowing your business and remembering it. The estimate said what the job should cost; job costing tells you what it did cost, in time to do something about the difference.
Why it matters on the job
Without job costing you learn nothing from your own work. You cannot tell which jobs made money, which crews are productive, or whether your estimating is systematically wrong in one direction. Every future bid is priced on folklore. With it, every job you finish makes the next estimate sharper, because the feedback loop runs on real numbers from your own crews, not industry averages.
Cost codes: the skeleton
A cost code is a category you track: framing labor, framing material, roofing sub, equipment rental, permits. Keep the list short enough that the crew actually uses it; a dozen codes used honestly beat eighty codes guessed at. The estimate is built by code, costs are collected by code, and the comparison happens code by code. That structure is the whole system: estimated vs actual, per code, per week.
Labor is the code that matters most, because labor is where jobs bleed. Materials have invoices; labor has hours, and hours drift silently. Time must land against a code daily, from the field, not reconstructed on Friday.
Variance: the number you manage by
Variance is actual minus estimate. A worked example:
The estimate carried framing labor at 320 hours × $38/hour = $12,160. The job closes at 368 hours × $38/hour = $13,984.
Variance = $13,984 − $12,160 = $1,824 over, and in hours: 48 ÷ 320 = 15% over.
Two uses for that number, and the timing decides which you get. Caught at closeout, it is a lesson: your framing production rate is optimistic, so correct the estimating factor before the next bid. Caught in week 2, when 96 of a planned 80 hours were already spent at only a quarter of the framing done, it is a steering wheel: something on site is wrong, and you can go find out while it is still fixable. Weekly cost review is what turns bookkeeping into management.

Variance per code is the feedback loop: this one says your framing rate is 15% optimistic
Committed costs: the third column
Between estimated and actual sits committed: money promised but not yet invoiced, like a signed sub agreement or a lumber order placed. A job can look under budget on actuals while being over budget on commitments. Track all three columns or the surprise just arrives later with interest.
Closing the loop
At closeout, write the job’s story in numbers: final variance by code, final gross margin vs bid margin, and one sentence on why. File it where estimates get written. After ten jobs you own a private database worth more than any pricing guide, because it describes your crews, your market and your habits.
Where it bites
- Costing done monthly. A month is most of a small job. By the time the report lands, the money is spent. Weekly, or it is history instead of management.
- Hours dumped into one bucket. “Labor: 400 hours” teaches nothing. It is the split by code that shows framing ran over while trim ran under.
- Blaming the crew for an estimating miss. A recurring 15% overrun on the same code is not lazy carpenters; it is a wrong production rate in your estimating. The fix belongs in the bid math.
- Ignoring small overruns. At an 8% margin, $1,824 of unplanned cost on a $60,000 job erases nearly 40% of a $4,800 profit. Variances are small only compared to revenue, never compared to profit.