GC pack · Bid workflow

Level sub quotes

Sub quotes leveled item by item against one scope checklist. crux reads and levels; you pick the carry.

Quotes only compare once they are mapped to one scope checklist and leveled item by item. The work splits three ways and never mixes: crux reads each quote, the leveling engine does the math, and you decide. The engine's pick is a recommendation; only your selection is the carry.

Level a trade

  1. Save the quotes in the job's Quotes folder (subfolders by trade are fine; loose files are fine too).
  2. Say "level the drywall quotes", or "new quotes landed".
  3. crux sweeps the Quotes folder: every file is checked against the job's quote log, so a quote nobody mentioned is still found. A revised quote is matched to the one it replaces.
  4. Loose quotes are sorted into trade folders by what they actually bid (never by the vendor's name or the file name). crux shows the plan first; nothing is overwritten.
  5. crux reads each quote from the quote itself, page by page: base, breakouts, adds and deducts, alternates, unit prices, inclusions, exclusions, tax and wage basis. Every cell gets a locator (the quote's page and line), which is its citation. A quote silent on an item is not addressed, never assumed included. A price crux cannot read is a question, never a guess.
  6. The engine levels the trade and writes the matrices.

What you get

In the job binder's Leveling folder:

  • one matrix per trade: scope items down the side, bidders across, each cell included, excluded, by others, a printed amount or a real-number plug, with its locator;
  • _LEVELING_ROLLUP.md: the carry per trade, the carried total, what is unpriced, tax, open decisions and budget-grade rows.

In chat, the rollup's first lines and your questions, one line each:

  • No quote: items nobody priced. crux asks which to budget; it never plugs or drops one quietly.
  • Who installs a supply-only trade, and the wage basis of a bid that does not match the job (an open-shop bid on a prevailing-wage job).
  • Findings: cheaper if a missing breakout is resolved, savings from a deduct, overlaps between trades that must be carried once.
  • Decisions over $2,500 get an id (D-012). Say "accept the risk on D-12" or "open D-12 back up"; crux records your words and levels again.

Note: The Leveling folder is crux's own: it rebuilds every matrix from the quotes. To change a matrix, tell crux in chat ("carry Sub P for drywall", "Sub Q's number excludes the fire caulking"). An edit to the file itself is replaced at the next run.

Checks that run every time

  • The leveling gate after every run: a stale run, two bidders who do not really compete on one sheet, an item too coarse to level, an open decision inside 48 hours of bid due.
  • A cold read of the matrices as a document (a $0 plug, a table that contradicts itself).
  • Finalize passes only when every trade's carry covers every base item exactly once, with no gaps.

Next

The carried numbers go into the BASE BID estimate. On bid day, the leveling check runs in its stricter bid-day form. Quotes are also recorded in your company database, so each job grows your pricing history.