Skip to main content
2,200+ service businesses benchmarked. Do you know your gross profit per labor hour? See where you stand →
Level
Job Costing

Quoted vs Actual: Why Contractor Jobs Go Over Budget

Sam YangEx-CFO across trades, SaaS & services · $2.5B in service-business transactions · Stanford MBA
Updated July 26, 2026·Originally published August 9, 2025·11 minute read
Share

From Level's proprietary contractor research

Across 315,393 jobs, the median lands at 99.4% of budgeted labor hours. The mean lands at 119%. The median tells you estimating is solved. The mean tells you 18% of jobs blew past 150% of budget and nobody caught them.

315,393 jobs across 1,391 contractors, actual vs. budgeted labor hours

11 minute readJob Costing

The Budget Variance Nobody Talks About

Every contractor has jobs that go over budget. Scope changes. Surprise conditions. A tech who takes twice as long as estimated. That's normal. What's not normal is having no idea how often it happens, by how much, or which types of jobs are the worst offenders.

From analyzing operational data across 2,200+ contractors and $13.25 billion in job revenue, I've seen exactly how the industry performs on budget accuracy. And the finding that matters most is not a single number, it is the distance between two.

Industry Benchmarks: Actual vs. Budgeted Labor Hours

Methodology note: This measures actual labor hours divided by budgeted labor hours, per job. 100% means the job landed on budget, above 100% means it went over. It is not dollar cost, and it does not include materials or subs. Labor hours are the largest controllable variable on most contractor jobs, which is why this is the sharpest read on estimating accuracy available. Measured across 315,393 jobs from 1,391 companies, counting only jobs that carry both a budgeted and an actual hour figure.

StatisticActual as % of budgetedWhat It Means
P2570.1%Used well fewer hours than booked
Median99.4%On budget
Mean119%Dragged up by the overrun tail
P75131.1%Meaningfully over
Jobs over budget40%Two in five exceed their hour budget
Jobs past 150% of budget18.3%Where the mean comes from

The median and the mean disagree, and that is the whole story. Half of jobs land at or under their hour budget, which is why the median sits at 99.4% and why a management report built on medians makes estimating look solved. The mean sits at 119% because 18.3% of jobs run past 150% of budget. Neither number is wrong. Publishing only one of them is.

How to read the spread. Neither chronic overruns nor chronic padding is winning. Over-runs (above 100%) mean you won work you cannot deliver at quoted economics. Under-runs (P25 at 70.1%) mean you booked crew hours you did not use, which ties up capacity you could have sold and may mean you priced yourself out of neighboring bids. The operational goal is a tight distribution around 100%, not a scoreboard where the winner lands furthest under.

How this is measured, so you can check it. The variance above is computed per job, actual labor hours divided by budgeted labor hours, across 315,393 jobs from 1,391 companies, verified against the job-level data on 2026-07-25. Jobs carrying no hour budget are excluded rather than assumed on target, which matters: assuming them on target is what makes a distribution look tighter than it is. Every figure in the table resolves from the canonical dataset at levelcfo.com/data/benchmarks/contractor.json under the key labor_hours_actual_vs_budget.

The Worst Budget Blowouts

Some of the numbers are genuinely alarming. Across the dataset, I found contractors consistently running:

  • Roughly 3x over budget: the worst maintenance operators run average actual costs at about three times budget, sustained across thousands of jobs. Not a one-off. A systemic estimating failure.
  • Roughly 6x over budget: budgeting around $12K per job and spending closer to $80K. Smaller volume, but the gap is catastrophic.
  • Roughly 3x over budget: on another book of work, actual costs ran about three times the estimate, consistently across the jobs.

These aren't edge cases. These are companies that run hundreds or thousands of jobs per year at multiples of their estimates. And in most cases, they didn't know, because they weren't tracking budget vs. actual at the job level.

Where Budget Overruns Actually Come From

After reviewing thousands of jobs across the over-budget companies, the sources of variance cluster into four categories:

1. Labor Hours: The Biggest Variable

Labor hours are what this metric captures. Across 315,393 jobs with both budgeted and actual hour data, 40% of jobs exceeded their budgeted labor hours. 18.3% blew past 150% of their budgeted hours. The median actual-to-budget ratio is 99.4% (right on target), but the average is 119%, dragged up by the long tail of overruns.

The best-run operations in the dataset budgeted 228,000 labor hours across 10,000+ jobs and came in at 210,000 actual hours, 92% of budget. That's tight. Compare that to companies logging 7x their budgeted hours across thousands of jobs.

The problem is usually one of three things: the estimate doesn't account for travel time, the estimate assumes a journeyman and the job gets staffed with an apprentice who takes longer, or the scope wasn't clear and the tech runs into surprises.

2. Scope Creep Without Change Orders

This is the silent margin killer. The tech is on site, the customer asks for "one more thing," the tech does it because it's faster than arguing. No change order. No additional billing. The job budget stays the same, the cost goes up, and the margin shrinks.

The contractors with the tightest budget adherence all have the same process: any work outside the original scope generates a change order before the work begins. Not after. Not when invoicing. Before.

The best operators process thousands of change orders a year at a near-total approval rate. That's not bureaucracy, it's revenue capture. Every additional task gets priced and approved, and their budget variance stays tight.

3. Material Cost Increases Between Quote and Execution

The gap between quoting and starting work can be weeks or months on project work. In a rising-cost environment, the material prices at time of quote and time of purchase can diverge significantly.

This is less of an issue for service and repair work (small parts, same-day) and a bigger issue for project work (equipment orders, large material purchases). The fix: build an escalation clause into project quotes, or requote if the start date slips beyond 30-60 days.

4. Rework and Callbacks

Every return trip to fix something from the original job is invisible cost that hits the job margin. If the callback isn't tracked as a new cost against the original job, it shows up as a separate expense, or worse, gets buried in overhead.

Proper job costing setup in QuickBooks is the foundation for tracking these costs. The key point: if your system doesn't link a warranty callback to the original job, you'll never see the true cost of that job.

Free benchmark review

See how your margins benchmark.

We compare your jobs, crews, and service lines against real margin data, then show which gaps deserve the free audit.

Over Budget vs. Under Budget: Both Are Problems

Most people only worry about jobs that go over budget. But consistently landing 30-60% under budget is its own problem, symmetric to chronic overruns in the sense that both mean your estimated labor hours are not a reliable forecast: under-estimating wins jobs you cannot execute at quoted economics; over-estimating pads bids and leaves revenue on the table.

You're overpricing. If the typical job comes in 40% under budget, your estimates are padded by 40%. That's margin, but it's also potential lost bids. In competitive markets, that padding is the difference between winning and losing the job.

Your estimating team can't be trusted. If estimates are consistently 40% off (in either direction), you can't use them for capacity planning, cash flow forecasting, or staffing decisions. An estimate that's always wrong by the same factor is usable (you can adjust). An estimate that swings between -40% and +50% is chaos.

You're hiding problems. If every job shows a comfortable buffer, nobody investigates the ones that barely broke even. The aggregate looks fine, but the portfolio has some disasters hidden by the padded winners.

How to Close the Gap

Track estimated vs. actual labor hours at the job level. This is the prerequisite for everything else. If you're running QuickBooks, use estimates or budgets on every job above $5K. If you're in a field service platform, use the budgeting module. No labor hour estimate = no variance analysis = no improvement.

Review the top 5 and bottom 5 jobs every month. The top 5 (most under budget) tell you where your estimates might be too conservative. The bottom 5 (most over budget) tell you where your process broke down. Both are useful.

Separate labor variance from material variance. "This job went $8K over budget" doesn't help. "Labor ran $10K over because we staffed two apprentices instead of one journeyman, and materials came in $2K under because we sourced a cheaper condenser," that's actionable.

Set guardrails. Flag any job that hits 80% of its budgeted cost before 60% of the work is complete. That early warning gives the PM time to adjust scope, have the conversation with the customer, or at minimum, document why the overrun is happening.

When Budget Accuracy Doesn't Matter

T&M work by definition can't go over "budget" in the traditional sense. You're billing every hour and every part at markup. The risk is different: it's utilization and billing accuracy, not estimate accuracy. If you're heavy T&M, focus on billing speed instead of budget variance.

Very small jobs (under $1K) aren't worth budgeting. The tracking overhead exceeds the potential savings. Set standard pricing for common service calls and move on.

Emergency and after-hours work follows different economics. Premium rates, expedited parts, overtime labor, the margins are different and the "budget" is whatever the customer agrees to pay. Don't mix emergency work into your budget variance analysis or it will skew everything.


The Bottom Line

The real finding is the gap between the median and the mean. The median job lands at 99.4% of budgeted labor hours, which reads like a solved problem. The mean lands at 119%, because 40% of jobs go over their hour budget and 18.3% run past 150% of it. The goal is a tight distribution around 100%, not a scoreboard where the "winner" is whoever pads the most, and not a median you quote while the tail eats the margin. The worst offenders run 179-552% over across thousands of jobs, and most of them did not know until year-end.

The goal isn't perfection. It's visibility. If you're not tracking budget vs. actual at the job level, you're in the 80% who don't know whether they're over or under. Start there. When you can see which jobs went over, by how much, and why, you can fix the estimating process, adjust staffing, and stop the margin leaks before they compound across your whole portfolio.

Q: How does Level help with budget tracking? A: We build a budget vs. actual dashboard connected to your QuickBooks and field service software. Every job shows estimated vs. actual cost in real time, broken out by labor, materials, and subs. We flag jobs trending over budget before they finish, not after. The first audit is free.

Q: What's a reasonable budget variance target? A: For most $3-30M contractors, landing within +/- 15% of budgeted labor hours on 80% of jobs is a strong target. The best contractors in our data run within 10%. Getting there requires consistent estimating methodology, realistic labor hour estimates by role, and disciplined change order processes.

Q: Should I budget every job? A: Every job above $2-5K should have at least a labor hour estimate and materials budget. Below that threshold, standard pricing by job type is more efficient. The key is consistency, if you only budget some jobs, your variance analysis is skewed by selection bias.

Q: What causes the biggest budget blowouts? A: Three things: missed scope changes that should have been formal change orders, unbounded T&M work without controls, and stale jobs that sit open past 90 days accumulating costs nobody notices. The worst overrun in our data, +552% on 143 jobs, was a combination of all three. Fix the process, and the variance follows.

Share

Get the next one

Want next week's benchmark in your inbox?

One email a week. Real numbers from 2,200+ service businesses. No fluff. Unsubscribe anytime.

Sam Yang

About the author

Sam Yang

Founder & CEO

Founder of Level, the AI operating layer for contractors and skilled trades, and the other operating businesses where scarce labor is the constraint. Ex-CFO across trades, SaaS, and service businesses. 4 years as Director of Growth Product at BuildOps, building financial tooling used by 1,000+ commercial contractors. Four years in PE and investment banking rolling up and acquiring service businesses, $2.5B in total transactions including M&A and IPOs. Stanford MBA, Brown undergrad. The Level founding team's analysis of 2,200+ contractors ($13.25B in revenue) across operating, private-equity, and CFO roles anchors the Level Index benchmark research.

LinkedIn

See how your margins benchmark.

We compare your jobs, crews, and service lines against real margin data, then show which gaps deserve the free audit. Free audit included.

2,200+ service businesses benchmarked$13.25B in revenue analyzedWeekly action cadence

No credit card. 15-min audit. We only follow up if we can actually help.

No commitment. Real numbers, not generic advice.