Bid leveling is the process of adjusting every subcontractor bid to the same scope baseline, so you compare what each sub would really cost for identical work rather than the number at the bottom of their proposal. A free bid leveling template is included below, followed by the step-by-step process estimators use to fill it in on bid day.
The lowest number on a bid tab is often not the lowest real cost. Subs exclude things, qualify their language, and price a different scope than your drawings show. Bid leveling in construction is how you find out which bid is actually low before you award it and fund the difference out of your fee.
Bid Leveling Template (Copy and Use)
Rows are scope items, columns are bidders. Every cell answers one question: is this item in the sub's number, and if not, what does it cost to add it back? The figures below are an illustrative HVAC example, not real bids. Replace them with your own trade's scope list.
| Line item (illustrative HVAC example) | Sub A | Sub B | Sub C |
|---|---|---|---|
| Base bid as submitted | $412,000 | $438,500 | $455,000 |
| Ductwork, diffusers and grilles per M-sheets | Included | Included | Included |
| Controls and BAS | Excluded, add $38,000 | Included | Included |
| Test and balance | Excluded, add $9,500 | Excluded, add $9,500 | Included |
| Fire and smoke dampers | Not addressed, add $7,200 | Included | Included |
| Crane and hoisting | Excluded, add $6,500 | Included | Included |
| Permit fees | Included | Excluded, add $4,800 | Included |
| Equipment startup | Included | Included | Included |
| Thermostat allowance (spec carries $6,000) | Used $4,000, add $2,000 | Used $6,000, no change | Used $8,000, deduct $2,000 |
| Alternate 1: high-efficiency RTUs (kept out of total) | Add $18,000 | Add $21,500 | Not priced |
| Scope-gap adjustments | +$63,200 | +$14,300 | -$2,000 |
| Adjusted total | $475,200 | $452,800 | $453,000 |
| Notes and clarifications | Excludes after-hours work | Valid 30 days | Lead time 14 weeks on RTUs |
Look at what happened. Sub A was $26,500 low on paper and ends up $22,400 high once its exclusions are priced back in. Subs B and C, $16,500 apart as submitted, finish $200 apart. That is the whole case for leveling in one table.
If you would rather start from a spreadsheet than a markdown table, download the free editable XLSX bid comparison and estimate templates and paste in your own scope rows.
How to Read the Template
Every row with "Excluded" or "Not addressed" gets a dollar figure from your own cost data. "Not addressed" is the dangerous one: silence in a bid is not confirmation that the work is included. Allowances get normalized to the figure in your spec, up or down. Alternates sit on their own row and never roll into the adjusted total, because folding an alternate into the base comparison corrupts the whole level, especially when only some subs priced it.
Color-coding helps on a busy afternoon: green for included, red for excluded, yellow for anything that needs a clarification call.
What Is Bid Leveling in Construction?
Bid leveling is a normalization exercise. Two subs can price the same trade $200,000 apart and both be "right," because one included fire-stopping, temporary power and commissioning and the other did not. Bid leveling adds or subtracts dollar adjustments for each of those differences until every bid represents the same work. Only then do you rank.
Bid Leveling vs. Bid Tabulation
Bid tabulation is a list: sub name, trade and total bid, organized in a table. It tells you who bid and what they quoted. It takes 20 minutes and tells you almost nothing about real cost.
Bid leveling is the analysis. You map each bid against a defined scope, adjust for inclusions, exclusions, allowances and assumptions, and express every bid as an adjusted total. Tabulation is the record. Leveling is the work that makes your selection defensible. Many public projects require a bid tab as a procurement document; leveling is the internal work behind it.
Why Unleveled Bids Cost GCs Margin
As an illustrative example, picture a $2M mechanical scope on a mid-rise office building. Three HVAC subs come in at $1.84M, $1.97M and $2.11M. You award the low bidder. What you missed: they excluded $160,000 in controls, $38,000 in balancing, and assumed a different equipment spec than your drawings require. Your low bid is now a $2.04M problem, and the difference comes out of your fee.
A nearly 15% spread between bids on the same scope looks like negotiating room. More often it is a warning that the subs are pricing different projects. If you want the reasons subs land so far apart, see why subcontractor bids vary.
How to Level Bids: The Step-by-Step Process
This is the full workflow, from the bid package you send out to the award recommendation you hand your PM or owner. The first two steps happen before any bid arrives, and they decide how painful the rest will be.
Step 1: Send a Bid Package Built for Leveling
A leveling sheet is only as good as the bids going into it. If you send drawings and an email asking for "your best number," you will spend hours reverse-engineering what each sub included. If you send a tight package, leveling becomes a structured comparison.
Every invitation should carry a trade-specific scope of work, not a copy-paste from the spec. It tells subs what is in, what is out, what the spec requires, and what you expect them to confirm or exclude in writing. Add a bid form that breaks out labor, material and allowances, request unit prices on key items, and list the alternates you want priced. Require subs to list exclusions explicitly. If a sub does not call out what they are excluding, you cannot level the bid; you are guessing.
Set a hard RFI deadline, typically 5 to 7 days before bids are due. A construction bid package template makes this repeatable.
Step 2: Invite Three to Five Subs Per Trade
Fewer than three and you do not have real competition or enough data to spot an outlier. More than five and you create noise, strain relationships, and signal to the market that you are shopping rather than building a team. Four to five is the useful range for competitive trades like mechanical, electrical and concrete, where a 10 to 15% spread is common.
Subs remember which GCs award fairly and which use their numbers to shop. Low award rates per sub mean good subs start declining your invites, and your leveling is only as good as the bids you receive. More on running the outreach in the subcontractor bid solicitation process.
Step 3: Enforce the Deadline and Collect Every Bid Before You React
Your bid day process needs a hard cutoff, a clear submission format and a written policy on late bids. Accepting a bid 90 minutes after cutoff lets in a number that may reflect information the others did not have.
Log every bid as it arrives: sub name, trade, timestamp, total and attached clarifications. Flag missing trades early enough to chase them. Then do not start reacting to numbers until you have them all. Opening bids one at a time anchors you on the first figure, and everything after gets judged relative to it.
Step 4: Build the Scope Matrix
This is the template above, built out for each trade. Rows are every scope item that belongs in that trade's work, pulled from your own estimate and scope sheet. Columns are bidders. Each cell gets the sub's inclusion, exclusion, unit price or allowance for that item.
On a complex trade you might have 25 to 30 rows. That is the work that separates a real level from a price sort. Read each sub's proposal line by line against your scope sheet, including the qualifications buried in paragraph four.
Step 5: Price Every Scope Gap
For every exclusion and every item the sub did not address, decide whether you need it, and if so, assign a value. You have three reliable sources:
- Your own historical unit costs from past jobs, which is the fastest and most defensible.
- A published cost book for the trade and region.
- A quick budget number from a backup sub for that specific item.
What you never do is leave the cell blank or assume zero. A blank gap cell is how a $1.84M bid quietly becomes a $2.04M job.
Know when to call instead of pricing it yourself. Minor exclusions you can price with confidence, such as equipment startup, final cleaning or permit fees, do not need a call. Ambiguous language does. If a sub wrote "HVAC per plans, excluding any work related to existing conditions" on a renovation with significant existing conditions, that exclusion could be worth $20,000 or $200,000. Call before you level.
Step 6: Normalize Allowances and Isolate Alternates
If your spec carries a $15,000 flooring allowance and one sub used $12,000 while another used $18,000, adjust both to $15,000. The difference in allowance assumptions is not a real cost difference. Alternates get their own rows, compared only against each other.
Step 7: Calculate Adjusted Totals, Then Score
Add each bidder's adjustments to their base bid. Do this for every bidder before you look at the ranking, because peeking mid-process introduces bias. Then layer on the qualitative scoring described below, since adjusted price tells you what the work costs, not whether the sub can deliver it.
Step 8: Present the Recommendation and Document It
The deliverable is a short document: adjusted totals for each bidder, a summary of the scope adjustments you made, qualitative scores, and a clear recommendation. It goes to your PM or owner before award, not after.
A leveled bid tab that shows its work builds trust with owners, protects you if a sub later claims their scope was misunderstood, and gives you a paper trail if the award is challenged. When a revision lands late on bid day, update the matrix rather than the total, so the record still explains itself.
The Scope-Gap Column Most Templates Skip
Most free templates give you sub name, base bid and a notes field. That is a bid tab with extra steps. The column that does the real work is the scope-gap adjustment.
A scope gap is any item in your estimate's scope that a sub either explicitly excluded or simply did not address. The gap column flags each one and assigns it a dollar value from your own cost data, and every sub gets the same treatment. If a sub did not price equipment startup and your estimate carries $8,500 for it, that $8,500 goes onto their adjusted total.
Two rules keep the column honest. First, price gaps at what it would cost you to get the work done, not at a punitive figure designed to knock a bid out. Second, when a sub clarifies that an item is included, delete the adjustment and note who confirmed it and when. That note is what you point to if the item comes back as a change order.
Weighted Scoring: Moving Beyond the Adjusted Price
A sub with a $30,000 lower adjusted bid who is badly over capacity on another job is not your low bidder in any meaningful sense. A light scoring layer makes that judgment explicit and defensible, especially when you present to an owner.
Add four scoring columns beside the adjusted total. Score each sub 1 to 5 on each factor using written criteria, multiply by the weight, and sum.
| Factor | Weight | What a 5 looks like |
|---|---|---|
| Adjusted price | 40% | Lowest adjusted total |
| Schedule reliability | 25% | On time on your last several jobs, with current capacity |
| Scope completeness | 20% | Few exclusions, clear qualifications |
| Past performance and relationship | 15% | Clean closeouts, low change-order rate, bonding in place |
Back to the template: Subs B and C finished $200 apart on adjusted price, so price barely separates them. If Sub C has a 14-week lead time on rooftop units and your schedule needs them in 10, the scoring surfaces that before you sign. The weights are a starting point. Adjust them per project, and write the change down so the scoring cannot be accused of being bent to fit a preferred sub.
This is not a complex algorithm. It is a structured way to make a judgment you were already making informally, with an audit trail if anyone questions the selection later.
Bid Leveling Spreadsheet vs. Software
A well-built bid leveling spreadsheet works for the right project and team. On a three-trade tenant improvement or a small ground-up job with five subs, Excel or Google Sheets is fast, flexible and familiar. Many experienced estimators have a template they have refined for years, and that institutional knowledge is worth keeping.
Spreadsheets start to break in predictable places:
- Volume. A 20-trade commercial job with four bids per trade means 80 bids to level, each with its own matrix and adjustment logic.
- Multiple editors. Two estimators in one file on bid day means overwritten formulas and version confusion.
- Audit trail. A spreadsheet does not record who made an adjustment or why, which is exactly what an owner asks when they question an award.
- Late revisions. A sub revising at 4:45 PM means re-keying their exclusions by hand across tabs.
- History. Comparing a sub's bids across projects means digging through old files.
If you run fewer than 10 active bid packages at a time with one estimator, a spreadsheet is usually enough. Past that, dedicated software earns its keep. For a ranked comparison of tools, pricing and fit, see our guide to bid leveling software.
Struvia is one option built around this workflow: it builds bid packages from your takeoff, sends them to subs at $0.10 per email, and levels the returned bids by normalizing scope across them and flagging gaps and exclusions for you to price. You still make the call on ambiguous language and on which sub to trust.
What AI Bid Leveling Does and Does Not Do
AI is good at the tedious part: pulling scope items out of PDF proposals, lining them up against your baseline, and flagging what is missing or excluded. That turns hours of transcription into a review.
It does not replace estimator judgment on qualitative risk, a sub's track record, or vague scope language that needs a phone call. Treat it as fast data entry and gap flagging. Keep the decision with the person who will answer for it. For a broader look, see AI construction bidding software.
How Bid Leveling Improves Your Bid Hit Ratio
Your construction bid hit ratio reflects how accurately you turn sub bids into a competitive GC number, and leveling is the mechanism that makes that conversion accurate.
GCs who skip leveling fail in one of two directions. They overbid because they padded for scope uncertainty they could not quantify, and lose to a competitor who knew exactly what was included. Or they underbid because they took a low number at face value, won the job, and funded the gaps out of their own fee.
Leveling does not lower your number; it makes it more accurate. When you are not padding contingency to cover sub-selection risk, your bid is tighter. When you pick subs on adjusted price and performance, fewer surprises show up after award, so the margin you bid is closer to the margin you earn. Over a full estimating calendar, that consistency is what moves the win rate.
It also changes sub behavior. When subs know you evaluate scope completeness and not just price, they bid more carefully. When the low number always wins regardless of scope, you train subs to cut scope to compete, which is the dynamic that produces change orders. Using a leveled number to squeeze a sub down is a different practice entirely; see bid shopping in construction for where that line is.
Frequently Asked Questions
What is bid leveling in construction?
Bid leveling in construction is the process of adjusting subcontractor bids to a common scope baseline so the totals being compared represent equivalent work. Instead of ranking raw bottom-line numbers, which carry different inclusions, exclusions, allowances and assumptions, you add or subtract dollar adjustments for each difference. The result is an adjusted total for each bidder and an apples-to-apples comparison that shows the true low bid.
What should a bid leveling spreadsheet include?
A bid leveling spreadsheet needs a column for each bidder, a row for every scope item in the trade, a base bid row, rows for allowances normalized to the spec figure, separate rows for alternates, a scope-gap adjustment row, an adjusted total row, and a notes row for clarifications. A summary tab that ranks adjusted totals and carries the weighted scores makes the level easy to present.
Is there a free bid leveling template?
Yes. The markdown template at the top of this article can be copied into any spreadsheet, and Struvia publishes free editable XLSX bid comparison and estimate templates on its estimating templates page. Free templates are static: you still fill in the scope rows, price the gaps and keep the file current yourself.
How long does bid leveling take?
For a small remodel with three or four trade packages and clean bids, a thorough level takes two to four hours. For a commercial job with 15 to 20 trade packages and several alternates, budget a full day or more. The biggest time driver is not the number of bids but the quality of your bid package: loose invitations produce messy bids that take far longer to level.
How do you handle missing scope or a trade with no bids?
Call the sub first, since a gap is sometimes an oversight. If you cannot get an answer in time, price the gap from your historical unit costs, a cost book, or a budget number from a backup sub, and carry it as an adjustment. Never assume zero. If a trade has no bids, flag it immediately, chase subs, and if needed carry a budget number with a contingency until you have a real bid.
How many bids should I collect before leveling?
Three is the minimum to spot outliers and negotiate with confidence. Four to five is the useful range for competitive trades like mechanical, electrical and concrete. More bids add leveling work and strain sub relationships without adding much information.
Does bid leveling affect relationships with subcontractors?
Done transparently, it builds trust. Subs who know you judge scope completeness, and who get feedback after award, bid more carefully and keep answering your invitations. Opaque awards where the low number always wins teach subs to cut scope to compete.
Level the Next Bid Before You Award It
Bid leveling is the last check between your estimate and a commitment you cannot take back. It is where scope gaps become visible, where the real low bid shows itself, and where your margin either gets protected or quietly disappears. Copy the template, run it on your next bid, and do it on every trade, not just the big ones.
If you want the bid packages, sub outreach and leveling in one place, upload a plan set free and level your next bids there. New accounts start with 600 free credits.
*Reviewed by Weston Burnett, Co-Founder and CTO of Struvia.*