The Estimating Feedback Loop Explained
Why this matters
Estimating does not get better by trying harder. It gets better by running a loop: predict, measure, compare, correct, predict again. Shops that have the loop converge on their real costs within a season or two and stop guessing. Shops that do not can estimate for twenty years and be exactly as wrong in year twenty as they were in year two, because nothing ever fed the result back to the input.
The parts of that loop have their own articles. This one is about the loop itself: what it needs to close, how fast it can turn, how hard to correct when it tells you something, and the specific ways it comes apart while everyone believes it is running.
The four parts, and what breaks without each
A loop needs all four. Three out of four is not a partly-working loop, it is an open loop that produces paperwork.
| Part | What it is | What a shop without it looks like |
|---|---|---|
| A frozen prediction | Cost assumptions, recorded before work starts, that nobody can edit afterward | Estimates get quietly adjusted to match reality. Variance reads near zero forever. |
| An honest measurement | Actual hours and cost, captured live, under definitions that do not change | Numbers reconstructed from memory regress toward the estimate. The comparison measures recall. |
| A diagnosis | The cause behind the gap, named and recorded on the job | You know that you are wrong and nothing about how. Every correction is a guess at a different guess. |
| A correction to an artifact | A changed number in a template, price book, or checklist, dated | Everyone learns the lesson and nobody's next bid changes. The knowledge lives in one head and leaves with them. |
The last row is where most shops fail, and it fails in the most reasonable-sounding way: the review happens, everyone agrees the job type runs long, everyone resolves to remember. Six weeks later a different person quotes it off the same unchanged template. The correction has to land in an artifact or it did not happen.
Loop latency: how long from a miss to a better bid
Latency is the time from a job closing to the first bid that benefits from what it taught you. It sets a hard ceiling on how fast your estimating can improve, and it is longer than most owners think.
Walk one cycle. A job closes on day zero. It is flagged and reviewed inside 5 business days. The template correction is made a few days after that, call it day 10. The next job of that type is quoted, say, day 12. That job runs and closes on day 40. Only then can you measure whether the correction worked.
So the fastest realistic cycle on a job type you run weekly is about six weeks, and that assumes every step actually happens on schedule. On a job type you run four times a year, one full cycle takes over a year, because you cannot measure the correction until enough of them have run.
Two consequences follow, and both are practical:
- Shorten what you control. Review latency and correction latency are yours. If a job closes and sits three weeks before review, and the template change waits for a quarterly meeting, you have added a month and a half to every cycle for no reason. Same-week review and same-week correction can cut total latency roughly in half.
- Accept the loop speed on rare work. A job type you run three times a year cannot be tuned quickly, and pretending otherwise leads to repricing on two data points. Group rare job types into broader families so the family accumulates enough jobs to learn from, and treat the individual member as a variant of the family estimate.
Loop gain: how hard to correct
Gain is how much of the measured miss you put into the correction. It is the single most misunderstood setting in the whole loop, and the intuitive answer, correct by the full amount, is wrong.
Correct by roughly two-thirds of the measured bias, and approach the target from below. Three reasons:
- Your measured bias carries error. It came from a limited sample, with some jobs affected by causes you classified as one-off and might have gotten wrong. Correcting fully means correcting the noise as well as the signal.
- The costs of the two directions are not symmetric. Under-correcting leaves you slightly underbid on a job type you now watch closely, and you take another step next quarter. Over-correcting loses you bids you never see, and a lost bid produces no data at all, so the loop goes silent exactly where you most need feedback.
- Some of the measured miss usually gets fixed by the process changes that came out of the same review. If a pre-job checklist item removed a recurring access delay, part of the historical overrun will not recur, and correcting the full amount double-counts it.
A shop that corrects at full gain, or worse at more than full gain because one dramatic job is in the sample, produces oscillation: the template goes up 18% for a 12% bias, next quarter runs 5% under, the template comes back down too far, and the number swings for a year without ever settling. That looks like a job type that is impossible to price. It is actually a loop with the gain set too high.
Damping: why one job is never a correction
A single job's variance is one sample from a distribution. Correcting a template off it is guaranteed oscillation, because the next job will be a different sample and will point the other way.
The damping rule: a template changes on a pattern, never on a job. Patterns need a count (a working minimum of about eight jobs of the type), a direction (well past half the jobs leaning the same way), and a median (not a mean, so one catastrophic job cannot drive it).
The exception, and it is a real one: a correction to a process artifact can and should be made off a single job. If one job revealed that nobody confirms site access before dispatch, add the checklist line today. The distinction is that a checklist item costs you nothing if the problem was rare, while a template number reprices every future bid.
Where the loop breaks
Four failure shapes, each of which leaves the loop looking alive from the outside:
- Measurement collapses toward the estimate. Variance across the whole shop drifts toward zero over a few months. Almost always this is logging behavior responding to consequences, not estimating getting good. Real estimating improvement narrows the spread but keeps it scattered both ways; a genuine drift to zero variance on every job type is a data problem.
- Diagnosis skips to correction. The gap gets measured, nobody names the cause, and the template gets bumped anyway. Now you have padded a template for a cause you never identified, and if the cause was one-off you have permanently overpriced the work.
- The correction lands in a person, not an artifact. The estimator learns it. The estimator goes on vacation. The loop was never in the system.
- The correction gets silently reverted. A price book gets restored from an older copy, a template gets rebuilt during a cleanup, a new hire starts from a saved version. Six months later the pattern reappears and everyone diagnoses it fresh. A dated change log of estimating corrections is the cheap defense: a reappearing pattern gets checked against the log first.
A worked loop over three quarters
A job type the shop runs steadily, roughly two dozen a quarter.
Quarter 1. 22 jobs closed. Median labor variance 12% over, with 17 of 22 over estimate, which is 77%, well past the half you would see from random scatter. That is a real bias, not noise. Applying two-thirds gain, the template goes up 8%, not 12%. Change dated at the end of the quarter.
Quarter 2. 25 jobs closed, all quoted off the corrected template. Median variance is now 4% over. Check that this is consistent rather than lucky: the underlying work still costs what it costs, so against a template raised 8% for a true bias near 12%, the residual you would expect is roughly 1.12 divided by 1.08, about 3.7% over. The measured 4% sits right on it, which is confirmation the diagnosis was right and the gain was doing what gain is supposed to do.
The remaining 4% is real and it is small. Second correction, again from below: 3%.
Quarter 3. 24 jobs closed. Median variance 1% over, with 13 of 24 over, essentially an even split. Expected residual from a 3% correction on a 4% gap is 1.04 divided by 1.03, about 1% over, which is what landed. The job type is now inside the noise band and the loop stops. No third correction. You leave it alone and watch it quarterly.
Total time to converge: three quarters, two corrections, both partial. Compare the alternative. A shop that corrected the full 12% in Q1 and then, seeing Q2 land slightly under, corrected back down, would still be moving the number in Q4 and would conclude that the job type is unpredictable. The job type was never unpredictable. It had a 12% bias and a shop that kept overshooting it.
Note what the loop did not do at any point: it never corrected off a single job, never corrected on a mean, and never made a correction it did not verify in the following quarter.
What changes the answer
- A shop with very low job volume. Under about eight jobs of a type per quarter, quarterly measurement has no statistical footing. Measure on a rolling twelve-job window regardless of how long it takes to fill, and accept a slower loop rather than correcting on four jobs.
- A genuine change in the work. New tooling, a new install standard, a code change, a different supplier. The baseline reset, so history before the change date is not comparable. Cut the data at the change and start the loop again rather than averaging across it.
- Fast-moving material cost. Material bias corrects on a different clock than labor bias, because supplier pricing moves on its own schedule. Refresh price-book cost figures on a calendar cadence, not through the variance loop, and reserve the loop for takeoff completeness (what you forgot to list) rather than unit price (what it costs).
- A job type you are trying to exit. If the plan is to stop taking that work, do not spend loop cycles tuning it. Price it high enough that you are indifferent and put the attention on the work you want.
How to verify the loop is closed
Four checks, and a shop that passes all four has a real loop:
- Pick a correction from six months ago and trace it forward. Can you find the dated change to the artifact, and the jobs quoted after that date, and the measured result? If any link is missing, that cycle never closed.
- Check that variance still scatters both ways. Improvement should show up as a narrowing spread with a median near zero, not as every job landing exactly on estimate. Universal agreement is a measurement failure.
- Count corrections that were verified against corrections that were made. If you made nine template changes last year and verified two, you have a half loop: it detects and corrects but never confirms, so a wrong correction can sit for years.
- Ask who could re-derive last quarter's corrections from the records alone. If the answer is only the person who was in the room, the knowledge is in a head, not in the system, and the loop will break the day that person is out.
References
- U.S. Small Business Administration: cost estimating, job costing, and financial control guidance for small contractors.
- Standard construction and field-service practice on estimate-to-actual reconciliation and estimating database maintenance.
- See related: The Post-Job Cost Review SOP.
- See related: Why Estimates Miss and Which Misses Matter.
- See related: How to Run a Monthly Estimate Accuracy Review.