Skip to content

feat(bid-leveling)!: level Markdown bids into one spreadsheet - #11

Merged
mikeastock merged 1 commit into
mainfrom
bb/simplify-skills-bid-leveling-md-xlsx-thr_6x5a4wygte
Oct 13, 2026
Merged

mikeastock merged 1 commit into
mainfrom
bb/simplify-skills-bid-leveling-md-xlsx-thr_6x5a4wygte

Conversation

@mikeastock-bot

@mikeastock-bot mikeastock-bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Bid Leveling 4.0.0: Markdown bids in, one .xlsx out. The other three skills don't change.

flowchart LR
  A[scope-sheet.md + bid-*.md] -->|agent extracts| B[bid-data.json]
  B -->|node scripts/level.mjs| C[bid-tab.xlsx]
  C --> D[Leveled totals]
  C --> E[Scope]
  C --> F[Plugs]
  C --> G[Questions]
Loading
  • One output. The HTML bid tab and the Markdown brief are gone. Per-bidder questions are now a Questions sheet.
  • Live formulas, with cached values. Leveled total = base bid + SUMIFS of plugs marked Carry "Yes". Open gaps use COUNTIFS, and "lowest complete" uses _xlfn.MINIFS. Editing a plug or its Carry cell recomputes everything.
  • Suggested plugs count by default (3.0.0 kept them out until accepted). A suggested plug is the highest price another bidder itemized for that line, labelled Suggested: <bidder> itemized $X. Unclear scope gets no plug and stays open.
  • Smaller contract. Dollars, not cents. One quote per scope cell instead of an evidence registry. Removed: alternates, bond/tax basis, scenarios, row classes and governing submissions. Bond, tax and alternates go in the bid's notes.
{ "bidder": "Northgate Drywall & Acoustics", "file": "input-bid-northgate.md", "total": 752000, "addenda": [1],
  "scope": { "sheathing": { "status": "excluded", "quote": "Exterior sheathing by others." } } }
  • Smaller sample. Three drywall bids and eight scope lines, all Markdown. Northgate has the lowest base bid but misses Addendum 2 and stays incomplete. Ridgeline is leveled on its next-morning revision. Prairie is the lowest complete at $803,800.
  • scripts/level.mjs is now one dependency-free file. The skill folder drops from about 4,900 lines to about 650.
  • evals/reviews/bid-leveling/REPORT.md records the LibreOffice recalculation check and a fresh-context comparison against 3.0.0.

Marketing follow-up (buildrtech/marketing#847): the Bid Leveling page loses its live HTML tab and shows the workbook instead. Bump DEFAULT_CATALOG_URL and src/data/skills-catalog.json, rerun pnpm skills:previews, and update tests that expect output-bid-tab.html, output-bid-brief.md or samples/bids/.

Note

Rework bid-leveling skill to level Markdown bids into one XLSX workbook

  • Replaces the scenario/HTML/brief workflow with a single level.mjs that reads a bid-data JSON file and writes one Excel workbook; --json prints the leveled analysis instead.
  • leveling indexes explicit plugs, creates gap records for excluded/omitted/unclear scope lines, suggests plugs from the highest itemized amount by another bidder, and computes cent-based leveled totals, open-gap counts, and lowest base/complete bids.
  • The workbook is built with a dependency-free ZIP/XLSX writer and contains four sheets (leveled totals, scope, plugs, questions) with live formulas and deterministic, reproducible bytes.
  • Adds validation that aggregates all schema and consistency errors before leveling runs.
  • Updates SKILL.md to the new Markdown-input, single-workbook workflow, replaces sample fixtures, adds tests in level.test.mjs, and bumps the skill to 4.0.0 and the marketplace to 0.10.0.
  • Risk: this is a breaking change for the bid-leveling skill — the old leveling-core module, scenario/HTML/brief outputs, evidence registry, and sample assets are removed; consumers of the catalog bundle receive the revised asset inventory.

Macroscope summarized 724145b.

Bids and the scope sheet come in as Markdown; one Excel workbook comes out
with live formulas: leveled totals, scope matrix, plugs, and questions for
each bidder. Suggested plugs now count by default. Drops the HTML bid tab,
the Markdown brief, scenarios, alternates, and bond/tax basis.

BREAKING CHANGE: bid-leveling 4.0.0 replaces the 3.0.0 data contract and
outputs.
@mikeastock
mikeastock merged commit 1f084cd into main Oct 13, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants