agentsclimarketplace

Bidflow electrical estimator

Skill riteshkew/yc-skills/skills/bidflow-electrical-estimator

Catalog of all 198 YC Winter 2026 companies + 18 working Claude Code Skills inspired by the ones an open-source tool can replicate. Inspired by, not affiliated with.

Install
npx -y skills add riteshkew/yc-skills --skill bidflow-electrical-estimator

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

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.

SKILL.md

4.4 KB, as published. Nobody here has run it

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:

ItemQuantityUnit
ReceptaclesNeach
SwitchesNeach
FixturesNeach
ConduitNlinear ft
Panel(s)Neach
BreakersNeach
BoxesNeach
Cable / wireNft or rolls
ConsumablesNpacks

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 material, labor, and line totals

For each line item, compute:

material_total  = qty * unit_cost                        (round to 2 decimal places)
labor_hours     = qty * labor_hours_per_unit_from_csv    (round to 2 decimal places)
labor_total     = labor_hours * labor_rate_per_hour      (round to 2 decimal places)
line_total      = material_total + labor_total           (round to 2 decimal places)

Then roll up totals:

totals.material  = sum of all material_total values
totals.labor     = sum of all labor_total values
totals.subtotal  = totals.material + totals.labor
totals.markup    = totals.subtotal * (markup_pct / 100)
totals.grand_total = totals.subtotal + totals.markup

Round every totals field to 2 decimal places. Double-check: sum the line_total column independently and confirm it equals subtotal before emitting output.

Step 4 — Emit the JSON estimate

Output a single valid JSON document with this schema:

{
  "project": "<short project description>",
  "assumptions": {
    "labor_rate_per_hour": <number>,
    "markup_pct": <number>,
    "notes": ["<any scope flags or UNLISTED items>"]
  },
  "line_items": [
    {
      "sku": "<sku>",
      "description": "<description>",
      "qty": <number>,
      "unit": "<unit>",
      "unit_cost": <number>,
      "material_total": <number>,
      "labor_hours": <number>,
      "labor_total": <number>,
      "line_total": <number>
    }
  ],
  "totals": {
    "material": <number>,
    "labor": <number>,
    "subtotal": <number>,
    "markup": <number>,
    "grand_total": <number>
  }
}

The output must be pure JSON — no markdown fences, no commentary outside the JSON object. Every number must be a JSON number (not a quoted string). The document must pass JSON.parse without error.

Productionization gap

This skill uses the sample price list in resources/prices.csv. Real production use requires:

  • Live supplier pricing: integration with distributor APIs (e.g., Graybar, Anixter, Rexel) or a regularly refreshed price feed.
  • True takeoff from plans: PDF/DXF plan parsing to auto-extract quantities instead of relying on a plain-English scope description.
  • Regional labor rates: NECA or Davis-Bacon wage tables by zip code rather than a single flat rate.
  • Tax and fee tables: jurisdiction-specific sales tax on materials and permit fee schedules.

Example

Input: examples/input.md — 1,200 sq ft office TI scope with 18 receptacles, 12 LED troffers, 1 new 100A subpanel, ~400 ft of 1/2 in EMT, 6 switches.

Output: examples/output.md — valid JSON estimate with 18 line items, internally consistent arithmetic, $85/hr labor rate, 15% markup, grand total $7,895.10.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.