A bid log you can rebuild in any spreadsheet this afternoon. Most contractors track bids somewhere — in email threads, on a whiteboard, in the estimator's head. What a real log adds is not storage, it's math: which GCs you actually win with, which project types convert, and what your pipeline is worth after you discount it for reality.
All names, dollar figures, and dates below are made-up examples to show the structure. Replace them with your own bids.
Eleven columns. Fewer and the math below stops working; more and nobody fills it in.
| Column | What to record | Why it matters |
|---|---|---|
| Bid date | The date you submitted (or the due date, until then). | Drives follow-up timing and lets you see how much you bid per month. |
| GC / owner | Who you are bidding to — the entity that decides. | Hit rate by GC is the single most useful number in this log. |
| Project | Name and location. | So a phone call about "the school job" finds the row in five seconds. |
| Trade / scope | The package you priced, and major exclusions. | Hit rates differ by scope; a loss on a partial package is not a loss on your core trade. |
| Estimated value | Your rough size for the package before pricing. | Lets you see pipeline size before every bid is finished. |
| Bid amount | The number you actually submitted. | The record of what you said — settle disputes, and compare to the winning number when you can get it. |
| Margin % | The markup carried in that bid. | Wins at thin margin and losses at fat margin tell you where your pricing edge actually is. |
| Status | One of: bidding, submitted, shortlisted, won, lost, no-bid. | A fixed status list is what makes the math below possible; free-text status kills it. |
| Follow-up date | The next date you owe this row a call or email. | Bids are rarely lost on price alone — they are lost to silence after submission. |
| Outcome | Final result and award amount if known. | Closes the loop; open-ended rows rot the log. |
| Loss reason | Why you lost, in the GC’s words: price, coverage, relationship, schedule, scope. | Five loss reasons from the same GC is a strategy memo they wrote for you. |
Example rows (fictional). Estimated-value and outcome columns omitted here for width.
| Bid date | GC | Project | Scope | Bid | Margin | Status | Follow-up | Loss reason |
|---|---|---|---|---|---|---|---|---|
| 5/02 | Meridian GC | Oak St. Clinic | HVAC | $412,000 | 12% | Won | — | — |
| 5/09 | Meridian GC | Rt. 9 Retail | HVAC | $188,000 | 14% | Lost | — | Price — 2nd by ~3% |
| 5/16 | Corestone Builders | Dist. Warehouse B | HVAC + controls | $640,000 | 10% | Shortlisted | 6/20 | — |
| 5/23 | Halloway Const. | K-8 Addition | Plumbing | $295,000 | 15% | Submitted | 6/13 | — |
| 5/30 | Corestone Builders | Office TI, Bldg 4 | HVAC | — | — | No-bid | — | Capacity — declined |
Won ÷ (won + lost), per GC, counting only decided bids — pending and no-bid rows stay out of the denominator. This is the number that separates GCs who use you from GCs who use your number. A GC you have bid many times and never won is collecting price coverage from you; every one of those bids costs real estimating hours. Either have a direct conversation about what it would take to win, or stop bidding them and spend the hours where you convert.
The same calculation cut by scope or market — offices, schools, warehouses, service work. Cross it with the margin column: where you win at your normal margin, that is your real market; where you only win by cutting, the wins are costing you. This cut is what turns "we should bid more work" into "we should bid more of this specific work."
A raw pipeline total ("$4M out to bid") flatters you, because it counts every bid as if it will land at full margin. The honest version weights each open bid by your real odds of winning it:
expected margin dollars = bid amount × margin % × your historical hit rate with that GC (or that project type)
Sum that across open bids and you have the number that should drive hiring and equipment decisions. Example: a $640,000 bid at 10% margin with a GC you historically win 1 time in 4 is worth about $16,000 of expected margin — not $640,000 of "pipeline." Doing this for one month of open bids is usually a sobering and useful exercise.
Weekly review, same time every week. Thirty minutes: update every status, chase every follow-up date that has passed, and decide no-bids out loud instead of letting invitations quietly expire. If the review does not happen weekly, the log is dead within a month.
Follow up before the decision, not after. Set the first follow-up for about a week after submission, or a few days before the stated award date — whichever comes first. The call is short: confirm the bid was received and complete, ask where the number sits, ask what would move it.
Every loss gets a reason. The follow-up call after a loss is the cheapest market research you will ever do, and most bidders never make it.
Monthly, run the math. Hit rates and the margin-weighted pipeline, cut by GC and project type. This is the meeting where the bid list gets pruned.
The other side of hit rate is volume: winning more starts with bidding more of the right work in the same hours. DesignFlow Build's AI takeoff turns plan sets into quantities in minutes, and its pipeline tracks bids, follow-ups, and outcomes without a separate spreadsheet.