New — export the whole leveling sheet as a PDF

See every sub bid in one snapshot.

BuildCrux gives every project a Bids tab that levels all your trades on one board — variance against your AI estimate, coverage per trade, scope-gap flags, and a normalized best value — then sends one project out to every sub with a no-login invite link. Stop leveling bids on a legal pad.

All trades on one board No-login invite links Export the comparison as a PDF

See every bid in one snapshot

The Bids tab levels all your trades on one board: variance against your AI estimate, coverage per trade, scope-gap flags, and a normalized best value that is not fooled by a cheap bid that quietly excluded scope. Then export the whole comparison as a PDF to share or print.

See how the board reads

Send one project to every trade

Mint a per-trade invite link each sub opens and uploads to with no login and no account. Send invited subs a full bid package — plans, bid due date, walk-through date, RFI contact, and an auto-drafted per-trade scope — and let automatic reminders chase them for you.

See how you send bids out

One snapshot

Every trade, leveled against your AI estimate

Instead of a stack of mismatched PDFs and a legal pad, you get one board. It groups bids by trade, shows each bid’s variance against your AI should-cost, marks scope gaps, and keeps unbid trades held so the committed total is never quietly short.

Bids board
Sample project — leveling snapshot
Committed vs AI
$309,700 vs $327,000
TradeAI should-costCoverageBest valuevs AIAward
Electrical$84,2003 bids$79,500-5.6%Awarded
Plumbing$61,0002 bids$58,400-4.3%Awarded
HVAC
One bid only — no leverage yet
$73,5001 bid$77,900+6.0%Reviewing
Framing
Low bid excluded blocking — held at should-cost (GAP)
$48,0002 bids$46,200-3.8%Awarded
Fire Protection
No bid yet — stays held so the total is never short
$32,5000 bidsHeld on AI estimateChasing
Flooring$27,8002 bids$25,900-6.8%Awarded
Sample board for illustration. 0 bids 1 bid 2+ bids
Every trade grouped on one board, with each bid’s variance against your AI estimate right beside it.
Coverage dots per trade: red for zero bids to chase, amber for one bid with no leverage, green for two or more real comparisons.
Open the level lines to see every AI scope line beside each bid, with a GAP marker wherever a bid excludes or is missing that scope.
A bid that leaves scope out is normalized by holding the missing work at your AI should-cost — so best value is the lowest normalized total, not the lowest sticker price.
Any trade with no bid stays held on your AI estimate, so the committed number for the job is never quietly short the unbid work.
You decide every award. It is never auto-assigned to the lowest number; your AI estimate stays the should-cost anchor while you make the call.
New

Export the whole comparison as a PDF

One printable snapshot of the entire leveling sheet — committed versus AI, every trade broken out with its bids, the awards you made, and the scope gaps that were held at should-cost. Share it with a partner, print it for the bid-day meeting, or drop it in the project file. What you see on the board is what prints.

  • Committed total versus your AI estimate on the front of the sheet
  • Per-trade breakout with raw, normalized, and variance figures
  • Awards and scope gaps captured, so the reasoning travels with the numbers
Leveling sheetPDF export

Collect bids

Three ways to get a bid on the board

However the bid reaches you, it lands on the same board and gets leveled the same way. AI reads each uploaded bid into line items, a total, and its inclusions, exclusions, and assumptions — copying the printed figures, never inventing numbers.

Upload the PDF yourself

Drop in a bid a sub emailed you. AI reads it into line items, a bid total, and the inclusions, exclusions, and assumptions — copying the printed figures, never inventing numbers. A scanned or unreadable bid is kept as a flagged total-only entry, so an upload is never lost.

Send a no-login invite link

Mint a per-trade invite link and send it to the sub. They open it and upload their bid with no account and no login — nothing for them to sign up for. You still get the same AI read into line items and scope.

Key in a total by hand

Got a number over the phone or on a napkin? Enter a bid total by hand and it sits on the board next to the uploaded bids, so every trade is leveled the same way.

Send bids out

Send one project out to every sub

An invite link on its own is a link into silence. BuildCrux sends invited subs a real bid package and then chases them automatically, so the bids actually come back — with no account for the sub to create.

A real bid package, auto-drafted

Send invited subs a bid package with the project plans, the bid due date, the walk-through date, an RFI contact, and an auto-drafted per-trade scope of work — so every sub bids the same scope instead of guessing what you meant.

Reminders that chase for you

Automatic bid-due-date reminders keep subs on schedule without you babysitting the inbox — at most a nudge and a final, then it stops. The link into silence becomes a bid that actually shows up.

One project, every trade

Send the same project out to as many trades as the job needs. Each invite is scoped to that trade, so electrical sees electrical and framing sees framing — and every bid lands back on the one board.

How bid leveling works in BuildCrux

1

Send the project to your subs

Open the Bids tab on a project and send each trade a bid package — plans, due date, walk-through, RFI contact, and an auto-drafted scope. Invite links need no login on the sub’s side.

2

Collect bids three ways

Subs upload through their invite link, you upload PDFs you were emailed, or you key in a total by hand. AI reads each uploaded bid into line items, a total, and its inclusions, exclusions, and assumptions.

3

Level everything on one board

The board groups bids by trade, flags scope gaps, normalizes bids that exclude scope to your should-cost, and shows variance and coverage — so best value is honest, not just cheapest sticker.

4

Export the snapshot, then assemble the bid

Export the whole comparison as a PDF to share or print, then roll the awarded bids plus AI-held scope into a draft customer estimate with your GC markup, ready to send through your normal flow.

Why level bids in BuildCrux instead of a spreadsheet

Apples to apples

Bids that exclude scope are normalized to your should-cost, so a cheap sticker that skipped work does not win by accident.

Nothing falls through

Coverage dots and held unbid trades mean you always know what still needs a chase — and the committed total is never quietly short.

You stay in control

You decide every award. The AI estimate is the should-cost anchor, not an auto-picker, and awarded bids assemble into a customer estimate with your markup.

Frequently asked

What is bid leveling?
Bid leveling is comparing subcontractor bids on equal footing — same scope, same assumptions — so the cheapest sticker price is not mistaken for the best value. BuildCrux levels every trade on one board against your AI estimate, flags where a bid excludes scope, and normalizes that missing work to your should-cost so you are comparing apples to apples.
How do subs send me their bid?
Three ways. You can upload the sub’s PDF yourself, mint a per-trade invite link the sub opens and uploads to with no account and no login, or key in a bid total by hand. Uploaded bids are read by AI into line items, a total, and their inclusions, exclusions, and assumptions.
Do subcontractors need an account to bid?
No. The invite link opens a page where the sub uploads their bid directly — no login, no sign-up, nothing for them to create. That keeps the response rate high, because there is no barrier between the sub and submitting.
What happens when a bid leaves scope out?
The board marks the gap and normalizes the bid by holding the missing work at your AI should-cost. That way best value is the lowest normalized total, not the lowest sticker price — a bid that looks cheap only because it excluded scope does not win by accident.
What if a trade has no bid yet?
It stays held on your AI estimate. The committed total for the job is never silently short the unbid work — you always see a complete number, with the coverage dot flagging that trade as still needing a chase.
Does the lowest bid win automatically?
No. You decide every award. It is never auto-assigned to the lowest number, and your AI estimate stays the should-cost anchor while you make the call.
Can I export the leveling comparison?
Yes. Export PDF gives you one printable snapshot of the whole comparison — committed versus AI, per trade, awards, and scope gaps — to share with a partner, print for a bid-day meeting, or keep in the project file.
Do I get reminders chasing the subs?
Yes. When you send a bid package with a due date, automatic bid-due-date reminders go out — at most a nudge and a final — so subs stay on schedule without you working the inbox.
What do I do once bids are in?
Award the bids you want, then assemble. BuildCrux rolls the awarded bids plus AI-held scope for excluded and unbid trades into a new draft customer estimate with your GC markup, ready to fine-tune and send through your normal flow.

Stop leveling sub bids on a legal pad

Collect every bid, level it against your AI estimate, export the snapshot, and assemble the customer bid — all on one board. 30-day money-back guarantee.