You sent the drywall package to three subs. The quotes came back at $18,400, $21,900, and $24,750. The obvious move is to call the low bidder and lock it in. Then six weeks later you find out the $18,400 number didn't include corner bead, didn't include the garage ceiling, and assumed Level 3 finish when your contract with the owner says Level 4. By the time you've paid for the missing pieces, the "cheap" sub cost you $23,600 and a week of schedule.
This is the problem bid leveling fixes. Leveling means putting every quote on the same footing, with the same scope, quantities, and assumptions, so you're comparing real prices and not three different interpretations of the job. Big general contractors have estimators who do nothing else. Small contractors usually do it in their heads on a tailgate, and that's where the margin leaks out.
Why the Low Number Is Almost Never the Low Cost
Subcontractors don't price your drawings. They price their own reading of your drawings, filtered through how busy they are and how much risk they want to carry. Three subs can look at the same plan set and come back with three different scopes, and none of them is lying. They just made different assumptions.
The most common reasons a low bid is low:
- Exclusions buried in the fine print — permits, cleanup, dumpster, patching, or "work by others" items that quietly land back on you.
- Quantity shortfalls — the sub did a fast takeoff and missed a room, a soffit, or a second-floor run.
- Lower spec assumptions — builder-grade fixtures when the plans call out a specific model, or 1/2" board where 5/8" Type X is required.
- Missing mobilization or trip charges — one mobilization priced when the schedule clearly needs two or three.
- Unpriced allowances — "fixtures by owner" or "TBD" lines that are really scope holes.
Rough rule from experience: if a quote comes in more than 15% below the median of your other bids, assume scope is missing until you've proven otherwise. Sometimes a sub is just hungry. More often they missed something.
A bid that's 20% low isn't a bargain. It's a list of questions you haven't asked yet.
Step One: Send a Scope Sheet, Not Just Drawings
Most leveling headaches start at the invitation. If you email a PDF plan set and say "price the electrical," you'll get back apples, oranges, and a couple of pineapples. The fix is a one-page scope sheet that goes out with every bid request.
A good scope sheet for a small job covers:
- Included work — a plain list of what you expect them to do, room by room or system by system.
- Specified materials — model numbers, grades, or "per plan sheet E-2" references.
- Explicit owner/GC-furnished items — anything you or the client are providing, so they don't price it twice or skip it.
- Site conditions — occupied home, access limits, working hours, parking, power availability.
- Schedule windows — number of expected mobilizations and target dates.
- Required breakouts — ask for labor and material separately, plus unit prices for likely changes (per outlet, per sheet, per linear foot).
- Cleanup and disposal — who hauls debris and where it goes.
Ask every sub to return their number in your format, or at least to mark each scope line as included, excluded, or clarified. You'll lose a few bidders who won't bother. That tells you something about how they'll handle paperwork on the job, too.
Step Two: Build the Leveling Sheet
The leveling sheet is a simple grid. Scope items go down the left side and bidders go across the top. Every cell gets a dollar amount, an "IN" for included in their lump sum, or an "EXCL" for excluded. Here's the process:
- List every scope line from your scope sheet in the left column.
- Read each quote line by line, including the exclusions and terms at the bottom, and fill in the grid. Don't skim. The expensive stuff is usually in the last paragraph.
- For every EXCL or blank, put in a plug number, meaning your estimate of what it'll cost you to cover that gap. Use the other bidders' line prices if they broke them out, or your own historical costs.
- Add a row for risk adjustments: insurance that doesn't meet your requirements, no license on file, schedule availability that doesn't work.
- Total each column as base bid plus plugs plus adjustments. That's the leveled number.
Back to the drywall example. The $18,400 bidder excluded corner bead and trims (plug $1,150), the garage ceiling (plug $2,300 based on Bidder B's unit price), and priced Level 3 finish. Upgrading to Level 4 on roughly 6,000 square feet at $0.30/sf adds $1,800. Leveled total is $23,650. Bidder B at $21,900 included everything but dumpster (plug $450), so they level to $22,350. The "middle" bid is actually the lowest real cost by $1,300.
Never level a bid by asking the sub "does this include everything?" They'll say yes. Ask about specific line items, one at a time, and get the answer in writing.
Step Three: Run a Scope Review Call Before You Award
Once you've got a leveled favorite, and ideally a runner-up, get each of them on a 15-minute call. Walk through your leveling sheet line by line. Your goal isn't to beat them down on price. It's to get them to confirm or fix their scope before money changes hands.
Questions that pay off on these calls:
- "Walk me through your quantity on X." If they say 42 fixtures and you counted 51, you've found a problem now instead of at rough-in.
- "How many trips did you price?" Compare their answer to your schedule.
- "What would make this number go up?" Experienced subs will tell you exactly where they see risk. Write it down.
- "Can you give me your unit price for adds?" This sets the price for future change orders before you have any leverage problems.
- "Who's running the crew?" A great company with a rookie foreman isn't the same bid.
After the call, send a short email that summarizes every clarification and ask for a revised quote or a written acknowledgment. That email becomes an exhibit to your subcontract. If you track your jobs in TrestleBook, attach the leveled quote and clarification email to the job record. When the sub's invoice shows up with a "not in scope" add, you can pull the paper trail from your phone on site, even with no signal.
Ready to put this into practice? Download TrestleBook Free — it’s free and works offline.
Weighing the Things That Aren't on the Price Line
Once the bids are leveled on scope, price is still only part of the decision. A few non-price factors deserve a real number, not just a gut feeling:
- Schedule reliability — if Sub A starts two weeks late, what does that cost you in extended general conditions? On a small remodel, carrying a site for an extra week might run $800–$1,500 between your supervision time, rentals, and a frustrated client. Put that number on the sheet.
- Payment terms — a sub who wants 50% upfront ties up your cash differently than one who bills monthly with retainage. If you're working off a tight cash position, that can matter as much as a $1,000 price gap.
- Change order behavior — subs who nickel-and-dime every field adjustment cost you time and goodwill. Your past job records are the best predictor here.
- Insurance and licensing — a sub without proper coverage can hand you an audit bill at year-end. Treat a missing certificate as a disqualifier, or plug the cost of covering them.
- Warranty responsiveness — who actually comes back when something fails in month eight?
A simple way to handle this is a weighted scorecard: 60% leveled price, 20% schedule and reliability, 10% terms, 10% past performance. Keep it lightweight. The point is to make yourself write down why you're picking someone other than the low bidder, so you can defend the choice to a client or partner.
Your best subcontractor data isn't in their quote. It's in your own job history: who hit their dates, who billed clean, who fought every change order.
Leveling When the Client Is Watching
On cost-plus and open-book jobs, the owner often wants to see the bids, and that's where a leveling sheet earns its keep a second time. Showing a client three raw quotes invites the question "why didn't you take the cheapest one?" Showing them a leveled comparison answers that question before they ask it.
This comes up a lot with investor and landlord clients doing rental turnovers or multi-unit renovations. They tend to be price-sensitive and run the numbers closely. Many of them already track repairs and vendor costs per unit in tools like KeyLoft, so they'll compare your sub pricing against what they've paid before. A clean leveled sheet with plugs and clarifications shows them you're protecting their budget and not padding it, and it makes repeat work much more likely.
A few rules for client-facing leveling:
- Show the leveled totals, not just base bids.
- Explain plugs in one line each, for example "Bidder A excluded garage ceiling. Plug based on Bidder B unit price."
- Disclose your recommendation and the reason in a sentence or two.
- Don't share subs' unit pricing outside the project. It's competitive information, and leaking it is a quick way to stop getting bids.
Turning Leveling Into a Habit, Not a Project
The reason small contractors skip leveling is time. Building a grid from scratch for every trade on every job feels like overhead you can't bill. It doesn't have to take long once you set it up:
- Build a scope sheet template for each trade you sub out regularly, such as framing, electrical, plumbing, HVAC, drywall, and flooring. Reuse them and tweak per job. After three or four jobs they're mostly done.
- Keep a running unit-cost list from past bids and actuals. This is your plug source. Even 20 data points per trade makes your plugs far more accurate than guesses.
- Set a minimum bid count: three for anything over $10,000, two for anything over $3,000. Below that, a trusted sub's number is fine.
- Time-box it: 30–45 minutes per trade package for leveling and the scope call. Track that time. You'll find it pays for itself on the first gap you catch.
- Close the loop after the job: compare the sub's final invoice to the leveled number. If a sub always ends 12% over their bid, add 12% to their next leveled total.
That last step is the one almost nobody does, and it's the most valuable. When your bid-to-actual history for each sub sits next to your job costs in TrestleBook, the next leveling sheet practically fills itself in. You stop guessing which sub is "usually pretty close" and start knowing.
If you're a one-person operation and also tracking your own hours across estimating, site visits, and admin, a time tracker like Stintly is a good way to see how much of your week goes to bid work compared with billable work. Most solo contractors who measure it are surprised. That number is a useful check on whether you're chasing too many bids at too low a hit rate.
Common Mistakes to Avoid
- Bid shopping — taking Sub A's number to Sub B and asking them to beat it. It works once. Then good subs stop bidding for you, and you're left with the ones who'll make it up in change orders.
- Awarding verbally — "you got it, see you Monday" without a written scope locks in all the ambiguity you just spent an hour fixing.
- Ignoring the terms page — escalation clauses, payment terms, and validity periods (often 15–30 days) are as much a part of the price as the bottom line.
- Leveling only on price-sensitive jobs — scope gaps hurt just as much on a $40,000 kitchen as on a $400,000 addition, and maybe more, because the margin is thinner.
- Not telling losing bidders — a quick "thanks, we went another direction, you were about 8% high on leveled scope" keeps them bidding and helps them sharpen up next time.
Bid leveling isn't complicated. It's just disciplined. Send a clear scope, put every quote on the same grid, plug the gaps honestly, confirm scope with a call, and track how each sub's final cost compares to their bid. Do that consistently and you'll stop losing 3–5% of job margin to surprises that were sitting in the fine print all along. The cheapest sub is the one whose number still holds at closeout.