The Job We Lost Money On Was the Right Call
Why this matters
A plumbing shop finished a whole-house repipe at 37 crew hours against a 24-hour estimate on a fixed price, and the job closed slightly below break-even. The owner's first instinct, said out loud at the Monday meeting, was to pad every repipe estimate by a quarter and to think hard about dropping fixed pricing on repipes altogether. Either change would have felt like learning. Both would have been wrong. A review that worked backwards from what was written down at each stage found the decision to bid it, and the estimate itself, were sound, and the loss came from a condition nobody could see on the walkthrough. It also found two cheap things worth changing that had nothing to do with the estimate. This is how that review was reasoned.
The general idea, that a good decision can lose, has its own card. See related: Outcome Bias: Judging a Decision by How It Turned Out. This one is the case.
The record they started from
The shop keeps its estimates, crew time and job notes in its job records, so the review could rebuild the job from what was written at the time rather than from memory. That matters: by the Monday meeting everyone already "remembered" the house looking like trouble.
JOB 4417 whole-house repipe, 1-story, built 1962
Mar 04 walkthrough, 50 min, office estimator
notes: crawlspace access good, galv supply,
2 bath + kitchen + laundry, no visible
additions, owner bought house 2019
Mar 05 estimate: 24 crew hrs, 2-person crew,
fixed price, std concealed-conditions
clause in agreement
Mar 06 signed
Mar 18 day 1: 16 crew hrs, on plan
Mar 19 day 2 AM: rear bedroom + half bath on slab,
no crawlspace under them; supply runs under
slab. crew reroutes through attic.
Mar 19 day 2: 15 crew hrs
Mar 20 day 3: 6 crew hrs, patch + test
Mar 20 closed. 16 + 15 + 6 = 37 crew hrs
no change order issued
The first story: "we underbid it"
The overrun was 37 minus 24 = 13 crew hours, or 13 of 24, about 54% over. At 24 hours the job carried the shop's normal target margin on repipes. The extra 13 hours of labor used all of that margin and a little more.
The Monday-meeting reading was that the estimate was too low. If that were true it would show up in two places: this estimate would sit below what similar jobs actually took, and the overrun would be spread across the work rather than concentrated in one event. The review checked both.
Checking the estimate against the shop's own repipes
The office pulled the last nine whole-house repipes on similar single-story homes with crawlspace access. Actual crew hours, in order: 19, 21, 22, 24, 25, 26, 27, 28, 31. That is 223 hours over nine jobs, an average of about 24.8 hours, with a median of 25.
So the 24-hour estimate sat right in the middle of what this kind of job takes in this shop. It was a little under the average, by less than one hour. Six of the nine finished within 15% of 24 hours either way (21 through 27), and the worst, 31, was about 29% over. Nothing in the shop's own history came near 54%.
What that rules out: a systematically low estimate. If repipes routinely ran long, the nine would cluster above 24, and they do not. A 25% pad applied to every future repipe would have put the shop's quotes about 5 hours above what the typical job actually takes (30 hours against a median of 25), on a job type where the shop competes on fixed-price certainty. It would have cost jobs to insure against an event that showed up once in ten.
Checking where the hours went
Day 1 ran 16 crew hours against a plan that had called for about 16 on day 1. The house was on plan for the first full day.
The overrun sits almost entirely on day 2 and 3. The crew found that the rear bedroom and a half bath had been built on a slab, with no crawlspace under them, and the supply lines to that bath ran under the slab. Rather than break the slab, they rerouted the new lines through the attic and down the wall. The crew lead's note puts the reroute at about 11 hours, and the extra drywall cutting and patching at about 2 more. 11 plus 2 is the 13-hour overrun.
What that rules out: a slow crew or a sloppy estimate spread across the job. Strip the reroute out and the job comes in at 37 minus 13 = 24 hours, exactly on the estimate.
Could the walkthrough have seen it?
This is the question that decides whether the loss was bad luck or a process gap. The answer turned out to be "not by looking, yes by asking."
By looking: the estimator's notes say "no visible additions," and the photos agree. The rear bedroom matched the original roofline and siding. From the crawlspace, the slab section just looks like the end of the crawlspace. An estimator doing a 50-minute walkthrough could reasonably miss it, and the owner, who had lived there four years, did not know.
By asking: the county's online permit records showed a building permit for a rear addition in the late 1980s. A search by address takes about ten minutes. The shop had never made it part of a repipe walkthrough.
In hindsight the crew lead pointed to two small cues the walkthrough could have caught on a slower day: the rear bedroom floor sat about one step lower than the hall, and from the crawlspace the estimator could not see the underside of that bathroom's fixtures at all. Neither is conclusive alone (plenty of original houses have a sunken room), and the review was careful not to treat cues found after the fact as obvious before it. They went onto the walkthrough sheet as prompts, not as proof the estimator should have known.
So the estimate was sound on the information gathered, and there was a cheap piece of information it did not gather. Those are two separate findings, and the review kept them separate.
Was fixed pricing the wrong call?
The owner's other proposal was to stop quoting repipes at a fixed price. The review looked at what fixed pricing had done across the same nine jobs plus this one.
Of the ten, seven finished no more than 15% over the 24-hour estimate; the other three ran about 17%, 29% and 54% over. On the jobs that finished under 24 hours (19, 21 and 22), the shop kept the difference. Netting the ten jobs against ten 24-hour estimates: the nine prior jobs total 223 hours against 216 estimated, 7 hours over; this one is 13 over; together 20 crew hours over across 240 estimated, about 8%. Across the ten, the fixed-price repipes ran about 8% over in hours, which the shop's repipe pricing already carries room for.
Meanwhile the office's records showed the shop closed noticeably more repipe estimates since switching to fixed pricing, because homeowners would rather know the number. Giving that up to avoid one tail event in ten would trade a steady advantage for protection the shop's pricing already mostly provides.
Verdict on the decision: bidding the job, at 24 hours, on a fixed price, was sound. The outcome was a tail event the shop's pricing is built to absorb over a run of jobs, and this job is the one in the run that landed in the tail.
What was still worth changing
Two things, neither of them the estimate.
1. A permit-history lookup on every repipe walkthrough. Ten minutes at the desk before the estimate goes out. It would have flagged the addition, prompted a second look at the rear of the house, and either priced the reroute in or written it as a named exclusion. On a job type the shop does about ten times a year, that is under two hours of office time a year against a 13-hour miss.
2. A stop-and-call rule when the crew finds a concealed condition. The agreement carried the shop's standard concealed-conditions clause, and the crew never used it. They found the slab, solved the problem, and kept working, which is exactly what good techs do. The office learned about it from the time sheets two days later. By then the reroute was done and there was nothing to present to the homeowner.
The new rule: when the crew hits a condition the walkthrough did not see that will add more than 2 crew hours, the lead stops and calls the office before starting the extra work. The office calls the homeowner, explains what was found, and confirms how it will be handled in writing before the crew continues. The rule exists so the clause gets used at the moment it applies, not reconstructed afterward.
Whether a concealed-conditions clause actually lets a shop bill for a particular condition depends on how the clause is written and on the contract law of the state where the work happens, and some states add rules for home-improvement contracts with consumers. This is not legal advice: have your own attorney review the clause in your agreement, and bring them a real job like this one so the wording matches what your crews actually run into.
What they deliberately did not change
- The repipe estimate model. It predicted nine of ten jobs well and the tenth was a hidden condition, not a modeling error.
- Fixed pricing on repipes. It is winning work and its overruns net out across a run of jobs.
- The crew. The crew lead's decision to reroute through the attic rather than break the slab was the right technical call. It was the communication step that was missing, and that is a shop process, not a crew failing.
How they confirmed the fix
Two months later, a repipe walkthrough's permit lookup turned up an enclosed porch converted to a laundry room. The estimator priced the extra run as a separate line, and the job closed within an hour of estimate. On a different job, a crew found a section of supply line encased in an old concrete patio and called the office before touching it. The homeowner approved a written change in a ten-minute phone call, and the shop billed the extra time.
One permit lookup and one phone call cost the shop well under an hour between them, and the second one recovered several crew hours that would otherwise have been absorbed the way the 13 on job 4417 were.
References
- See related: Outcome Bias: Judging a Decision by How It Turned Out
- See related: Hindsight Bias in the Callback Review
- See related: Base Rates: The Number You Should Start From
- See related: We Made a Rule After One Bad Job
- See related: How to Avoid Optimism Bias in Your Own Estimates