Bid leveling is the process of making sub quotes comparable by finding out what each one is not doing. The cheapest number is usually the one with the most exclusions. Build a scope sheet for the trade, mark every line each quote includes, excludes or ignores, price each gap with your own cost numbers, then compare the adjusted totals. The quote you pick should be the lowest after that work, not before it.
Why the low number is low
Subs rarely win on price by being more efficient across the board. They win by drawing the scope line in a different place. One electrician prices the permit, another writes "permit by others" in the fine print. One framer includes blocking for cabinets and grab bars, another assumes you will tell them where it goes and bill it as extra. None of this is dishonest. It is just written in a way that makes the top-line numbers mean different things.
The exclusions that move numbers most tend to be the same across trades:
- Permits and inspection fees — often "by GC" or "by owner"
- Temporary services — temp power, temp water, temp heat and portable toilets
- Mobilization — one trip priced, any return trip billed extra
- Hoisting, scaffolding and lifts — assumed to be supplied by someone else
- Cleanup and haul-off — debris left in a pile for the GC's dumpster
- Patching and painting after the trade cuts in
- Working hours — normal hours only, no weekend or occupied-home premiums
- Material escalation — "pricing valid 30 days" or "subject to change at time of order"
- Owner-supplied items — install of fixtures or equipment the sub did not buy
- Anything "not shown on plans" — the widest exclusion of all
Most guides to bid leveling construction treat it as a spreadsheet exercise in lining up totals. The spreadsheet is the easy part. The work is reading three quotes closely enough to find these lines, which are rarely in the same place twice.
Level against your scope, not against each other
The common mistake is to take the most complete quote and use it as the yardstick. That catches what one sub included and another left out. It misses what all three left out. If none of the electrical quotes includes low-voltage rough-in, comparing them to each other shows no gap at all — and the gap shows up in week nine.
The yardstick has to be your own scope for the trade, written before the quotes arrive. That scope comes from the takeoff and the drawings, not from whichever sub sent the most detailed proposal. The sequence:
- Write a scope sheet for the trade — one row per item of work, taken from your takeoff, the plans and the specs.
- Send that scope sheet with the bid request so subs know what you expect them to price.
- As quotes come in, mark each row for each sub: included, excluded, or silent.
- Treat "silent" as excluded until the sub confirms otherwise in writing.
- Add rows for anything a sub included that is not on your sheet — sometimes the sub caught something you missed.
- Price every excluded or silent row with a plug number.
- Add the plugs to each base quote to get a leveled total.
- Call the subs about the biggest gaps before you pick one.
Step 5 matters more than it looks. A sub who lists "fire caulking at penetrations" when nobody else did is either padding the quote or reading the drawings better than you did. Find out which before you treat it as a cost difference.
Pricing the gaps with plug numbers
A plug is your best estimate of what an excluded item will cost once someone has to do it. It is a number for comparison, not a commitment. Plugs should come from your own job cost history — what permits actually cost in that jurisdiction, what temp power has run on your last few jobs, what a return mobilization has been billed at.
Two rules keep plugs honest. First, never fill one sub's gap with a competing sub's price for the same line. That is the start of bid shopping, it leaks one sub's pricing to another, and it ties your number to a scope you have not confirmed. Second, use the same plug for the same gap across every quote. If temp power is worth $2,400 when the low bidder excludes it, it is worth $2,400 when the middle bidder excludes it too.
This is where a shared cost library earns its keep. If your line items and unit costs live in one place, the plug for "temp power, single-family, 6 months" is the same number every estimator reaches for. On BuilderSolve, line-item estimating on a shared rate library holds those numbers so a plug is a lookup rather than a guess made at 9pm on bid day.
If the subcontract references or attaches the sub's proposal, the exclusions in that proposal usually come with it. The sub has done exactly what they said they would. The permit, the trenching and the patching are now yours — and if your contract with the owner is fixed-price, nobody is paying you for them. Write the leveled scope into the subcontract itself and state that it governs over the proposal.
A worked example: three electrical quotes
Take a whole-house remodel with a detached garage. Three electricians bid off the same drawings. The base numbers are $48,200, $53,900 and $61,500. On the top line, the first is the obvious pick. The figures below are illustrative — your plugs will differ by market — but the pattern is common.
After marking each quote against the scope sheet, the gaps look like this. Plugs used: permit $1,800, temp power $2,400, low-voltage rough-in $3,600, trenching to the garage $4,200, install of owner-supplied fixtures $2,900.
- Sub A — base $48,200. Excludes permit, temp power, low-voltage, trenching and owner-fixture install. Plugs add $14,900. Leveled: $63,100.
- Sub B — base $53,900. Excludes permit and trenching. Plugs add $6,000. Leveled: $59,900.
- Sub C — base $61,500. Includes everything on the scope sheet, with a stated fixture allowance. No plugs. Leveled: $61,500.
The low bid is now the high bid. Sub B is the lowest leveled number, and the decision between B and C is close enough that schedule, crew and past performance should decide it. Sub A may still be the right choice — but only if A agrees in writing to pick up enough of the excluded scope to close a $3,200 gap, and only with that scope in the subcontract.
Note what the example does not prove. It does not show that low bidders are careless or that the high bidder is always safest. Sub C's fixture allowance needs its own check — an allowance set too low is an exclusion with better manners.
Reading a quote for what it is not doing
Exclusions are rarely labeled as a list. They sit in qualifications, assumptions, notes and the terms printed on the back. Read every quote for these phrases:
- "By others" or "by GC" — the sub is handing the item to you
- "Per plans" or "as shown" — anything not drawn is extra, including what the specs require
- "Assumes" — a condition that, if wrong, becomes a change order
- "Allowance" — a number the sub is not standing behind
- "Normal working hours" — no overtime, no phased work, no occupied-home premium
- "One mobilization" — every return trip is billable
- "Pricing valid for" — the number expires, often before you sign the owner
- "Excludes" followed by a long list — read every line, and look for items that appear only in the list and never in the scope
Also look for what the quote does not mention at all. A drywall quote that names hanging, taping and finishing but never mentions level of finish has not told you whether you are getting a level 4 or level 5 wall. Silence is not inclusion.
Call the subs before you pick
Once the sheet is leveled, call the subs with the biggest gaps. Ask scope questions, not price questions: "Your quote excludes trenching to the garage — do you want to price it, or should we carry it separately?" Do not tell a sub what another sub bid or included. The goal is a revised quote that covers the full scope, in writing, so the plug can come off the sheet and a real number can go on.
Keep the leveling sheet with the job file. When a scope dispute comes up mid-job, the sheet shows what was discussed, what was clarified and what the sub agreed to carry. That is a contemporaneous record, and scope disputes turn on those.
What the software does and what people do
No platform reads three PDFs and finds the exclusions for you, and BuilderSolve does not claim to. The platform holds your estimate as line items on a shared rate library, so the scope sheet and the plug numbers come from the same place as the budget. Once a sub is selected, the leveled number carries into the estimate, the schedule built from it and budget vs. actual on the job.
The reading is human work, and it takes time a builder running 20 jobs often does not have on bid week. BuilderSolve's estimating team handles bid leveling alongside takeoffs and budgets — they build the scope sheet, chase the subs on gaps and hand back a leveled comparison for you to decide on. Purchase orders to the selected sub are in development and not shipped yet, so the award still goes out through your existing process.
What to do on your next bid
Pick one trade on the next job you bid — the one where quotes usually spread widest. Write the scope sheet before you send the bid request and attach it. Mark every quote against it, treat silence as an exclusion and plug every gap with your own numbers. Then compare. If you want those plugs living in one place instead of a spreadsheet per job, start by putting your common gap items — permits, temp services, mobilization, haul-off — into a shared estimating rate library so the next leveling sheet starts half-built.
Common questions
what is bid leveling in construction
Bid leveling is comparing subcontractor quotes after adjusting each one to cover the same scope. You list the work the trade must do, mark what each quote includes and excludes, price every gap with your own cost numbers and compare the adjusted totals. The point is to stop comparing a complete quote against one that leaves out permits, temp power or cleanup.
why is the lowest subcontractor bid often not the cheapest
The lowest sub bid usually excludes the most scope. Items like permits, temporary power, trenching, return mobilizations and patching are written as "by others" or left out entirely. Once those gaps are priced and added back, the low bid often lands at or near the top. The cost does not disappear — it moves to the general contractor.
how do you price exclusions when leveling bids
Price exclusions with plug numbers from your own job cost history, not from a competing sub's quote. Use the same plug for the same gap across every bid so the comparison stays fair. Plugs are for comparison only — once you pick a sub, ask them to price the gap in writing so a real number replaces the plug.
should you share one sub's price with another sub during bid leveling
No. Telling a sub what a competitor bid or included is bid shopping, and it damages trust with the trades you rely on. Ask scope questions instead — whether they will price an excluded item or want you to carry it separately. Keep each sub's pricing confidential and get revisions in writing.
what should a bid leveling sheet include
A bid leveling sheet should have one row per item of work from your scope, one column per sub and a mark for included, excluded or silent in each cell. Add plug values for every gap, a leveled total per sub and notes on clarifications. Keep it in the job file — it becomes the record if scope is disputed later.