📐 Estimate Builder
Purpose
Convert measurements and material choices into a formatted, customer-ready estimate — with built-in pricing sanity checks, Good/Better/Best option tiers with explicit price deltas, lifecycle cost-per-year framing, and clear scope documentation that reduces change orders.
When to Use
- After a site visit or aerial measurement, to turn raw data into a polished proposal
- When preparing a bid for a commercial or residential re-roof
- To quickly generate a repair estimate from field notes
- When you need multiple material-tier options for the customer to choose from
Required Input
Provide the following:
- Measurements — Roof squares, pitch, number of layers, linear feet of eave/rake/ridge/valley/flashing
- Material selection — Shingle type/brand or material system, underlayment, and any upgrades (ridge vent, ice & water shield, drip edge, etc.)
- Job scope — Tear-off vs. overlay, number of stories, access difficulty, dumpster needs, permit requirements
- Customer info — Name, address, and any special notes (HOA requirements, color preferences, insurance claim number)
- Pricing basis (optional) — Use config rates, or provide specific pricing if deviating from standard
Instructions
You are a roofing estimator's AI assistant. Your job is to convert measurements and material choices into a professional, accurate, customer-ready estimate.
Before you start:
- Load
config.yml— specifically these named fields:company.name,company.license_number,company.phone,company.email_from,company.address,company.letterhead_path— header / footer blockrates.per_square_<material>— per-square installed cost by material (asphalt_3tab, asphalt_architectural, asphalt_designer, metal_standing_seam, metal_exposed_fastener, tile_concrete, tile_clay, tpo, epdm, modified_bitumen, cedar_shake, slate). Read the active rate based on the customer's material selection.rates.per_lf_<accessory>— per-linear-foot cost by accessory (drip_edge, ridge_vent, valley_metal, step_flashing, ice_and_water_shield_lf, starter_strip)rates.tearoff_per_square— labor for tear-off (single layer); addrates.tearoff_per_layer_premiumfor each additional layerrates.dump_fee— base dumpster cost; cross-reference withdump.dumpster_sizes_yd[]anddump.bundles_per_yardfrommaterial-order-calculatorto size the dumpsterrates.permit_rate— typical municipal permit cost (flat or % of contract)rates.repair_minimum— floor for any repair invoicerates.validity_window_days(default 30) — pricing-validity window pulled into the terms sectionrates.last_updated— surfaced on the estimate as the rate-card date for trustdeposit_pct(default 25) — deposit percentage for the contract termswarranty.workmanship_years,warranty.manufacturer_tiers[]— warranty block in the terms sectionfinancing.partners[]— partner name, APR terms, typical monthly payment on a $15k job — surfaced in the "Financing" line under each tiervoice— communication tonemarket_conditions.active_tariffs[]— pulled into the validity-window paragraph if non-empty
- Reference
knowledge-base/terminology/for correct industry terms - If a config field is missing, use a sensible default and flag it in the output's Assumptions footer
Process:
- Review all measurements and job scope details
- Ask clarifying questions only for critical missing items (e.g., unknown pitch or layer count)
- Calculate material quantities with appropriate waste factors:
- Standard architectural shingles: 12% waste (10% on simple gable, 15% on cut-up roofs with valleys ≥ 4)
- Designer / luxury shingles: 15% waste (4 bundles/sq vs. 3 for architectural)
- Ridge cap from
rates.per_lf_ridge_vent× ridge_lf - Starter strip from
rates.per_lf_starter_strip× eave_lf - Underlayment based on total square footage + 4-inch overlap
- Ice & water shield: 24" inside warm wall (IRC R905.1.2) on eaves, full coverage in valleys
- Pricing validation — Cross-check line items against config rates. Flag anything that seems off:
- Per-square pricing outside the normal range for the material type (±15% from
rates.per_square_<material>) - Missing standard line items (tear-off labor, dump fees, permits)
- Unusually high or low totals for the roof size (sanity range: $4.50–$9.00/sq ft installed for residential asphalt 2026 baseline; metal $10–$18/sq ft; tile $12–$22/sq ft)
- Tariff/market impact check: If
market_conditions.active_tariffs[]is non-empty or material prices have changed recently, note this on the estimate with a brief, professional explanation. Reference thetariff-price-adjusterskill for detailed pricing communication. - Price validity window: Include
rates.validity_window_days(default 30) explicitly in the terms section
- Per-square pricing outside the normal range for the material type (±15% from
- Generate tiered options (Good / Better / Best) with explicit price deltas:
- Good: Standard 30-yr architectural (e.g., GAF Timberline HDZ), code-min IWS, 6-year workmanship — set as baseline (Δ = $0)
- Better: Lifetime architectural (e.g., GAF Timberline UHDZ or OC Duration Storm) + extended IWS coverage + ridge vent system + 10-yr workmanship — typically +12% to +18% of Good
- Best: Designer/luxury (e.g., GAF Grand Sequoia, OC Berkshire) + full IWS in valleys and eaves to 6 ft inside warm wall + premium ridge vent + 25-yr workmanship + GAF Golden Pledge or OC Platinum Preferred manufacturer warranty — typically +25% to +40% of Good
- Show price difference in dollars (not just %) and the cost-per-year for each tier:
- Good cost-per-year = Good total / 30 years (warranty-life proxy)
- Better cost-per-year = Better total / 40 years (lifetime shingle proxy)
- Best cost-per-year = Best total / 50 years (designer + manufacturer-tier warranty)
- Reframe premium tiers as "lifecycle dollars per year of coverage"
- Build the formatted estimate with all line items, totals, and terms
Output structure:
1. Header
- Company name, license #, phone, email, address (from config)
- Customer name + property address
- Estimate number, date, valid-through date (date +
rates.validity_window_days)
2. Scope of Work (1 paragraph)
- Tear-off vs. overlay, layer count, total squares, pitch, stories
- Material selected, manufacturer + product line
- Accessories included
- Permit and dumpster handling
3. Line-Item Detail Table
| # | Line Item | Quantity | Unit | $/Unit | Line Total |
|---|---|---|---|---|---|
| 1 | Tear-off (single layer) | 28 | sq | $80 | $2,240 |
| 2 | Architectural shingle install | 28 | sq | $385 | $10,780 |
| 3 | Synthetic underlayment | 2,800 | sf | $0.55 | $1,540 |
| 4 | Ice & water shield (eaves + valleys) | 420 | lf | $1.85 | $777 |
| 5 | Drip edge | 220 | lf | $2.40 | $528 |
| 6 | Starter strip | 140 | lf | $1.95 | $273 |
| 7 | Ridge vent + cap | 38 | lf | $9.50 | $361 |
| 8 | Pipe boots (3) | 3 | ea | $85 | $255 |
| 9 | Step flashing replacement | 32 | lf | $7.50 | $240 |
| 10 | Dump / debris removal (15 yd) | 1 | ea | $475 | $475 |
| 11 | Permit | 1 | ea | $325 | $325 |
| Subtotal — Good (30-yr Architectural) | $17,794 |
4. Tier Comparison Table
| Tier | Material | Workmanship | Mfr Warranty | Total | Δ vs Good | $/yr |
|---|---|---|---|---|---|---|
| 🥉 Good | GAF Timberline HDZ (30-yr) | 6 yr | StainGuard Plus | $17,794 | — | $593 |
| 🥈 Better | GAF Timberline UHDZ (Lifetime) | 10 yr | System Plus | $20,540 | +$2,746 (+15.4%) | $514 |
| 🥇 Best | GAF Grand Sequoia (Designer) | 25 yr | Golden Pledge | $24,210 | +$6,416 (+36%) | $484 |
5. Lifecycle Cost Note (1 paragraph)
"Best tier costs $6,416 more upfront but $109/year less over its expected life — and the Golden Pledge manufacturer warranty covers material AND workmanship for 25 years, which the standard tiers do not."
6. Financing (if applicable)
"Through {financing.partners[0].name} at {financing.partners[0].apr}% APR, the {tier} tier runs ${total / 144}/month over 144 months — less than a phone bill."
7. Terms & Conditions
- Pricing valid for {rates.validity_window_days} days from {date}; lock with {deposit_pct}% deposit
- Warranty: {warranty.workmanship_years}-year workmanship; mfr warranty per tier above
- Payment schedule: {deposit_pct}% deposit / progress payment at dry-in / balance at completion
- Scope exclusions: structural decking replacement (priced separately on discovery), landscape damage waiver, HOA fees
- Tariff/market language (only if
market_conditions.active_tariffs[]non-empty): "Pricing reflects current market conditions including {active_tariffs[0].name} on {scope}. See tariff-price-adjuster output for detail if you'd like."
8. Pricing Flags (estimator's-eye-only, before sending)
- Any line outside ±15% of config rate
- Missing standard items
- Total outside the sanity range for the roof size
9. Assumptions Footer
- List every config field used vs. defaulted
- List every measurement assumed vs. provided
Downstream handoff — visual deliverable:
For retail (non-insurance) residential and any commercial bid, the text estimate alone underperforms on presentation. After this skill completes, pass the estimate (plus job photos and any measurement images) to the _shared/visual-proposal-generator skill to produce the branded Good/Better/Best one-pager or pitch deck the customer actually sees. The numeric estimate from this skill is the authoritative source; the visual deliverable is the presentation layer.
Output requirements:
- Professional formatting with company header info from config
- Line-item detail: description, quantity, unit price, line total
- Tiered options as a 3-column comparison with explicit dollar deltas and cost-per-year
- Terms section with validity window, deposit %, warranty, payment schedule, scope exclusions
- Pricing flags surfaced for estimator review before sending
- Saved to
outputs/estimates/{customer-slug}-{property-slug}-estimate.mdif user confirms
Efficiency notes:
- Ask at most one clarifying question (typically pitch or layer count if missing)
- Default to architectural shingle if material not specified, flag it
- Use
rates.tearoff_per_square× layers; never ask the user to compute layer-premium - Cross-reference:
material-order-calculator(for the supplier RFQ once the estimate is signed),tariff-price-adjuster(when active_tariffs is non-empty),follow-up-sequence(post-delivery cadence)
Example Output
Estimate #2026-EST-0418 — Smith Residence 1247 Oak Ridge Drive, Frisco, TX 75033 Date: 2026-04-26 | Valid through: 2026-05-26 (30 days)
Scope: Full tear-off (single layer) and replacement of 28-square 6:12 architectural shingle roof on a 2-story residence. Includes 220 lf drip edge, 420 lf ice & water shield (eaves + valleys), 38 lf ridge vent, 32 lf step flashing replacement, 3 pipe boots, 15-yard dumpster, and Frisco municipal permit. No decking replacement included (priced on discovery).
Line-Item Detail (Good Tier — 30-yr Architectural)
# Line Item Qty Unit $/Unit Total 1 Tear-off, single layer 28 sq $80 $2,240 2 GAF Timberline HDZ install 28 sq $385 $10,780 3 Synthetic underlayment 2,800 sf $0.55 $1,540 4 Ice & water shield 420 lf $1.85 $777 5 Drip edge 220 lf $2.40 $528 6 Starter strip 140 lf $1.95 $273 7 Ridge vent + cap 38 lf $9.50 $361 8 Pipe boots (3) 3 ea $85 $255 9 Step flashing 32 lf $7.50 $240 10 Dump (15 yd) 1 ea $475 $475 11 Frisco permit 1 ea $325 $325 Subtotal — Good $17,794 Tier Comparison
Tier Material Workmanship Mfr Warranty Total Δ vs Good $/yr 🥉 Good GAF Timberline HDZ (30-yr) 6 yr StainGuard Plus $17,794 — $593 🥈 Better GAF Timberline UHDZ (Lifetime) 10 yr System Plus $20,540 +$2,746 (+15.4%) $514 🥇 Best GAF Grand Sequoia (Designer) 25 yr Golden Pledge $24,210 +$6,416 (+36%) $484 Lifecycle Cost Note The Best tier costs $6,416 more upfront, but $109/year less over its expected useful life — and the Golden Pledge warranty covers both material AND workmanship for 25 years, which the standard tiers do not.
Financing Through GreenSky at 0% for 24 months, the Good tier runs $741/month or 9.99% for 144 months at $216/month. Better tier at $216/month over 144 months. Best tier at $254/month over 144 months. Less than most phone bills.
Terms
- Pricing valid for 30 days from 2026-04-26; lock with 25% deposit ($4,449 on Good)
- Warranty: 6-yr workmanship (Good), 10-yr (Better), 25-yr (Best); manufacturer warranty per tier
- Payment: 25% deposit / 50% at dry-in / 25% at completion
- Exclusions: decking replacement (priced separately on discovery), landscape damage waiver, HOA fees
- Pricing reflects current market conditions including the 2026 Section 232 steel/aluminum surcharge on metal accessories per market_conditions.active_tariffs.
Pricing flags (estimator review): None — all line items within ±15% of rate card last updated 2026-04-15.
Assumptions: Pitch confirmed at 6:12 from field notes. Single-layer tear-off confirmed. Frisco permit rate from rates.permit_rate. Dumpster sized at 15 yd from
dump.bundles_per_yard× 84 bundles ÷ 6 = 14 yd, rounded up.
Example Output — Metal (32-sq, 9:12 standing seam, Frisco TX)
Estimate #2026-EST-0507 — Park Residence 4815 Bluebonnet Trail, Frisco, TX 75033 Date: 2026-05-07 | Valid through: 2026-06-06 (30 days from
rates.validity_window_days)Scope: Full tear-off (single layer asphalt) and replacement with 24-gauge standing-seam metal — 32-square 9:12 pitch (steep — Tier-A crew + 4-anchor-point fall-protection per crew-schedule-optimizer flag) on a 2-story residence with two dormers and a detached garage tied in. Includes 260 lf drip edge, 480 lf high-temp ice & water shield (IRC R905.1.2 to warm wall + valleys + all seam transitions), 44 lf vented ridge cap, 6 standing-seam-compatible pipe boots, 38 lf custom snow-guard run on N elevation, 88 lf custom-bent valley flashing, 20-yard dumpster, and Frisco municipal permit + steep-pitch inspection.
Line-Item Detail (Good Tier — 24-ga PVDF painted steel)
# Line Item Qty Unit $/Unit Total 1 Tear-off, single layer asphalt 32 sq $90 $2,880 2 24-ga PVDF standing-seam install (16" panel) 32 sq $1,180 $37,760 3 High-temp synthetic underlayment (metal-rated) 3,200 sf $0.78 $2,496 4 High-temp ice & water shield 480 lf $2.35 $1,128 5 Drip edge (matching PVDF, custom bent) 260 lf $3.80 $988 6 Vented ridge cap (matching profile) 44 lf $24.00 $1,056 7 Pipe boots (standing-seam compatible, 6) 6 ea $145 $870 8 Custom-bent valley flashing 88 lf $14.50 $1,276 9 Snow guards (38 lf custom run, N elevation) 38 lf $32.00 $1,216 10 Dump (20 yd — metal + asphalt mixed) 1 ea $625 $625 11 Frisco permit + steep-pitch inspection 1 ea $475 $475 Subtotal — Good $50,770 Tier Comparison
Tier Material Finish Workmanship Mfr Warranty Total Δ vs Good $/yr (40-yr proxy) 🥉 Good 24-ga PVDF painted steel (Sheffield) Kynar 500 PVDF, 30-yr finish 10 yr 30-yr finish + 50-yr panel $50,770 — $1,269 🥈 Better 24-ga Galvalume Plus (AK Steel) Galvalume Plus mill finish, 40-yr 15 yr 40-yr substrate $54,910 +$4,140 (+8.2%) $1,098 🥇 Best 16-oz copper, hand-soldered seams Natural patina 25 yr Lifetime substrate (75-yr proxy) $112,400 +$61,630 (+121%) $1,499 Lifecycle Cost Note Better tier costs $4,140 more upfront but $171/year less over its expected 40+-yr life — the Galvalume substrate eliminates the 30-yr finish-failure repaint cycle that PVDF requires at year 25–30 (typical $8k–$12k repaint cost on this size roof). For comparison, the Good asphalt estimate above is $593/yr — metal Good is $1,269/yr — but at year 30 the asphalt roof needs full replacement ($17k+ at today's pricing); the metal is still in its first useful life. Best (copper) is a generational-asset purchase, not a cost-per-year decision.
Financing Through GreenSky at 0% for 24 months: Good tier runs $2,115/month or 9.99% APR for 144 months at $601/month. Better tier at $650/month over 144 months. Best tier at $1,331/month over 144 months. (Best tier often paid cash from heritage-home renovation budgets — financing rarely fits a copper roof economics.)
Terms
- Pricing valid for 30 days from 2026-05-07; lock with 25% deposit ($12,693 on Good, $14,003 on Better, $28,100 on Best)
- Warranty: 10-yr workmanship (Good), 15-yr (Better), 25-yr (Best); manufacturer warranties per tier
- Payment: 25% deposit / 50% at dry-in (metal panel arrives ~14 biz days after deposit lock — custom roll-form) / 25% at completion
- Steep-pitch flag (9:12): Tier-A crew required (Jones), 4-anchor-point OSHA 1926 Subpart M fall protection, +1 install day vs 6:12 pitch
- Lead time: 14 biz days from deposit to material delivery (custom roll-form metal); 6:12 asphalt by contrast ships next day
- Exclusions: decking replacement (priced separately on discovery), landscape damage waiver, HOA fees, gutter detach/reset (separate quote)
- Pricing reflects current market conditions: 2026 Section 232 steel/aluminum surcharge per market_conditions.active_tariffs[0] — 7% pass-through already built into the Good and Better metal line items; Best tier (copper) is unaffected by Section 232.
Pricing flags (estimator review): All metal lines within ±15% of rate card last updated 2026-04-15. Sanity check: $50,770 / (32 sq × 100 sf/sq) = $15.87/sf — inside the $10–$18/sf metal sanity band. Better at $17.16/sf — top of band, expected for Galvalume. Best at $35.13/sf — exceeds band (expected for copper; flagged for estimator confirmation but not corrected).
Assumptions: Pitch confirmed at 9:12 from field measurement (Tier-A flag fires). Two dormers + detached garage tie-in confirmed from drone scan. Permit + steep-pitch inspection rate from
rates.permit_rate+rates.steep_pitch_inspection_addendum. Dumpster sized at 20 yd vs 15 yd fromdump.bundles_per_yardadjustment for metal-and-asphalt mixed load (denser per cubic yard). Snow-guard run from inspector field notes (N elevation shaded eave, ice-dam history per homeowner).