On this page9 sections
- What is subcontractor bid leveling?
- Why can't you just take the low number?
- How do you level subcontractor bids step by step?
- 1. Build the scope checklist before bids come in
- 2. Set up one sheet per trade package
- 3. Enter each bidder's raw total first
- 4. Mark every line included, excluded or unclear
- 5. Add plug numbers for missing scope
- 6. Normalize alternates, unit prices and allowances
- 7. Keep commercial terms in their own section
- 8. Ask every bidder the same clarification questions
- 9. Rank on the leveled total and document the award
- What does a bid leveling sheet look like?
- How do you choose plug numbers?
- How long should bid leveling take?
- What happens after you award the sub?
- Where CooperBuild AI fits
- FAQ
- What is subcontractor bid leveling?
- What is a plug number in bid leveling?
- Should a GC always award to the lowest leveled bid?
- How do you get subs to price the same scope?
- What should happen to the leveling sheet after award?
By Adam Hicks, CooperBuild AI · November 7, 2026
Subcontractor bid leveling is how a GC turns a stack of sub quotes that all look different into an apples-to-apples comparison. You build one scope checklist from the plans, specs and addenda, mark what each bidder included, excluded or left unclear, add plug numbers for the missing scope, and rank bidders on the leveled total instead of the raw number. The low bid on paper is often not the low bid once the gaps are priced.
This guide walks through the bid leveling process step by step, what a good leveling sheet looks like, how to set plug numbers, and how to carry the awarded number into buyout and job cost. It's written for small and mid-size GCs who level bids in a spreadsheet the night before bid day and want a process that holds up later.
What is subcontractor bid leveling?
Bid leveling (also called bid tabbing or scope leveling) is the work of normalizing subcontractor and supplier quotes so they cover the same scope on the same basis. Every sub writes their quote their own way. One lists inclusions line by line, another sends a lump sum with three lines of qualifications, and a third excludes something important in the fine print.
Leveling forces every quote into the same structure so you can see the real difference between bidders. The output is a leveled total per bidder, a list of open questions, and a documented reason for the award.
Why can't you just take the low number?
Because a raw total only tells you what a sub is willing to do for that price, not whether it covers your scope. The most common traps:
- Exclusions. Permits, testing, cleanup, hoisting, temporary protection or a trade interface (like blocking or firestopping) left out.
- Allowances. A sub carries a small allowance for something the drawings show in full, like floor prep or patching.
- Spec substitutions. "Or equal" products that may not be approved.
- Addenda. A bidder didn't acknowledge the last addendum.
- Schedule and access assumptions. Normal hours priced when the job needs night work or phasing.
- Commercial terms. No bond, different payment terms, or insurance that doesn't meet the contract.
If you award on the raw low number, those gaps come back as change orders, buyout fights or margin you eat. Our construction change order process guide covers what happens when scope gaps surface after award.
How do you level subcontractor bids step by step?
1. Build the scope checklist before bids come in
Write the scope for each trade package from the drawings, specs, addenda and your own takeoff. List it as line items with document references (sheet or spec section). Send this checklist with the bid invite so subs price against your list instead of their own. In an r/estimators thread on leveling subs, the top answer was the same advice: if you have time, email bidders your scope sheet before bids come in.
2. Set up one sheet per trade package
Keep electrical, HVAC, drywall and so on in separate tabs so totals stay comparable. Put scope items in rows and bidders in columns.
3. Enter each bidder's raw total first
Record the untouched number before you adjust anything. You'll want to see later how much leveling moved each bid.
4. Mark every line included, excluded or unclear
Don't leave blanks. A blank can mean missing, bundled into another line, owner-furnished or simply unknown. Treat "unknown" as unknown, not as included and not as zero.
5. Add plug numbers for missing scope
For every exclusion or unclear item, add a plug: your own takeoff price, the next bidder's price for that line, or a real quote from another sub if you have time. Note where each plug came from.
6. Normalize alternates, unit prices and allowances
Pull alternates out of the base bid. Compare unit prices on the same quantity. If one sub carries an allowance and another prices the work in full, adjust so both reflect the full scope.
7. Keep commercial terms in their own section
Bonds, insurance, schedule commitments, payment terms, retainage and closeout requirements belong under the price comparison, not mixed into it. They matter for the award but shouldn't hide inside the leveled number.
8. Ask every bidder the same clarification questions
Turn each exclusion and unclear line into a written question. Send the same question to every bidder whose quote has that gap, and date-stamp the answers. Update the sheet when revised numbers come in.
9. Rank on the leveled total and document the award
Compare raw totals to leveled totals. Record why you picked the winner, including any non-price reasons like capacity, track record or schedule. That note protects you when someone asks during buyout why you didn't go with the low number.
What does a bid leveling sheet look like?
Here's a simplified example for a flooring package. The numbers are illustrative only.
| Scope item | Bidder A | Bidder B | Bidder C |
|---|---|---|---|
| Base bid (raw) | $48,000 | $44,500 | $49,500 |
| Floor prep | Included | Allowance only (plug $3,500) | Included |
| Transitions and trim | Included | Excluded (plug $2,400) | Included |
| Night work | Unclear (plug $4,500) | Included | Included |
| Addendum 2 acknowledged | Yes | Yes | No (clarify) |
| Leveled total | $52,500 | $50,400 | $49,500 |
Bidder B looked $3,500 under Bidder A on the raw number. After leveling, Bidder C is the lowest comparable price, but C still has to confirm Addendum 2 before you can carry them.
How do you choose plug numbers?
Plugs should be conservative and traceable. In rough order of preference:
- A real quote from another sub for just the missing piece.
- The price another bidder carried for that same line.
- Your own takeoff times a unit cost you trust from past jobs.
- A judgment number, clearly labeled as one.
Don't plug low just to keep a favorite sub in front. If a plug decides the award, get a real number or a written clarification before you commit.
How long should bid leveling take?
It depends on the bid type. On a negotiated job you usually have time to chase real numbers for every gap. On a hard bid, you may have minutes before the deadline, so the scope checklist you sent out early does most of the work. Whatever you can't resolve on bid day goes on a list for buyout, so nothing gets lost between the estimate and the subcontract.
What happens after you award the sub?
Leveling isn't finished at award. The leveled scope becomes the subcontract scope, and the awarded amount becomes a commitment on the job. If that number lives only in the estimating spreadsheet, the job cost report won't show it until the first bill shows up. That's how a job looks healthier than it is. See committed costs vs actual costs for why that matters, and markup vs margin in construction for how the leveled number flows into your price.
A clean handoff looks like this:
- Attach the leveling sheet and clarifications to the subcontract.
- Write exclusions you accepted into the subcontract scope explicitly.
- Carry plugs you couldn't close as a line in your budget, not as zero.
- Load the awarded amount as a commitment against the right cost code.
Where CooperBuild AI fits
Most leveling problems are handoff problems: quotes in email, the leveling sheet in Excel, the subcontract in a folder, and job cost in QuickBooks. CooperBuild AI keeps estimates, budgets, change orders, billing and built-in accounting (GL, AP and AR) in one system, and connects to QuickBooks Online when that's where your books live. The scope and number you award stay tied to the job instead of getting retyped. For more on bid-day workload, read Get Sunday Night Back.
If your bid tabs still die in a spreadsheet after award, get started with free credits, no credit card needed, and run your next bid through one system from estimate to job cost.
FAQ
What is subcontractor bid leveling?
Subcontractor bid leveling is the process of comparing sub quotes on the same scope and basis. You list the required scope, mark each bidder's inclusions and exclusions, add plug numbers for missing items, and compare leveled totals instead of raw bids.
What is a plug number in bid leveling?
A plug number is a price you add to a bid to cover scope the bidder excluded or left unclear. It can come from another bidder's price, another sub's quote or your own takeoff, and its source should be noted on the sheet.
Should a GC always award to the lowest leveled bid?
Not always. The leveled total is the starting point, but capacity, track record, schedule, bonding and insurance also matter. Document any non-price reason for the award.
How do you get subs to price the same scope?
Send a scope checklist with document references in the bid invite and ask subs to confirm each line as included or excluded. Then send the same clarification questions to every bidder with a gap.
What should happen to the leveling sheet after award?
Attach it and the clarifications to the subcontract, write accepted exclusions into the subcontract scope, and load the awarded amount as a commitment on the job so job cost reflects it before the first bill arrives.
This article is general information for contractors, not legal or accounting advice. Check your contract documents and local rules before you change your bidding process.