Job Costing for Contractors: The Profit Leak Most Trades Businesses Never Measure
A contractor running $2 million in annual revenue with a 5% cost tracking error forfeits roughly $100,000 in profit every year (Projul, 2024). That number sits in a blind spot most trades business owners never check. They know total revenue. They know the crew is busy. They assume busy equals profitable.
It does not.
Job costing for contractors is the discipline of tracking every dollar of cost against every dollar of revenue on each individual project. Not in aggregate. Not at tax time. Per job, in real time. Without it, a trades business can show $200,000 in annual profit while quietly losing money on 40% of its jobs. The profitable work masks the losses, and the owner never sees which jobs are draining the company.
The Metric Your P&L Statement Hides
Most contractors run their finances from a profit and loss statement. Revenue goes in, expenses come out, and the number at the bottom determines whether the quarter was good. That total company view is useful for the bank and the accountant. It is nearly useless for operational decisions.
The CFMA’s 2024 Construction Financial Benchmarker reports that specialty trades contractors (electrical, plumbing, HVAC) averaged just 6.9% net margin. Best-in-class contractors hit 11.9%. The gap between average and exceptional is not about pricing power or market conditions. It is about which contractors know their true cost per job and which ones are guessing.
A P&L tells you that your company made money last quarter. Job costing tells you which jobs made money, which jobs lost money, and why. That distinction separates a business that scales from one that stays stuck at the same revenue ceiling with the same razor-thin margins year after year.
Three Numbers Most Contractors Get Wrong
Labor Burden
Field wages have risen approximately 4% year over year, averaging around $36 per hour for skilled trades workers (Foundation Software, 2024). That is the base rate. The true loaded cost of a $35 per hour carpenter is $47 to $50 per hour once you add payroll taxes, workers’ compensation insurance, health benefits, and paid time off.
Most contractors undercount labor by 25% to 40% because they track only the base wage. If you estimate at $35 per hour when the true cost is $48, every bid you submit is systematically underpriced. You win work at margins that look healthy on paper and deliver work at margins that quietly destroy your profitability.
The real multiplier is worse for larger crews. Research from ProjectWatch Pro puts the true loaded labor cost at 2.7x to 3.1x the base hourly rate when you factor in supervision, rework, travel time, and nonproductive hours. A crew leader making $38 per hour actually costs the company $97 to $119 per hour at the fully burdened rate.
Indirect Costs
Fuel, equipment depreciation, shop supplies, permit fees, vehicle maintenance, small tools that disappear from the job site. These indirect costs typically consume 3% to 8% of total project costs. Across a year of projects, that leakage often exceeds $50,000. Most contractors allocate these costs to general overhead rather than to specific jobs, which inflates their job-level margin calculations by exactly that amount.
Change Order Leakage
When a customer asks for something extra on site and the crew handles it without documentation, that work gets absorbed into the project cost with no corresponding increase in revenue. The average change order leakage runs about 10% of total change order value for contractors without formal tracking systems. On service work and renovation projects, where scope changes are constant, this number can be much higher.
Over 35% of construction professionals admit to inaccurate or inconsistent job costing (Projul, 2024). The problem is not that these contractors are bad at math. The problem is that they do not have a system capturing the numbers in the first place.
What Real-Time Tracking Looks Like
Job costing does not require an accounting degree or expensive enterprise software. Tools like Ninety.io give you the scorecard framework and weekly data rhythm that make cost overruns visible before they become crises. The discipline works like this:
At job start, your estimator or project manager enters the budget: labor hours by trade, material quantities, equipment days, subcontractor allowances, and a calculated overhead allocation. This is the baseline every actual cost gets measured against.
During the job, field crews log hours by task (not just by day), materials are charged to the job number at purchase, and equipment usage is tracked. The critical habit: data enters the system within 24 hours, not at month end.
Weekly, someone in the office compares actual costs to budget at the task level. Any line item running 10% or more over estimate gets flagged. This is where profit fade becomes visible while there is still time to act.
At closeout, the final job cost report shows actual margin versus estimated margin. That variance, positive or negative, feeds back into the estimating database so the next bid on a similar project starts from reality, not from a guess.
The companies I have worked with that build this rhythm into their weekly meeting cadence catch overruns an average of three weeks earlier than those using manual end-of-job reviews.
The Profit Fade Trap
Profit fade is the construction industry’s term for the gradual erosion of a job’s gross margin from bid to closeout. A real case documented by ProjectWatch Pro illustrates the damage: a contractor estimated a 14% margin on a $600,000 project. At closeout, the actual margin was 3.1%. That is $65,000 in profit that evaporated between the estimate and the final invoice.
The worst part: the average discovery lag on profit fade is 45 days or more after a job closes. For a project in the $500,000 to $2 million range lasting 4 to 8 weeks, that means the contractor does not learn they lost money until well after the next three or four jobs have been bid using the same flawed cost assumptions.
This is the cycle that keeps trades businesses trapped. Inaccurate historical data produces inaccurate estimates. Inaccurate estimates produce thin margins. Thin margins leave no room for the inevitable cost overruns. The owner works harder, bids more aggressively, wins more work, and makes less money.
CFMA research shows that contractors running real-time, task-level cost comparisons protect 15% to 25% more of their estimated margin compared to contractors who review costs only at closeout. The system itself, not the estimator’s skill, is the variable that separates profitable contractors from busy ones.
The Revenue Range Where Guesswork Stops Working
If your company runs between $1 million and $10 million in annual revenue, you are past the point where instinct-based estimating works reliably. The patterns I see across fractional COO engagements with trades businesses building real systems tell the same story:
You know your total revenue and total expenses, but you could not say right now which of your last ten jobs had the best margin and which had the worst.
Your estimator uses a cost database built three years ago, updated occasionally when a supplier raises prices on something obvious.
You have a crew or project manager who consistently brings in profitable work, and another who does not, but you have no data to prove it or diagnose why.
You stopped tracking warranty callbacks and punch list costs because “it’s just part of the business,” and you have no idea what those untracked hours add up to annually.
Every one of these is a data problem, not a people problem. Your people cannot make better decisions without better visibility into what each job actually costs.
Building the System
Start with your next five jobs, not your entire backlog. For each one, track four categories of cost against the estimate: labor hours at the fully burdened rate, materials, subcontractors, and a calculated overhead allocation.
A spreadsheet works if that is what your team will actually fill out. The discipline matters more than the technology. Once the habit is established (and it takes roughly 90 days to make it stick), migrate to a system that automates the comparison and surfaces variances in your weekly scorecard.
The foundation matters more than the software. A business operating system gives your company the weekly meeting rhythm, the scorecard discipline, and the issues resolution process that turns raw job cost data into operational decisions. Without that structure, data sits in reports nobody reads.
For trades businesses stuck at the $2M to $5M ceiling, job costing is often the first system that reveals why growth has not translated into profit. The work is there. The revenue is there. The margin is leaking through labor miscalculation, untracked indirect costs, and change orders that never get billed.
Measure it at the job level, and you can fix it. Keep measuring only at the company level, and you will keep wondering where the money goes.
