Compare the bids, then recommend one

Three prices for three different jobs isn't a comparison. Mark what each bid covers, price the gaps, see which one is actually cheapest — then put your recommendation and the reason for it on the same page.

The project
Scope — what the job actually includes

List everything the job needs, including the parts bidders quietly leave out: permits, disposal, tear-off, patching, the crane, putting the landscaping back. Every bid gets marked against these lines, and that is what makes the totals comparable.

1
Bid 1
Bid 2
Your recommendation

Optional — the comparison stands on its own. But an owner or a board is approving a contractor, not a table, and the reason is worth writing down while it’s fresh.

Notes

The low bid is usually low for a reason

Three roofers quote $41,000, $47,000 and $48,500 and the decision looks obvious. Then the cheapest one turns out not to be tearing off the old roof, not pulling the permit, and not taking the debris away — none of which was hidden, exactly, it just wasn’t mentioned. By the time that surfaces the crew is on site, nobody else is competing for the work, and the price of the missing pieces is whatever it is.

This is why the unit of comparison here is the scope line, not the bidder. You list what the job actually involves, mark every bid as including, excluding or silent on each line, and price what’s missing. The comparable total is every bid brought up to the same job. Often it reorders them.

Silence costs more than an exclusion

A bidder who writes “permit by owner” has done you a favor — you can price it. A bid that simply never mentions the permit leaves both of you assuming, and assumptions get settled by change order. The tool marks those separately for that reason, and it will not quietly treat an unpriced gap as free.

The hard part is recommending the bid that isn’t lowest

Levelling the numbers is the analysis. What gets approved is a contractor, and the awkward case is the one where the right choice costs more — better references, can actually start before the weather turns, the only one who has done this roof type. Say that out loud six months later and it sounds like a preference. Say it on a dated sheet next to the numbers it was weighed against and it is a decision.

So the comparison ends in a recommendation you can sign: who you picked, what their comparable total was, and why — stated plainly, and stated before the table rather than buried under it. If your pick isn’t the cheapest comparable total, the sheet says so itself rather than letting the omission do the work. Nothing about this is required. A comparison with no recommendation prints exactly as it always did.

Once you’ve picked one

The bid becomes a scope, and the scope needs the paperwork around it. Get their certificate of insurance before anyone starts — additional insured is not the same as certificate holder, and the difference is the whole point of asking. Issue a work order so the scope is written down rather than remembered. Price anything that changes on a change order instead of arguing at the end, bill it through progress billing if it runs long enough to need draws, and close it out with a punch list that ties to the retainage you are holding.

If the work is on a building put up before 1978, check the EPA lead rule first — it decides whether your contractor has to be a certified firm, and finding that out after they have started is expensive.

A comparison of figures you enter, and a recommendation you write. CompliMaint does not price work, solicit bids, recommend contractors or judge whether a bid is reasonable — the scope, the prices, the cost of every gap and the decision are yours. Everything runs on your device.