Run bid leveling across subcontractor quotes
Before you begin
You'll need a scope of work broken into biddable packages (usually derived from your estimate's cost codes), and a list of subs invited to bid each package.
Steps
- From Preconstruction → Bidding → Bid Grid, create a bid package tied to the relevant estimate line items or cost codes.
- Invite subcontractors. Existing contacts pull in automatically with their trade and past-performance history if you've worked with them before.
- As bids come in, enter each into the Bid Grid, one column per bidder. Line items that don't map cleanly across bidders are flagged rather than silently averaged.
- Use the grid's normalization view to compare apples-to-apples even when bidders scoped things slightly differently. A sub who included a scope another excluded shows clearly, not just as a lower number.
- Select a winning bid per package. This becomes the basis for the subcontract.
What happens next
A selected bid links directly to subcontract creation. The awarded sub's pricing, scope, and any qualifications carry over instead of being re-typed into the contract document.
Where the record lives
All bids received, including the ones not selected, stay attached to the bid package under Preconstruction → Bidding → Bid History, which matters if a scope gap surfaces later and you need to check what every bidder actually included.
Troubleshooting
A bidder's total doesn't match the sum of their line items: flag it and go back to the bidder before scoring; this is one of the most common real-world bid-leveling errors and usually means a line was double-counted or omitted in their own worksheet, not yours.
Two bids look identical but one excludes a scope item: this is exactly what the normalization view is meant to catch; don't compare bottom-line totals alone without checking the scope-inclusion flags first.
Still stuck?
Send this straight to support (it goes directly to support@groundworkai.io).