For general contractors, subcontractors & estimating teams

You lost thirty bids last year.Do you know why?

On public work the answer is published. The tab lists every number, including yours, and it is the only competitive information anybody will ever hand you for free. Almost nobody reads them. The estimator moved to the next bid, the result was filed as a loss, and the reason is now unknowable.

Get the Debrief Gate — $79one-time · instant download · yours to keep
Five deliverables · runnable
Runnable debrief engine (Python, zero-dep)
engine
Workbook — Dashboard · Bid Register
xlsx
Bid Debrief Playbook
docx
Reading a Bid Tab — field guide
docx
Worked 10-bid example register
csv
Run it against
Every bid you closed in the last two quarters
01.The Problem

The information is free, public and unread.

A loss is recorded, not examined

It goes in the log as a loss and the pipeline moves on. Nothing in that sequence requires anybody to ask where the number sat, and there is no moment at which not asking becomes visible.

The close ones look like the far ones

In a win-rate report, losing by 0.8% and losing by 22% are the same row. One of them says your number was right and something else decided it. The other says you were never in the running, and they call for opposite responses.

Learning that changes nothing is filing

A firm can read every tab, name every gap, and go on bidding the same owners, the same building types and the same competitors. The debrief is only real at the point where something about the next pursuit is different.

02.See It Work

The worst-scoring bid on the board carries no gate.

Five closed bids running the same logic the shipped engine runs. BD-03 scores 17 and is not gated, because it was an 18.9% loss and this instrument lets blowouts go. BD-05 is gated on a margin that was never recorded, which counts as close — you cannot call a loss a blowout you never looked at.

Closed bids — click a row

BD-03 is the worst-scoring bid here and carries no gate. It was an 18.9% loss, and this instrument lets blowouts go on purpose.

Harborview Warehouse
BD-05 · closed 2026-04-22
Result obtained·req
A tab, an owner debrief, an award notice — not just 'we didn't get it'
Position known·req
The deciding number, your rank, the spread
Gap attributed
Scope, rates, markup or their error — not 'they were cheaper'
Checked against the pattern
Compared against your others on this type or this competitor
Pursuit rule touched
Something changed about what you chase, or was recorded not to
Debrief retained
The next estimator on this type would find it without asking
Bid8 · UNEXAMINED
Debriefed
20% of 5
Close bids
3 of 5
Changed what you chase
2

Wide win, reported and never gated: BD-04 came in at or beyond 10% under the next bidder. That is a pricing question, and this grades whether you found out.

Near-miss gate fired

2 close bid(s) never debriefed: BD-02, BD-05 (1 of them with no recorded margin, which counts as close) — the one you nearly won is the one that had something to teach

Verdict
BIDDING BLIND
Fix first
BD-05 — Position known
Near misses nobody looked at
BD-02, BD-05
Get the kit — $79

One bid in five was debriefed and two close ones were not, so the gate is holding this at the floor. BD-05 is the interesting row: its margin was never recorded, which counts as close, because you cannot call a loss a blowout you never looked at. Press margin: ? on it and nothing improves — recording a number is not finding out what happened.

Diagram of the Bid-Result Debrief Gate: ten closed construction bids each marked debriefed, partial or unexamined, one bid flagged fix-first for having no recorded result at all, a near-miss gate that selects bids by losing margin, and a sample verdict reading BIDDING BLIND.
Shareable diagram

How the gate works, in one image

Ten closed bids, six signals each and a near-miss gate that picks its subset by losing margin - one picture of why a 0.9% loss is gated and an 18.9% blowout is deliberately let go.

View & embed the full diagram
03.The Engine

What it prints, on the 10-bid example that ships with it.

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

BID-RESULT DEBRIEF GATE - BRD-079
==============================================================================
BD-01   Riverside Elementary       LOST   1.8%  92  DEBRIEFED
BD-02   Northgate Medical Fitout   LOST  12.4%  58  PARTIAL
BD-03   Cedar Street Apartments    WON    2.1%  83  DEBRIEFED
BD-04   Municipal Fleet Garage     LOST   0.9%  42  PARTIAL  <- close, never debriefed
BD-05   Harborview Warehouse       LOST    ?     8  UNEXAMINED  <- close, never debriefed
BD-06   Two Rivers Fire Station    LOST   3.2%  83  DEBRIEFED
BD-07   Oakfield Distribution      WON   14.6%  58  PARTIAL
BD-08   Library Renovation         LOST  18.9%  17  UNEXAMINED
BD-09   Sunset Ridge Clinic        LOST   4.4% 100  DEBRIEFED
BD-10   Old Mill Adaptive Reuse    LOST    ?     -  OUT OF SCOPE
------------------------------------------------------------------------------
BIDS IN SCOPE: 9   (DEBRIEFED 4 / PARTIAL 3 / UNEXAMINED 2)   44% debriefed
Close bids: 6 of 9   Results that changed what you chase: 4
Out of scope: 1 bid(s) - BD-10
Wide wins (reported, never gated): BD-07 - at or beyond 10.0% under the next bidder
GATE FIRED: 2 close bid(s) never debriefed: BD-04, BD-05 (1 of them with no recorded margin, which counts as close) - the one you nearly won is the one that had something to teach
VERDICT: BIDDING BLIND
Near misses nobody looked at: BD-04, BD-05
Fix first: BD-05 - Position known

Four of nine bids were debriefed and four results changed what the firm chases, so the register-level trigger is clear. The gate still fires, on two close bids nobody looked at — one of them a 0.9% loss, the other a loss whose margin was never recorded. Note that the 18.9% loss scoring 17 does not appear in the gate line: it is the worst-marked bid in the register and it is not what is holding the verdict down.

04.The Standard

Three rules the verdict is held to.

01
The pressure goes where the information is

The gate reads the close bids and lets the blowouts go. Losing by 22% tells you almost nothing you did not suspect; losing by 0.8% says your number was right and something else decided it. This is the only RedHub gate that selects its subset by a continuous field rather than by a category, and it is the honest place to put the weight.

02
An unrecorded margin counts as close

Not because it is probably close, but because the alternative is an escape hatch. If unknown meant wide, a firm that never obtains a result would have no close bids at all and could never fire the gate that exists to catch exactly that practice. On a win the rule reverses, because a job you took is not a near miss.

03
Learning that changes nothing is filing

A condition on the whole register: if nothing you found out has ever moved what you chase, the verdict goes to the floor whatever the debriefed share says. It asks about action, not information — a firm can recalibrate its rates every quarter and go on bidding the same wrong owners forever.

Six signals per closed bid
Result obtainedrequired
A tab, an owner debrief, an award notice. Not 'we didn't get it'. Required.
Position knownrequired
The deciding number, your rank, the spread. Required, and what the whole exercise rests on.
Gap attributed
Scope carried, unit rates, markup, or a competitor's error. Not 'they were cheaper'.
Checked against the pattern
Compared with your other results on this building type, or against this competitor.
Pursuit rule touched
Something changed about what you chase — or a decision was recorded not to change it.
Debrief retained
The next estimator pricing this type would find it without asking anybody.
05.What This Is — And Isn't

Clear about the lane. No inflated promises.

What it is
  • A deterministic gate over a closed-bid register you maintain.
  • A named list of the near misses nobody examined.
  • A detector for a practice that reads every result and changes nothing.
  • A reason to file the tab where the next estimator will find it.
  • Offline. Nothing is uploaded and nothing phones home.
What it is not
  • A win-rate report, a forecast, or a hit-rate benchmark.
  • A reader of bid tabs, your CRM or your estimate.
  • A judgement on whether you should have bid.
  • A claim about what your number should have been.
  • A competitor-intelligence service.

On the verdict name: EVERY NEAR MISS IS EXPLAINED AS DESCRIBED is a statement about the register as you filled it in. Nobody read a bid tab.

06.Who It's For

The firm that writes far more bids than it wins.

Built for
  • Contractors bidding public work, where the tab is published and unread.
  • Firms that have narrowly lost the same building type more than once.
  • Estimating teams where results are logged and never examined.
  • Anybody whose pursuit list has not changed in three years.
It will not
  • Fetch a bid tab or read a public procurement portal.
  • Tell you whether your win rate is healthy.
  • Say what you should have bid.
  • Score a competitor, or a person.
08.Common Questions

The questions estimators actually ask before running this on their own bid history.

A verdict on your bidding practice: EVERY NEAR MISS IS EXPLAINED AS DESCRIBED, LOSSES UNEXAMINED, or BIDDING BLIND. Each closed bid is marked on six signals and reads DEBRIEFED, PARTIAL or UNEXAMINED, and the roll-up is the share that reached DEBRIEFED. A worsen-only near-miss gate forces the floor when any close bid was never debriefed, or when nothing in the whole register ever changed what you chase. It also names the one bid to look at first.

The tab is public.
Somebody should read it.

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

Honest boundary: a debrief aid. It grades a register you fill in — it fetches nothing, reads no tab, and never says what your number should have been.

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