Bid Leveling Skill

The low bid usually isn't the low bid once you plug what it left out. Level every bid to the same scope, see who is really lowest, and send each bidder the right questions.

Bid Leveling Skill cover

What it catches

SituationCodeLevel
Stated total doesn't match the priced linesbid_total_mismatcherror
Gap with no other bid or estimate to plug itunpluggable_gaperror
Item missing or marked not bid (plugged)missing_scopewarning
Item excluded (plugged)excluded_scopewarning
Allowance under 75% of the typical pricelow_allowancewarning
Price under 50% of typical: scope gap?price_outlier_lowwarning
Same item listed twiceduplicate_linewarning
Price over 150% of typicalprice_outlier_highinfo
Alternate or item not in the scope listitem_not_in_scopeinfo
Low bidder changes after levelinglow_bidder_changedinfo

Proven on a labeled example

examples/riverside-clinic-electrical/ is a fictional clinic fit-out electrical package: an 8-item scope with estimates and 3 bids written the way subs write them ("Rough-in & branch wiring" vs "Rough-in and branch wiring"), with a fire alarm exclusion, temp power not bid, a thin fixture allowance, a 4,800 fire alarm price, a rock-clause trenching price, an add alternate and a total that's 1,000 off. expected.json labels the leveled totals: the low base bid (Apex 119,400) becomes second at 138,900 and BrightLine wins at 129,900. The tests assert that in any row order and for each plug method.

What you get

Outputs in out/: bidders.csv (base, plugs, leveled total, rank), leveling_matrix.csv (items x bidders, plugs marked), findings.csv, report.md (with questions per bidder), summary.json. Exit 0 = ready to compare; 1 = errors to resolve; 2 = an input problem.

Real Bid Leveling Skill report and passing tests from the labeled example

Quick start

./run_tests.sh
python3 -m bidlevel --bids examples/riverside-clinic-electrical/bids.csv --scope examples/riverside-clinic-electrical/scope.csv \
  --totals examples/riverside-clinic-electrical/bid_totals.csv --name "Riverside Clinic - Electrical" --out out/

Inputs

  • Bids CSV, one row per bidder per item: Bidder, Item, Amount, Status (Included, Excluded, Allowance, Not bid, Alternate; blank with an amount = included), Note.
  • Optional scope list CSV (Item, Estimate) and stated totals CSV (Bidder, Bid Total). Item names are matched ignoring case, punctuation and & vs and.

Use it from your agent

  • Claude Code plugin: this folder is a plugin (.claude-plugin/plugin.json). Try it with claude --plugin-dir ./bid-leveling-skill, or add the folder to your own plugin marketplace.
  • Skill only: copy skills/bid-leveling/ into ~/.claude/skills/ (or your agent's skills folder) and keep this folder where the agent can run python3 -m bidlevel.
  • No agent: the CLI works on its own; --help lists every flag.

Honest limits

  • Plugs are for comparison, not prices; confirm scope with each bidder before award.
  • One trade package per run; items must be named consistently enough to match (map them in the CSV if not).
  • It doesn't read PDFs; put each bid's lines in the CSV (an agent can do that from the proposal).
  • Qualifications like schedule, bonding and insurance aren't scored.

Requirements

Python 3.9+ (tested on 3.10 and 3.13), no dependencies.

Format and license

Zip, 15 KB, v1.0, 15 files. Use and modify it for yourself and for clients you serve; no resale or redistribution of the kit itself. Full terms in LICENSE.txt.

FAQ

Does it read PDF proposals?
No; an agent puts each bid's lines into the CSV.
Are plugs prices?
No; they are for comparison until the bidder confirms.
Does it contact bidders?
No.
How do I get the files?
Right after payment, Stripe’s confirmation page shows your download link.
Refunds?
Email hello@youraitools.co within 14 days if it doesn’t work and we can’t fix it.
Can I pay with crypto?
Yes. Pay the same price in USDC or USDT on Base, Ethereum, Arbitrum, Optimism, Polygon or Solana from the "Pay with crypto" button, with no account or KYC. We check the payment on-chain and show your download links as soon as it confirms.

Get Bid Leveling Skill

Level subcontractor bids in one command: plug exclusions and gaps, flag thin allowances and outlier prices, check totals, rank. $29 once, offline.

Pairs well with

Download$29

Inventory Reorder Point Skill

Reorder points, safety stock and order quantities for every SKU from a Shopify orders export, plus ABC classes, dead stock and overstock. $29 once.

View Inventory Reorder Point Skill
Download$29

Sales Commission Calculator Skill

Calculate sales commissions from a CRM deals export: tiered rates, accelerators, split deals, caps and clawbacks, with a statement per rep. $29 once.

View Sales Commission Calculator Skill
Download$29

Recipe Costing + Menu Engineering Skill

Recipe costing with yield, food cost % per plate, menu engineering classes (Stars, Plowhorses, Puzzles, Dogs) and target prices from your sales mix. $29 once.

View Recipe Costing + Menu Engineering Skill

Related