How to level construction bids: the lowest number is often just the emptiest one
Four bids come back on the same drawings and the totals land thousands of dollars apart. The temptation is to circle the cheapest one and call it competition working. But those four totals are almost never prices for the same job — one bidder excluded roofing ("by others"), one never priced the windows, one is quietly carrying an allowance nobody noticed. Until every bidder carries the same scope, the totals aren't comparable, and the lowest number is often just the one with the most missing from it.
Fixing that is called bid leveling (you'll also hear bid tabulation, or just "the bid tab"). It's a standard step in professional preconstruction, it isn't complicated, and it regularly changes the answer. Here's the whole method, with the math.
Why raw totals lie
A bid total is a sum of line items, and every bidder makes different decisions about which lines to include:
- Exclusions — the bid letter says "roofing by others" or "excludes all earthwork; assumes a ready pad." The total looks lean because a real cost got pushed onto you.
- No-bids — the HVAC sub never returned a price, so that line on the form is simply blank. The bidder isn't cheaper; they're incomplete.
- Allowances and substitutions — a $4,000 tile allowance instead of a priced spec, or vinyl windows priced in lieu of the clad-wood ones on the drawings. The number exists, but it isn't the number for your scope.
None of this is necessarily bad faith — subs no-bid lines they can't cover and exclude work they don't self-perform all the time. But it means comparing raw totals is comparing four different jobs.
The method: one grid, line by line
Bid leveling is a spreadsheet discipline. Down the left side, the scope items — general conditions, demolition, foundations, framing, roofing, and so on. One column per bidder. Then:
- Enter every bid line by line from each bid letter, not just the total.
- Flag every hole. A blank cell on a line others priced is a scope gap — an exclusion, a no-bid, or a "by others." Mark it so it can't hide.
- Carry each gap at a plug value. A plug value is the number you insert so the missing scope is represented — typically your own estimate for that line, or the highest price actually received for it (the conservative choice). The plug isn't a real bid; it's your carrying assumption, and you should be able to say where it came from.
- Compute the leveled total: raw total + plugs = leveled total. Now every bidder carries the same scope, and the comparison finally means something.
- Log the paper trail. Every exclusion, allowance, clarification, and substitution goes in a log — who said it, where (bid letter, page), and how you carried it. On bid day, that log is what makes your recommendation defensible.
A worked example — where leveling flips the ranking
A residential addition, four bidders, sixteen scope items. The raw totals, cheapest first:
| Bidder | Raw total | Scope gaps | Plugs carried | Leveled total |
|---|---|---|---|---|
| Dray & Sons | $117,800 | 2 | $16,400 | $134,200 |
| Corestone Contracting | $118,400 | 2 | $14,900 | $133,300 |
| Beacon Builders | $122,600 | 1 | $10,200 | $132,800 |
| Alder Construction | $131,000 | 0 | $0 | $131,000 |
Read that twice, because it's the whole argument. On raw totals, Dray & Sons "wins" by $13,200 over Alder. But Dray excluded paint ("by owner per proposal p.2") and never priced the windows — $16,400 of real scope you'd still have to buy. Once every bidder carries the full job, the raw low bidder becomes the leveled high bidder, and Alder — the only bid with no holes in it — comes out lowest at $131,000.
Just as telling: the apparent spread between cheapest and most expensive was $13,200 on raw numbers. Leveled, the four bids sit within $3,200 of each other — about 2.4%. These four contractors mostly agree about what the job costs; the raw totals only disagreed about what the job was.
Where the judgment stays yours
Leveling makes the numbers comparable. It doesn't make the decision. Plug values are your own assumptions — flag them, source them, and revisit any line where a plug is doing a lot of work. Per-line spreads matter too: if framing prices range from $17,900 to $19,600, the bids agree; if one line shows a 40% spread, somebody misread the drawings, and a phone call is worth more than a formula. And an unreconciled note in the exclusions log — an allowance you haven't confirmed, a substitution you haven't accepted — is an open item, not a footnote. Award decisions, scope verification, and contract terms stay with you and your own judgment.
The Bid Tab / Bid Leveling Sheet
Compare 4–6 bids line-by-line across 30 scope items: empty cells flag red as scope gaps and are carried at your plug value automatically, so leveled total = raw + plugs on every bidder. Per-line low/high/spread, per-bidder plug exposure and leveled rank, an exclusions & clarifications log that rolls unreconciled notes up to the dashboard — and the verdict that matters: does leveling change the low bidder? Pure Excel & Google Sheets formulas, sample bid package loaded.
Both sides of bid day
Leveling is what you do with bids coming in. If you're also the one sending bids out, the same discipline applies in reverse: knowing your hit rate and where your bidding time actually goes tells you which invitations deserve the estimating hours, and once you win the work, job costing tells you whether the number you leveled to was any good. Same spreadsheet habit, three moments in the life of a job.
This is general preconstruction guidance, not procurement, contracting, or legal advice. Plug values are carrying assumptions, not prices; verify every bidder's actual scope, qualifications, and terms directly, and make award decisions on your own judgment. Sample figures are illustrative.