The Quote That Was Right and Lost Money Anyway

Why this matters

The estimate everyone argues about is the one that was wrong. The estimate worth studying is the one that was right. A job whose productive hours land within half an hour of the quote and still finishes underwater is not an estimating failure at all, and treating it as one sends a shop off to sharpen a number that was already sharp. What leaked was a promise that never appeared in the priced scope, and the only place it left a mark is the record.

This one is reconstructed after the fact, from paperwork, because that is the only evidence that survives. The crew's memory of a job three months old is a story, and a story will agree with whatever the person telling it already believes.

What the paperwork claimed

A multi-visit job, quoted at 22.0 labour hours plus materials, accepted without negotiation, delivered without a complaint, invoiced at the quoted figure. The customer was satisfied and referred two others.

The job-cost report showed 29.0 paid labour hours against 22.0 quoted. The owner's first read was that the estimator had lowballed by roughly a third, and the first proposed fix was a blanket uplift on that job type.

That fix would have been wrong, and the time entries say so.

Reading it backwards from four records

Nobody kept a running log of what went wrong, because at no point did anything feel like it was going wrong. So the reconstruction has to come from records kept for other reasons.

The time entries, split by activity rather than by day. This is the one that broke the case. Productive hours actually spent working on the equipment totalled 21.5 against 22.0 quoted, so the estimate came in half an hour generous on the work itself, accurate to within about 2 percent. On a job of that size that is as good as estimating gets.

The visit tickets. Five site visits, where the quote had been built on two. Each of the three extra visits carries its own drive, park, unload, protect and re-load, and the tickets timestamp all of it: about 1.5 hours per extra mobilization, 4.5 hours across the three.

The message thread. Scheduling this job around another trade generated roughly 2.0 hours of office coordination across three weeks. None of it was booked to the job. It sat in overhead, which is why the job-cost report said 29.0 rather than 31.0.

The tickets again, for two things nobody thought of as work. On the second visit the crew waited 1.5 hours for someone with a key. On the last visit they spent 1.5 hours on protection and cleanup in an occupied space, against a quote written as though the space would be empty.

Add the four: 4.5 plus 2.0 plus 1.5 plus 1.5 is 9.5 hours. Against 21.5 productive hours the true total is 31.0, which is 41 percent over the 22.0 quoted. Every one of those 9.5 hours is real, paid, and outside the priced scope.

Each leak traces to a sentence somebody said out loud

This is the finding. Not one of those hours came from a hidden condition, a bad supplier, a mistake in the field or a customer changing their mind. Each traces to a promise made in a conversation and never written into the price.

Leak Hours The promise behind it
Three extra mobilizations 4.5 "We can work around your schedule, just tell us when the space is free"
Office coordination 2.0 "We will sort the sequencing out with the other trade, you do not need to be in the middle"
Standby for access 1.5 "No problem, we will be there at eight" (with no stated consequence if the space is not open at eight)
Protection and cleanup in an occupied space 1.5 "You will not even know we were here"

Each is a good thing to say. Each is the reason the customer referred two others. None of them cost anything to say and all of them cost hours to keep, and the quote had a line for the work and no line for any of the four.

That is what "the quote was right" actually means here. The estimator priced the scope of work correctly and the shop sold a scope of service that was larger.

The record that was missing

The reconstruction above took about 2.0 hours of office time to assemble, and it only worked because the shop happened to timestamp visit tickets and happened to keep the message thread. Two things were missing and both are cheap to add.

Activity coding on time entries. Splitting productive hours from mobilization, standby and coordination is what turned a vague "we ran long" into 21.5 versus 9.5. Without it the shop would have accepted the lowball theory, added a blanket uplift to a correct estimate, and lost the next competitive bid on that job type while the leak continued.

A place to record a promise. A commitment made verbally on site, with no line in the quote and no field on the ticket, exists only in the memory of whoever said it. The fix is not a policy against being accommodating. It is a single field on the quote where accommodations are named and given a bound: number of mobilizations included, arrival readiness expected, who coordinates other trades, what protection is included.

Correcting the number without flattering it

One trap in this kind of reconstruction, and it is easy to fall into while writing the summary.

Pulling those 2.0 coordination hours out of overhead and onto the job is the right call, because they were caused by the job and would not exist without it. But once you do that, this job's 31.0 hours cannot be compared against the shop's historical average for the job type, because that average still has every job's coordination hours sitting in overhead. Comparing the corrected figure to the uncorrected blend makes this job look like an outlier when the whole population is understated the same way. Either recode a sample of past jobs the same way before you compare, or say plainly in the write-up that the comparator is pre-correction.

Second, know what the reclassification does to the reported numbers. Moving hours from overhead into job cost lowers reported gross margin on that job type, because gross margin is drawn above job cost and below overhead. Net profit does not move at all, since the same hours were always being paid. An owner who does not know that will see the job-type margin drop after the recode and think the recode caused a loss, when all it did was put an existing cost where it belongs.

What the quote should have carried

Four instruments, each aimed at one of the four leaks, and all four are ordinary quote language rather than anything adversarial.

A mobilization count. State the number of site visits the price includes and the rate at which additional visits are added. Two included, additional visits at a stated figure, and the customer decides whether their scheduling preference is worth one. This single line would have addressed 4.5 of the 9.5 hours.

A coordination allowance, or an explicit exclusion. If you are going to be the one sequencing another trade, that is a service and it takes office hours. Either price an allowance of a stated number of hours with anything beyond it quoted separately, or exclude it in writing and name who does own it. Silence means you own it for free, which is what happened.

A site-readiness condition with a consequence. Access available at the agreed arrival time, and standby beyond a stated grace period billed at the crew's rate. The grace period is what keeps this fair rather than punitive: nobody bills for four minutes at a door. A common starting point is 30 minutes of grace, then standby billed in quarter-hour increments, and tune that to your own drive times.

A protection and cleanup scope. Occupied-space work costs more than empty-space work and always has. Say which one the price assumes and what changes if the space is occupied, rather than absorbing it because saying so on the doorstep feels awkward.

Three different people made those four promises

Worth noticing before anyone writes a policy: the four commitments did not come from one person or one moment. The estimator made the coordination promise during the walkthrough, because it was what unlocked the sale. A tech made the arrival promise on the second visit, because the customer asked a direct question and "we will be there at eight" is what a straight answer sounds like. The office made the scheduling promise across three weeks of messages, one accommodation at a time, none of which felt like a decision. The cleanup promise was nobody's; it was an assumption the customer formed and nobody corrected.

That spread is why "stop over-promising" is a useless instruction. Nobody over-promised. Four people gave four reasonable answers with no way of knowing what any of them cost, because nothing in the quote told them what was included.

So the fix is authority, not attitude. Decide which commitments any person in the field can make on their own, which need a call, and which only exist if they are written into the price. Extra mobilizations and coordination of other trades are usually worth putting in the second category, since both are cheap to grant knowingly and expensive to grant by accident. Then put the included quantities on the quote where the crew can read them too, because a tech cannot honour a boundary they have never seen.

Reading the pattern in your own book

One job proves nothing. The reason this case matters is that the leak is systematic, and it shows up as a specific signature you can look for.

Pull the last dozen jobs of one type and compute, for each, productive hours divided by total paid hours. If the estimate is the problem, productive hours run over quoted hours and the ratio stays high. If the promise is the problem, productive hours track the quote closely and the ratio falls, which is what happened here: 21.5 of 31.0 is 69 percent, meaning nearly a third of everything the shop paid for on that job produced no billable work.

The signature is worth naming because the two problems get the same complaint from the field ("that job took forever") and need opposite fixes. Raise the rate on a job type whose real problem is unpriced mobilizations, and you lose the bids you would have won while continuing to lose money on the ones you win.

References

  • See related: How to Spot Scope Creep in Your Cost Data, Confirming Scope Before You Roll the Truck, The Signed Scope That Prevents the Dispute, How to Cost Callbacks and Rework Honestly