← ClaudeAtlas

bidflow-electrical-estimatorlisted

From a plain-English project scope and a price list CSV, produce a structured line-item electrical estimate with material costs, labor hours, markup, and a grand total in valid JSON.
riteshkew/yc-skills · ★ 0 · AI & Automation · score 75
Install: claude install-skill riteshkew/yc-skills
# Workflow When this skill triggers, follow these steps in order. ## Step 1 — Parse the scope into quantities Read the project description carefully and extract a quantity takeoff table: | Item | Quantity | Unit | |------|----------|------| | Receptacles | N | each | | Switches | N | each | | Fixtures | N | each | | Conduit | N | linear ft | | Panel(s) | N | each | | Breakers | N | each | | Boxes | N | each | | Cable / wire | N | ft or rolls | | Consumables | N | packs | Rules for this step: - Convert linear footage to conduit sticks (divide by 10 for 10ft sticks, round up). - Derive outlet box count from device + fixture count (one box per device/fixture). - Note the stated labor rate and markup percentage from the scope; use defaults ($85/hr, 15% markup) if not provided. - Flag any scope items that have no matching SKU in the price list — list them as `"sku": "UNLISTED"` with `unit_cost: 0` and a note. ## Step 2 — Match each quantity to a SKU in the price list Load `resources/prices.csv`. For each takeoff item: 1. Search for the best-matching row by description keywords (wire gauge, device type, conduit size, amperage). 2. Record the matched `sku`, `unit`, `unit_cost`, and `labor_hours` (per-unit labor from the price list). 3. If multiple SKUs could match, prefer the one whose unit matches the takeoff unit exactly. 4. If no SKU matches, record `sku: UNLISTED` and set both `unit_cost` and `labor_hours` to 0 so arithmetic is not corrupted. ## Step 3 — Compute materia