Full Bid Workflow¶
One-Time Setup¶
git clone https://github.com/ContractorKeith/contractor-bid.git
cd contractor-bid
scripts/install.sh --install-poppler
On Windows, run .\scripts\install.ps1 -InstallPoppler from PowerShell.
Poppler provides pdfinfo, pdftotext, and pdftoppm. The scripts fall back to pypdf for some text/page-count work, but Poppler is faster and required for rendered page images.
Check a machine with:
contractor-bid doctor
Per-Bid Pipeline¶
- Create or select a scope profile.
- Create a bid project folder.
- Add bid documents.
- Triage PDFs.
- Review
candidate-pages.mdandscope-pages-sources.suggested.json. - Copy approved suggestions into
scope-pages-sources.json; do not blindly accept every hit. - Build page packets and quick-read summary.
- Fill the takeoff JSON and build the workbook.
- Update the reference index and proposal letter.
- Run alerts check.
- Package sendoff.
Use contractor-bid status <project> --profile <profile> for a non-writing readiness check.
After the page-source and takeoff JSON files have been reviewed and filled, contractor-bid run
can rebuild packets, workbook, alerts, and sendoff in one pass.
Built-in starter profiles:
- Canonical CSI starters use
division-XX-*ids and cover every active MasterFormat division from 03 through 33. - Trade-specific examples such as
fences-gates,concrete-flatwork,drywall-framing,electrical,plumbing,hvac, androofingshow how to narrow a division into a company-specific bid scope. - See CSI Division Starters for the full active/reserved division table.
Naming¶
Date-prefixed folder names use the bid due date: MMDDYY-project-slug. The validator uses that prefix for urgency warnings.
Package Completeness¶
A ready project should have:
00-Bid-Scope-Summary.md00-Scope-Reference-Index.md01-Takeoff-Worksheet-REV1.xlsx02 - Proposal Letter.mdscope-pages.pdfand index when scope pages are isolatedspec-pages.pdfand index when spec pages existtakeoff/review-pages.mdtakeoff/scope-pages-sources.json- a scope takeoff JSON
ALERTS.md- a sendoff zip when files need to leave the workspace