Treadstone Associates
Case File · Construction Job Costing

A job costing rebuild exposes shop overhead

Anonymised, illustrative composite. An Alberta mechanical contracting firm ran a shop that quietly supported every job it worked under a cost-plus contract, but its cost accounting never treated that support as part of any single job’s cost.

Treadstone Associates · Updated 2026

At a glance

  • • Alberta mechanical contractor, one large project under a CCDC 3 – 2016 Cost Plus Contract.
  • • Original job cost booked: $2,100,000. Cost-plus fee: 8% of actual cost.
  • • Job-costing rebuild reclassified $340,000 of shop overhead into the job’s direct cost pool.
  • • Fee recalculated on the new $2,440,000 actual-cost base: $27,200 more fee earned.

The situation

The firm had run a shop for over a decade — yard space, a small fleet of service trucks, welding and fabrication equipment, tool cribs — and had always booked its costs (depreciation, yard labour, fuel, insurance) to a single company-wide overhead account that never touched any individual job’s cost sheet. On its largest active contract, that habit had a direct fee consequence nobody had connected.

The problem

The contract was a CCDC 3 – 2016 Cost Plus Contract, which CCDC describes as a standard prime contract to perform the required work “on an actual-cost basis, plus a percentage or fixed fee” applied to actual costs. Under that structure the contractor earns a fee only on cost that is actually recorded as cost of the job. Shop overhead sitting in a company-wide G&A account, never assigned to any job, earns no fee — even though the shop was consumed by this job every day it ran.

The numbers

The original job cost sheet showed $2,100,000 of recorded actual cost. At the contract’s 8% fee, that produced $168,000 of fee (0.08 × $2,100,000). A job-costing rebuild traced actual shop usage — hours the service trucks and fabrication bay were dedicated to this job, depreciation on tools assigned to the crew, yard labour spent staging material for this site — and found $340,000 of it belonged in the job’s direct cost pool, not in company-wide overhead.

Reassigning that $340,000 moved the job’s actual-cost base to $2,440,000. Recomputed at the same 8%, the fee became $195,200 (0.08 × $2,440,000) — $27,200 more than the $168,000 originally billed, and $27,200 the firm had never invoiced because the cost it was entitled to bill against had never been recorded as a cost of this job in the first place.

The rule that decided it

The contract pays a fee on actual cost, and actual cost is whatever is properly recorded as cost of the work. That is a job-costing discipline rather than a legal threshold with a fixed number, but it binds the same way a cap does: cost that never enters the job’s books never enters the fee base, no matter how genuinely the job consumed it. The firm’s accountant rebuilt the shop’s allocation methodology — usage hours and depreciation schedules tied to specific jobs — so shared-resource cost stopped defaulting to unbilled overhead.

The outcome

The firm submitted a supported adjustment invoice for the $27,200, with the usage-hours and depreciation workpapers behind the reclassification, and the owner’s consultant accepted it as properly documented actual cost under the contract. Every job now carries a shop-allocation rate, so the same fee leak does not recur on the next cost-plus contract. For how the firm keeps that allocation current job to job, see how AI keeps job costing up to date and the difference between stipulated price and cost-plus pricing. A related cost-code problem on a different contract type is in how margin fade got traced to two specific cost codes.

What it would have cost otherwise

Left uncorrected, the same gap would recur on every future cost-plus contract this shop supports, for as long as shop usage keeps defaulting to unbilled company-wide overhead — on a firm running two or three comparable cost-plus jobs a year, that is a recurring $54,400 to $81,600 annually of real, earned fee simply never invoiced, not a one-time $27,200 correction. The $340,000 reclassified breaks down as roughly $210,000 of depreciation and equipment usage, $95,000 of dedicated yard labour, and $35,000 of fuel and insurance tied to job-specific use — $210,000 + $95,000 + $35,000 is $340,000, the full reclassified total.

The tell

On any cost-plus contract, ask whether every resource the job actually consumed — shop time, dedicated equipment, staging labour — is recorded as cost of that specific job, or whether any of it is quietly absorbed into general overhead. A fee calculated only on what got coded to the job will always understate what the job actually cost to deliver if some of that cost never got coded there in the first place.

What changed in how the shop is tracked

The new allocation methodology assigns service-truck and fabrication-bay hours to a specific job the day they are used, rather than defaulting to a company-wide overhead account reconciled only at year end — the same discipline job costing already applies to direct labour, extended to a shared resource that had never been tracked that way. $340,000 reclassified at the contract's 8% fee produced $27,200 of previously unbilled, fully earned fee; the firm's accountant is now applying the identical usage-hour and depreciation-tracking method to every open cost-plus job, not only the one that surfaced the gap, on the basis that a shop supporting multiple jobs at once was very unlikely to be under-allocating on only one of them.

Takeaways

  • • A cost-plus fee is only earned on cost actually recorded as cost of the job — shop overhead parked in company-wide G&A earns nothing, even when the job genuinely consumed it.
  • • The fix is an allocation methodology (usage hours, depreciation tied to specific jobs), not a renegotiation of the fee percentage.
  • • $340,000 reclassified into direct cost, at an 8% fee, was $27,200 of real, supportable, previously unbilled fee.
  • • Run the same reclassification test on every live cost-plus contract before assuming a shop is break-even.

See where AI pays off first in your business.

A 30-minute call is enough to tell you whether AI pays for itself here.