How to Catch a Job Going Over Budget Before It Ends
Compare hours burned to percent complete, not to the calendar. If the crew has used 70% of the estimated hours and the job is 40% done, the overrun already happened, you just have not paid for it yet. Check that ratio at fixed checkpoints, roughly 25%, 50%, and 75% through the work, and you get days or weeks to respond instead of a post-mortem. CRMb keeps the actual side current from punched crew hours and average-cost materials, so the check takes a minute rather than an afternoon.
Every shop has a story about the job that lost money. Almost none of them are stories about a surprise. The overrun was visible on day three and nobody was looking.
Why overruns are invisible until the end
Job costs arrive at different speeds. Labor accrues by the hour. Materials show up when someone pulls stock or a supplier invoice lands, sometimes weeks late. Subs bill at the end. Revenue is a single number agreed to before any of it happened.
So the natural moment to compare cost to budget is after everything has arrived, which is exactly when nothing can be changed. The fix is not more data. It is checking the one number that is always current, hours, against the one number only you can supply, percent complete.
The one ratio that matters mid-job
Run this at every checkpoint:
Burn ratio = (hours used ÷ hours estimated) ÷ (percent complete)
- Below 1.0 — you are ahead of the estimate.
- About 1.0 — on track.
- Above 1.2 — the job will overrun by roughly that factor unless something changes.
A crew that has burned 45 of 100 estimated hours at 50% complete is at 0.9, comfortable. The same crew at 45 hours and 30% complete is at 1.5, meaning the job finishes near 150 hours. On a $10,000 job bid at 100 hours, that is roughly 50 extra hours of loaded labor, which on a $45 loaded rate is $2,250 of margin gone. See how to calculate labor burden rate for the loaded rate itself.
The ratio is only as good as your percent-complete estimate, which is why it belongs to the person on site, not the office.
Set checkpoints, not a daily habit
Checking every day produces noise and gets abandoned in a week. Three checkpoints per job is enough for most work:
| Checkpoint | What to compare | What a red flag looks like |
|---|---|---|
| ~25% complete | Hours burned, materials issued | Burn ratio over 1.2, or a material already reordered |
| ~50% complete | Hours, materials, any verbal extras | Any scope done that is not on a signed change order |
| ~75% complete | Hours, remaining scope, punch list | Remaining work needs more hours than remain in the budget |
For jobs under a day, skip the checkpoints and review after. The framework earns its keep on multi-day and multi-week work, where a small daily overrun compounds quietly.
The four things that actually cause the overrun
When the ratio goes red, the cause is nearly always one of four things. Name it before you react.
Scope crept. The customer asked for something on site and the crew said yes. This is the most common cause and the most fixable, because the work is usually billable, it just was not billed. Write it up now, see how to handle change orders on a job.
The estimate was wrong. The hours were never realistic for this work. Nothing on this job will fix that, but the next bid can, see how to estimate labor hours for a job.
Productivity dropped. Wrong crew size, missing materials, waiting on an inspection, travel between sites. Often the cheapest to fix, and often solved by sequencing rather than adding people.
Materials cost more than planned. Prices moved or waste ran high. See how to handle material price increases and how to reduce material waste on jobs.
What to do at each checkpoint
The point of catching it early is that you still have levers. Ranked by how much margin they save:
- Bill the extra work. If scope grew, a signed change order converts an overrun into revenue. This is the only lever that can make the job whole.
- Re-sequence the crew. Move a second tech on to compress the critical path, or pull one off work that is waiting on something else. Watch overtime while you do it, see how to control overtime costs on jobs.
- Tighten remaining scope. Deliver exactly what was quoted for the rest of the job, and quote the rest separately.
- Accept it and record it. Sometimes the job is a loss and finishing well is worth more than the dollars. Write down why, so the next estimate carries the lesson.
Adding people to a late job is the reflex and rarely the best answer. It buys schedule, not margin.
Make the actual side current, or none of this works
The whole method depends on knowing today's hours today. If timesheets are reconstructed on Friday from memory, your 25% checkpoint is fiction.
Two things have to be true:
- Crew hours are tied to the job as they happen, from real clock-in and clock-out, not a weekly summary.
- Materials hit the job when they leave the shelf, valued at average cost rather than the last invoice price, see average cost inventory for job materials.
Get those two right and the checkpoint is a glance. Get them wrong and every mid-job review is a debate about whose numbers are correct.
FAQ
How do I estimate percent complete honestly? Base it on physical work finished, not time elapsed or dollars spent. Count units: rooms painted, feet of trench, fixtures set, squares laid. If the job has no countable unit, break the scope into named milestones during the quote and count those. Never derive percent complete from hours burned, that makes the ratio circular and always equal to 1.0.
What burn ratio should trigger action? Most shops use 1.2 at the first checkpoint. Below that, normal variation. Above it, the pattern usually continues, because the causes, scope creep and a bad estimate, do not correct themselves halfway through.
Should I tell the customer the job is running over? If the cause is added scope, yes, immediately and in writing, before more of it gets done. If the cause is your own estimate or productivity, that is your cost to absorb on the agreed price, and raising it mid-job damages trust for nothing.
Does this apply to fixed-price and time-and-materials jobs equally? The check matters most on fixed price, where every extra hour comes out of your margin. On time and materials it is still worth running, because an overrun there means an invoice larger than the customer expects, which is its own problem. See time and materials vs fixed price contracts.
What if I only find out at the end anyway? Then run the post-job profitability review and fix the input, not the review. Late-arriving labor data is the single most common reason overruns stay invisible.
How small a job is worth checking mid-stream? If the work spans more than about three crew-days, checkpoints pay for themselves. Below that, the job is over before a correction could take effect.
Getting started with CRMb
Mid-job cost control fails for a boring reason: the actual numbers are scattered across timesheets, a supplier's email, and someone's truck.
CRMb keeps them on the job. Crew hours punched in Punch flow onto the job as labor cost as they happen. Materials pulled from warehouse or truck stock land on the job at average cost. Quotes, change orders, and invoices sit on the same record, so billable scope does not get lost. Reports show margin against real punched hours, which is the number your checkpoint needs.
Start a 14-day free trial at crmb.io and run a checkpoint on a job you have open right now. If the ratio is over 1.2, you have just bought yourself the time to do something about it.