User Guides
Plain-language guides ship in the product repo under
documents/users/ — written for estimators, not engineers:
| Guide | Covers |
|---|---|
Getting Startedgetting-started.md | Install, the one-folder mental model, your first estimate, filling the BOM, first pipeline run. |
Dashboard Guidedashboard-guide.md | Every panel: workspace strip (pipeline, win rate), financials, cost-by-type, warnings, revisions, quick actions, Quote Preview & PDF export. |
Pricing Guidepricing-guide.md | The four pricing sources, price-book discipline, rate sheets, material spot refresh (BYO key), profile forks. |
Tutorial 01 — Your First Quotetutorials/01-your-first-quote.md | New Quote → BOM rows → insert a nest → Run All → fix a warning → Quote Preview → PDF → Set Status → commit & tag. |
Tutorial 02 — Parts, Nests & the Price Booktutorials/02-parts-nests-and-the-price-book.md | The Insert Part / Nest flow, parent placement rules, the price-book loop, keeping material rates honest. |
Tutorial 03 — Budgetary vs Firmtutorials/03-budgetary-vs-firm.md | Quote top-down ($/lb) or bottom-up (material + hours), per assembly, in the same file. |
Tutorial 04 — Your Own Vocabularytutorials/04-your-own-vocabulary.md | Define your own cost types, markups and auto-added rows in rates.csv — no code. |
Tutorial 05 — Machined Parts & Weldments in 3Dtutorials/05-machined-parts-and-weldments.md | In development, not in the closed beta: cost a part or weldment from its STEP model in FreeCAD. |
Rates CSV Guiderates-csv-guide.md | Every column and section of rates.csv, with recipes and common errors. |
Installation
Prerequisites
| Requirement | Minimum | Notes |
|---|---|---|
| Python | 3.10+ | 3.11 or 3.12 recommended |
| VS Code | Any recent | With the Python extension |
| openpyxl | 3.1+ | Required for the engine |
| pdfplumber, ezdxf | see requirements-takeoff.txt | Drawing takeoff (PDF, DXF) |
| LibreOffice | Any recent | Optional — PDF export of the quote |
Setup
- Clone the repository or download the latest release
- Create a virtual environment:
python -m venv .venv - Activate it:
source .venv/bin/activate(Linux/macOS) or.venv\Scripts\Activate.ps1(Windows) - Install:
pip install openpyxl
Verify
python -c "import openpyxl; print(openpyxl.__version__)" python app/fastQuote.py template test.xlsx
If you see Template: test.xlsx you are ready.
Optional: VS Code Extension
Open the extension/ folder in VS Code, run npm install, then press F5 to launch. The extension provides a project tree view, inline Run / Validate buttons, and a config editor with JSON schema validation.
Optional: MCP Server
pip install -r requirements-mcp.txt python mcp_server.py
Exposes the engine as tools your AI agent can drive directly — see documents/fastQuote_mcp_guide.md.
Quick Start
# Generate a blank template workbook python app/fastQuote.py template MyProject.xlsx # Open in Excel or LibreOffice, fill in BOM data, save # Process everything and generate all outputs python app/fastQuote.py run MyProject.xlsx
The run command handles everything: BOM processing, BOQ generation, Quote sheet, Warnings, and vendor purchase orders.
Configuration
Generate a default config:
python app/fastQuote.py config
Key sections in bom_config.json: columns (1-based Excel positions), sheet_names, folder_types, settings (start row, max tree depth).
Estimator data (types, markups, rates, UOMs, vendors) lives in rates.csv — edit it in the Rates panel or in Excel; it compiles to rates.json automatically on Run All. Never hand-edit rates.json.
Commands
| Command | What it does |
|---|---|
run | ALL-IN-ONE: BOM, BOQ, Summary, Quote, PO, Warnings |
template | Creates a fresh template workbook |
process | Processes BOM only (auto-level, formulas, formatting) |
boq | Generates BOQ and Summary sheets |
quote | Generates a customer-ready Quote sheet |
validate | Runs deterministic validation rules |
config | Generates a default bom_config.json |
rates sync | Compiles rates.csv into rates.json |
rates status | Checks for rate sheet drift |
estimate | Scaffolds a new estimate project folder |
import_csv | Imports a CSV BOM into a workbook |
BOM Structure
Dot-notation item numbers define hierarchy. Folder types (ASSY, WELD) own children. Leaf types (PART, PROC, MATL, LABR) carry costs. Add new types in rates.csv — zero code changes.
Weight resolution: CAD mass, volume times density, or DXF profile area times thickness. Never guessed.
Pricing and Vendors
Provider chain (first non-empty wins): Price Book → Octopart → Digi-Key → McMaster → Grainger. Unpriced parts: your AI agent researches and records via price_book_upsert.
Rate Sheets
Shop economics in rates.csv: type, markup, injection, material ($/lb by grade), machining, welding, burn ($/in^2), coat ($/in^2), uom, header. Rate kinds: rate_per_lb, hrs_per_lb+rate_per_hr, pct_of_cost, rate_per_uom, rate_per_sqin, flat.
Drawing Takeoff
Four-layer Strategy Engine: Extract (AI reads drawing) → Normalize (Python to canonical CSV) → Match (Python to cost templates) → Compile (Python to BOM rows).
MCP Server
Tools your AI agent can drive: BOM inspection, vendor pricing, price book, validation, rate sheets, pipeline, takeoff, strategy engine.
Validation
python app/fastQuote.py validate MyProject.xlsx. Checks missing prices, broken hierarchies, type consistency, rate drift. Severity-coded with row numbers and fix hints.