For general contractors, subcontractors & estimating teams

You closed forty jobs last year.How many taught you anything?

This is not a drift measurement, and that is the point. It will not tell you your labour ran 22% over, because in construction that number is usually unavailable rather than bad. Every project is a one-off, the job closed, the estimator moved to the next bid, and nothing came back. The failure is not a wrong number. It is the absence of one.

Get the Feedback Gate — $99one-time · instant download · yours to keep
Five deliverables · runnable
Runnable feedback engine (Python, zero-dep)
engine
Workbook — Dashboard · Job Register
xlsx
Job Closeout Feedback Playbook
docx
Cost-Code to Estimate Mapping Guide
docx
Worked 8-job example register
csv
Run it against
Your last six to ten closed jobs, in an afternoon
01.The Problem

Almost every contractor closes jobs. Very few close the loop.

Closeout serves accounting

The last invoices land, retention is released, the job is marked complete and the file goes away. Nothing in that sequence requires anyone to ask what the job taught, and nothing routes an answer back to whoever priced it.

The comparison may not be possible

The estimate is organised the way work is priced. The job cost is organised the way work is paid for. When the two do not map, the variance is not unknown — it is unknowable, and no amount of discipline fixes it.

Good paperwork is not learning

A firm can close every job cleanly, file every report, and change nothing. The loop looks healthy from every angle except the one that matters: whether a number a bid rests on ever moved.

02.See It Work

Two thirds fed back, and the loop is still open.

Six closed jobs running the same logic the shipped engine runs. Set Basis updated to 1 on any single job and the second trigger releases — one job, anywhere, is the whole difference between a practice that learns and one that files.

Closed jobs — click a row
Municipal Annex
J-1085
Closeout complete·req
Final costs closed and reconciled, not still trickling in
Cost codes map to the estimate·req
Actual cost codes map back to the estimate's line structure
Variance causes named
Each variance has a named cause, not just a number
Estimator saw the result
The person who priced it received the result
Basis updated
The basis was changed, or a decision recorded not to
Comparison retrievable
You could produce this comparison today without rebuilding it
Job33 · LOST
Share fed back
67% of 6
Jobs that changed the basis
0 of 6
Feedback gate fired

1 job(s) whose cost codes do not map to the estimate: J-1085 — the comparison is not possible, not merely undone

no job in the register ever changed the estimating basis — the loop has never once closed

Verdict
LOOP OPEN
Fix first
J-1085 · Cost codes map to the estimate
Out of scope
none
Get the kit — $99

Two thirds of these jobs fed back and the loop is still open. Set Basis updated to 1 on any single job and the second trigger releases — one job, anywhere, is the whole difference between a practice that learns and one that files. Fixing the cost-code mapping on J-1085 alone will not do it, which is the point.

Diagram of the Estimate-to-Actual Feedback Gate: eight closed construction jobs each marked fed back, partial or lost, one job flagged fix-first because its cost codes do not map to its estimate, a two-trigger feedback gate, and a sample verdict reading LOOP OPEN.
Shareable diagram

How the gate works, in one image

Eight closed jobs, six signals each and a two-trigger feedback gate — one picture of why a register where 71% of jobs fed back still comes back LOOP OPEN.

View & embed the full diagram
03.The Engine

What it prints, on the 8-job example that ships with it.

Verbatim stdout, not a mock-up. Zero dependencies, Python 3.8+, fully offline.

ESTIMATE-TO-ACTUAL FEEDBACK GATE — EAF-099
==============================================================================
J-1041    Northgate Clinic                 2026-02-14  83  FED BACK
J-1052    Harbor Point Retail              2026-03-28  83  FED BACK
J-1063    Westline Warehouse               2026-04-19  75  FED BACK
J-1074    Cedar Ridge Apartments           2026-05-30  83  FED BACK
J-1085    Municipal Annex                  2026-06-11  33  LOST  <- no cost-code mapping
J-1096    Riverside Pump Station           2026-07-02  75  FED BACK
J-1107    Fairmount School                 2026-07-25   -  OUT OF SCOPE
J-1118    Glenview Medical                 2026-08-08  67  PARTIAL
------------------------------------------------------------------------------
JOBS IN SCOPE: 7   (FED BACK 5 / PARTIAL 1 / LOST 1)   71% fed back
Out of scope: 1 job(s) — J-1107
Jobs that changed the estimating basis: 0 of 7
GATE FIRED: 1 job(s) whose cost codes do not map to the estimate: J-1085 — the comparison is not possible, not merely undone
GATE FIRED: no job in the register ever changed the estimating basis — the loop has never once closed
VERDICT: LOOP OPEN
Jobs that taught you nothing: J-1085
Fix first: J-1085 · Cost codes map to the estimate

Five of seven jobs read FED BACK and 71% of the practice fed back, which is a respectable number. Both triggers still fire. One job's cost codes do not map to its estimate, so that comparison was never possible — and across the whole register, not one job ever changed the estimating basis. That second line is a condition on the register rather than on any row, and it is the one a share can never see.

04.The Standard

Three rules the verdict is held to.

01
It grades the loop, never the drift

It computes no variance, no productivity factor and no unit cost, and it never says what anything should have cost. Measuring drift assumes the loop already exists. In construction, that is the assumption that is usually false.

02
A practice is a share, not its worst job

One sloppy closeout on a chaotic project does not mean your firm never learns, and a worst-of rule would say it did — which would make the instrument useless within a quarter, because every firm has one bad job.

03
The gate sees what a share cannot

A comparison that was never possible, and a register where nothing ever changed the basis. The second reads the whole register rather than any row, because six jobs each scoring 83 with nobody touching the basis is exactly the shape of a firm with excellent paperwork and no learning.

Six signals per job
Closeout completerequired
Final costs closed and reconciled — not still trickling in. Required.
Cost codes map to the estimaterequired
Actual codes map back to the estimate's own line structure. Required, and the first gate trigger.
Variance causes named
Every material variance has a cause: scope change, productivity, pricing error, quantity error. Not just a number.
Estimator saw the result
The person who priced it received it. A report sent to an inbox is not an estimator seeing the result.
Basis updated
The unit cost or assembly actually changed — or a decision was recorded not to change it.
Comparison retrievable
You could produce it today without rebuilding it from invoices.
05.What This Is — And Isn't

Clear about the lane. No inflated promises.

What it is
  • A deterministic read on whether closed jobs reach the next estimate.
  • A detector for a comparison that was never possible in the first place.
  • A ninety-minute closeout session that actually feeds back, written down.
  • The one-time cost-code mapping fix that unblocks every future closeout.
  • Offline. Nothing is uploaded and nothing phones home.
What it is not
  • A variance report, a productivity factor, or a unit cost.
  • A reader of your accounting system, estimate, or job costs.
  • A claim that your numbers are good — only about whether anyone found out.
  • A drift measure for repeated production. That is a different instrument.
  • An implementation service for your cost-code structure.

On the verdict name: EVERY JOB FEEDS THE NEXT ESTIMATE AS DESCRIBED is a statement about the register as you filled it in. Nobody read your job costs.

06.Who It's For

The firm that wants next year's estimates to beat this year's.

Built for
  • Contractors whose estimating basis has not moved in years.
  • Firms where closeout happens and nothing comes of it.
  • Estimators who suspect an assembly is wrong and cannot prove it.
  • Anyone about to buy estimating software that assumes this loop exists.
It will not
  • Tell you how far off an estimate was.
  • Read or reconfigure your accounting system.
  • Produce a unit cost you can price with.
  • Decide whether a variance was somebody's fault.
08.Common Questions

The questions contractors actually ask before running this on their own jobs.

It is a $99 deterministic gate that grades whether closed jobs ever taught anyone anything, and returns EVERY JOB FEEDS THE NEXT ESTIMATE AS DESCRIBED, LOOP LEAKING, or LOOP OPEN. For each recently closed job you mark six signals — closeout complete, cost codes map to the estimate, variance causes named, estimator saw the result, basis updated, comparison retrievable — and it returns the verdict, the share of jobs that fed back, and the one thing to fix first. It ships a zero-dependency Python engine, a live-formula Excel workbook, two playbooks and a worked 8-job example.

Close the job.
Then close the loop.

One purchase, lifetime access, 12 months of updates. $99, once.

Honest boundary: a feedback-loop aid. It grades a register you fill in — it reads no accounting system, computes no variance, and never says what anything should have cost.

Sold by RedHub AI LLC · Secured by Stripe · redhub.ai