How to Handle a Job Running Over Before It Finishes

Why this matters

An overrun discovered at invoicing is a loss you already took. The same overrun at the halfway mark is a decision you still get to make - bill it, re-scope it, absorb it deliberately, or stop before it compounds. The gap between those outcomes is not skill, it is whether anybody looked at the job before it was over.

The pattern that costs shops the most is not the job that blows up. It is the job quietly running 1.3 times its rate from the first hour, where nobody notices until the tech is packing up, and by then the only options left are eating it or having an ugly conversation with a customer who watched you work for two days without hearing a word about a problem. That conversation is unwinnable, and you built it.

Set the checkpoints before the job starts

An in-flight check only works if it is scheduled. Pick the checkpoint from the job's size:

  • Under 4 estimated hours: one check at the halfway point, and it is the tech's own read.
  • 4 to 16 estimated hours: checks at 25% and 50% of estimated hours consumed.
  • Over 16 estimated hours, or multi-day: end-of-day check every day, plus the 25% mark.

Put the checkpoint on the work order as an hours figure, not a time of day. "Check at 4.0 hours" is unambiguous; "check after lunch" drifts.

Step 1: Read the burn ratio, not the clock

At the checkpoint, capture two numbers: percent of estimated hours consumed (actual so far over the estimate), and percent of scope complete (which of the job's named phases are finished, weighted the way the template weights them).

The second is the one shops skip, and skipping it makes the first meaningless. Four hours into a 16-hour job with 30% of the scope done is fine. Four hours into the same job with 15% done is a problem now.

The burn ratio is percent-of-hours-consumed divided by percent-of-scope-complete. The tracking-labor-hours article calls this the burn rate: same number, other name. That one owns the logging, this one owns what to do when it moves. At 1.0 you are on plan. Above 1.0 you are spending hours faster than you are producing scope.

This is why the template has to name phases with rough weights before the job sells. A template that is just a total hours figure gives the field nothing to check against, and the checkpoint degrades into the tech's feeling about how it is going, which is systematically optimistic on the days it matters most.

Step 2: Re-project, splitting the remaining scope into characterized and uncharacterized

The lazy projection multiplies the whole estimate by the burn ratio. That is wrong in both directions.

Most jobs are front-loaded with uncertainty: access, isolation, demolition, discovery. The back half is usually routine finish work the template times reliably because it does not depend on what you find. Extrapolate a burn ratio earned entirely on the discovery phase across the routine phase and you project a disaster, then either re-price a job that was going to land fine or walk from work you should have kept. Back-loaded jobs are the reverse and more dangerous, because a clean first half hides the part nobody has opened. Commissioning, tie-in, testing and anything behind a wall belong in the uncharacterized bucket regardless of how the job has gone so far.

So split the remaining scope: characterized remainder is phases of a kind you have already run on this job or that the template has predicted reliably before, projected at template rate. Uncharacterized remainder is anything not yet opened, projected at the observed burn ratio. Add them for your projected total.

Step 3: Attribute the projected overrun before you decide what to do

Take the projected overrun in hours and split it into three buckets, in this order:

  1. Discovered condition. Something at the site a reasonable pre-job look would not have found - a corroded fitting that will not break loose, prior work done wrong and buried, a support that is not where the drawings say. Billable under a conditions clause if you have one and raise it now.
  2. Approved scope change. The customer asked for extra and said yes. Billable, and it should already be on a change order.
  3. Everything else. Estimating miss or execution miss, and either way it is yours today. The post-job review will attribute it properly; at the checkpoint it is not billable either way.

Split it before choosing a response, because the response depends entirely on the split. An overrun that is 80% discovered condition is a paperwork problem. An overrun that is all "everything else" is a management problem, and raising it with the customer reads as a shakedown.

Step 4: Pick one of four responses

Response Use it when What it costs you
Continue and absorb Projected overrun under about 10%, unattributable The hours. Under 10% is inside normal variance on most job types
Continue, change order raised now The overrun traces to a discovered condition or an approved add A conversation today instead of a dispute at invoicing
Stop, re-scope, re-price Projected overrun above about 35%, or the uncharacterized remainder is over about a third of the job A hard conversation and possibly the job, against a much larger loss
Stop work, stabilize the specific hazard, leave, return with a plan The discovery changes the nature of the job: suspected gas, equipment you cannot isolate, suspected asbestos-containing material, structural involvement, standing water around energized circuits A day, against an injury you cannot buy back

Those thresholds are defaults. If your absolute variance on this job type already runs 20%, a 10% absorb threshold will have you raising change orders on ordinary noise, so widen it. Tune the numbers, keep the structure.

The fourth response is not a costing decision and does not get weighed against hours. Name the action per hazard rather than deciding on site:

  • Smell of gas, or a suspected gas leak: everyone leaves the building immediately. Do not operate any switch, do not turn lights on or off, do not use a phone inside. Call the gas utility and your office from outside, well clear.
  • Energized equipment you cannot isolate: de-energize at the disconnect, apply your own lock and tag, and verify dead with a meter proven on a known live source before and after the test.
  • Standing water around energized circuits: do not enter the water. Kill the circuit at the panel and verify dead before anyone steps in.
  • Suspected asbestos-containing material: stop cutting, sanding, drilling and sweeping immediately, leave the material undisturbed, isolate the area, and do not resume until it has been tested.
  • Stored energy - capacitors, springs, accumulators, pressurized vessels: discharge or relieve through the manufacturer's designated path and verify at zero before disassembly.

Step 5: Write the checkpoint note while it is warm

Two sentences on the job record at the checkpoint, not at close: what the burn ratio was, and what you believed was causing it. At the checkpoint the tech knows exactly which phase ate the hours. Three weeks later they remember that it "ran long." A shop that runs checkpoints but does not record them gets the in-flight benefit and none of the feedback benefit, and the same job type keeps being underbid.

A worked example, carried through

A multi-day job is estimated at 16.0 hours of labor. The template weights the phases: access and isolation 20%, demolition and removal 20%, install 45%, commissioning and cleanup 15%. Checkpoints are set at 4.0 hours (25%) and 8.0 hours (50%).

At the 4.0-hour checkpoint, access and isolation are done and demolition is about half done. Scope complete is 20% plus half of 20%, so 30%. Hours consumed are 4.0 of 16.0, so 25%. Burn ratio is 25 divided by 30, or 0.83. The job is ahead. No action.

At the 8.0-hour checkpoint, the picture has changed. Access and isolation, demolition and removal are complete, and install has not started. Scope complete is 40%. Hours consumed are 8.0 of 16.0, so 50%. Burn ratio is 50 divided by 40, or 1.25.

The lazy projection: 8.0 hours bought 40% of the job, so 100% costs 8.0 divided by 0.40, which is 20.0 hours. Against the 16.0-hour estimate that is 4.0 hours over, or 25% over the 16.0-hour estimate. That number would push this job into the re-scope conversation.

Now do it properly. Of the remaining 60% of scope, the install phase at 45% is routine work of a kind the template has predicted reliably across past instances - characterized. The commissioning and tie-in at 15% has not been opened - uncharacterized.

  • Characterized remainder: 45% of 16.0 hours at template rate is 7.2 hours.
  • Uncharacterized remainder: 15% of 16.0 hours is 2.4 hours at template rate, times the observed 1.25 burn ratio, is 3.0 hours.
  • Projected remaining: 7.2 plus 3.0 is 10.2 hours.
  • Projected total: 8.0 consumed plus 10.2 remaining is 18.2 hours.

Against the 16.0-hour estimate that is 2.2 hours over, or about 14% over the 16.0-hour estimate - not 25%. The lazy projection overstated the overrun by nearly double, because the burn ratio was earned entirely on the front-loaded discovery phases.

Attribute the 2.2 hours. The isolation phase ran 2.5 hours against a template 1.0 hour, because a fitting was corroded solid and had to be cut and re-made. That is 1.5 hours of discovered condition, and it is documented with a photo. The other 0.7 hours (2.2 minus 1.5) is unattributed spread.

The response. 14% projected overrun is above the 10% absorb threshold and well below the 35% re-scope threshold, and the majority of it traces to a discovered condition. So: continue, and raise a change order today for the 1.5 hours of corroded-fitting work under the conditions clause, with the photo attached. Absorb the 0.7 hours without mentioning it - it is inside normal variance and arguing it would cost more goodwill than it is worth.

What the alternatives cost. Say nothing and invoice 18.2 hours against a 16.0-hour quote, and you hand the customer a 2.2-hour surprise on a job they watched, with no photo and no way to prove the fitting was corroded before you cut it out. Re-scope on the 25% lazy projection instead, and you have a hard conversation about a 4.0-hour overrun that was never going to happen on a job that landed 2.2 hours over. Both are worse than the checkpoint answer, and both are what you get without one.

What changes the answer

Fixed-price work with no conditions clause. The attribution still matters for your own learning, but the discovered condition is not billable and the response set collapses to absorb, re-scope by agreement, or stop. Check the contract before you raise anything - a change order you have no right to raise damages the relationship more than eating the hours would have.

The customer is on site watching. Raise the discovered condition at the moment you find it, not at the checkpoint. A condition disclosed live reads as competence. The same condition disclosed two hours later reads as a decision to bill for something you had already absorbed.

The job is time and materials. Checkpoints still matter, but their purpose flips from protecting your margin to protecting the customer's budget. A T&M job trending 25% over its not-to-exceed figure needs a call before the number is hit, not after.

Very short jobs. Under about 2 hours there is no useful checkpoint - by the time you have a reading the job is done. Control those at the template level through that type's accuracy metrics instead.

How to verify you got this right

Take the last ten jobs that ran over and ask, for each, whether a checkpoint at 50% would have caught it. If most would have, checkpoints are your gap. If most would not, because the whole overrun landed in the final phase, your checkpoints are placed wrong for those job types and should move later or gain one at 75%.

Then check the direction shops never check: pull jobs where a change order was raised mid-job and see how many landed at or under the revised number. Change orders that consistently overshoot the final actual mean you are projecting with the lazy method, over-raising, and teaching customers that your mid-job numbers are inflated.

References

  • See related: How to Tell a Customer the Job Will Cost More Than Quoted and The Mid-Job Change Order Price Conversation for the customer-facing script this article does not re-teach.
  • See related: Estimating the Unknown: The Conditions Clause for the language that makes a discovered condition billable.
  • See related: How to Separate Estimating Error From Execution Error for attributing the residual.
  • OSHA general industry guidance on lockout/tagout and on stopping work when an unassessed hazard is discovered.