/docs/questionnaires · internal reference
Questionnaire & pricing logic — every vertical, end to end
Reference dump of all 53 verticals. For each, you get the questionnaire in order, why each question exists, how each answer moves price, the tier breakdown, branching rules, the recommendation rules, and the final pricing formula in pseudocode. Numbers are read directly from the live vertical configs in src/lib/flow-engine/verticals/ — if this page says it costs $X, that's what the flow charges today.
Built for review, not for marketing. Plain prose + monospace code blocks. No hero, no testimonials, no CTAs.
verticals
53
questions (total)
320
tier configs
167
booking fee
$49 refundable
authored rationales
297/320
declarative hideWhen
56
inline showWhen
0
platform fee
5%
Universal mechanics (applies to every vertical)
Flow types (derived from complexity)
Defined in src/lib/payment-utils.ts — the vertical's complexity field deterministically picks the flow:
- DIRECT PAY —
complexity = "simple". Collect the fullcustomerTotalat booking. Post-payment status →booked. - ORDER FEE —
complexity = "medium". Collect $49 at booking, refundable; credited toward total. Post-payment status →pending_review. - CONSULTATION FEE —
complexity = "complex". Collect $49 at booking, refundable; credited toward total. Post-payment status →consultation_booked.
The $49 booking fee
Constant ORDER_FEE_CENTS = 4900. It's always refundable if we can't fulfill, and it's credited against the final installer invoice / project total when we do fulfill — so it's never a net add to what the customer pays.
Platform fee (5%)
Constant PLATFORM_FEE_RATE = 0.05. Computed on the entire installer base cost, then distributed across non-equipment line itemsso equipment stays at MSRP (customers can verify online). If a tier is 100% equipment, a synthetic "Service & Coordination" line is added. See applyPlatformFee() in src/lib/flow-engine/pricing.ts.
Regional pricing multiplier
computeTierPricing() accepts a regionalMultiplier (default 1.0). Today it is passed through but not yet driven by the user's location at runtime — wiring IP→state is on the roadmap. Equipment line items that have a source URL (i.e., a published MSRP) are exempted from the multiplier; only labor, materials without MSRP, and permits scale.
How a question can move price
option.priceDelta— adds a line item (category: "adjustment") for that answer.option.excludeLineItems— removes matching line items from the tier base (e.g., "old unit removal" removed when there's no old unit).option.impliesSkip— skips downstream questions whose answers would have added cost.question.hideWhen/showWhen— branching; the question never renders, so its potential delta never fires.- Recommendation rules — change which tier's base is chosen (the biggest lever of all).
- Per-unit pricing table (HVAC only today) — replaces the tier's flat
basePricewith a per-unit equipment+install lookup by tonnage.
Per-question rationale (authoritative)
Each question carries an explicit rationale field authored alongside its definition in src/lib/flow-engine/verticals/*.ts. That string is what renders under “Why we ask” on this page — it is the source of truth. If a question is missing a rationale, this page falls back to a heuristic guess derived from the question id, wording, and whether any answer carries a priceDelta, excludeLineItems, or feeds a recommendation rule, and clearly labels the line as a heuristic fallback so reviewers can see the gap and author one.
Branching (authoritative)
Conditional questions use a declarative hideWhen rule: either a single condition or an array of conditions (logical OR — hide when ANY condition matches). Each condition is { questionId, values, not? } — the answer must be in (or, with not:true, must NOT be in) the listed values. Inline showWhen(answers) predicates are retained only as an escape hatch for genuinely complex logic; when present they MUST be paired with a showWhenDescription string so the condition is still readable on this page without opening source. As of this build, all 24 historical showWhen predicates across the codebase have been converted to declarative hideWhen form.
About basePrice
Every tier declares a basePrice in addition to its lineItems. The pricing engine ignores it — the customer-facing total is always computed as Σ(lineItems) + answer deltas + permits + add-ons + platform fee. basePrice survives because two places still read it: (1) the vertical landing pages compute a marketing “price range” from min/max(tier.basePrice), and (2) FlowContainer uses it as the initial “current total” sentinel when a recommendation is first computed (before line items are summed). If the two ever drift, the per-tier block below shows the drift in red so you can fix the source.
Per-unit pricing — status & future
Today only hvac-replacement uses the perUnitPricing table (equipment + install cost varies by tonnage and unit count, with shared startup/permit costs and multi-unit labor discounts). The schema in types.ts is generic enough that it can extend to any vertical with discrete sized units. Likely next candidates if/when we model them at unit resolution: generator-installation (kW sizing), water-heater-replacement (gallon sizing), solar-installation (panel count / kW), and mini-split heads. No extension is wired yet — mentioning here so anyone touching the engine knows the door is open.
Table of contents
simple · 18 verticals · DIRECT PAY
- 🌿 Lawn Care (4 q · 3 tiers)
- 🌧️ Gutter Installation & Cleaning (4 q · 3 tiers)
- 💨 Duct Cleaning (4 q · 3 tiers)
- 🐜 Pest Control (10 q · 5 tiers)
- 💡 Outdoor Lighting (4 q · 3 tiers)
- 🏊 Pool Service (4 q · 3 tiers)
- ❄️ HVAC Maintenance (4 q · 3 tiers)
- 🧹 House Cleaning (6 q · 3 tiers)
- 💦 Pressure Washing (4 q · 3 tiers)
- 🪟 Window Cleaning (4 q · 3 tiers)
- 🧼 Carpet Cleaning (4 q · 3 tiers)
- 🔥 Dryer Vent Cleaning (4 q · 3 tiers)
- 🔧 Appliance Repair (4 q · 3 tiers)
- 🛠️ Handyman (4 q · 3 tiers)
- 🏠 Chimney Sweeping (4 q · 3 tiers)
- ❄️ Snow Removal (4 q · 3 tiers)
- 💧 Sprinkler Maintenance (4 q · 3 tiers)
- 🚛 Junk Removal (4 q · 3 tiers)
medium · 27 verticals · ORDER FEE
- ⚡ EV Charger Installation (11 q · 6 tiers)
- 📡 Dish & Satellite Installation (7 q · 3 tiers)
- 🔥 Water Heater Replacement (5 q · 3 tiers)
- 🪟 Window Replacement (6 q · 3 tiers)
- 🏡 Siding Replacement (5 q · 3 tiers)
- ⚡ Generator Installation (5 q · 3 tiers)
- 🪵 Flooring Installation (6 q · 3 tiers)
- 🪵 Deck Building (6 q · 3 tiers)
- 🏠 Garage Door Replacement (5 q · 3 tiers)
- 🔒 Home Security System (6 q · 3 tiers)
- 🏡 Smart Home Setup (5 q · 3 tiers)
- 🏠 Insulation (5 q · 3 tiers)
- 🏠 Attic Insulation (5 q · 3 tiers)
- 🏠 Chimney Repair (5 q · 3 tiers)
- 🔧 Plumbing Repair (4 q · 3 tiers)
- ⚡ Electrical Services (5 q · 3 tiers)
- 🎨 Interior Painting (4 q · 3 tiers)
- 🌿 Landscaping (4 q · 3 tiers)
- 🏡 Fencing (5 q · 3 tiers)
- 🌳 Tree Removal (5 q · 3 tiers)
- 🌳 Tree Services (13 q · 6 tiers)
- 🏠 Roof Repair (10 q · 3 tiers)
- 🛣️ Concrete & Driveway (4 q · 3 tiers)
- 🪞 Bathroom Vanity (5 q · 3 tiers)
- 🚰 Septic System (4 q · 3 tiers)
- 🌫️ Radon Mitigation (4 q · 3 tiers)
- 💧 Water Softener (4 q · 3 tiers)
complex · 8 verticals · CONSULTATION FEE
- 🌡️ HVAC Replacement (19 q · 3 tiers)
- 🍳 Kitchen Remodel (11 q · 3 tiers)
- 🚿 Bathroom Remodel (11 q · 3 tiers)
- 🏠 Roof Replacement (11 q · 3 tiers)
- ☀️ Solar Panel Installation (10 q · 3 tiers)
- 🏊 Pool Installation (8 q · 3 tiers)
- 🏗️ Foundation Repair (9 q · 3 tiers)
- 💧 Basement Waterproofing (8 q · 3 tiers)
🌡️HVAC Replacement slug:hvac-replacement
Get a transparent estimate for your heating & cooling system
Flow & payment model
Consultation Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$4,700 – $8,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Permits required in most jurisdictions. Your installer handles filing. (estimate: $300)
labor note: Labor includes removal and disposal of your old system (waived for true new-install jobs).
timeline: Most installations completed in 1–2 days.
installer note: Your licensed installer will confirm the final scope, equipment availability, and pricing before any work begins.
Photo prompts
- Photo of your current indoor HVAC unit — show the model/serial number label if visible, and the area around it for sizing
- Photo of your thermostat — show the current display and mounting location so we can plan smart thermostat compatibility
- Photo of your ductwork (if accessible from basement, attic, or utility closet) — show the main trunk line and any visible damage or gaps
Questionnaire (19 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/hvac-replacement.ts.
What are you replacing?
Select the system you need replaced or installed.
Why we ask: Type of system drives equipment cost (via per-type multipliers), gates downstream questions (ductwork, fuel, zones), and changes the tier ladder. A 3-ton furnace ≠ a 3-ton heat pump in price or scope.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
central_ac | Central A/C only | no direct price effect |
furnace | Furnace only | no direct price effect |
both | A/C + Furnace (full system) |
|
heat_pump | Heat pump (heating + cooling) |
|
mini_split | Mini-split / ductless |
|
How many units are you replacing?
Most homes have one system. Larger homes sometimes have 2-3 separate units serving different zones or floors.
branch Hidden when system_type ∈ { "mini_split" }
Why we ask: Number of units multiplies the per-unit equipment + install table. A second unit gets a 15% labor discount; third+ gets 20%. Mini-split uses `num_zones` instead.
How it impacts price: Per-answer line-item deltas and feeds the per-unit pricing table (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
1 | Just one | no direct price effect |
2 | 2 units | no direct price effect |
3 | 3 units | no direct price effect |
4_plus | 4 or more | no direct price effect |
Unit 1 — what type?
Let's go through each system. Start with your first unit.
branch Hidden when unit_count ∈ { "1" }
branch Hidden when system_type ∈ { "mini_split" }
Why we ask: Per-unit type indexes the equipment cost via the per-type equipment multiplier (e.g., heat pump costs ~1.45× a central A/C at the same tonnage).
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
central_ac | Central A/C | no direct price effect |
furnace | Furnace | no direct price effect |
both | A/C + Furnace | no direct price effect |
heat_pump | Heat pump | no direct price effect |
Unit 1 — what size?
Check the label on your outdoor unit, or estimate based on the area it serves.
branch Hidden when unit_count ∈ { "1" }
branch Hidden when system_type ∈ { "mini_split" }
Why we ask: Per-unit tonnage (1.5–5 ton) is the primary index into the equipment + install price table. If unsure, we fall back to your home_sqft.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
1.5 | 1.5 ton (small room / addition) | no direct price effect |
2 | 2 ton (up to 1,000 sq ft) | no direct price effect |
2.5 | 2.5 ton (1,000–1,500 sq ft) | no direct price effect |
3 | 3 ton (1,500–2,000 sq ft) | no direct price effect |
3.5 | 3.5 ton (2,000–2,500 sq ft) | no direct price effect |
4 | 4 ton (2,500–3,000 sq ft) | no direct price effect |
5 | 5 ton (3,000+ sq ft) | no direct price effect |
unsure | Not sure — installer will size it | no direct price effect |
Unit 2 — what type?
branch Hidden when unit_count ∈ { "1" }
branch Hidden when system_type ∈ { "mini_split" }
Why we ask: Per-unit type indexes equipment cost for this unit via the per-type multiplier.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
central_ac | Central A/C | no direct price effect |
furnace | Furnace | no direct price effect |
both | A/C + Furnace | no direct price effect |
heat_pump | Heat pump | no direct price effect |
Unit 2 — what size?
branch Hidden when unit_count ∈ { "1" }
branch Hidden when system_type ∈ { "mini_split" }
Why we ask: Per-unit tonnage drives equipment + install lookup; second unit also gets a 15% labor discount.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
1.5 | 1.5 ton | no direct price effect |
2 | 2 ton | no direct price effect |
2.5 | 2.5 ton | no direct price effect |
3 | 3 ton | no direct price effect |
3.5 | 3.5 ton | no direct price effect |
4 | 4 ton | no direct price effect |
5 | 5 ton | no direct price effect |
unsure | Not sure | no direct price effect |
Unit 3 — what type?
branch Hidden when unit_count ∈ { "3", "4_plus" }
Why we ask: Per-unit type indexes equipment cost for this unit via the per-type multiplier.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
central_ac | Central A/C | no direct price effect |
furnace | Furnace | no direct price effect |
both | A/C + Furnace | no direct price effect |
heat_pump | Heat pump | no direct price effect |
Unit 3 — what size?
branch Hidden when unit_count ∈ { "3", "4_plus" }
Why we ask: Per-unit tonnage drives equipment + install lookup; third unit gets a 20% labor discount.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
1.5 | 1.5 ton | no direct price effect |
2 | 2 ton | no direct price effect |
2.5 | 2.5 ton | no direct price effect |
3 | 3 ton | no direct price effect |
3.5 | 3.5 ton | no direct price effect |
4 | 4 ton | no direct price effect |
5 | 5 ton | no direct price effect |
unsure | Not sure | no direct price effect |
How large is your home?
Sizing guide: under 1,000 sq ft ≈ 1.5 ton, 1,000–1,500 ≈ 2 ton, 1,500–2,500 ≈ 2.5–3 ton, 2,500–3,500 ≈ 3.5–4 ton, 3,500+ ≈ 5 ton.
Why we ask: Square footage is the sizing FALLBACK when you don't know your tonnage. If you've already given a per-unit tonnage, this doesn't drive equipment price — it just helps the installer right-size at the site visit.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
under_1000 | Under 1,000 sq ft (≈1.5 ton) |
|
1000_1500 | 1,000 – 1,500 sq ft (≈2 ton) |
|
1500_2500 | 1,500 – 2,500 sq ft (≈2.5–3 ton) |
|
2500_3500 | 2,500 – 3,500 sq ft (≈3.5–4 ton) |
|
over_3500 | Over 3,500 sq ft (≈5 ton — may need multiple units) |
|
How old is your current system?
branch Hidden when _intent ∈ { "install_new" }
Why we ask: System age signals urgency and economic fit for replacement. Systems over 15 years old have poor parts availability, declining efficiency, and rising failure risk. Doesn't directly affect price; feeds the recommendation engine.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
under_5 | Under 5 years |
|
5_10 | 5–10 years | no direct price effect |
10_15 | 10–15 years |
|
over_15 | 15+ years (or I don't know) |
|
What's driving this project?
Why we ask: Identifies the customer's biggest pain point — feeds the recommendation engine and is surfaced to the installer in the scope notes. Does not directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
broke | System stopped working — need it ASAP |
|
inefficient | High energy bills |
|
comfort | Hot/cold spots, poor comfort |
|
proactive | Being proactive / planned upgrade | no direct price effect |
home_sale | Preparing home for sale |
|
How important is energy efficiency to you?
Higher-efficiency systems cost more upfront but save on monthly bills.
Why we ask: How much the customer values efficiency tilts the recommendation toward higher-SEER tiers and heat-pump options. Does not directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
lowest_cost | Keep upfront cost low |
|
balanced | Balance cost and efficiency | no direct price effect |
most_efficient | Best efficiency, long-term savings |
|
What's the condition of your existing ductwork?
If you're not sure, that's fine — your installer will inspect during the site visit.
branch Hidden when system_type ∈ { "mini_split" }
Why we ask: Existing ductwork condition gates ONE of three mutually-exclusive add-ons: seal/repair (aging), full replacement (poor), or new install (none). Only the matching add-on is offered, so there's no double-counting.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
good | Good — sealed, insulated, relatively new | no direct price effect |
aging | Aging — 15+ years, may have leaks | no direct price effect |
poor | Poor — visible gaps, no insulation | no direct price effect |
none | No ductwork |
|
unsure | Not sure | no direct price effect |
How many floors / zones does your home have?
branch Hidden when system_type ∈ { "mini_split" }
Why we ask: Mini-split only. Zone count determines how many indoor heads are needed — each zone requires a separate indoor unit and refrigerant line run from the outdoor compressor. This is the primary equipment cost driver for mini-split (the tier's base lineItems cover the single-zone baseline; this priceDelta adds extra zones).
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
1 | 1 zone (single room or floor) | no direct price effect |
2_3 | 2–3 zones |
|
4_plus | 4+ zones |
|
What fuel does your current heating use?
branch Hidden when system_type ∈ { "furnace", "both" }
Why we ask: Existing fuel type determines whether we keep the gas line (furnace/heat-pump hybrid), cap it (full-electric switch), or extend it. Informational — does not directly affect tier pricing today.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
gas | Natural gas | no direct price effect |
oil | Oil / propane |
|
electric | Electric | no direct price effect |
unsure | Not sure | no direct price effect |
Would you like a smart thermostat included?
A smart thermostat can save 10-15% on heating and cooling costs.
Why we ask: Single source of truth for thermostat billing. 'Yes' adds a $325 line item (Ecobee/Nest + install labor). 'No' adds a basic non-programmable swap ($75). 'Have one' adds nothing.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
yes | Yes, include a smart thermostat |
|
no | No thanks, basic thermostat swap |
|
have_one | I already have a thermostat I want to keep | no direct price effect |
Are you interested in multi-zone temperature control?
Zoning lets you heat/cool different areas independently — great for multi-story homes.
branch Hidden when system_type ∈ { "mini_split" }
branch Hidden when home_sqft ∈ { "under_1000" }
Why we ask: Drives whether we offer the zoning add-on. Hidden for mini-split (mini-splits zone by design) and for under-1,000-sqft homes (don't typically benefit from zoning).
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
no | No — single zone is fine | no direct price effect |
already_have | I already have zoning | no direct price effect |
interested | Yes — I want to add zoning |
|
maybe | Interested but depends on cost | no direct price effect |
When do you need this done?
branch Hidden when primary_concern ∈ { "broke" }
Why we ask: Urgency signal — emergency requests are routed to installers offering same/next-day service. Doesn't affect price.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
asap | As soon as possible |
|
within_month | Within a month | no direct price effect |
flexible | I'm flexible / planning ahead | no direct price effect |
What matters most to you?
Select up to 3 — this helps us tailor our recommendation.
Why we ask: Informational / qualification — used by the recommendation engine and surfaced to the installer. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
budget | Stay within budget |
|
quality | Best quality materials |
|
timeline | Get it done quickly | no direct price effect |
efficiency | Energy efficiency / long-term savings |
|
aesthetics | Best looking result |
|
warranty | Longest warranty coverage |
|
Tiers (3)
Reliable & affordable
Brand: Carrier / Lennox
basePrice (declared)
$4,700
Σ(lineItems) (computed)
$4,850drift +$150
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| (dynamic) Equipment (Mini-Split single-zone, 9k–12k BTU)— label is computed from answers at runtimesource: https://www.pickhvac.com/mini-split/ | equipment | $3,500 |
| Installation & Labor (4–6 hrs) | labor | $1,000 |
| System Startup & Testing (1 hr) | labor | $350 |
Specs (display only)
- Model: Carrier Comfort 24SCA5 / Lennox Merit ML14XC1
- Cooling Efficiency: 14–16 SEER2
- Heating Efficiency: 80% AFUE
- Warranty: 5 yr parts, 1 yr labor
- Compressor: Single-stage
- Noise Level: 72 dB outdoor unit
- System Size: (computed from answers)
Pros (display only)
- Lowest upfront cost
- Proven, widely-serviced brands
- Cools and heats reliably
Cons (display only)
- Higher monthly energy bills vs. premium tiers
- Single-stage — runs full blast or off (less precise comfort)
- Shorter standard warranty
tags: budget
Per-unit pricing table (this tier) — overrides basePrice when multi-unit condition fires
Activates when unit_count ∈ { "1", "2", "3", "4_plus" }. Unit count read from unit_count. Per-unit answer keys: unit_{i}_tonnage, unit_{i}_type.
| tonnage | equipment | installation |
|---|---|---|
1.5 | $2,500 | $900 |
2 | $3,100 | $1,000 |
2.5 | $3,500 | $1,100 |
3 | $4,000 | $1,250 |
3.5 | $4,600 | $1,400 |
4 | $5,200 | $1,550 |
5 | $6,200 | $1,750 |
Labor multipliers: 2nd unit ×0.85, 3rd+ unit ×0.8.
Comfort upgrade with real savings
Brand: Trane / Rheem
basePrice (declared)
$6,000
Σ(lineItems) (computed)
$6,050drift +$50
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| (dynamic) Equipment (Mini-Split single-zone, 9k–12k BTU, 19+ SEER inverter)— label is computed from answers at runtimesource: https://www.pickhvac.com/mini-split/ | equipment | $4,700 |
| Installation & Labor (4–6 hrs) | labor | $1,000 |
| System Startup & Testing (1 hr) | labor | $350 |
Specs (display only)
- Model: Trane XR17 / Rheem RA17AZ
- Cooling Efficiency: 17–19 SEER2
- Heating Efficiency: 95% AFUE
- Warranty: 10 yr parts, 2 yr labor
- Compressor: Two-stage
- Noise Level: 68 dB outdoor unit
- System Size: (computed from answers)
Pros (display only)
- Two-stage operation — quieter, more even temps
- Save $300–$400/year on energy vs. standard efficiency
- 10-year parts warranty — peace of mind
- Two-stage is the sweet spot — real comfort improvement for moderate cost increase
Cons (display only)
- Higher upfront cost vs. Good tier
- More complex — slightly higher future service costs
tags: balanced popular
Per-unit pricing table (this tier) — overrides basePrice when multi-unit condition fires
Activates when unit_count ∈ { "1", "2", "3", "4_plus" }. Unit count read from unit_count. Per-unit answer keys: unit_{i}_tonnage, unit_{i}_type.
| tonnage | equipment | installation |
|---|---|---|
1.5 | $3,350 | $900 |
2 | $4,150 | $1,000 |
2.5 | $4,700 | $1,100 |
3 | $5,400 | $1,250 |
3.5 | $6,200 | $1,400 |
4 | $7,000 | $1,550 |
5 | $8,350 | $1,750 |
Labor multipliers: 2nd unit ×0.85, 3rd+ unit ×0.8.
Premium performance & efficiency
Brand: Mitsubishi Hyper-Heat / Daikin
basePrice (declared)
$8,000
Σ(lineItems) (computed)
$8,100drift +$100
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| (dynamic) Equipment (Premium Mini-Split single-zone, Mitsubishi Hyper-Heat / Daikin)— label is computed from answers at runtimesource: https://www.pickhvac.com/mini-split/ | equipment | $6,500 |
| Installation & Labor (4–6 hrs) | labor | $1,100 |
| System Startup & Testing (1 hr) | labor | $500 |
Specs (display only)
- Model: Mitsubishi MSZ-FH / Daikin Aurora
- Cooling Efficiency: 22–28 SEER2
- Heating Efficiency: Heats down to -13°F
- Warranty: 12 yr parts, 3 yr labor
- Compressor: Variable-speed inverter
- Noise Level: 55 dB outdoor unit (whisper-quiet)
- System Size: (computed from answers)
Pros (display only)
- Variable-speed compressor — whisper-quiet, precise humidity control
- Save $500–$700/year on energy vs. standard efficiency
- Best-in-class warranty
- Check for local utility rebates in your area
Cons (display only)
- Highest upfront cost
- Requires specialized technicians for service
tags: premium efficiency
Per-unit pricing table (this tier) — overrides basePrice when multi-unit condition fires
Activates when unit_count ∈ { "1", "2", "3", "4_plus" }. Unit count read from unit_count. Per-unit answer keys: unit_{i}_tonnage, unit_{i}_type.
| tonnage | equipment | installation |
|---|---|---|
1.5 | $4,650 | $1,100 |
2 | $5,750 | $1,250 |
2.5 | $6,500 | $1,400 |
3 | $7,400 | $1,600 |
3.5 | $8,550 | $1,800 |
4 | $9,650 | $2,000 |
5 | $11,500 | $2,250 |
Labor multipliers: 2nd unit ×0.85, 3rd+ unit ×0.8.
Global add-ons (offered on every tier)
| add-on | price |
|---|---|
zoning — 2-Zone Damper SystemIndependent temperature control for different areashidden when zoning_interest ∈ { "already_have", "no" } | $2,500 |
uv_air — UV Air PurifierKills bacteria and allergens in your ductwork | $650 |
surge_protect — Whole-System Surge ProtectorProtects your HVAC investment from power surges | $300 |
air_purifier — Whole-Home Air Purifier (Lennox PureAir)Hospital-grade air purification | $1,200 |
humidity_ctrl — Whole-Home Humidifier/DehumidifierYear-round humidity control | $950 |
duct_repair — Ductwork Repair & SealingSeal leaks and insulate aging ductwork — can improve efficiency by 20–30%hidden when ductwork ∈ { "good", "none", "unsure" }recommended when ductwork ∈ { "aging" } | $1,800 |
duct_replace — Ductwork ReplacementFull ductwork replacement for severely damaged systemshidden when ductwork ∈ { "good", "aging", "unsure" }recommended when ductwork ∈ { "poor" } | $5,200 |
new_ducts — New Ductwork InstallationInstall complete ductwork for homes without existing ductshidden when ductwork ∈ { "good", "aging", "poor", "unsure" }recommended when ductwork ∈ { "none" } | $5,800 |
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | efficiency_priority ∈ { "lowest_cost" } |
good | 2 | home_sqft ∈ { "under_1000", "1000_1500" } |
good | 2 | primary_concern ∈ { "home_sale" } |
good | 1 | priorities ∈ { "timeline" } |
good | 2 | priorities ∈ { "budget" } |
best | 3 | efficiency_priority ∈ { "most_efficient" } |
best | 2 | primary_concern ∈ { "inefficient" } |
best | 2 | home_sqft ∈ { "2500_3500", "over_3500" } |
best | 1 | current_age ∈ { "over_15" } |
best | 1 | ductwork ∈ { "poor" } |
best | 2 | zoning_interest ∈ { "interested" } |
best | 1 | priorities ∈ { "quality" } |
best | 1 | priorities ∈ { "efficiency" } |
best | 1 | priorities ∈ { "warranty" } |
better | 2 | efficiency_priority ∈ { "balanced" } |
better | 1 | home_sqft ∈ { "1500_2500" } |
better | 1 | primary_concern ∈ { "comfort" } |
better | 3 | primary_concern ∈ { "broke" } |
better | 1 | thermostat ∈ { "yes" } |
better | 1 | zoning_interest ∈ { "maybe" } |
Final price formula (this vertical)
// computeTierPricing(hvac-replacement, tier, answers, regionalMultiplier = 1.0)
// Per-unit branch — fires when answers.unit_count ∈ { "1", "2", "3", "4_plus" }
unitCount = parseInt(answers.unit_count)
for i in 1..unitCount:
tonnage = answers.unit_{i}_tonnage // or fallbackTonnageBySquareFootage[home_sqft] if "unsure"
type = answers.unit_{i}_type
equip[i] = perUnitPricing.tiers[tier.id].equipment[tonnage] × regionalMultiplier
laborMul = i==2 ? discount2 : i>=3 ? discount3plus : 1.0
install[i] = perUnitPricing.tiers[tier.id].installation[tonnage] × regionalMultiplier × laborMul
Σ(equip) + Σ(install) + sharedLineItems[tier.id] + addOns + permits + answerDeltas
// Standard branch (single-unit fallback) — same as below.
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $300 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: complex/consultation_fee → collect $49 at booking (refundable, credited to customerTotal).Worked example (tier better, multi-unit branch, 2× 3-ton units)
unitCount = 2 tonnage (each) = 3 unit 1 equipment = $5,400 unit 1 installation = $1,250 unit 2 equipment = $5,400 unit 2 installation (×0.85) = $1,063 shared line items (tier) = $600 permits = $300 installerCost = $14,013 platformFee (5%) = $701 customerTotal = $14,713
Pricing sources cited in code
- ENERGY STAR HVAC Guide — https://www.energystar.gov/products/heating_cooling
- DOE Heating & Cooling Tips — https://www.energy.gov/energysaver/heating-and-cooling
- pickhvac.com 2026 pricing data — https://www.pickhvac.com/
Source file: src/lib/flow-engine/verticals/hvac-replacement.ts · run the live flow →
⚡EV Charger Installation slug:ev-charger
Get your Level 2 home charger installed the right way
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$800 – $1,030 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Electrical permit required in most jurisdictions. Installer handles filing. (estimate: $200)
labor note: Includes panel work, conduit, and NEMA outlet or hardwired connection.
timeline: Most installations completed in half a day to one full day.
installer note: Your licensed electrician will assess your panel and confirm the final scope and pricing before work begins.
Photo prompts
- Photo of your electrical panel with the door open — show all breaker labels clearly so we can check available capacity
- Photo of where you park — show the wall where the charger will mount, including any nearby outlets or obstructions
- Photo showing the path from your electrical panel to the parking spot — we need to estimate wiring distance
Questionnaire (11 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/ev-charger.ts.
What EV do you have (or plan to get)?
Helps us recommend the right charger and connector type.
Why we ask: Vehicle model drives the connector recommendation (NACS vs J1772) and which Level 2 charger tiers we surface as 'best fit'.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
tesla | Tesla (any model) |
|
ford | Ford F-150 Lightning / Mach-E | no direct price effect |
gm | Chevy / GMC (Bolt, Silverado EV) | no direct price effect |
rivian | Rivian R1T / R1S | no direct price effect |
bmw_polestar | BMW, Polestar, Volvo | no direct price effect |
other | Other / not sure yet | no direct price effect |
Where will the charger be mounted?
Why we ask: Mount location drives the mounting hardware line item (outdoor-rated, pedestal, etc.) and the labor difficulty.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
garage_wall | Inside a garage (wall-mounted) | no direct price effect |
outdoor_wall | Outside wall near driveway |
|
carport | Carport or covered parking | no direct price effect |
freestanding | Pedestal / freestanding mount |
|
Do you already have a 240V outlet where the charger will go?
A NEMA 14-50 outlet (like for an electric dryer or RV) can power most plug-in chargers with little to no install work. Note: hardwired chargers (like Tesla Wall Connector) still require electrician wiring even with an existing outlet.
Why we ask: Whether a 240V outlet already exists determines if heavy electrical work is included or skipped.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
yes_1450 | Yes — NEMA 14-50 (dryer/RV style) |
|
yes_other | Yes — 240V outlet but not sure which type |
|
no | No 240V outlet nearby | no direct price effect |
How far is the nearest electrical panel from where the charger will go?
This could be your main panel or a sub-panel — measure from whichever is closest. This drives wiring cost.
branch Hidden when existing_outlet ∈ { "yes_1450" }
Why we ask: Distance from panel to charger drives wiring cost — each band adds a wire-run line item.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
under_10 | Under 10 ft (panel is right there) | no direct price effect |
10_25 | 10–25 ft |
|
25_50 | 25–50 ft |
|
50_plus | 50+ ft |
|
unsure | Not sure — installer will assess on site | no direct price effect |
Does the panel you'll be connecting to have open breaker slots?
An EV charger needs a 40-50A double-pole breaker. If the panel is full, we can usually swap in tandem breakers to make room.
branch Hidden when existing_outlet ∈ { "yes_1450", "yes_other" }
Why we ask: Available breaker space determines whether a tandem breaker swap or sub-panel install is required.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
has_space | Yes — there are empty slots | no direct price effect |
nearly_full | Panel is nearly full |
|
unknown | I'm not sure | no direct price effect |
Will the wire need to cross a driveway or go underground?
Trenching under concrete or across a yard adds significant cost. Running along walls or through an attic is standard.
branch Hidden when existing_outlet ∈ { "yes_1450", "yes_other" }
Why we ask: Routing path drives trenching and concrete-cutting line items, which can be the single biggest cost adder.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
walls_attic | Along walls, through attic, or exposed conduit | no direct price effect |
underground_dirt | Underground through dirt or lawn |
|
underground_concrete | Under a driveway or concrete |
|
Approximately how old is your home?
Older homes may have electrical systems that need extra attention.
Why we ask: Home age flags era-specific conditions: older wiring, FPE/Zinsco panels, lead, asbestos, or knob-and-tube.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
new | Built after 2000 | no direct price effect |
1980s_90s | 1980s–1990s | no direct price effect |
1960s_70s | 1960s–1970s | no direct price effect |
pre_1960 | Before 1960 | no direct price effect |
unsure | Not sure | no direct price effect |
Do you know your panel brand?
Certain older panel brands (Federal Pacific, Zinsco, Pushmatic) are known safety hazards and must be replaced before any new circuits are added.
branch Hidden when home_age ∈ { "new" }
Why we ask: Federal Pacific, Zinsco, and Pushmatic panels are known safety hazards and must be replaced before any new circuits are added.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
normal | Square D, Siemens, Eaton, GE, Cutler-Hammer, or other | no direct price effect |
federal_pacific | Federal Pacific / Stab-Lok |
|
zinsco | Zinsco / GTE-Sylvania |
|
pushmatic | Pushmatic / Bulldog |
|
unknown | I don't know | no direct price effect |
Do you have or plan to get a second EV?
If so, we can size the circuit and panel capacity for future expansion — much cheaper to do now than later.
Why we ask: Whether to size the circuit for a future second charger — adds a small upfront line item but avoids a redo later.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
yes | Yes — plan ahead for two chargers |
|
no | No — just one EV | no direct price effect |
maybe | Maybe in the future | no direct price effect |
Do you have (or plan to install) solar panels?
Solar integration works best with Tesla or ChargePoint chargers.
Why we ask: Solar interaction determines which chargers (Tesla, ChargePoint) make sense for load-balancing with PV.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
yes | Yes — I want solar-integrated charging |
|
no | No solar | no direct price effect |
future | Not now but may add later |
|
Who will handle the electrical permit?
Most jurisdictions require an electrical permit for EV charger installation. We can handle the filing for you, or you can pull it yourself.
Why we ask: Whether the customer pulls their own permit determines if we include the permit & inspection line item or zero it out.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
electrum_handles | Electrum handles it (recommended) | no direct price effect |
customer_pulls | I'll pull the permit myselfdisclaimer: By choosing to pull your own permit, you accept responsibility for obtaining all required electrical permits before work begins. Working without permits may void manufacturer warranties and create issues at resale. |
|
Tiers (6)
Smart charger with built-in load management
Brand: Emporia
basePrice (declared)
$899
Σ(lineItems) (computed)
$899
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Emporia Smart EV Chargersource: https://shop.emporiaenergy.com | equipment | $449 |
| Electrical Installation Labor (2-3 hrs) | labor | $350 |
| Wiring & Conduit Materials | equipment | $100 |
Specs (display only)
- Charging Speed: Up to 48A / 11.5 kW
- Cord Length: 24 ft
- WiFi: Yes — Emporia app
- Warranty: 3 years
- Connector: J1772
Tier add-ons
| add-on | price |
|---|---|
outdoor_enclosure — Weatherproof Outdoor EnclosureNEMA 4 rated enclosure for outdoor installationsrecommended when charger_location ∈ { "outdoor_wall", "freestanding" } | $100 |
panel_upgrade — Panel Upgrade to 200AFuture-proof your home for EVs, solar, and more | $2,000 |
Pros (display only)
- Built-in load management (PowerSmart)
- Good app with energy monitoring
- Works with Emporia Vue for whole-home tracking
Cons (display only)
- Newer brand, less proven track record
- J1772 only
tags: smart j1772
Tough, reliable, no-nonsense
Brand: Grizzl-E
basePrice (declared)
$800
Σ(lineItems) (computed)
$800
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Grizzl-E Classic 40A Chargersource: https://grizzl-e.com | equipment | $350 |
| Electrical Installation Labor (2-3 hrs) | labor | $350 |
| Wiring & Conduit Materials | equipment | $100 |
Specs (display only)
- Charging Speed: Up to 40A / 9.6 kW
- Cord Length: 25 ft
- WiFi: No
- Warranty: 3 years
- Connector: J1772
Tier add-ons
| add-on | price |
|---|---|
load_management — Smart Load ManagementShares circuit capacity with other appliances — avoids breaker trips | $250 |
outdoor_enclosure — Weatherproof Outdoor EnclosureNEMA 4 rated enclosure for outdoor installationsrecommended when charger_location ∈ { "outdoor_wall", "freestanding" } | $100 |
panel_upgrade — Panel Upgrade to 200AFuture-proof your home for EVs, solar, and more | $2,000 |
Pros (display only)
- NEMA 4 rated — works in extreme cold and rain
- Simple and reliable
- Made in Canada
Cons (display only)
- No app or smart features
- 40A max (vs 48A on others)
tags: basic durable j1772
Compact design, great app
Brand: Wallbox
basePrice (declared)
$900
Σ(lineItems) (computed)
$899drift −$1
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Wallbox Pulsar Plus 48Asource: https://wallbox.com | equipment | $449 |
| Electrical Installation Labor (2-3 hrs) | labor | $350 |
| Wiring & Conduit Materials | equipment | $100 |
Specs (display only)
- Charging Speed: Up to 48A / 11.5 kW
- Cord Length: 25 ft
- WiFi: Yes — Wallbox app
- Warranty: 3 years
- Connector: J1772
Tier add-ons
| add-on | price |
|---|---|
load_management — Smart Load ManagementShares circuit capacity with other appliances — avoids breaker trips | $250 |
outdoor_enclosure — Weatherproof Outdoor EnclosureNEMA 4 rated enclosure for outdoor installationsrecommended when charger_location ∈ { "outdoor_wall", "freestanding" } | $100 |
panel_upgrade — Panel Upgrade to 200AFuture-proof your home for EVs, solar, and more | $2,000 |
Pros (display only)
- Sleek, compact design
- Good app experience
- Power sharing for multi-charger setups
Cons (display only)
- Some reliability complaints in reviews
- J1772 only
tags: smart design j1772
Most popular smart charger
Brand: ChargePoint
basePrice (declared)
$949
Σ(lineItems) (computed)
$949
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| ChargePoint Home Flex 50Asource: https://store.chargepoint.com | equipment | $499 |
| Electrical Installation Labor (2-3 hrs) | labor | $350 |
| Wiring & Conduit Materials | equipment | $100 |
Specs (display only)
- Charging Speed: Up to 50A / 12 kW
- Cord Length: 23 ft
- WiFi: Yes — ChargePoint app
- Warranty: 3 years
- Connector: J1772
Tier add-ons
| add-on | price |
|---|---|
load_management — Smart Load ManagementShares circuit capacity with other appliances — avoids breaker trips | $250 |
outdoor_enclosure — Weatherproof Outdoor EnclosureNEMA 4 rated enclosure for outdoor installationsrecommended when charger_location ∈ { "outdoor_wall", "freestanding" } | $100 |
panel_upgrade — Panel Upgrade to 200AFuture-proof your home for EVs, solar, and more | $2,000 |
Pros (display only)
- Best-in-class app experience
- Schedule charging for off-peak rates
- Largest home charger brand
Cons (display only)
- Requires ChargePoint account
- J1772 only
tags: smart popular j1772
Native Tesla charging, fastest for Tesla owners
Brand: Tesla
basePrice (declared)
$900
Σ(lineItems) (computed)
$900
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Tesla Wall Connector (NACS)source: https://shop.tesla.com | equipment | $450 |
| Electrical Installation Labor (2-3 hrs) | labor | $350 |
| Wiring & Conduit Materials | equipment | $100 |
Specs (display only)
- Charging Speed: Up to 48A / 11.5 kW
- Cord Length: 24 ft
- WiFi: Yes — Tesla app
- Warranty: 4 years
- Connector: NACS (Tesla)
Tier add-ons
| add-on | price |
|---|---|
load_management — Smart Load ManagementShares circuit capacity with other appliances — avoids breaker trips | $250 |
outdoor_enclosure — Weatherproof Outdoor EnclosureNEMA 4 rated enclosure for outdoor installationsrecommended when charger_location ∈ { "outdoor_wall", "freestanding" } | $100 |
panel_upgrade — Panel Upgrade to 200AFuture-proof your home for EVs, solar, and more | $2,000 |
Pros (display only)
- Native NACS — no adapter needed for Tesla
- Tesla app integration
- Solar/Powerwall compatible
Cons (display only)
- NACS only — non-Tesla EVs need adapter
- No J1772
tags: tesla nacs solar
Works with every EV — Tesla's universal option
Brand: Tesla
basePrice (declared)
$1,030
Σ(lineItems) (computed)
$1,030
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Tesla Universal Wall Connector (NACS + J1772)source: https://shop.tesla.com | equipment | $580 |
| Electrical Installation Labor (2-3 hrs) | labor | $350 |
| Wiring & Conduit Materials | equipment | $100 |
Specs (display only)
- Charging Speed: Up to 48A / 11.5 kW
- Cord Length: 24 ft
- WiFi: Yes — Tesla app
- Warranty: 4 years
- Connector: NACS + J1772
Tier add-ons
| add-on | price |
|---|---|
load_management — Smart Load ManagementShares circuit capacity with other appliances — avoids breaker trips | $250 |
outdoor_enclosure — Weatherproof Outdoor EnclosureNEMA 4 rated enclosure for outdoor installationsrecommended when charger_location ∈ { "outdoor_wall", "freestanding" } | $100 |
panel_upgrade — Panel Upgrade to 200AFuture-proof your home for EVs, solar, and more | $2,000 |
Pros (display only)
- Works with Tesla AND all other EVs
- Dual connector — future-proof
- Solar/Powerwall compatible
Cons (display only)
- Most expensive charger option
tags: tesla universal nacs j1772 solar
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
tesla_nacs | 5 | vehicle ∈ { "tesla" } |
tesla_nacs | 2 | solar ∈ { "yes", "future" } |
tesla_universal | 7 | vehicle ∈ { "tesla" } ∧second_ev ∈ { "yes" } |
tesla_universal | 6 | vehicle ∈ { "tesla" } ∧second_ev ∈ { "maybe" } |
chargepoint | 4 | vehicle ∈ { "ford", "gm", "rivian", "bmw_polestar", "other" } |
grizzle | 3 | panel_slots ∈ { "has_space" } ∧wire_distance ∈ { "under_10", "10_25" } |
grizzle | 2 | existing_outlet ∈ { "yes_1450" } |
emporia | 4 | panel_slots ∈ { "nearly_full" } |
wallbox | 4 | second_ev ∈ { "yes" } ∧vehicle ∈ { "ford", "gm", "rivian", "bmw_polestar", "other" } |
Final price formula (this vertical)
// computeTierPricing(ev-charger, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $200 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Worked example (tier: chargepoint, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
vehicle=tesla— "Tesla (any model)"charger_location=garage_wall— "Inside a garage (wall-mounted)"existing_outlet=yes_1450— "Yes — NEMA 14-50 (dryer/RV style)"(−$250 → "Existing 240V outlet (reduced install)")wire_distance=under_10— "Under 10 ft (panel is right there)"panel_slots=has_space— "Yes — there are empty slots"wire_routing=walls_attic— "Along walls, through attic, or exposed conduit"home_age=new— "Built after 2000"panel_brand=normal— "Square D, Siemens, Eaton, GE, Cutler-Hammer, or other"second_ev=yes— "Yes — plan ahead for two chargers"(+$150 → "Circuit sized for future second charger")solar=yes— "Yes — I want solar-integrated charging"(+$150 → "Solar Integration Wiring")permit_handling=electrum_handles— "Electrum handles it (recommended)"
Σ(tier.lineItems) = $949 Σ(answer priceDeltas) = +$50 permits = $200 installerCost = $1,199 platformFee (5%) = $60 customerTotal = $1,259
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- ChargePoint Home Flex — https://store.chargepoint.com/chargers
- Tesla Wall Connector — https://shop.tesla.com/product/wall-connector
- Grizzl-E Classic — https://grizzl-e.com/ca
- Emporia Smart EV Charger — https://shop.emporiaenergy.com
- Wallbox Pulsar Plus — https://wallbox.com/en_us/pulsar-plus
- EV Charger Installation Costs 2025-2026 — https://evcharging.blog/ev-charger-installation-cost-by-state/
- Section 30C Tax Credit (IRS) — https://www.irs.gov/credits-deductions/alternative-fuel-vehicle-refueling-property-credit-for-tax-exempt-entities
- Recharged — EV Charging Station Installation Cost — https://recharged.com/articles/ev-charging-station-installation-cost/
Source file: src/lib/flow-engine/verticals/ev-charger.ts · run the live flow →
🌿Lawn Care slug:lawn-care
Get a recurring lawn care estimate for your property
Flow & payment model
Direct Pay (full price collected at booking)
Tier price range (declared base)
$55 – $165 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
No permits required for lawn care services. (estimate: $0)
timeline: First visit can typically be scheduled within 1–5 business days.
installer note: Your lawn care provider will confirm services, frequency, and pricing before the first visit.
Questionnaire (4 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/lawn-care.ts.
How big is your lawn?
A rough estimate is fine.
Why we ask: Lawn area sizes the labor quantity and equipment time.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Small — up to ¼ acre |
|
medium | Medium — ¼ to ½ acre |
|
large | Large — ½ to 1 acre |
|
xl | Over 1 acre |
|
What services do you need?
Select all that apply.
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
mowing | Mowing & edging | no direct price effect |
fertilizing | Fertilizing | no direct price effect |
weed_control | Weed control | no direct price effect |
aeration | Aeration & overseeding |
|
leaf_removal | Leaf / debris removal |
|
mulching | Mulching flower beds |
|
How often do you want service?
Why we ask: Service cadence — informs whether this is a one-time job or part of a recurring service plan.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
weekly | Weekly (peak season) |
|
biweekly | Every 2 weeks |
|
monthly | Monthly |
|
one_time | One-time cleanup |
|
What's the current condition of your lawn?
Why we ask: Existing-condition signal — determines whether removal, prep, or remediation line items kick in.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
great | Great — just needs maintenance | no direct price effect |
needs_work | Needs some work — patchy or weedy |
|
neglected | Neglected — hasn't been maintained in a while |
|
Tiers (3)
Mowing & edging, reliably done
Brand: Local Pro
basePrice (declared)
$55
Σ(lineItems) (computed)
$55
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Mowing & Edging (30–45 min) | labor | $45 |
| Cleanup & Blowing (15 min) | labor | $10 |
Specs (display only)
- Services: Mow, edge, blow
- Visit Duration: 30–60 min
- Equipment: Commercial mower
- Communication: Text/call
Pros (display only)
- Lowest cost per visit
- Gets the job done consistently
- No contracts — cancel anytime
Cons (display only)
- Mowing only — no fertilizing or weed control
- Results vary by provider quality
tags: budget one_time occasional
Full lawn care, no hassle
Brand: Local Pro
basePrice (declared)
$95
Σ(lineItems) (computed)
$95
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Mowing, Edging & Cleanup (45–60 min) | labor | $55 |
| Weed Control Treatment (15 min) | labor | $25 |
| Fertilizer Application, pro-rated (15 min) | labor | $15 |
Specs (display only)
- Services: Mow, edge, blow + weed control
- Fertilizing: 4x per year
- Visit Duration: 45–90 min
- Communication: App + reports
Tier add-ons
| add-on | price |
|---|---|
aeration — Annual Aeration & OverseedingThickens lawn, reduces weeds, best done in fall | $180 |
mulch — Spring Mulching (2 cubic yards)Fresh mulch for beds and borders | $220 |
Pros (display only)
- Mowing + fertilizing + weed control in one plan
- Healthier lawn over time — less weeding for you
- Consistent crew, same day each week/biweek
- Digital service reports after each visit
Cons (display only)
- Higher monthly cost vs. mowing-only
- Annual commitment gets best pricing
tags: regular frequent balanced
Golf-course results, zero effort
Brand: TruGreen / Local Premium
basePrice (declared)
$165
Σ(lineItems) (computed)
$165
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Full-Service Lawn Care (60–75 min) | labor | $85 |
| Fertilizer & Weed Program (20 min) | labor | $40 |
| Pest & Grub Control (15 min) | labor | $25 |
| Aeration & Overseeding, pro-rated (15 min) | labor | $15 |
Specs (display only)
- Services: Full care + aeration + pest control
- Fertilizing: 6x per year (custom blend)
- Soil Testing: Annual
- Guarantee: Healthy lawn or we re-treat, free
- Communication: Dedicated care specialist
Tier add-ons
| add-on | price |
|---|---|
mosquito — Mosquito Control ProgramMonthly barrier spraying, May–Oct | $75 |
irrigation_check — Irrigation System CheckupSpring startup and adjustment | $120 |
Pros (display only)
- Everything in Standard + pest/grub control
- Custom fertilizer program based on soil test
- Annual aeration and overseeding included
- Satisfaction guarantee — free re-treatment if needed
Cons (display only)
- Highest cost per visit
- Requires annual commitment for best pricing
tags: premium frequent
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | frequency ∈ { "one_time" } |
good | 2 | services_needed ∈ { "mowing" } |
good | 1 | lawn_size ∈ { "small" } |
better | 2 | frequency ∈ { "biweekly", "weekly" } |
better | 2 | condition ∈ { "needs_work" } |
better | 1 | lawn_size ∈ { "medium" } |
best | 3 | condition ∈ { "neglected" } |
best | 2 | lawn_size ∈ { "large", "xl" } |
best | 2 | frequency ∈ { "weekly" } ∧services_needed ∈ { "fertilizing" } |
Final price formula (this vertical)
// computeTierPricing(lawn-care, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: simple/direct_pay → collect FULL customerTotal at booking.Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
lawn_size=small— "Small — up to ¼ acre"services_needed=mowing— "Mowing & edging"frequency=weekly— "Weekly (peak season)"condition=great— "Great — just needs maintenance"
Σ(tier.lineItems) = $95 Σ(answer priceDeltas) = $0 permits = $0 installerCost = $95 platformFee (5%) = $5 customerTotal = $100
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- LawnStarter Lawn Care Costs (2026) — https://www.lawnstarter.com/blog/cost/lawn-care-price/
- LawnStarter Aeration Costs — https://www.lawnstarter.com/blog/cost/lawn-aeration-price/
- LawnStarter Fertilization Costs — https://www.lawnstarter.com/blog/cost/lawn-fertilization-price/
Source file: src/lib/flow-engine/verticals/lawn-care.ts · run the live flow →
🍳Kitchen Remodel slug:kitchen-remodel
Get a transparent estimate for your kitchen renovation
Flow & payment model
Consultation Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$22,000 – $125,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Permits required for structural, electrical, and plumbing work. Contractor handles filing. (estimate: $750)
labor note: Labor includes demo, installation, finishing, and cleanup.
timeline: Typical timeline: 4–8 weeks for full remodel, 2–3 weeks for cosmetic refresh.
installer note: Your licensed general contractor will provide a detailed scope and final pricing before any work begins.
Photo prompts
- Wide-angle photo of your entire kitchen from the doorway — show the full layout including cabinets, countertops, and appliances
- Close-up of your current cabinets (show door style, hardware, and condition) and countertops (show material and any damage)
- Photo of your current appliances — include stove/range, refrigerator, and dishwasher so we can plan for sizing and connections
Questionnaire (11 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/kitchen-remodel.ts.
What's the scope of your kitchen remodel?
This is the biggest factor in your budget.
Why we ask: Scope (cosmetic refresh vs full layout change) gates every downstream question and changes the labor tier from $5k to $50k+.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
cosmetic | Cosmetic refresh — paint, hardware, fixtures |
|
partial | Partial remodel — new cabinets or counters |
|
full_layout_same | Full remodel — same layout |
|
full_layout_change | Full remodel — changing layout / moving walls |
|
How large is your kitchen?
Why we ask: Kitchen square footage and layout drive cabinet count, countertop linear feet, and total labor — the biggest cost lever.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Small — under 100 sq ft (galley or apartment) |
|
medium | Medium — 100–175 sq ft |
|
large | Large — 175–300 sq ft |
|
xl | Chef's kitchen — over 300 sq ft |
|
What kind of cabinets are you looking for?
Why we ask: Cabinet tier is the single largest cost variable in a kitchen — stock IKEA runs $5k-$15k installed, custom millwork can be $40k-$100k+. Also determines project timeline: stock ships in 2 weeks, semi-custom takes 4-6 weeks, full custom 8-12 weeks.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
stock | Stock cabinets (IKEA, Home Depot, Lowes) |
|
semi_custom | Semi-custom (KraftMaid, Merillat) |
|
custom | Full custom (local millwork or premium brands) |
|
reface | Just reface existing cabinets (new doors/fronts) |
|
What countertop material do you want?
Why we ask: Material/finish selection — primary cost driver inside the tier ladder.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
laminate | Laminate (Wilsonart, Formica) |
|
butcher_block | Butcher block / wood |
|
quartz | Quartz (Caesarstone, Silestone, MSI) |
|
granite | Granite (natural stone) |
|
marble_quartzite | Marble or quartzite (premium stone) |
|
Are you replacing appliances?
Why we ask: Appliance package adds a separate line item (from $4k to $25k+) and affects rough-in requirements — premium appliances (Wolf, Sub-Zero) need dedicated 240V circuits and specific gas connection sizing.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
none | No — keeping my current appliances | no direct price effect |
basic | Yes — standard (Samsung, LG, GE) |
|
mid | Yes — mid-range (Bosch, KitchenAid, Whirlpool) |
|
premium | Yes — premium (Wolf, Sub-Zero, Thermador) |
|
Are you replacing the kitchen floor?
Why we ask: Flooring material and area drive a separate line item; influences install order in the scope of work.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
no | No — keeping existing floor | no direct price effect |
lvp | Yes — LVP / luxury vinyl plank |
|
tile | Yes — porcelain or ceramic tile |
|
hardwood | Yes — hardwood to match rest of home |
|
Will you be moving plumbing or electrical?
branch Hidden when remodel_scope ∈ { "full_layout_change", "full_layout_same" }
Why we ask: Moving plumbing or electrical is the highest-risk scope item — it adds sub-contractor trades, requires permits, and opens walls. Only shown for full remodels where it's a realistic option.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
no_moves | No — sink and appliances stay where they are | no direct price effect |
minor_moves | Minor moves — outlet/lighting changes only |
|
major_moves | Major — moving sink, gas line, or island addition |
|
What type of backsplash do you want?
Why we ask: Backsplash material drives a significant tile labor line item and is the most visible design element behind the range. Full slab backsplash requires matching countertop material and extra fabrication.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
paint | Painted (no tile) |
|
subway_tile | Classic subway tile |
|
designer_tile | Designer tile or mosaic |
|
full_slab | Full slab — matching countertop material |
|
Do you want design assistance included?
A designer helps with material selection, layout planning, and 3D visualization.
Why we ask: Design services add a separate professional line item ($1,500-$5,000). Full design (3D renders, material selection, layout optimization) is often what separates a functional remodel from one that flows exactly the way the homeowner envisioned.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
no_design | No — I have a clear vision | no direct price effect |
light_design | Light design help — material selection guidance |
|
full_design | Full interior design service — 3D renders included |
|
When do you need this done?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
asap | As soon as possible |
|
within_month | Within a month | no direct price effect |
flexible | I'm flexible / planning ahead | no direct price effect |
What matters most to you?
Select up to 3 — this helps us tailor our recommendation.
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
budget | Stay within budget |
|
quality | Best quality materials |
|
timeline | Get it done quickly | no direct price effect |
efficiency | Energy efficiency / long-term savings |
|
aesthetics | Best looking result |
|
warranty | Longest warranty coverage |
|
Tiers (3)
Practical refresh with quality materials
Brand: IKEA SEKTION / Silestone
basePrice (declared)
$22,000
Σ(lineItems) (computed)
$22,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| IKEA SEKTION Cabinets (supply & install, ~40 hrs)source: https://www.ikea.com/us/en/cat/kitchen-cabinets-ka003/ | labor | $6,500 |
| Quartz Countertops (supply & fabricate) | equipment | $4,000 |
| Undermount Sink + Faucet (Kraus)source: https://www.kraususa.com/kitchen/kitchen-sinks/ | equipment | $750 |
| Backsplash Tile | equipment | $1,000 |
| Electrical (outlets, under-cabinet lighting, ~15 hrs) | labor | $1,800 |
| Demo & Disposal (~20 person-hrs) | labor | $1,500 |
| General Labor & Finishing (~75 hrs) | labor | $6,450 |
Specs (display only)
- Cabinets: IKEA SEKTION or stock Shaker-style
- Countertops: Silestone quartz entry-level
- Hardware: Brushed nickel pulls
- Sink: Kraus undermount stainless
- Lighting: Recessed LED + under-cabinet strip
- Warranty: 1 yr labor
Pros (display only)
- Dramatically improved look at controlled cost
- IKEA cabinets are surprisingly durable with solid boxes
- Quartz counters — durable, low-maintenance, beautiful
- Can be completed in 2–3 weeks
Cons (display only)
- Stock cabinet sizes — layout flexibility limited
- IKEA requires experienced installers for best results
- Limited customization options
tags: budget cosmetic partial
Semi-custom renovation done right
Brand: KraftMaid / Caesarstone
basePrice (declared)
$55,000
Σ(lineItems) (computed)
$55,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| KraftMaid Cabinets (supply & install, ~80 hrs)source: https://www.kraftmaid.com | labor | $18,000 |
| Caesarstone Quartz (supply & fabricate)source: https://www.caesarstoneus.com/ | equipment | $9,000 |
| Farmhouse Sink + Kohler Faucetsource: https://www.us.kohler.com/us/kitchen/sinks | equipment | $1,500 |
| Designer Backsplash (tile + install, ~20 hrs) | labor | $2,800 |
| Electrical & Lighting (~28 hrs) | labor | $3,500 |
| Plumbing (reconnect + upgrades, ~18 hrs) | labor | $2,200 |
| Demo, Flooring Prep & Finishing (~80 hrs) | labor | $8,000 |
| Project Management & Overhead | labor | $5,000 |
| Hardware, Trim & Finishing Materials | equipment | $5,000 |
Specs (display only)
- Cabinets: KraftMaid semi-custom, soft-close
- Countertops: Caesarstone quartz (full slab)
- Hardware: Emtek or Atlas Homewares
- Sink: Kohler cast iron farmhouse
- Lighting: Recessed + pendant + under-cabinet
- Warranty: 2 yr labor + limited lifetime on cabinets
Tier add-ons
| add-on | price |
|---|---|
appliance_package — Bosch 800 Series Appliance Package30" range, dishwasher, counter-depth refrigerator | $9,500 |
pot_filler — Pot Filler FaucetOver-range pot filler, brushed gold or matte black | $750 |
island_addition — Kitchen Island Build-OutCustom island with seating overhang | $6,000 |
Pros (display only)
- Semi-custom cabinets fit any layout with more finish options
- Caesarstone quartz — excellent hardness, 10-year warranty
- Soft-close doors and drawers included
- More lighting layers — pendants over island, under-cabinet
- Dedicated project manager from start to finish
Cons (display only)
- 4–6 week lead time for KraftMaid cabinets
- Significantly higher cost vs. stock tier
tags: full mid_cabinets mid_counter
Luxury custom kitchen, built to last decades
Brand: Dura Supreme / Sub-Zero / Wolf
basePrice (declared)
$125,000
Σ(lineItems) (computed)
$125,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Custom Cabinetry (full-inset, supply & install, ~200 hrs) | labor | $45,000 |
| Natural Stone Countertops | equipment | $18,000 |
| Wolf 36" Dual Fuel Range (DF36650)source: https://www.subzero-wolf.com/wolf/ranges/dual-fuel-ranges | equipment | $10,500 |
| Sub-Zero 36" Refrigerator (CL3650UFD)source: https://www.subzero-wolf.com/sub-zero/full-size-refrigeration | equipment | $10,000 |
| Dishwasher (Miele G 7000 Series)source: https://www.mieleusa.com/domestic/dishwashers-768.htm | equipment | $2,000 |
| Full Slab Backsplash (~25 hrs) | labor | $5,000 |
| Electrical, Lighting & Plumbing (~60 hrs) | labor | $7,500 |
| Demo, Structural & General Contracting (~160 hrs) | labor | $17,000 |
| Interior Design & Project Management | labor | $10,000 |
Specs (display only)
- Cabinets: Dura Supreme or local custom full-inset
- Countertops: Quartzite or Calacatta marble slab
- Hardware: Waterstone or Rocky Mountain Hardware
- Sink: Rohl or Kohler Executive Chef
- Appliances: Wolf range, Sub-Zero refrigerator
- Warranty: 3 yr labor, lifetime on cabinets
Tier add-ons
| add-on | price |
|---|---|
steam_oven — Wolf Steam Oven30" convection steam oven | $4,500 |
wine_fridge — Sub-Zero Wine Storage UnitIntegrated 46-bottle column | $6,500 |
smart_kitchen — Smart Kitchen IntegrationVoice control, smart outlets, lighting scenes | $2,500 |
Pros (display only)
- Full custom cabinets — any size, any finish, any configuration
- Natural stone countertops — each slab is unique
- Wolf and Sub-Zero — the gold standard in kitchen appliances
- Everything coordinated: design, plumbing, electrical, millwork
- Project designer included through completion
Cons (display only)
- 8–12 week lead time for custom cabinetry
- Highest investment — but adds significant resale value
- Sub-Zero requires certified installation
tags: premium full premium_cabinets premium_counter
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | remodel_scope ∈ { "cosmetic", "partial" } |
good | 2 | cabinet_preference ∈ { "stock", "reface" } |
good | 2 | kitchen_size ∈ { "small" } |
good | 2 | countertop_material ∈ { "laminate", "butcher_block" } |
good | 1 | appliances ∈ { "none" } |
good | 2 | priorities ∈ { "budget" } |
better | 3 | remodel_scope ∈ { "full_layout_same" } |
better | 2 | cabinet_preference ∈ { "semi_custom" } |
better | 2 | countertop_material ∈ { "quartz", "granite" } |
better | 1 | kitchen_size ∈ { "medium", "large" } |
better | 1 | timeline ∈ { "asap" } |
best | 4 | cabinet_preference ∈ { "custom" } |
best | 3 | appliances ∈ { "premium" } |
best | 3 | countertop_material ∈ { "marble_quartzite" } |
best | 2 | remodel_scope ∈ { "full_layout_change" } |
best | 2 | kitchen_size ∈ { "xl" } |
best | 1 | priorities ∈ { "quality" } |
best | 1 | priorities ∈ { "efficiency" } |
best | 1 | priorities ∈ { "warranty" } |
Final price formula (this vertical)
// computeTierPricing(kitchen-remodel, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $750 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: complex/consultation_fee → collect $49 at booking (refundable, credited to customerTotal).Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
remodel_scope=cosmetic— "Cosmetic refresh — paint, hardware, fixtures"kitchen_size=small— "Small — under 100 sq ft (galley or apartment)"cabinet_preference=stock— "Stock cabinets (IKEA, Home Depot, Lowes)"countertop_material=laminate— "Laminate (Wilsonart, Formica)"appliances=none— "No — keeping my current appliances"flooring=no— "No — keeping existing floor"layout_changes=no_moves— "No — sink and appliances stay where they are"backsplash=paint— "Painted (no tile)"design_help=no_design— "No — I have a clear vision"timeline=asap— "As soon as possible"priorities=budget— "Stay within budget"
Σ(tier.lineItems) = $55,000 Σ(answer priceDeltas) = $0 permits = $750 installerCost = $55,750 platformFee (5%) = $2,788 customerTotal = $58,538
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- KraftMaid Semi-Custom Cabinets — https://www.kraftmaid.com
- Caesarstone Quartz — https://www.caesarstoneus.com
- Sub-Zero/Wolf Appliances — https://www.subzero-wolf.com
- Kitchen Remodel Cost 2025 — Pro-Mapper — https://www.pro-mapper.com/kitchens/kitchen-remodel-cost/
- IKEA SEKTION Kitchen Cabinets — https://www.ikea.com/us/en/cat/kitchen-cabinets-ka003/
Source file: src/lib/flow-engine/verticals/kitchen-remodel.ts · run the live flow →
🚿Bathroom Remodel slug:bathroom-remodel
Get a transparent estimate for your bathroom renovation
Flow & payment model
Consultation Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$8,000 – $53,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Permits required for full remodels involving plumbing or electrical work. (estimate: $300)
labor note: Labor includes demo, waterproofing, tile work, plumbing, and finish work.
timeline: Typical timeline: 1–2 weeks (cosmetic), 2–3 weeks (full bath), 4–6 weeks (luxury).
installer note: Your licensed contractor will confirm scope and final pricing before work begins.
Photo prompts
- Wide-angle photo from the doorway showing the full bathroom layout — include tub/shower, toilet, and vanity in one shot if possible
- Close-up of your current fixtures and tile — show the shower/tub surround, floor tile condition, and any grout issues or water damage
- Close-up of your vanity and sink area — show the countertop, faucet, storage, and mirror so we can plan the replacement
Questionnaire (11 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/bathroom-remodel.ts.
Which bathroom are you remodeling?
Why we ask: Bathroom type (full / 3-4 / half) gates the shower/tub questions and the labor scope.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
half_bath | Half bath / powder room (toilet + sink only) |
|
full_bath | Full bath (tub/shower + toilet + sink) |
|
master_bath | Master bath (larger, possibly double vanity) |
|
en_suite | Luxury en suite (walk-in shower, soaking tub) |
|
What's the scope of the remodel?
Why we ask: Cosmetic refresh vs full gut determines whether demo, framing, and rough plumbing line items apply.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
cosmetic | Cosmetic — new fixtures, paint, accessories |
|
partial | Partial — new shower/tub surround or vanity |
|
full_same_layout | Full gut — same layout |
|
full_new_layout | Full gut — new layout (moving plumbing) |
|
What do you want for the shower/tub?
branch Hidden when bathroom_type ∈ { "half_bath" }
Why we ask: Walk-in vs tub-shower vs prefab unit drives the plumbing scope and the tile/glass line item.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
tub_surround | Tub with tile or acrylic surround |
|
walk_in_shower | Walk-in shower with tile walls |
|
both_separate | Separate walk-in shower AND soaking tub |
|
prefab_unit | Prefab shower unit (one-piece) |
|
steam_shower | Steam shower with bench |
|
What tile style are you going for?
branch Hidden when shower_preference ∈ { "prefab_unit" }
branch Hidden when bathroom_type ∈ { "half_bath" }
Why we ask: Material/finish selection — primary cost driver inside the tier ladder.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
standard | Standard 12×24 porcelain or ceramic |
|
large_format | Large format (24×48 or bigger) |
|
natural_stone | Natural stone — travertine, marble, slate |
|
designer | Designer tile — Zellige, handmade, patterned |
|
What kind of vanity do you want?
Why we ask: Vanity type drives the largest cabinet line item — stock runs $200-$800 with 1-2 week lead time, custom millwork is $3k-$12k with 6-8 week lead. Also determines countertop type and plumbing rough-in complexity (double vanity needs two drain lines).
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
stock_single | Stock single vanity (Home Depot / Kohler) |
|
stock_double | Stock double vanity (48–72") |
|
semi_custom | Semi-custom floating vanity |
|
custom_built | Fully custom vanity (millwork) |
|
Are you replacing the toilet?
Why we ask: Toilet replacement adds a plumbing line item. Smart bidet toilets (TOTO Neorest) also require a dedicated 120V electrical outlet within 6 feet — adding electrician scope if one isn't already present.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
no | No — keeping existing toilet | no direct price effect |
standard | Yes — standard comfort height (Kohler, American Standard) | no direct price effect |
smart_bidet | Yes — smart toilet / bidet combo (TOTO Washlet) |
|
What type of bathroom flooring do you want?
Why we ask: Floor material drives the tile labor line item. Heated tile (radiant electric mat) also adds electrician scope — the mat is installed under the tile before it's set, requiring a thermostat circuit and dedicated breaker.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
ceramic_tile | Ceramic tile (budget-friendly) |
|
porcelain_tile | Porcelain tile (more durable) |
|
heated_tile | Heated tile floor (electric radiant) |
|
luxury_vinyl | Luxury vinyl plank / waterproof LVP | no direct price effect |
natural_stone_floor | Natural stone floor (marble, travertine) |
|
Any extra features you want?
Why we ask: Multi-select scope additions — each selected feature adds a separate line item. Frameless glass enclosure is the highest-value add ($1,500-$3,000); shower niche requires tile-embedded rough framing before drywall closes.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
niche | Shower niche (built-in tile shelf) | no direct price effect |
glass_enclosure | Frameless glass shower enclosure | no direct price effect |
towel_warmer | Towel warmer / heated towel bar | no direct price effect |
exhaust_upgrade | Whisper-quiet exhaust fan with humidity sensor | no direct price effect |
medicine_cabinet | Recessed medicine cabinet with LED mirror | no direct price effect |
Do you have any accessibility or aging-in-place needs?
We can factor in ADA-compliant or universal-design features.
Why we ask: Access difficulty — drives labor hours and potentially special equipment.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
none | No special accessibility needs | no direct price effect |
grab_bars | Grab bars and non-slip surfaces |
|
curbless_shower | Curbless (zero-threshold) shower entry |
|
full_ada | Full ADA-compliant layout (wider door, roll-in shower, comfort height) |
|
When do you need this done?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
asap | As soon as possible |
|
within_month | Within a month | no direct price effect |
flexible | I'm flexible / planning ahead | no direct price effect |
What matters most to you?
Select up to 3 — this helps us tailor our recommendation.
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
budget | Stay within budget |
|
quality | Best quality materials |
|
timeline | Get it done quickly | no direct price effect |
efficiency | Energy efficiency / long-term savings |
|
aesthetics | Best looking result |
|
warranty | Longest warranty coverage |
|
Tiers (3)
Clean, fresh, fully functional
Brand: Kohler / American Standard
basePrice (declared)
$8,000
Σ(lineItems) (computed)
$8,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Vanity, Sink & Faucet (Kohler)source: https://www.us.kohler.com/us/bathroom/vanities | equipment | $1,200 |
| Toilet (Kohler Cimarron)source: https://www.us.kohler.com/us/bathroom/toilets/cimarron | equipment | $450 |
| Tub/Shower Surround (acrylic kit)source: https://www.americanstandard-us.com/bath/tubs | equipment | $850 |
| Floor Tile (supply & install, ~8 hrs) | equipment | $1,200 |
| Drywall, Backer Board & Waterproofing (~12 hrs) | labor | $1,000 |
| Plumbing Labor (~14 hrs) | labor | $1,800 |
| General Labor, Demo & Finishing (~14 hrs) | labor | $1,500 |
Specs (display only)
- Vanity: Stock 36" Kohler or Home Depot brand
- Shower/Tub: Acrylic tub with surround
- Tile: 12×24 porcelain (floor + walls)
- Toilet: Kohler Cimarron comfort height
- Faucets: Moen Adler or Kohler Elmbrook
- Warranty: 1 yr labor
Pros (display only)
- Completely transformed look at controlled cost
- Kohler and Moen — trusted brands with solid warranties
- Completed in 1–2 weeks for a standard full bath
- Good resale value improvement
Cons (display only)
- Stock vanity limits size/finish options
- Acrylic tub surround vs. full tile
- No premium extras like heated floors or frameless glass
tags: budget cosmetic partial half_bath full_bath
Spa-quality finish, built to last
Brand: Delta Trinsic / Jeffrey Court Tile
basePrice (declared)
$18,000
Σ(lineItems) (computed)
$18,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Semi-Custom Vanity with Quartz Top | equipment | $3,500 |
| TOTO Drake II Toiletsource: https://www.totousa.com/drake-ii-two-piece-toilet-10-gpf-08-gpf-new | equipment | $750 |
| Walk-In Shower Tile (supply & install, ~30 hrs) | equipment | $4,000 |
| Frameless Glass Shower Enclosuresource: https://www.fluidglass.com/frameless-shower-doors | equipment | $2,000 |
| Floor Tile (large format, supply & install, ~12 hrs) | equipment | $1,800 |
| LED Mirror + Exhaust Fansource: https://www.homedepot.com/b/Bath-Bathroom-Mirrors-Lighted-LED-Mirrors/N-5yc1vZc2gq | equipment | $1,200 |
| Plumbing Labor & Rough-In (~20 hrs) | labor | $2,500 |
| Demo, Waterproofing & General Contracting (~20 hrs) | labor | $2,250 |
Specs (display only)
- Vanity: Floating 48" semi-custom with quartz top
- Shower/Tub: Walk-in tile shower with frameless glass
- Tile: Large format 24×48 porcelain
- Toilet: TOTO Drake II comfort height
- Faucets: Delta Trinsic or Moen Gibson
- Warranty: 2 yr labor
Tier add-ons
| add-on | price |
|---|---|
heated_floor — Electric Radiant Floor HeatingNuheat or SunTouch — warm tiles every morning | $1,800 |
shower_niche — Built-In Shower Niche (double)Two recessed tile niches in the shower | $350 |
body_sprays — Shower Body Spray SystemDelta or Moen multi-function shower system | $1,200 |
Pros (display only)
- Walk-in tile shower with frameless glass — clean, modern look
- Large format tile — fewer grout lines, easier to clean
- Floating vanity creates visual space, quartz top included
- TOTO Drake II — best-in-class flushing performance
- LED mirror included
Cons (display only)
- 2–3 week project timeline (tile work takes time)
- Higher cost vs. Good tier
tags: full walk_in mid_floor master_bath
Luxury spa bathroom, magazine-worthy
Brand: TOTO / Kohler Luxury / Ann Sacks Tile
basePrice (declared)
$53,000
Σ(lineItems) (computed)
$53,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Custom Vanity (millwork, double) | equipment | $12,000 |
| TOTO Neorest NX2 Toiletsource: https://www.totousa.com/neorest | equipment | $5,500 |
| Freestanding Soaking Tub (Victoria + Albert or BainUltra)source: https://www.victoriaalbert.com/usa/ | equipment | $5,000 |
| Curbless Steam Shower Build-Out (~60 hrs) | labor | $8,000 |
| Designer Tile — Walls & Floor | equipment | $7,000 |
| Hansgrohe or Kohler Fixtures Packagesource: https://www.hansgrohe-usa.com/bathroom | equipment | $3,500 |
| Heated Tile Floor (WarmlyYours)source: https://www.warmlyyours.com/en-US/categories/electric-floor-heating | equipment | $2,000 |
| Plumbing & Electrical (~32 hrs) | labor | $4,000 |
| Demo, Waterproofing, General Contracting (~55 hrs) | labor | $6,000 |
Specs (display only)
- Vanity: Custom millwork double vanity, quartz or marble
- Shower/Tub: Curbless steam shower + freestanding soaking tub
- Tile: Designer tile — Zellige, handmade, or large-slab marble
- Toilet: TOTO Neorest (integrated bidet, auto-open lid)
- Faucets: Kohler Purist or Hansgrohe Axor
- Warranty: 3 yr labor
Tier add-ons
| add-on | price |
|---|---|
smart_mirror — Smart LED Mirror (Kohler Verdera)Bluetooth, defogging, integrated lighting | $2,000 |
smart_shower — Digital Shower Control (Kohler DTV+)Preset temps and spray patterns from your phone | $3,500 |
sauna — Infrared Sauna Panel Add-OnFar-infrared sauna bench built into shower nook | $8,000 |
Pros (display only)
- Freestanding soaking tub — focal point of any master bath
- Steam shower with bench — full spa experience
- TOTO Neorest — heated seat, auto-flush, bidet, night light
- Custom vanity — any size, any wood species, any finish
- Natural stone tile — each bathroom is one-of-a-kind
Cons (display only)
- 3–5 week timeline for full luxury build-out
- Highest investment — appropriate for master baths only
- Steam system requires proper waterproofing and venting
tags: premium en_suite full master_bath
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | remodel_scope ∈ { "cosmetic", "partial" } |
good | 2 | bathroom_type ∈ { "half_bath", "full_bath" } |
good | 2 | vanity_type ∈ { "stock_single" } |
good | 2 | priorities ∈ { "budget" } |
better | 3 | shower_preference ∈ { "walk_in_shower" } |
better | 2 | remodel_scope ∈ { "full_same_layout" } |
better | 2 | bathroom_type ∈ { "master_bath" } |
better | 1 | vanity_type ∈ { "semi_custom" } |
better | 1 | timeline ∈ { "asap" } |
best | 4 | bathroom_type ∈ { "en_suite" } |
best | 3 | shower_preference ∈ { "both_separate", "steam_shower" } |
best | 3 | vanity_type ∈ { "custom_built" } |
best | 2 | tile_style ∈ { "natural_stone", "designer" } |
best | 1 | toilet ∈ { "smart_bidet" } |
best | 1 | priorities ∈ { "quality" } |
best | 1 | priorities ∈ { "efficiency" } |
best | 1 | priorities ∈ { "warranty" } |
Final price formula (this vertical)
// computeTierPricing(bathroom-remodel, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $300 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: complex/consultation_fee → collect $49 at booking (refundable, credited to customerTotal).Pricing sources cited in code
- TOTO USA Products — https://www.totousa.com
- TOTO Neorest NX2 Toilet — https://www.totousa.com/neorest-nx2-dual-flush-toilet-10-gpf-08-gpf-new
- Kohler Bathroom — https://www.us.kohler.com/us/bathroom
- Pro-Mapper — Bathroom Remodel Cost 2025 — https://www.pro-mapper.com/bathrooms/bathroom-remodel-cost/
- Archie Remodels — Full Bathroom Remodel Cost — https://archieremodels.com/full-bathroom-remodel-cost-complete-budget-price/
Source file: src/lib/flow-engine/verticals/bathroom-remodel.ts · run the live flow →
🏠Roof Replacement slug:roof-replacement
Get a transparent estimate for your new roof
Flow & payment model
Consultation Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$11,000 – $28,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Roofing permits required in most jurisdictions. Contractor handles filing. (estimate: $350)
labor note: Labor includes full tear-off, deck inspection, and complete reinstallation.
timeline: Most roofs replaced in 1–3 days. Large or complex roofs may take 3–5 days.
installer note: Your licensed roofing contractor will inspect the decking after tear-off and confirm final scope before completing the job.
Photo prompts
- Photo of your roof from each side of the house (try to get 2-4 angles from ground level showing the full roof line)
- Close-up photos of any damage — missing shingles, curling edges, dark spots, or problem areas you've noticed
- Photo of your attic from inside (if safely accessible) — show the underside of the roof decking, looking for daylight, stains, or sagging
Questionnaire (11 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/roof-replacement.ts.
How large is your home's footprint?
Roof size is measured in 'squares' (100 sq ft each). This helps estimate material cost.
Why we ask: Roof square footage (squares = 100 sqft) is the single largest cost lever — drives materials and tear-off labor.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Small — under 1,500 sq ft home |
|
medium | Medium — 1,500–2,500 sq ft home |
|
large | Large — 2,500–3,500 sq ft home |
|
xl | Very large — over 3,500 sq ft |
|
How steep is your roof?
Steeper roofs require more safety equipment and take longer to install.
Why we ask: Pitch multiplies labor time and safety requirements. Steep roofs (7/12+) require harness systems, toe boards, and slower placement — adds a steep-pitch labor surcharge to the scope.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
low | Low pitch — almost flat (2/12–4/12) |
|
moderate | Moderate pitch — typical ranch or colonial (4/12–7/12) | no direct price effect |
steep | Steep pitch — lots of height, visible from the street (7/12+) |
|
very_steep | Very steep / complex (mansard, gambrel, multiple valleys) |
|
What roofing material are you considering?
Why we ask: Material/finish selection — primary cost driver inside the tier ladder.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
asphalt_3tab | 3-tab asphalt shingles (most affordable) |
|
asphalt_architectural | Architectural / dimensional shingles (most popular) |
|
impact_resistant | Impact-resistant shingles (Class 4 — hail protection) |
|
metal_steel | Steel metal roofing (standing seam or panels) |
|
metal_aluminum | Aluminum or copper metal roof |
|
cedar_shake | Cedar shake or composite shake |
|
tile | Clay or concrete tile |
|
How many shingle layers are currently on the roof?
Most codes allow up to 2 layers. More than 1 may require full tear-off.
Why we ask: Layer count determines whether a tear-off is required. Most codes prohibit 3+ layers — a second layer already on the roof means full tear-off is mandatory, adding $1,500-$3,000 in disposal and labor cost.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
one | 1 layer — standard tearoff |
|
two | 2 layers — full tearoff required |
|
unknown | I'm not sure | no direct price effect |
Do you know the condition of your roof decking?
Rotted or damaged decking boards must be replaced before new shingles.
Why we ask: Existing-condition signal — determines whether removal, prep, or remediation line items kick in.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
good | Good — solid, no known issues | no direct price effect |
some_rot | Some soft spots or minor rot | no direct price effect |
significant_damage | Significant damage — large areas need replacement | no direct price effect |
unknown | Unknown — not sure | no direct price effect |
Are you interested in any of these upgrades?
Why we ask: Multi-select upgrades — each selected feature (ridge vent, ice shield, gutters, skylights) adds a separate line item. Customers often bundle these with a roof replacement since the crew is already there and mobilization cost is shared.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
ridge_vent | Ridge vent (improves attic ventilation) | no direct price effect |
ice_water_shield | Ice & water shield (full coverage, cold climate) | no direct price effect |
gutters | Replace gutters & downspouts at same time | no direct price effect |
skylights | Replace or add skylights | no direct price effect |
solar_vents | Solar-powered attic vents | no direct price effect |
What's driving this project?
Why we ask: Driving reason signals urgency (leak/storm = emergency routing), insurance eligibility (insurance claim triggers adjuster documentation), and installer certification priority (storm claims need GAF-certified or OC-preferred installers).
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
age | Age — roof is near end of life (15–20+ years) |
|
leak | Active leak or storm damage |
|
insurance | Insurance claim / storm damage |
|
selling | Getting ready to sell the home |
|
upgrade | Proactive upgrade / improving look |
|
What condition are your gutters in?
Replacing gutters alongside the roof is often more cost-effective than doing it separately.
Why we ask: Existing-condition signal — determines whether removal, prep, or remediation line items kick in.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
good | Good — recently replaced or maintained | no direct price effect |
needs_repair | Need some repair or sections replaced | no direct price effect |
replace | Need full replacement | no direct price effect |
unsure | Not sure | no direct price effect |
Does your attic have proper ventilation?
Ridge vents, soffit vents, or powered vents prevent moisture buildup and extend roof life.
Why we ask: Ridge / soffit ventilation determines whether new vents need to be cut in or existing vents replaced.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
yes | Yes — has ridge vents or powered vents | no direct price effect |
no | No / not sure | no direct price effect |
upgrade | Want to upgrade ventilation with new roof |
|
When do you need this done?
Why we ask: Urgency signal — leaking roofs are emergency-routed; non-urgent jobs queued for best installer match.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
asap | As soon as possible |
|
within_month | Within a month | no direct price effect |
flexible | I'm flexible / planning ahead | no direct price effect |
What matters most to you?
Select up to 3 — this helps us tailor our recommendation.
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
budget | Stay within budget |
|
quality | Best quality materials |
|
timeline | Get it done quickly | no direct price effect |
efficiency | Energy efficiency / long-term savings |
|
aesthetics | Best looking result |
|
warranty | Longest warranty coverage |
|
Tiers (3)
Dependable protection at the right price
Brand: GAF Timberline HDZ
basePrice (declared)
$11,000
Σ(lineItems) (computed)
$11,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| GAF Timberline HDZ Shingles (material)source: https://www.gaf.com/en-us/roofing-products/residential-roofing/shingles/timberline-hdz | equipment | $3,500 |
| Synthetic Underlayment | equipment | $800 |
| Ice & Water Shield (eaves + valleys) | equipment | $700 |
| Ridge Cap Shingles | equipment | $450 |
| Tear-Off & Disposal (4–6 hrs) | labor | $2,200 |
| Installation Labor (6–8 hrs) | labor | $2,800 |
| Flashing, Pipe Boots & Accessories | equipment | $550 |
Specs (display only)
- Material: GAF Timberline HDZ architectural shingles
- Wind: 130 mph wind rating
- Warranty: Limited Lifetime (shingles), 10-yr workmanship
- Impact Rating: Class 3
- Underlayment: GAF FeltBuster synthetic
Pros (display only)
- GAF Timberline HDZ — America's #1 selling shingle
- Great dimensional appearance vs. 3-tab
- 130 mph wind resistance — handles most storms
- Limited lifetime shingle warranty
- Widely available and serviced nationwide
Cons (display only)
- Not Class 4 impact-resistant — potential insurance surcharge
- Shorter workmanship warranty than premium tiers
tags: budget arch_shingles budget_roof
Class 4 impact-resistant — built to last
Brand: Owens Corning Duration STORM
basePrice (declared)
$16,000
Σ(lineItems) (computed)
$16,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| OC Duration STORM Shingles (Class 4)source: https://www.owenscorning.com/en-us/roofing/shingles | equipment | $6,000 |
| WeatherLock Self-Sealing Underlayment | equipment | $1,100 |
| Ice & Water Shield (full coverage) | equipment | $1,200 |
| Ridge Cap + Starter Strip | equipment | $650 |
| Tear-Off & Disposal (4–6 hrs) | labor | $2,400 |
| Premium Labor — certified installer (6–8 hrs) | labor | $3,800 |
| Flashing, Vents & Accessories | equipment | $850 |
Specs (display only)
- Material: Owens Corning Duration STORM shingles
- Wind: 130 mph (up to 250 mph with Sure Nail)
- Warranty: Limited Lifetime + 10-yr SureStart workmanship
- Impact Rating: Class 4 (UL 2218)
- Underlayment: WeatherLock self-sealing
Tier add-ons
| add-on | price |
|---|---|
ridge_vent — Full-Length Ridge VentImproved attic ventilation, reduces heat buildup | $550 |
gutter_guards — LeafGuard or K-Guard Gutter SystemReplace gutters + lifetime clog-free guarantee | $3,000 |
Pros (display only)
- Class 4 impact-resistant — often qualifies for insurance discount (5–20%)
- Owens Corning's best-selling premium shingle
- SureNail technology — nailing strip visible, stronger hold
- 10-year workmanship warranty with certified installer
- Wider color selection than Good tier
Cons (display only)
- Higher upfront cost vs. standard architectural shingles
- Slightly heavier — minimal impact on typical structures
tags: impact_resist arch_shingles
Premium protection — 50+ year system
Brand: CertainTeed Landmark Premium / Metal Roofing
basePrice (declared)
$28,000
Σ(lineItems) (computed)
$28,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Standing Seam Metal Panels (steel/aluminum)source: https://www.metalroofing.com/metal-roofing-prices | equipment | $11,000 |
| Grace Ice & Water Shield (full coverage) | equipment | $1,800 |
| Tear-Off, Deck Inspection & Repairs (1–2 days) | labor | $2,800 |
| Specialty Labor — metal certified crew (2–3 days) | labor | $8,500 |
| Trim, Flashing & Closure Details | equipment | $2,000 |
| Ridge Cap & Fasteners | equipment | $900 |
| Permits & Engineering (if required) | permits | $1,000 |
Specs (display only)
- Material: Standing seam metal or CertainTeed Landmark Premium
- Wind: 160 mph (metal) / 130 mph (premium shingle)
- Warranty: 50-year (metal) / Limited Lifetime SureStart (shingle)
- Impact Rating: Class 4
- Underlayment: Grace Ice & Water Shield (full coverage)
- Finish: PVDF fluoropolymer coating (metal) — won't fade
Tier add-ons
| add-on | price |
|---|---|
solar_ready — Solar-Ready Conduit PrepRoute conduit for future solar panel installation | $1,500 |
skylight_replacement — Velux Skylight Replacement (per unit)Replace old skylights with new Velux flashed units | $2,000 |
full_gutters — Seamless Aluminum Gutters (full home)Custom-fabricated seamless gutters with downspouts | $2,500 |
Pros (display only)
- Standing seam metal — virtually maintenance-free for 50+ years
- Best energy efficiency (reflects solar heat)
- Significant home value increase vs. standard shingles
- Recyclable at end of life — environmentally responsible
- Exceptional warranty — transferable to new owners
Cons (display only)
- Highest upfront cost (2–3× asphalt)
- Metal can be noisy in heavy rain without proper underlayment
- Requires specialized installation crew
tags: premium metal tile_roof
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | reason ∈ { "selling" } |
good | 2 | material_preference ∈ { "asphalt_3tab", "asphalt_architectural" } |
good | 1 | roof_size ∈ { "small" } |
good | 2 | priorities ∈ { "budget" } |
better | 3 | material_preference ∈ { "impact_resistant" } |
better | 2 | reason ∈ { "insurance", "age" } |
better | 2 | roof_size ∈ { "medium", "large" } |
better | 2 | reason ∈ { "leak" } |
better | 1 | timeline ∈ { "asap" } |
best | 4 | material_preference ∈ { "metal_steel", "metal_aluminum" } |
best | 3 | material_preference ∈ { "tile", "cedar_shake" } |
best | 2 | roof_size ∈ { "xl" } |
best | 1 | roof_pitch ∈ { "very_steep" } |
best | 1 | ventilation ∈ { "upgrade" } |
best | 1 | priorities ∈ { "quality" } |
best | 1 | priorities ∈ { "efficiency" } |
best | 1 | priorities ∈ { "warranty" } |
Final price formula (this vertical)
// computeTierPricing(roof-replacement, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $350 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: complex/consultation_fee → collect $49 at booking (refundable, credited to customerTotal).Pricing sources cited in code
- GAF Timberline HDZ Shingles — https://www.gaf.com/en-us/roofing-products/residential-roofing/shingles/timberline-hdz
- Owens Corning Duration STORM — https://www.owenscorning.com/en-us/roofing/shingles
- GAF Shingles Cost Guide 2025 (Pro-Mapper) — https://www.pro-mapper.com/roofing/roof-types/asphalt-shingles/gaf-shingles/
- RoofingCalc GAF Install Costs — https://www.roofingcalc.com/how-much-does-it-cost-to-install-gaf-shingles/
- RoofCalc Shingle Prices 2025 — https://www.roofcalc.org/roofing-shingles-prices/
Source file: src/lib/flow-engine/verticals/roof-replacement.ts · run the live flow →
☀️Solar Panel Installation slug:solar-installation
Get a transparent estimate for home solar — before talking to any salesperson
Flow & payment model
Consultation Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$21,000 – $55,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Solar permits required in all jurisdictions. Your installer handles utility interconnection paperwork. (estimate: $500)
labor note: Leases and PPAs may benefit from commercial credits (Section 48E) through the installer — ask about this option. No federal homeowner tax credit is available for purchased systems.
timeline: Installation typically 1–3 days. Utility interconnection approval takes 4–8 weeks.
installer note: Final system design and pricing requires a site assessment including shading analysis and electrical review.
Photo prompts
- Photo of your roof showing the south-facing side — a satellite/Google Maps screenshot works great, or a ground-level photo showing roof slope and any obstructions (vents, skylights, trees)
- Photo of your electrical panel with the door open — show the breaker labels and main breaker amp rating so we can assess interconnection
- Photo of your most recent electric bill — show the monthly kWh usage and rate so we can properly size your system
Questionnaire (10 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/solar-installation.ts.
What's your average monthly electric bill?
This is the most important factor for sizing your solar system correctly.
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
under_100 | Under $100/month (~4 kW system) |
|
100_200 | $100–$200/month (~6–7 kW system) |
|
200_300 | $200–$300/month (~8–10 kW system) |
|
300_500 | $300–$500/month (~12–14 kW system) |
|
over_500 | Over $500/month (large home / pool / EV) |
|
What type of roof do you have?
Roof type affects mounting hardware and installation complexity.
Why we ask: Roof material determines mounting hardware and labor (composite shingle vs tile vs metal vs flat).
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
comp_shingle | Asphalt / composition shingles |
|
metal | Standing seam metal |
|
tile | Clay or concrete tile |
|
flat | Flat / low-slope (needs tilt mounts) |
|
composite_shingle | Composite / synthetic shake |
|
How old is your roof?
Solar panels last 25–30 years. If your roof needs replacing soon, do it before solar.
Why we ask: Roof age flags whether re-roof should happen first; old roofs add a 'roof reinforcement' or replacement upsell.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
new | Under 5 years old |
|
mid | 5–15 years old | no direct price effect |
aging | 15–20 years old |
|
old | 20+ years (consider re-roofing first) |
|
How much shade does your roof get?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
full_sun | Full sun — no significant shading |
|
partial | Some shade from trees or neighbors (a few hours/day) |
|
heavy_shade | Heavy shade most of the day |
|
Do you want battery backup storage?
Batteries let you use solar power at night and keep lights on during outages.
Why we ask: Age of the structure flags conditions that change scope (older wiring, lead, asbestos era, code upgrades).
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
no_battery | No — grid-tied only (most affordable) |
|
partial_battery | Yes — partial backup (lights, fridge, outlets) |
|
whole_home | Yes — whole-home backup (Tesla Powerwall / Enphase IQ) |
|
Do you have a panel brand preference?
All panels are warrantied for 25 years — the main difference is efficiency and aesthetics.
Why we ask: Utility infrastructure check — flags whether upgrades or service runs are part of scope.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
standard | Standard efficiency (good value) — Q CELLS, Canadian Solar |
|
premium | High efficiency (fewer panels needed) — REC, Panasonic EverVolt |
|
black | All-black aesthetic — SunPower Maxeon, REC Alpha Black |
|
Do you have (or plan to get) an EV?
If so, we'll size the system to cover your driving too. If your electric bill already reflects EV charging, the bill-based sizing covers it.
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
yes_have | Yes — I have an EV now |
|
yes_soon | Planning to get one within 2 years |
|
no | No EV | no direct price effect |
How are you planning to pay for this?
Your payment method can affect your overall savings and which options are available.
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
cash | Cash / home equity |
|
solar_loan | Solar loan (own the system, finance payments) |
|
lease | Lease / PPA (no upfront cost, monthly payment) |
|
unsure | Not sure yet — show me options | no direct price effect |
When do you need this done?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
asap | As soon as possible |
|
within_month | Within a month | no direct price effect |
flexible | I'm flexible / planning ahead | no direct price effect |
What matters most to you?
Select up to 3 — this helps us tailor our recommendation.
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
budget | Stay within budget |
|
quality | Best quality materials |
|
timeline | Get it done quickly | no direct price effect |
efficiency | Energy efficiency / long-term savings |
|
aesthetics | Best looking result |
|
warranty | Longest warranty coverage |
|
Tiers (3)
Grid-tied solar — reduce your bill by 60–80%
Brand: Q CELLS Q.PEAK DUO / Enphase IQ8
basePrice (declared)
$21,000
Σ(lineItems) (computed)
$21,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Q CELLS Q.PEAK DUO Panels (18 panels × 400W = 7.2 kW)source: https://us.q-cells.com | equipment | $7,200 |
| Enphase IQ8 Microinverters (18 units)source: https://enphase.com/store/microinverters/iq8-series-microinverter | equipment | $4,000 |
| Racking & Mounting Hardware (IronRidge XR Series)source: https://www.ironridge.com/products/xr-series-racking/ | equipment | $1,800 |
| Electrical Work — meter, main panel, AC disconnect (~8 hrs electrician) | labor | $2,800 |
| Installation Labor — 2-day crew (~14 labor-hours) | labor | $3,500 |
| Permit & Utility Interconnection (~4 hrs admin/expediting) | labor | $1,700 |
Specs (display only)
- Panels: Q CELLS Q.PEAK DUO BLK-G10+ (400W)
- Inverter: Enphase IQ8 microinverters
- System Size: 7 kW (typical for $150–200/mo bill)
- Panel Efficiency: 20.6%
- Warranty: 25-yr product, 25-yr performance, 10-yr labor
Tier add-ons
| add-on | price |
|---|---|
monitoring_upgrade — Sense Energy MonitorReal-time whole-home energy monitoring | $300 |
ev_charger_bundle — Level 2 EV Charger BundleChargePoint Home Flex + installation | $1,200 |
Pros (display only)
- Q CELLS — trusted German-engineered panels, manufactured in Georgia
- Reduces monthly electric bill by 60–80%
- Enphase microinverters — panel-level monitoring and optimization
- 25-year warranty on panels and performance
- Typical ROI of 8–12 years at current utility rates
Cons (display only)
- No battery — power goes out when grid goes out
- No federal homeowner tax credit available — check for local utility rebates
tags: no_battery standard_panels small_system medium_system
Solar + partial battery backup
Brand: REC Alpha / Enphase IQ Battery 5P
basePrice (declared)
$35,000
Σ(lineItems) (computed)
$35,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| REC Alpha Pure-RX Panels (24 × 430W = 10.3 kW)source: https://www.recgroup.com/en/alpha-pure-rx | equipment | $12,000 |
| Enphase IQ8+ Microinverters (24 units)source: https://enphase.com/store/microinverters/iq8-series-microinverter | equipment | $5,500 |
| Enphase IQ Battery 5P (1 unit, 5 kWh)source: https://enphase.com/store/batteries/iq-battery-5p | equipment | $5,500 |
| Racking & Mounting Hardware (IronRidge XR Series)source: https://www.ironridge.com/products/xr-series-racking/ | equipment | $2,200 |
| Electrical — panel upgrade if needed, wiring (~10 hrs electrician) | labor | $3,500 |
| Installation Labor — 3-day crew (~20 labor-hours) | labor | $4,000 |
| Permit & Utility Interconnection (~4 hrs admin/expediting) | labor | $1,800 |
| App Setup & Commissioning (~2 hrs technician) | labor | $500 |
Specs (display only)
- Panels: REC Alpha Pure-RX (430W) all-black
- Inverter: Enphase IQ8+ microinverters
- Battery: Enphase IQ Battery 5P (5 kWh — lights, fridge, essential circuits)
- System Size: 10 kW
- Panel Efficiency: 22.3%
- Warranty: 25-yr product, 25-yr performance, 15-yr labor
Tier add-ons
| add-on | price |
|---|---|
second_battery — Add Second Enphase IQ Battery 5P10 kWh total — extends backup time significantly | $6,000 |
ev_solar_bundle — Solar-Optimized EV ChargingEmporia Vue with solar-direct charging capability | $1,500 |
Pros (display only)
- Partial battery backup keeps lights and essentials on during outages
- REC Alpha — among the highest efficiency residential panels available
- All-black sleek design — looks premium on any roof
- Enphase app — monitor every panel, every minute
- Lease/PPA options may still benefit from commercial-side credits
Cons (display only)
- Battery covers essential circuits only — not whole home
- Higher upfront cost than grid-tied only
- No federal homeowner tax credit available — ask about lease/PPA options
tags: partial_battery premium_panels medium_system large_system
Solar + whole-home battery backup
Brand: SunPower Maxeon / Tesla Powerwall 3
basePrice (declared)
$55,000
Σ(lineItems) (computed)
$55,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| SunPower Maxeon 7 Panels (32 × 440W = 14 kW)source: https://sunpower.com/us/find-a-dealer/residential-solar-panels/ | equipment | $20,000 |
| Tesla Powerwall 3 (13.5 kWh)source: https://www.tesla.com/powerwall | equipment | $12,000 |
| Hybrid Inverter System (Enphase IQ8H or Tesla gateway)source: https://enphase.com/store/microinverters/iq8-series-microinverter | equipment | $4,500 |
| Racking & Premium Hardware (IronRidge XR Series)source: https://www.ironridge.com/products/xr-series-racking/ | equipment | $2,800 |
| Full Electrical Work — 200A panel upgrade (~12 hrs electrician) | labor | $4,500 |
| Premium Installation Labor — 3-day crew (~22 labor-hours) | labor | $5,000 |
| Permit, Utility Interconnection & Commissioning (~6 hrs admin/expediting) | labor | $2,500 |
| System Monitoring & 1-yr Service Plan (included first year) | labor | $3,700 |
Specs (display only)
- Panels: SunPower Maxeon 7 (440W) — highest efficiency available
- Inverter: Tesla hybrid inverter or Enphase IQ8H
- Battery: Tesla Powerwall 3 (13.5 kWh — whole-home backup)
- System Size: 14 kW
- Panel Efficiency: 22.8% (best in class)
- Warranty: 40-yr SunPower panel warranty, 10-yr Powerwall warranty
Tier add-ons
| add-on | price |
|---|---|
second_powerwall — Second Tesla Powerwall 327 kWh total — truly off-grid capable for days | $13,000 |
solar_roof_upgrade — Tesla Solar Roof Tiles (partial replacement)Replace aging roof sections with Tesla Solar Roof | $30,000 |
Pros (display only)
- SunPower Maxeon — backed by the only 40-year panel warranty in the industry
- Tesla Powerwall 3 — whole-home backup, Storm Watch mode, EV charging integration
- Energy independence — run your whole home from solar + battery for days
- Best long-term ROI — minimal degradation over 25+ years
- Lease/PPA financing may offset cost through commercial credits (48E)
Cons (display only)
- Highest upfront cost (~$55,000) — ask about lease/PPA financing
- Powerwall 3 requires Tesla-certified installer
- SunPower panels — limited installer network
tags: full_battery premium_panels xl_system large_system
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | battery_storage ∈ { "no_battery" } |
good | 2 | avg_monthly_bill ∈ { "under_100", "100_200" } |
good | 1 | panel_preference ∈ { "standard" } |
good | 2 | financing ∈ { "lease" } |
good | 2 | priorities ∈ { "budget" } |
better | 3 | battery_storage ∈ { "partial_battery" } |
better | 2 | avg_monthly_bill ∈ { "200_300", "300_500" } |
better | 2 | ev_charging ∈ { "yes_have", "yes_soon" } |
better | 1 | panel_preference ∈ { "black" } |
better | 1 | timeline ∈ { "asap" } |
best | 4 | battery_storage ∈ { "whole_home" } |
best | 2 | avg_monthly_bill ∈ { "over_500" } |
best | 2 | panel_preference ∈ { "black" } ∧battery_storage ∈ { "whole_home", "partial_battery" } |
best | 1 | ev_charging ∈ { "yes_have" } |
best | 1 | financing ∈ { "cash" } |
best | 1 | priorities ∈ { "quality" } |
best | 1 | priorities ∈ { "efficiency" } |
best | 1 | priorities ∈ { "warranty" } |
Final price formula (this vertical)
// computeTierPricing(solar-installation, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $500 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: complex/consultation_fee → collect $49 at booking (refundable, credited to customerTotal).Pricing sources cited in code
- SunPower Maxeon Panels — https://sunpower.com/us/find-a-dealer/residential-solar-panels/
- Tesla Powerwall 3 — https://www.tesla.com/powerwall
- REC Alpha Pure-RX — https://www.recgroup.com/en/alpha-pure-rx
- SEIA Solar Market Insight — https://www.seia.org/solar-industry-research-data
- Solar.com — 2026 Solar Panel Costs Guide — https://www.solar.com/learn/solar-panel-cost/
- This Old House — Tesla Powerwall Cost — https://www.thisoldhouse.com/solar-alternative-energy/tesla-powerwall-cost
Source file: src/lib/flow-engine/verticals/solar-installation.ts · run the live flow →
🏊Pool Installation slug:pool-installation
Get a transparent estimate for your backyard pool project
Flow & payment model
Consultation Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$42,000 – $130,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Pool permits required in all jurisdictions. Fencing / safety cover may be legally required. (estimate: $1,500)
labor note: Labor includes excavation, plumbing, electrical, and all finishing work.
timeline: Vinyl/fiberglass: 4–8 weeks. Gunite/concrete: 3–6 months.
installer note: Your pool contractor will perform a site assessment and provide a final design and contract before breaking ground.
Photo prompts
- Photos of your backyard from multiple angles — show the full yard, fencing, slope/grading, and distance from the house
- Photo showing the planned pool area — mark it roughly if you can, and show any trees, underground utilities, or structures that might need to move
- Photo of any survey, plat map, or property line markers — this helps us confirm setback requirements (a screenshot from your county GIS works too)
Questionnaire (8 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/pool-installation.ts.
What type of pool are you interested in?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
inground_vinyl | In-ground vinyl liner |
|
inground_fiberglass | In-ground fiberglass (pre-formed) |
|
inground_gunite | In-ground gunite / concrete (custom shape) |
|
What size pool are you thinking?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Small — up to 12×24 ft (plunge/lap-ish) |
|
medium | Medium — 14×28 to 16×32 ft |
|
large | Large — 16×36 to 20×40 ft |
|
xl | Extra large — over 20×40 ft or custom shape |
|
How accessible is your backyard?
Equipment access affects excavation cost significantly.
Why we ask: Access difficulty — drives labor hours and potentially special equipment.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
easy | Easy access — large gate or open yard | no direct price effect |
moderate | Moderate — standard side gate (3–4 ft wide) | no direct price effect |
difficult | Tight access — fence removal or hand-digging needed |
|
Which features do you want?
Select all that apply.
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
heater | Pool heater (gas or heat pump) | no direct price effect |
auto_cover | Automatic safety cover | no direct price effect |
waterfall | Waterfall or water feature | no direct price effect |
spa | Attached spa / hot tub |
|
led_lighting | LED color-changing underwater lights | no direct price effect |
automation | Smart automation (Pentair IntelliConnect) | no direct price effect |
salt_system | Salt water chlorine generator | no direct price effect |
What kind of pool deck do you want?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
plain_concrete | Plain brushed concrete (functional) |
|
stamped_concrete | Stamped or colored concrete |
|
travertine | Travertine or natural stone pavers |
|
pavers | Brick or concrete pavers |
|
composite | Composite wood decking |
|
Have you checked HOA rules and local permit requirements?
Why we ask: Permit handling controls whether the permit & inspection line item is included or zeroed out.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
clear | Yes — no HOA restrictions, permits understood |
|
hoa | HOA approval needed (may limit design options) | no direct price effect |
unsure | Not sure yet — need to check | no direct price effect |
What matters most to you?
Select up to 3 — this helps us tailor our recommendation.
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
budget | Stay within budget |
|
quality | Best quality materials |
|
timeline | Get it done quickly | no direct price effect |
efficiency | Energy efficiency / long-term savings |
|
aesthetics | Best looking result |
|
warranty | Longest warranty coverage |
|
When do you want to be swimming?
Gunite pools take 3–6 months; fiberglass can be ready in 4–8 weeks.
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
this_season | This pool season (book now for summer) |
|
next_season | Next pool season (planning ahead) |
|
flexible | Flexible / no rush |
|
Tiers (3)
Solid in-ground pool, built to enjoy
Brand: Latham Vinyl Liner / Hayward Equipment
basePrice (declared)
$42,000
Σ(lineItems) (computed)
$42,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Excavation & Grading | labor | $6,000 |
| Steel Frame, Vermiculite Floor | labor | $5,000 |
| Latham 28-mil Vinyl Liner (supply & install)source: https://www.lathampool.com | equipment | $6,000 |
| Hayward VS Pump + Sand Filter | equipment | $3,500 |
| Plumbing & Electrical | labor | $3,500 |
| Brushed Concrete Deck (300 sq ft) | labor | $5,000 |
| Steps, Fittings & Misc | equipment | $1,500 |
| Safety Fencing & Code Compliance | labor | $3,500 |
| Backfill, Grading & Cleanup | labor | $2,500 |
| Project Management & General | labor | $5,500 |
Specs (display only)
- Type: In-ground vinyl liner, 16×32 ft
- Liner: 28-mil Latham vinyl — 25-color options
- Filtration: Hayward Variable Speed Pump + Sand Filter
- Sanitization: Traditional chlorine
- Deck: Brushed concrete surround
- Warranty: 1-yr liner, 3-yr equipment
Pros (display only)
- Most affordable in-ground option
- Vinyl liners are smooth, comfortable underfoot
- Hayward equipment — widely serviced nationwide
- 25+ color/pattern choices for the liner
- Can add features like lights and heater at any time
Cons (display only)
- Liner needs replacement every 8–12 years (~$4,000)
- Less customizable shape than gunite
- Sharp objects can puncture the liner
tags: inground vinyl small_pool medium_pool
Fiberglass pool — low-maintenance for life
Brand: Latham Fiberglass / Pentair
basePrice (declared)
$65,000
Σ(lineItems) (computed)
$65,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Latham Fiberglass Shell (supply & delivery)source: https://www.lathampool.com/pool-designs/fiberglass/ | equipment | $16,000 |
| Excavation, Gravel Base & Installation | labor | $9,000 |
| Pentair IntelliFlo3 VS + Cartridge Filter | equipment | $4,000 |
| Hayward Aqua Rite Salt Chlorinator | equipment | $1,500 |
| LED Color Lighting (2 lights) | labor | $1,500 |
| Plumbing & Electrical (full) | labor | $5,000 |
| Travertine or Stamped Concrete Deck (400 sq ft) | labor | $8,000 |
| Safety Fencing & Code Compliance | labor | $4,000 |
| Backfill, Grading & Landscape Restoration | labor | $4,000 |
| Landscaping, Fence & General Finishing | labor | $5,000 |
| Project Management & Permits | labor | $7,000 |
Specs (display only)
- Type: In-ground fiberglass, 16×36 ft
- Shell: Latham fiberglass — lifetime structural warranty
- Filtration: Pentair IntelliFlo3 VS pump + Cartridge filter
- Sanitization: Hayward Aqua Rite salt chlorinator
- Deck: Travertine or stamped concrete
- Warranty: Lifetime structural, 3-yr finish, 3-yr equipment
Tier add-ons
| add-on | price |
|---|---|
heater — Pentair UltraTemp Heat PumpExtend your swim season by 2–3 months each end | $3,800 |
auto_cover — Automatic Safety Cover (Cover-Pools)Code-compliant safety cover + electric motor | $5,500 |
smart_auto — Pentair IntelliCenter Automation SystemFull pool automation — lights, heat, pump, cleaner | $3,000 |
Pros (display only)
- Smooth gelcoat surface — algae-resistant, less chemical use
- Salt-compatible from day one — lower chemical costs long-term
- Faster installation than gunite (1–2 weeks vs. 3–6 months)
- Pentair IntelliConnect app — control your pool from your phone
- Lifetime structural warranty on the shell
Cons (display only)
- Limited to manufacturer's available shapes and sizes
- Gelcoat may need resurfacing after 15–20 years
- Delivery requires crane or wide yard access for large shells
tags: inground fiberglass medium_pool large_pool
Custom gunite pool — your backyard, your vision
Brand: Pentair / Waterway / Custom Plaster
basePrice (declared)
$130,000
Σ(lineItems) (computed)
$130,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Engineering, Design & Permits | labor | $5,000 |
| Excavation & Structural Gunite | labor | $32,000 |
| Pebble Tec or Quartzite Interior Finish | labor | $15,000 |
| Pentair Full Equipment Package (pump, filter, heater) | equipment | $12,000 |
| Integrated Spa with Spillover | labor | $15,000 |
| Natural Stone Deck & Coping (600 sq ft) | labor | $20,000 |
| Waterfall / Water Feature | labor | $4,000 |
| LED Color Lighting System (6 lights) | equipment | $3,500 |
| Salt + UV Sanitation System | equipment | $3,000 |
| Landscaping, Fencing & Cleanup | labor | $12,000 |
| Project Management & Overhead | labor | $8,500 |
Specs (display only)
- Type: Custom gunite / concrete, any shape, 20×40 ft+
- Finish: Pebble Tec or Quartzite plaster interior
- Filtration: Pentair IntelliFlo3 + IntelliFilter system
- Sanitization: Salt + UV hybrid purification
- Deck: Natural stone (travertine or bluestone)
- Warranty: 10-yr structural, 5-yr equipment, 3-yr labor
Tier add-ons
| add-on | price |
|---|---|
fire_features — Gas Fire Bowls or Fire Pit (2)Pentair or custom propane fire bowls at pool edge | $6,000 |
outdoor_kitchen — Outdoor Kitchen PackageBull or DCS grill, sink, fridge, granite counter | $25,000 |
cabana — Pool Cabana / Shade StructureCustom shade cabana with electrical | $18,000 |
Pros (display only)
- Unlimited customization — any shape, depth, built-in spa, beach entry
- Pebble Tec or quartzite plaster — stunning, durable, long-lasting finish
- Salt + UV system — minimal chlorine, crystal-clear water
- Built-in spa with dedicated spillover
- Full outdoor living integration — fire features, water walls, lighting
Cons (display only)
- 3–6 month construction timeline
- Requires curing period before first use
- Highest cost — appropriate for permanent custom installations
tags: inground gunite large_pool xl_pool
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | pool_type ∈ { "inground_vinyl" } |
good | 2 | pool_size ∈ { "small", "medium" } |
good | 1 | decking ∈ { "plain_concrete" } |
good | 1 | timeline ∈ { "this_season" } |
good | 2 | priorities ∈ { "budget" } |
better | 3 | pool_type ∈ { "inground_fiberglass" } |
better | 2 | pool_size ∈ { "medium", "large" } |
better | 1 | decking ∈ { "stamped_concrete", "pavers" } |
better | 1 | timeline ∈ { "this_season" } |
best | 4 | pool_type ∈ { "inground_gunite" } |
best | 2 | pool_size ∈ { "xl" } |
best | 1 | decking ∈ { "travertine" } |
best | 1 | timeline ∈ { "next_season", "flexible" } |
best | 1 | priorities ∈ { "quality" } |
best | 1 | priorities ∈ { "efficiency" } |
best | 1 | priorities ∈ { "warranty" } |
Final price formula (this vertical)
// computeTierPricing(pool-installation, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $1,500 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: complex/consultation_fee → collect $49 at booking (refundable, credited to customerTotal).Pricing sources cited in code
- Latham Pool Products — https://www.lathampool.com
- Pentair Pool Equipment — https://www.pentair.com/en-us/residential.html
Source file: src/lib/flow-engine/verticals/pool-installation.ts · run the live flow →
🏗️Foundation Repair slug:foundation-repair
Get a transparent estimate for foundation stabilization and repair
Flow & payment model
Consultation Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$5,000 – $35,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Structural permits required for pier work in most jurisdictions. Your contractor handles filing. (estimate: $500)
labor note: Includes structural engineer assessment, installation, and written warranty documentation.
timeline: Crack repair: 1–2 days. Push piers: 2–5 days. Full system: 1–2 weeks.
installer note: A structural engineer must assess your foundation before any repair scope is finalized. All estimates are pre-assessment.
Photo prompts
- Close-up photos of any cracks — place a coin or ruler next to the crack for scale, and show whether it's horizontal, vertical, or stair-stepped
- Photo of the exterior foundation from 5-10 feet away — show the full visible foundation wall, including any bowing, leaning, or displacement
- Photos of any sticking doors or windows — show the gap (or lack thereof) between the door/window frame and the wall to document shifting
Questionnaire (9 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/foundation-repair.ts.
What type of foundation does your home have?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
basement | Poured concrete basement walls |
|
block | Concrete block / CMU basement walls |
|
crawlspace | Crawl space foundation |
|
slab | Slab-on-grade (no basement) |
|
pier_beam | Pier & beam foundation |
|
What symptoms are you seeing?
Select all that apply — more symptoms can indicate more severe movement.
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
cracks_wall | Cracks in basement or exterior walls | no direct price effect |
cracks_floor | Cracks in floor or slab | no direct price effect |
doors_stick | Doors or windows sticking, hard to open/close | no direct price effect |
bowing_walls | Bowing or leaning basement walls |
|
water_intrusion | Water seeping into basement or crawlspace |
|
floor_slope | Uneven or sloping floors |
|
gap_exterior | Gaps between walls and ceiling/floor | no direct price effect |
How would you describe the most significant cracks?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
hairline | Hairline — under 1/16" wide (normal settling) |
|
moderate | Moderate — 1/16" to 1/4" wide |
|
significant | Significant — over 1/4" or stair-step pattern |
|
severe | Severe — wide, multiple locations, visible shifting |
|
How long have you noticed these issues?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
recent | Recent — noticed in last 6 months |
|
years | 1–5 years |
|
longtime | Always been there / many years |
|
worsening | Getting noticeably worse over time |
|
What are the soil conditions around your home?
Clay soil and poor drainage are the #1 cause of foundation movement.
Why we ask: Existing-condition signal — determines whether removal, prep, or remediation line items kick in.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
clay | Heavy clay soil (swells when wet, shrinks when dry) |
|
sandy | Sandy or loamy soil | no direct price effect |
expansive | Expansive soil (noticed heaving in yard) |
|
unknown | Not sure | no direct price effect |
How is the grading and drainage around your home?
Why we ask: Age of the structure flags conditions that change scope (older wiring, lead, asbestos era, code upgrades).
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
good | Good — water drains away from foundation | no direct price effect |
poor | Poor — water pools near foundation after rain |
|
gutters_missing | Gutters missing or disconnected |
|
unknown | Not sure | no direct price effect |
Has the foundation been repaired before?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
no | No — first-time repair | no direct price effect |
yes_successful | Yes — previous repair held well | no direct price effect |
yes_failed | Yes — previous repair failed or cracks returned |
|
When do you need this done?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
asap | As soon as possible |
|
within_month | Within a month | no direct price effect |
flexible | I'm flexible / planning ahead | no direct price effect |
What matters most to you?
Select up to 3 — this helps us tailor our recommendation.
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
budget | Stay within budget |
|
quality | Best quality materials |
|
timeline | Get it done quickly | no direct price effect |
efficiency | Energy efficiency / long-term savings |
|
aesthetics | Best looking result |
|
warranty | Longest warranty coverage |
|
Tiers (3)
Crack repair and surface stabilization
Brand: Carbon fiber straps / Epoxy injection
basePrice (declared)
$5,000
Σ(lineItems) (computed)
$5,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Structural Assessment & Engineering Report | labor | $750 |
| Epoxy Crack Injection (up to 10 linear ft) | labor | $1,500 |
| Carbon Fiber Wall Straps (3 straps)source: https://www.terracetech.com/products/carbon-fiber | equipment | $1,800 |
| Polyurethane Foam Sealing | labor | $450 |
| Labor & Cleanup | labor | $500 |
Specs (display only)
- Method: Epoxy injection + polyurethane crack sealing
- Wall Stabilization: Carbon fiber strap reinforcement (if bowing)
- Warranty: 5-yr transferable on sealed cracks
- Typical Application: Minor to moderate settling, isolated cracks
Pros (display only)
- Most affordable solution for minor to moderate issues
- Carbon fiber straps prevent further bowing without excavation
- Epoxy injection permanently bonds concrete cracks
- Minimally invasive — completed in 1–2 days
- Transferable warranty for home sales
Cons (display only)
- Addresses symptoms — doesn't lift or stabilize deep foundation
- Not appropriate for severe settlement or active movement
- May need additional work if movement continues
tags: minor moderate historic
Push pier stabilization — stops movement permanently
Brand: Supportworks / Earth Contact Products
basePrice (declared)
$15,000
Σ(lineItems) (computed)
$15,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Structural Engineering Assessment | labor | $1,500 |
| Galvanized Steel Push Piers (8 piers)source: https://www.supportworks.com | equipment | $7,000 |
| Pier Brackets & Load Transfer Hardware | equipment | $2,000 |
| Limited Excavation / Access | labor | $1,500 |
| Crack Repair & Sealing | labor | $1,000 |
| Labor, Backfill & Cleanup | labor | $2,000 |
Specs (display only)
- Method: Steel push piers driven to bedrock / load-bearing strata
- Brand: Supportworks or ECP galvanized steel piers
- Warranty: 25-yr transferable structural warranty
- Typical Application: Settled footings, corner cracks, uneven floors
- Installation: Interior or exterior, minimal landscape disturbance
Tier add-ons
| add-on | price |
|---|---|
drainage — Interior French Drain SystemWaterGuard perimeter drain + sump pump to control water | $6,000 |
wall_anchor — Wall Anchor SystemFor bowing walls — steel anchors tied to stable soil | $3,500 |
Pros (display only)
- Push piers reach stable soil or bedrock — movement stops permanently
- Can often lift the foundation back toward original elevation
- 25-year transferable warranty — major asset for home resale
- No excavation required — installed from inside or with small access pits
- Works on any soil type including clay and expansive soil
Cons (display only)
- Significant upfront investment
- Limited areas accessible for interior drainage alongside
- Bedrock depth affects pier count and cost
tags: significant severe settlement ongoing active_movement
Comprehensive foundation system — complete peace of mind
Brand: Supportworks / Basement Systems
basePrice (declared)
$35,000
Σ(lineItems) (computed)
$35,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Geotechnical Assessment + Engineering Drawings | labor | $3,000 |
| Steel Push & Helical Piers (full perimeter) | equipment | $15,000 |
| Steel Wall Anchor System (full wall) | equipment | $6,000 |
| Interior Perimeter Drainage System | equipment | $5,000 |
| TripleSafe Sump Pump System | equipment | $2,500 |
| Crack Sealing, Waterproofing Coat | labor | $1,500 |
| Restoration, Cleanup & Final Report | labor | $2,000 |
Specs (display only)
- Method: Push piers + helical piers + wall anchors + drainage
- Piers: Galvanized steel rated for 100+ years of service life
- Warranty: Lifetime transferable structural warranty
- Typical Application: Severe settlement, active movement, bowing walls, water
- Scope: Full perimeter assessment and treatment
Tier add-ons
| add-on | price |
|---|---|
encapsulation — Crawl Space / Basement EncapsulationCleanSpace vapor barrier — full moisture control | $6,000 |
dehumidifier — SaniDry Sedona DehumidifierWhole-space dehumidifier with auto-drain | $1,300 |
Pros (display only)
- Complete structural solution — addresses foundation, walls, and water
- Helical piers for load-bearing in deep or saturated soils
- Lifetime warranty — fully transferable to future owners
- Includes engineered drawings for building department records
- Increases home value and insurability significantly
Cons (display only)
- Highest cost — warranted for active severe movement
- Project may take 1–2 weeks for full scope
- May require temporary relocation of landscaping
tags: severe bowing water worsening active_movement
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | crack_severity ∈ { "hairline", "moderate" } |
good | 2 | how_long ∈ { "longtime" } |
good | 1 | symptoms ∈ { "cracks_wall" } |
good | 2 | priorities ∈ { "budget" } |
better | 3 | crack_severity ∈ { "significant" } |
better | 2 | symptoms ∈ { "floor_slope", "doors_stick" } |
better | 2 | how_long ∈ { "years", "recent" } |
better | 1 | soil_conditions ∈ { "clay" } |
better | 1 | timeline ∈ { "asap" } |
best | 4 | crack_severity ∈ { "severe" } |
best | 3 | symptoms ∈ { "bowing_walls" } |
best | 3 | how_long ∈ { "worsening" } |
best | 2 | prior_repair ∈ { "yes_failed" } |
best | 2 | symptoms ∈ { "water_intrusion" } |
best | 1 | priorities ∈ { "quality" } |
best | 1 | priorities ∈ { "efficiency" } |
best | 1 | priorities ∈ { "warranty" } |
Final price formula (this vertical)
// computeTierPricing(foundation-repair, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $500 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: complex/consultation_fee → collect $49 at booking (refundable, credited to customerTotal).Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
foundation_type=basement— "Poured concrete basement walls"symptoms=cracks_wall— "Cracks in basement or exterior walls"crack_severity=hairline— "Hairline — under 1/16" wide (normal settling)"how_long=recent— "Recent — noticed in last 6 months"soil_conditions=clay— "Heavy clay soil (swells when wet, shrinks when dry)"drainage=good— "Good — water drains away from foundation"prior_repair=no— "No — first-time repair"timeline=asap— "As soon as possible"priorities=budget— "Stay within budget"
Σ(tier.lineItems) = $15,000 Σ(answer priceDeltas) = $0 permits = $500 installerCost = $15,500 platformFee (5%) = $775 customerTotal = $16,275
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- Supportworks Foundation Repair — https://www.supportworks.com
- Basement Systems — https://www.basementsystems.com
- Foundation Repair Cost 2025 (PrecisionFoundation) — https://precisionfoundationspecialist.com/how-much-does-foundation-repair-cost-in-2025-find-out/
- Push Piers & Helical Cost Guide (Helicon) — https://heliconusa.com/how-much-does-it-cost-to-repair-a-foundation/
- Crack Repair Costs 2025 (CrackedSlab) — https://www.crackedslab.com/blog/cost-to-fix-a-foundation-in-2025-what-homeowners-need-to-know/
Source file: src/lib/flow-engine/verticals/foundation-repair.ts · run the live flow →
💧Basement Waterproofing slug:basement-waterproofing
Stop water intrusion and protect your foundation for good
Flow & payment model
Consultation Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$2,500 – $22,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Permits typically not required for interior drainage. Exterior work may require permits. (estimate: $0)
labor note: Most interior drainage systems installed in 1–3 days with minimal disruption.
timeline: Basic sealing: 1 day. Interior drainage: 2–3 days. Full encapsulation: 3–5 days.
installer note: A certified waterproofing inspector will assess your basement and diagnose the exact source before recommending a system.
Photo prompts
- Photos of any water stains, efflorescence (white mineral deposits), mold, or standing water — get close enough to show the severity
- Photo of the basement perimeter walls at floor level — show where the wall meets the floor, especially corners and joints where water enters
- Photo of the exterior ground slope near your foundation — stand back 10 feet and show how the soil grades toward or away from the house
Questionnaire (8 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/basement-waterproofing.ts.
Where is the water coming from?
Identifying the source determines the right solution.
Why we ask: Utility infrastructure check — flags whether upgrades or service runs are part of scope.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
wall_seepage | Seeping through basement walls (porous concrete) |
|
floor_cracks | Coming up through floor cracks or drain |
|
cove_joint | Where the wall meets the floor (cove joint) |
|
window_well | Window wells flooding |
|
multiple | Multiple sources / I'm not sure |
|
What type of basement do you have?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
finished | Finished basement (carpet, drywall, drop ceiling) |
|
partially_finished | Partially finished |
|
unfinished | Unfinished / utility |
|
How severe is the water problem?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
efflorescence | White powder / efflorescence on walls (moisture wicking) |
|
damp_smell | Damp, musty smell but no standing water |
|
wet_patches | Wet patches or minor seeping during heavy rain |
|
standing_water | Actual water pooling on floor |
|
flooding | Regular flooding — multiple inches of water |
|
Do you currently have a sump pump?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
none | No sump pump |
|
basic | Yes — basic single pump, unknown brand/age |
|
good | Yes — newer pump, works well | no direct price effect |
failed | I had one — it failed or I'm not sure it works |
|
Have you noticed mold or mildew?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
none | No signs of mold | no direct price effect |
musty | Musty smell but no visible mold |
|
visible | Visible mold on walls or framing |
|
significant | Significant mold — affecting large areas |
|
How large is your basement?
Why we ask: Area to be serviced — primary multiplier for material and labor.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Small — under 600 sq ft |
|
medium | Medium — 600–1,200 sq ft |
|
large | Large — over 1,200 sq ft |
|
Does your yard drain properly away from the house?
Why we ask: Age of the structure flags conditions that change scope (older wiring, lead, asbestos era, code upgrades).
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
yes | Yes — ground slopes away from foundation | no direct price effect |
flat | Mostly flat — minimal slope |
|
toward_house | No — slopes toward the house |
|
unknown | Not sure | no direct price effect |
What matters most to you?
Select up to 3 — this helps us tailor our recommendation.
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
budget | Stay within budget |
|
quality | Best quality materials |
|
timeline | Get it done quickly | no direct price effect |
efficiency | Energy efficiency / long-term savings |
|
aesthetics | Best looking result |
|
warranty | Longest warranty coverage |
|
Tiers (3)
Interior sealant + drainage control
Brand: Drylok / SumpPro
basePrice (declared)
$2,500
Σ(lineItems) (computed)
$2,500
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Crack Injection (hydraulic cement, up to 6 cracks) | labor | $600 |
| Drylok Extreme Masonry Waterproofer (labor + material)source: https://www.drylok.com | labor | $700 |
| Sump Pump Installation (Zoeller M53) | equipment | $800 |
| Window Well Covers (2 windows) | equipment | $250 |
| Labor & Materials | labor | $150 |
Specs (display only)
- Method: Hydraulic cement crack injection + Drylok masonry coating
- Sump Pump: Wayne CDU800 or Zoeller M53 (1/3 HP)
- Window Well Covers: Polycarbonate covers included
- Warranty: 2-yr labor, limited on products
- Best For: Mild seepage and moisture, small to medium basements
Pros (display only)
- Most affordable approach for minor moisture problems
- Hydraulic cement stops active leaks quickly
- Drylok — proven masonry waterproofing coating
- New sump pump handles remaining groundwater
- Completed in 1–2 days
Cons (display only)
- Sealants on interior walls don't address the root cause
- Not designed for significant water volume
- May need to revisit if water pressure increases
tags: mild wall_seepage small unfinished
Interior drainage system — the industry standard
Brand: WaterGuard / Basement Systems
basePrice (declared)
$9,000
Σ(lineItems) (computed)
$9,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| WaterGuard Interior Perimeter Drain Systemsource: https://www.basementsystems.com/waterguard/ | equipment | $3,500 |
| Concrete Cutting, Removal & Reinstallation | labor | $2,000 |
| SuperSump Plus Sump Pump System | equipment | $1,500 |
| UltraSump Battery Backup System | equipment | $1,200 |
| IceGuard Discharge Line | equipment | $300 |
| Labor & Cleanup | labor | $500 |
Specs (display only)
- Method: WaterGuard interior perimeter drain + SuperSump Plus
- Sump Pump: SuperSump Plus with battery backup (Basement Systems)
- Discharge: IceGuard freeze protection on discharge line
- Warranty: Lifetime transferable warranty
- Best For: Moderate to severe seepage, cove joint, floor seepage
Tier add-ons
| add-on | price |
|---|---|
dehumidifier — SaniDry Sedona DehumidifierWhole-basement dehumidifier with auto drain to sump | $1,300 |
cleanspace — CleanSpace Wall Vapor BarrierBrightens basement, blocks moisture and soil gas | $2,000 |
Pros (display only)
- WaterGuard collects water at the wall-floor joint before it enters
- Does not require exterior excavation
- SuperSump Plus with battery backup — protection even when power goes out
- Lifetime transferable warranty — adds value at resale
- Handles moderate to heavy water intrusion
Cons (display only)
- Interior drainage manages water — doesn't stop it from entering through walls
- Concrete cutting required along perimeter (~1 day
tags: moderate severe cove_joint floor_seepage medium large
Complete interior system + encapsulation
Brand: Basement Systems Total Solution
basePrice (declared)
$22,000
Σ(lineItems) (computed)
$22,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| WaterGuard Full Perimeter Drain (large basement) | equipment | $6,000 |
| Concrete Cutting, Gravel & Reinstallation | labor | $3,000 |
| TripleSafe Sump Pump Systemsource: https://www.basementsystems.com/triplesafe/ | equipment | $2,500 |
| CleanSpace 20-mil Wall Vapor Barrier | equipment | $4,000 |
| CleanSpace Floor Matting | equipment | $2,000 |
| SaniDry XP Commercial Dehumidifier | equipment | $2,000 |
| Mold Remediation (walls/framing) | labor | $1,000 |
| Labor, Permits & Cleanup | labor | $1,500 |
Specs (display only)
- Method: WaterGuard drain + TripleSafe sump + CleanSpace + dehumidifier
- Sump Pump: TripleSafe (3 levels of protection, 2 pumps + battery)
- Encapsulation: CleanSpace 20-mil vapor barrier (walls + floor)
- Warranty: Lifetime transferable warranty on all components
- Best For: Flooding, finished basement protection, mold prevention
Tier add-ons
| add-on | price |
|---|---|
ext_grading — Exterior Grading CorrectionRegrade soil to slope away from foundation | $2,000 |
window_wells — Egress Window Well EnlargementLarger wells with drains tied to drainage system | $3,000 |
mold_treatment — Mold Guard Antimicrobial TreatmentFull application of antimicrobial sealant on all surfaces | $1,500 |
Pros (display only)
- TripleSafe sump pump — 3 pumps in 1 unit, never fails
- Full CleanSpace encapsulation — clean, bright, mold-resistant basement
- Hospital-grade dehumidifier built in
- Finished basement gets full perimeter drain protection
- Strongest transferable warranty in the industry
Cons (display only)
- Highest investment — appropriate for serious water issues
- Full project takes 2–4 days
- May require temporary removal of finished wall sections
tags: severe flooding finished mold large
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | severity ∈ { "efflorescence", "damp_smell" } |
good | 2 | basement_type ∈ { "unfinished" } |
good | 1 | square_footage ∈ { "small" } |
good | 1 | water_source ∈ { "window_well" } |
good | 2 | priorities ∈ { "budget" } |
better | 3 | severity ∈ { "wet_patches", "standing_water" } |
better | 2 | water_source ∈ { "cove_joint", "floor_cracks" } |
better | 2 | sump_pump ∈ { "none", "failed" } |
better | 1 | square_footage ∈ { "medium" } |
best | 4 | severity ∈ { "flooding" } |
best | 3 | mold_concern ∈ { "visible", "significant" } |
best | 2 | basement_type ∈ { "finished" } |
best | 2 | square_footage ∈ { "large" } |
best | 1 | drainage_exterior ∈ { "toward_house" } |
best | 1 | priorities ∈ { "quality" } |
best | 1 | priorities ∈ { "efficiency" } |
best | 1 | priorities ∈ { "warranty" } |
Final price formula (this vertical)
// computeTierPricing(basement-waterproofing, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: complex/consultation_fee → collect $49 at booking (refundable, credited to customerTotal).Pricing sources cited in code
- Basement Systems WaterGuard — https://www.basementsystems.com/waterguard/
- Basement Systems TripleSafe — https://www.basementsystems.com/triplesafe/
- Bob Vila Basement Waterproofing Cost — https://www.bobvila.com/articles/basement-waterproofing-cost/
- Drylok Masonry Waterproofer — https://www.drylok.com
Source file: src/lib/flow-engine/verticals/basement-waterproofing.ts · run the live flow →
📡Dish & Satellite Installation slug:dish-installation
Starlink, DirecTV, DISH — professional installation with a price you know upfront.
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$315 – $880 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Satellite dish installations typically do not require permits for residential use. HOA approval may be required — check your CC&Rs. Ground mounts with concrete footings may require a zoning check in some municipalities. (estimate: $0)
labor note: Labor includes site assessment, mounting, cable routing, grounding, and system alignment check.
timeline: Most installs completed same day (2–4 hours). Ground/pole mounts with concrete may require a follow-up visit after 24-hr cure time.
installer note: Your installer will confirm pointing angle clearance and obstructions on site before mounting. Starlink and DirecTV/DISH activations are handled directly with the provider — your installer handles the physical install only.
Photo prompts
- Photo of your planned install location — show the area where the dish will be mounted (rooftop, wall, or ground) with surrounding obstructions visible
- Photo of any existing satellite hardware — show the old dish, mount bracket, and cable entry point if replacing or removing existing equipment
Questionnaire (7 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/dish-installation.ts.
What are you installing?
Why we ask: Dish type drives hardware sourcing, mount compatibility, and whether the installer needs to coordinate with a provider activation. Starlink and DirecTV/DISH have different footprint and cable requirements.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
starlink | Starlink (satellite internet) |
|
directv_dish | DirecTV / DISH (satellite TV) |
|
other_dish | Other satellite dish |
|
removal_only | I need help removing an old dish |
|
Where will it be mounted?
branch Hidden when dish_type ∈ { "removal_only" }
Why we ask: Mount location is the biggest scope driver — rooftop and ground/pole mounts have different labor, hardware, and safety requirements. Ground mounts typically require concrete footings.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
rooftop | Rooftop |
|
side_fascia | Side of house / fascia |
|
ground_pole | Ground mount / pole |
|
balcony_deck | Balcony / deck railing |
|
What's your roof material?
branch Hidden when mount_location ∈ { "rooftop" }
branch Hidden when dish_type ∈ { "removal_only" }
Why we ask: Roof material changes fastener type, seal product, and labor time. Tile and slate require specialty lag bolts and extra care to avoid cracking — this takes longer and costs more than asphalt.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
asphalt | Asphalt shingles |
|
metal | Metal |
|
tile_slate | Tile / slate |
|
flat_tpo | Flat / TPO |
|
How tall is your home?
branch Hidden when dish_type ∈ { "removal_only" }
Why we ask: Height affects ladder/staging requirements and safety overhead. 3+ story installs or multi-unit buildings require additional rigging time and sometimes a second tech.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
one_story | 1 story |
|
two_story | 2 stories |
|
three_plus | 3+ stories / multi-unit |
|
How will the cable run inside?
branch Hidden when dish_type ∈ { "removal_only" }
Why we ask: Cable routing time varies significantly — a short exterior wall penetration takes 30 minutes; fishing cable through an attic can take 2+ hours and drives up labor cost.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
exterior_wall | Through exterior wall (short run) |
|
attic_crawl | Through attic or crawl space |
|
existing_conduit | Through existing conduit |
|
not_sure_routing | Not sure / want pro to assess |
|
Is there an existing dish to remove?
branch Hidden when dish_type ∈ { "removal_only" }
Why we ask: Removing an old dish adds time for safe dismounting, cap-and-seal of old penetrations, and disposal — this is priced as an add-on.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
no_existing | No | no direct price effect |
same_location | Yes — same mount location |
|
different_location | Yes — different location (removal only) |
|
Is the dish location already grounded?
branch Hidden when dish_type ∈ { "removal_only" }
Why we ask: NEC code requires satellite dishes to be bonded to your home's grounding system. Most residential installs are not pre-grounded at the mount point — we include a grounding kit in all tiers, but a full bonding upgrade adds cost.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
yes_grounded | Yes |
|
no_not_sure | No / Not sure (most honest answer for homeowners) |
|
Tiers (3)
Standard rooftop or fascia mount
Brand: Ideal for Starlink or DirecTV on asphalt roof
basePrice (declared)
$315
Σ(lineItems) (computed)
$315
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Installation labor (~1.5 hrs) | labor | $180 |
| Mounting hardware (J-mount or fascia bracket)source: https://www.homedepot.com/b/Electrical-TV-Satellite-Dish-Antennas-Accessories-TV-Antenna-Mounts/N-5yc1vZc8nr | equipment | $45 |
| Cable, connectors, and weatherproofing | equipment | $30 |
| Grounding kit (coax block + ground wire)source: https://www.homedepot.com/b/Electrical-TV-Satellite-Dish-Antennas-Accessories/N-5yc1vZc8nq | equipment | $25 |
| Roof sealant / flashing | equipment | $15 |
| Drive time and site cleanup | labor | $20 |
Specs (display only)
- Mount Type: Roof or fascia mount
- Cable Run: Exterior wall penetration (short)
- Stories: 1–2 story
- Labor: ~1.5 hours
- Grounding: Standard grounding kit included
Pros (display only)
- Fast install — most homes done in under 2 hours
- Clean exterior wall cable entry — minimal drywall work
- Grounding kit included — meets NEC bonding requirements
- Works for Starlink, DirecTV, DISH, and most other dishes
- Most affordable professional option
Cons (display only)
- Short cable run only — longer runs or attic fishing costs more
- Asphalt or metal roofs only at this tier (tile/slate → Standard)
- Not suited for ground or pole mounts
tags: rooftop side_fascia asphalt metal_roof short_run one_story two_story
Complex mount or cable routing
Brand: Attic run, multi-story, or tile/slate roof
basePrice (declared)
$580
Σ(lineItems) (computed)
$580
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Installation labor (~3 hrs) | labor | $360 |
| Mounting hardware (J-mount, specialty lag bolts for tile/slate) | equipment | $65 |
| Cable, connectors, and in-wall routing materials | equipment | $60 |
| Grounding / bonding kit (full NEC-compliant package) | equipment | $35 |
| Roof penetration weatherseal (butyl tape + cover plate) | equipment | $20 |
| Drive time, staging, and cleanup | labor | $40 |
Specs (display only)
- Mount Type: Roof, fascia, or balcony mount
- Cable Run: Attic or crawl space routing
- Stories: Up to 3 stories
- Labor: ~3 hours
- Grounding: Full bonding kit included
Tier add-ons
| add-on | price |
|---|---|
wifi_drop — In-wall cable drop to equipment roomFish cable from attic entry to a wall plate in your TV or equipment room | $85 |
signal_test — Signal strength test and alignment reportWritten report of pointing angle, signal quality, and recommended obstructions to trim | $35 |
Pros (display only)
- Handles attic runs — cable hidden inside walls for a clean look
- Tile and slate roof rated — uses specialty lag bolts and silicone
- Works on 3-story homes with appropriate ladder staging
- Includes roof penetration weatherseal rated for all climates
- Full grounding / bonding package — exceeds minimum NEC requirements
Cons (display only)
- Attic access may require moving insulation or navigating obstacles
- Tile roofs add time — cracked tiles are homeowner responsibility
- Not suited for ground/pole mounts with concrete footings
tags: rooftop side_fascia balcony tile_roof flat_roof attic_run conduit assess two_story three_plus
Ground / pole mount or multi-unit
Brand: Concrete footings, long cable runs, conduit
basePrice (declared)
$880
Σ(lineItems) (computed)
$880
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Installation labor (~4 hrs) | labor | $480 |
| Pole / ground mount hardwaresource: https://www.homedepot.com/b/Electrical-TV-Satellite-Dish-Antennas-Accessories-TV-Antenna-Mounts/N-5yc1vZc8nr | equipment | $120 |
| Concrete / footings (bag mix + tube form) | equipment | $80 |
| Coaxial or Cat6 cable (exterior-rated, 50–100 ft run) | equipment | $80 |
| Conduit, fittings, and weatherhead | equipment | $50 |
| Grounding kit + inline surge protector | equipment | $40 |
| Trench or surface conduit routing (up to 50 ft) | labor | $30 |
Specs (display only)
- Mount Type: Ground / pole mount with concrete footing
- Cable Run: Conduit run (long distance)
- Stories: Any
- Labor: ~4 hours
- Grounding: Full bonding kit + surge protection
Tier add-ons
| add-on | price |
|---|---|
deep_trench — Underground cable trench (50–100 ft)Buried conduit run for a clean yard — requires 24 hrs notice for dig-safe call | $225 |
multi_unit_wiring — Multi-unit cable distributionRun splits and cable drops to up to 3 units from a single dish | $180 |
Pros (display only)
- Ideal pointing angle — no roof penetrations, best for Starlink obstruction-free zones
- Concrete footings — permanent, weather-resistant, no wobble
- Conduit run — protected cable path from pole to house, future-proof
- Works for multi-unit buildings with longer cable runs
- Includes surge protector inline — protects equipment from lightning
Cons (display only)
- Concrete cure time: 24–48 hrs before dish can be fully loaded
- Requires trench or surface conduit from pole to house — may disturb landscaping
- Highest cost of the three options
tags: ground_pole conduit three_plus starlink sat_tv other_dish
Global add-ons (offered on every tier)
| add-on | price |
|---|---|
old_dish_removal — Old dish removal & hole patchingRemove the existing dish, cap mount holes with weatherproof covers, and dispose of hardware.hidden when existing_dish ∈ { "no_existing" }recommended when existing_dish ∈ { "same_location", "different_location" } | $110 |
premium_grounding — Premium grounding packageFull NEC-compliant grounding bar with bonding jumper, inline surge protector, and weatherproof enclosure.recommended when grounding_needed ∈ { "no_not_sure" } | $65 |
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | mount_location ∈ { "rooftop", "side_fascia" } |
good | 2 | stories ∈ { "one_story", "two_story" } |
good | 2 | cable_routing ∈ { "exterior_wall" } |
good | 1 | roof_material ∈ { "asphalt", "metal_roof" } |
better | 4 | roof_material ∈ { "tile_slate", "flat_tpo" } |
better | 4 | cable_routing ∈ { "attic_crawl", "conduit" } |
better | 3 | stories ∈ { "three_plus" } |
better | 2 | mount_location ∈ { "balcony_deck" } |
better | 1 | cable_routing ∈ { "assess" } |
best | 5 | mount_location ∈ { "ground_pole" } |
best | 2 | stories ∈ { "three_plus" } ∧mount_location ∈ { "ground_pole" } |
Final price formula (this vertical)
// computeTierPricing(dish-installation, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Pricing sources cited in code
- Starlink Hardware & Installation — https://www.starlink.com/hardware
- Angi: Satellite Dish Installation Cost — https://www.angi.com/articles/satellite-dish-installation-cost.htm
- This Old House: Satellite Dish Costs — https://www.thisoldhouse.com/home-technology/reviews/satellite-dish-installation-cost
- NEC Article 810 — Radio and Television Equipment — https://www.nfpa.org/codes-and-standards/nfpa-70
Source file: src/lib/flow-engine/verticals/dish-installation.ts · run the live flow →
🔥Water Heater Replacement slug:water-heater-replacement
Get a transparent estimate for your new water heater
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$1,600 – $3,200 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Water heater permit required in most jurisdictions. Installer handles filing. (estimate: $100)
labor note: Labor includes removal and disposal of old unit, installation, and test firing.
timeline: Tank water heaters often installed same-day. Tankless: 4–6 hours. Heat pump: 4–6 hours if electrical is ready.
installer note: Your licensed plumber will verify existing gas/electrical service and confirm final scope before installation.
Photo prompts
- Photo of your current water heater — show the model/serial label (usually on the side) and the full unit from top to bottom
- Photo of the area around the water heater — show the clearance on all sides, gas/water connections, and the venting/exhaust path
Questionnaire (5 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/water-heater-replacement.ts.
What type of water heater are you interested in?
Why we ask: Heater type drives the entire tier selection — tank, tankless, and heat pump have completely different equipment costs ($700-$2,000), labor ($600-$1,500), venting requirements, and electrical or gas infrastructure needs.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
tank_gas | Tank water heater — natural gas |
|
tank_electric | Tank water heater — electric |
|
tankless_gas | Tankless — gas (on-demand) |
|
tankless_electric | Tankless — electric (on-demand) |
|
heat_pump | Heat pump water heater (hybrid electric) |
|
How many people are in your household?
This determines the tank size or flow rate you need.
Why we ask: Household size determines required tank capacity (gallons) or flow rate (GPM). Undersizing is the most common cause of 'running out of hot water' complaints — this answer gates the tank-size recommendation.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
1_2 | 1–2 people (30–40 gallon / 3–4 GPM) |
|
3_4 | 3–4 people (40–50 gallon / 5–7 GPM) |
|
5_plus | 5+ people (50–80 gallon / 7–9 GPM) |
|
Why are you replacing your water heater?
Why we ask: Replacement reason signals urgency (failed = same-day emergency routing) and shapes the recommendation — efficiency seekers get heat pump, capacity issues get tankless, failed units get fast tank replacement.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
failed | Broken / no hot water right now |
|
old | Old unit (8+ years) — being proactive |
|
upgrade | Upgrading to tankless or heat pump |
|
capacity | Running out of hot water too fast |
|
efficiency | Want lower energy bills |
|
Where is the water heater located?
Why we ask: Install location affects access difficulty and venting complexity. Attic and crawlspace installations add significant labor hours. Tight interior closets may require a compact-clearance unit that isn't available in all model lines.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
basement | Basement or utility room (easy access) | no direct price effect |
garage | Garage | no direct price effect |
closet | Interior closet or small utility space |
|
attic | Attic |
|
crawlspace | Crawlspace |
|
Do you have a gas line available at the install location?
branch Hidden when heater_type ∈ { "tankless_gas", "tank_gas" }
Why we ask: Gas line presence and size determines whether a new gas run or upsize is needed.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
yes | Yes — existing gas line | no direct price effect |
no | No — gas line would need to be run |
|
unsure | Not sure | no direct price effect |
Tiers (3)
Reliable tank replacement — fast and affordable
Brand: Rheem Performance Plus
basePrice (declared)
$1,600
Σ(lineItems) (computed)
$1,600
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Rheem Performance Plus 50-gal Tanksource: https://www.rheem.com/product/rheem-performance-plus-natural-gas/ | equipment | $700 |
| Installation Labor — disconnect/reconnect gas & water, test (~3 hrs plumber) | labor | $600 |
| Expansion Tank (required by code, ~2 gal)source: https://www.watts.com/products/plumbing-flow-control-solutions/thermal-expansion/expansion-tanks/plt | equipment | $150 |
| Permits & Haul Away (~1 hr admin + disposal fee) | labor | $150 |
Specs (display only)
- Type: 50-gallon natural gas tank
- Brand: Rheem Performance Plus 50-gal (RH50T12GX)
- First Hour Rating: 89 gallons
- Efficiency: 0.67 UEF
- Warranty: 6-yr tank, 1-yr labor
Pros (display only)
- Fast installation — often same-day
- Rheem — one of the most widely available and serviced brands
- Handles average family of 4 easily
- Most affordable option
Cons (display only)
- Standby heat loss — heats water even when not needed
- Shorter warranty than premium options
- Higher operating cost than tankless or heat pump
tags: tank gas urgent proactive
Tankless gas — endless hot water, lower bills
Brand: Navien NPE-240A2
basePrice (declared)
$3,100
Σ(lineItems) (computed)
$3,100
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Navien NPE-240A2 Tankless Heatersource: https://www.navieninc.com/products/npe-a2 | equipment | $1,500 |
| Installation Labor — wall-mount, gas & water connections (~4 hrs plumber) | labor | $1,000 |
| Gas Line Upgrade (3/4" corrugated stainless flex)source: https://www.watts.com/products/plumbing-flow-control-solutions/gas/csst | equipment | $300 |
| Venting — concentric or dual PVC (~1 hr labor, materials included) | labor | $200 |
| Permit & Haul Away (~1 hr admin + disposal fee) | labor | $100 |
Specs (display only)
- Type: Condensing tankless gas
- Brand: Navien NPE-240A2
- Flow Rate: 11.2 GPM
- Efficiency: 0.97 UEF (condensing)
- Warranty: 15-yr heat exchanger, 5-yr parts, 2-yr labor
Tier add-ons
| add-on | price |
|---|---|
recirculation — Instant Hot Water Recirculation PumpHot water at every faucet within seconds | $450 |
water_softener_filter — Pre-Filter for TanklessSediment and scale filter — extends heat exchanger life | $300 |
Pros (display only)
- Endless hot water — never runs out
- 97% efficiency — significantly lower gas bills
- Check for local utility rebates in your area
- Compact wall-mount — frees up floor space
- Built-in recirculation for faster hot water
Cons (display only)
- Higher upfront cost
- Needs proper gas line sizing (3/4" min)
- Power outage = no hot water (requires electricity to ignite)
tags: tankless gas upgrade efficiency capacity
Heat pump water heater — the most efficient option
Brand: Rheem ProTerra Hybrid / A.O. Smith Voltex
basePrice (declared)
$3,200
Σ(lineItems) (computed)
$3,200
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Rheem ProTerra 50-gal Heat Pump WHsource: https://www.rheem.com/product/rheem-proterra/ | equipment | $1,600 |
| Installation Labor — position, water connections, test (~3 hrs plumber) | labor | $900 |
| Electrical — 240V 30A dedicated circuit (~3 hrs electrician) | labor | $450 |
| Drain Pan + Overflow Kit (code required)source: https://www.watts.com/products/plumbing-flow-control-solutions/water-heater/drain-pans | equipment | $150 |
| Permit & Haul Away (~1 hr admin + disposal fee) | labor | $100 |
Specs (display only)
- Type: Heat pump (hybrid electric)
- Brand: Rheem ProTerra 50-gal (PROPH50 T2 RH350) or A.O. Smith Voltex
- First Hour Rating: 70 gallons
- Efficiency: 3.75 UEF — uses 70% less energy than standard electric
- Warranty: 10-yr tank, 10-yr parts, 2-yr labor
Tier add-ons
| add-on | price |
|---|---|
smart_thermostat — Smart Controller + WiFi ModuleMonitor and schedule from the EcoNet app | $200 |
Pros (display only)
- Most efficient water heater available — $300–$500/yr energy savings
- Check for local utility rebates in your area
- 10-year warranty — best in class
- LeakGuard sensor included — shuts off if leak detected
- Can run on solar energy for near-zero operating cost
Cons (display only)
- Requires 700+ cubic feet of space (needs ambient air to heat water)
- Electric only — not for gas-only homes unless upgrading panel
- Slightly louder than standard electric (like a dehumidifier)
tags: heat_pump_wh efficiency upgrade
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | current_issue ∈ { "failed" } |
good | 2 | current_issue ∈ { "old" } |
good | 1 | heater_type ∈ { "tank_gas", "tank_electric" } |
better | 3 | heater_type ∈ { "tankless_gas" } |
better | 2 | current_issue ∈ { "capacity", "upgrade" } |
better | 1 | household_size ∈ { "5_plus" } |
best | 4 | heater_type ∈ { "heat_pump" } |
best | 2 | current_issue ∈ { "efficiency" } |
best | 1 | heater_type ∈ { "tankless_electric" } |
Final price formula (this vertical)
// computeTierPricing(water-heater-replacement, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $100 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Pricing sources cited in code
- Rheem ProTerra Heat Pump — https://www.rheem.com/product/rheem-proterra/
- Navien NPE-A2 Tankless — https://www.navieninc.com/products/npe-a2
Source file: src/lib/flow-engine/verticals/water-heater-replacement.ts · run the live flow →
🪟Window Replacement slug:window-replacement
Get a transparent estimate for energy-efficient window replacement
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$4,500 – $14,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Window permits may be required for structural modifications. Installer advises per project. (estimate: $150)
labor note: Pricing shown is per 6 windows. Ask for a per-unit or whole-house quote.
timeline: Standard vinyl: 1–2 days install. Custom orders: 4–8 weeks lead time + installation.
installer note: Your window installer will measure each opening precisely before ordering to confirm final pricing.
Photo prompts
- Photos of each window to be replaced — show the full window from inside (include trim and frame), and note any condensation between panes, rotting frames, or difficulty opening/closing
Questionnaire (6 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/window-replacement.ts.
How many windows are you replacing?
Why we ask: Count drives both material cost (per window) and labor hours.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
1_5 | 1–5 windows |
|
6_10 | 6–10 windows |
|
11_15 | 11–15 windows |
|
16_plus | 16+ windows (whole-house replacement) |
|
What style are most of your windows?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
double_hung | Double-hung (both sashes open) |
|
casement | Casement (crank to open) |
|
sliding | Sliding (glide left/right) |
|
bay_bow | Bay or bow window |
|
picture | Picture window (fixed, doesn't open) |
|
mix | Mix of types |
|
What's most important to you?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
energy_bills | Reducing energy bills |
|
comfort | Eliminating drafts and cold spots |
|
noise | Noise reduction from traffic or neighbors |
|
curb_appeal | Improving the look of my home |
|
security | Security — harder to break into |
|
Do you want any glass performance upgrades?
Triple-pane and impact glass add significant cost but performance benefit.
Why we ask: Material/finish selection — primary cost driver inside the tier ladder.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
standard_dp | Standard double-pane (Low-E coating) |
|
triple_pane | Triple-pane (best insulation, noise reduction) |
|
impact | Impact-resistant (hurricane/storm zones) |
|
What frame material are you looking for?
Why we ask: Material/finish selection — primary cost driver inside the tier ladder.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
vinyl | Vinyl (most popular — low maintenance, affordable) |
|
fiberglass | Fiberglass (strongest, best thermal performance) |
|
wood_clad | Wood interior / aluminum exterior (premium look) |
|
aluminum | Aluminum (modern, commercial look) |
|
What type of window installation do you need?
Full-frame replacement is more work but addresses rotted frames and sills.
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
insert | Insert / pocket replacement (frames stay in place) |
|
full_frame | Full-frame replacement (remove everything including frame) |
|
unsure | Not sure — need professional assessment | no direct price effect |
Tiers (3)
Reliable vinyl windows — immediate comfort upgrade
Brand: Simonton / Ply Gem
basePrice (declared)
$4,500
Σ(lineItems) (computed)
$4,500
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Simonton 5500 Windows (6 units, supply)source: https://www.simonton.com/products/5500-series/ | equipment | $2,500 |
| Installation Labor — insert replacement (15 hrs) | labor | $1,500 |
| Interior & Exterior Trim, Caulk & Flash (3 hrs) | labor | $350 |
| Haul Away & Cleanup (1.5 hrs) | labor | $150 |
Specs (display only)
- Brand: Simonton Reflections 5500 or Ply Gem 1500
- Frame: Vinyl — maintenance-free
- Glass: Double-pane Low-E argon-filled
- U-Factor: 0.29
- SHGC: 0.25
- Warranty: Limited lifetime on glass and frame
Pros (display only)
- Immediate reduction in drafts and energy loss
- Vinyl never needs painting or staining
- Limited lifetime warranty
- Most affordable replacement option
- ENERGY STAR certified
Cons (display only)
- Vinyl can warp in extreme heat (dark colors)
- Not as thermally efficient as fiberglass
- Fewer exterior color options vs. wood-clad
tags: double_pane vinyl_frame small_job medium_job
High-performance vinyl with enhanced glass
Brand: Andersen 400 Series / Pella 250
basePrice (declared)
$8,000
Σ(lineItems) (computed)
$8,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Andersen 400 Series Windows (6 units, supply)source: https://www.andersenwindows.com/windows-and-doors/windows/400-series/ | equipment | $4,800 |
| Installation Labor — full-frame prep & install (18 hrs) | labor | $1,800 |
| Trim, Flashing & Weatherproof Sealing (10 hrs) | labor | $1,000 |
| Haul Away & Cleanup (4 hrs) | labor | $400 |
Specs (display only)
- Brand: Andersen 400 Series or Pella 250 Series
- Frame: Fibrex composite (Andersen) or vinyl
- Glass: Double-pane SmartSun Low-E (blocks 95% of UV)
- U-Factor: 0.27
- SHGC: 0.22
- Warranty: 20-yr glass, 10-yr frame, 2-yr installation
Tier add-ons
| add-on | price |
|---|---|
grilles_between — Grilles-Between-GlassSimulated divided light look without cleaning hassle | $250 |
window_sensor — Window Security Sensors (per set)SimpliSafe or Ring compatible window sensors | $150 |
Pros (display only)
- Andersen Fibrex — 2× stronger than vinyl, won't warp
- SmartSun glass reduces fading of furniture and floors
- More color options — matches any home style
- Quieter operation and better seals than basic vinyl
- Andersen is the #1 window brand in America
Cons (display only)
- Higher cost vs. standard vinyl
- 4–6 week lead time for custom sizes
tags: double_pane fiberglass_frame medium_job large_job
Premium triple-pane or fiberglass — maximum performance
Brand: Marvin Elevate / Pella Impervia
basePrice (declared)
$14,000
Σ(lineItems) (computed)
$14,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Marvin Elevate or Pella Impervia (6 units)source: https://www.marvin.com/windows-doors/windows/ | equipment | $9,000 |
| Full-Frame Installation Labor (30 hrs) | labor | $3,000 |
| Interior Wood Trim & Finishing (12 hrs) | labor | $1,200 |
| Exterior Flashing & Caulk | equipment | $500 |
| Haul Away & Cleanup (3 hrs) | labor | $300 |
Specs (display only)
- Brand: Marvin Elevate (fiberglass) or Pella Impervia
- Frame: Fiberglass — dimensionally stable, best insulator
- Glass: Triple-pane Low-E, argon/krypton fill
- U-Factor: 0.19
- SHGC: 0.18
- Warranty: Limited lifetime, 20-yr glass, 5-yr labor
Tier add-ons
| add-on | price |
|---|---|
impact_upgrade — Upgrade to Impact-Resistant GlassHurricane or security laminated glass option | $2,000 |
remote_sensors — Smart Home Window Sensors + ShadesMotorized shades with app control | $5,000 |
Pros (display only)
- Triple-pane glass — best energy performance available
- Fiberglass frames — outlast vinyl and wood
- Dramatically reduces noise from outside
- Beautiful wood interior option (Marvin) with durable exterior
- Best long-term investment for home value
Cons (display only)
- Highest upfront cost — but longest service life
- 6–8 week lead time for custom orders
tags: triple_pane fiberglass_frame whole_house noise
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | window_count ∈ { "1_5" } |
good | 2 | frame_material ∈ { "vinyl" } |
good | 1 | primary_concern ∈ { "curb_appeal" } |
better | 3 | primary_concern ∈ { "energy_bills", "comfort" } |
better | 2 | window_count ∈ { "6_10", "11_15" } |
better | 1 | frame_material ∈ { "fiberglass" } |
best | 3 | glass_upgrade ∈ { "triple_pane", "impact" } |
best | 2 | primary_concern ∈ { "noise" } |
best | 2 | window_count ∈ { "16_plus" } |
best | 1 | frame_material ∈ { "wood_clad" } |
Final price formula (this vertical)
// computeTierPricing(window-replacement, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $150 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
window_count=1_5— "1–5 windows"window_type=double_hung— "Double-hung (both sashes open)"primary_concern=energy_bills— "Reducing energy bills"glass_upgrade=standard_dp— "Standard double-pane (Low-E coating)"frame_material=vinyl— "Vinyl (most popular — low maintenance, affordable)"installation_type=insert— "Insert / pocket replacement (frames stay in place)"
Σ(tier.lineItems) = $8,000 Σ(answer priceDeltas) = $0 permits = $150 installerCost = $8,150 platformFee (5%) = $408 customerTotal = $8,558
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- Andersen 400 Series — https://www.andersenwindows.com/windows-and-doors/windows/400-series/
- Marvin Elevate Windows — https://www.marvin.com/windows-doors/windows/
- Pro-Mapper Window Replacement Cost 2025 — https://www.pro-mapper.com/windows-and-doors/window-replacement-cost/
- Pella Replacement Window Cost by Material — https://www.pella.com/ideas/windows/replacement-window-cost/by-material/
- Vinyl Replacement Window Cost 2025 — https://hotianwindows.com/vinyl-replacement-windows-cost/
Source file: src/lib/flow-engine/verticals/window-replacement.ts · run the live flow →
🏡Siding Replacement slug:siding-replacement
Get a transparent estimate for new exterior siding
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$11,000 – $30,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Siding permits required in most jurisdictions. Contractor handles filing. (estimate: $400)
labor note: Pricing shown based on 2,000 sq ft siding area. Adjust for your actual home size.
timeline: Vinyl: 3–5 days. Fiber cement: 5–10 days. Full system: 1–2 weeks.
installer note: Your contractor will inspect the existing sheathing and identify any moisture damage before installation begins.
Photo prompts
- Photos of your current siding from each side of the house — show the full wall, any damage (cracks, warping, rot), trim/corner details, and areas around windows and doors
Questionnaire (5 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/siding-replacement.ts.
What type of siding are you interested in?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
vinyl | Vinyl siding — most popular, low maintenance |
|
fiber_cement | Fiber cement (James Hardie) — premium durability |
|
engineered_wood | Engineered wood (LP SmartSide) — wood look, composite durability |
|
real_wood | Real wood (cedar, redwood shingles) |
|
metal | Metal siding (steel or aluminum) |
|
stucco | Stucco or EIFS (dryvit) |
|
What's the approximate exterior square footage of your home?
Total siding area, not home footprint.
Why we ask: Home size drives material and labor quantities for the entire job.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Under 1,500 sq ft siding |
|
medium | 1,500–2,500 sq ft siding |
|
large | 2,500–3,500 sq ft siding |
|
xl | Over 3,500 sq ft |
|
What's the current state of your siding?
Why we ask: Existing-condition signal — determines whether removal, prep, or remediation line items kick in.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
cosmetic | Just needs a fresh look — still structurally sound |
|
aging | Faded, chalky, minor cracks or gaps |
|
damaged | Damaged — rot, impact damage, or failing sections |
|
rotted | Significant rot or moisture damage to sheathing |
|
Do you want insulation added under the new siding?
Rigid foam insulation wrap improves energy efficiency and reduces exterior noise.
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
no | No — standard housewrap only | no direct price effect |
yes_basic | Yes — 1/2" foam board (R-3) |
|
yes_premium | Yes — 1" foam board (R-6) + Tyvek |
|
What siding profile style do you like?
Why we ask: Style choice maps to specific SKUs and labor patterns — affects equipment cost and install time.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
traditional_lap | Traditional horizontal lap siding |
|
board_batten | Board and batten (vertical — popular farmhouse style) |
|
shingle | Shingle / shake style (New England look) |
|
dutch_lap | Dutch lap (beveled shadow lines) |
|
Tiers (3)
Premium vinyl — durable, low-maintenance, good value
Brand: CertainTeed Mainstreet / Mastic Home Exteriors
basePrice (declared)
$11,000
Σ(lineItems) (computed)
$11,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| CertainTeed Vinyl Siding (2,000 sq ft)source: https://www.certainteed.com/products/siding/ | equipment | $4,500 |
| Tyvek Housewrap | equipment | $1,000 |
| Trim (J-channel, corner posts, soffit) | equipment | $1,500 |
| Old Siding Demo & Disposal (12 hrs) | labor | $1,500 |
| Vinyl Siding Installation Labor (25 hrs) | labor | $2,500 |
Specs (display only)
- Brand: CertainTeed Mainstreet or Mastic Home Exteriors
- Thickness: .044" vinyl
- Warranty: Limited lifetime, transferable
- Wind Rating: 110 mph
- Color Retention: True Color Exterior Technology
Pros (display only)
- Never needs painting
- Limited lifetime warranty — transferable
- Wide color selection
- Moisture and insect-resistant
- Fast installation
Cons (display only)
- Can fade after 15–20 years
- Less structurally rigid than fiber cement
- Not paintable if you want to change color later
tags: vinyl cosmetic aging small medium
James Hardie fiber cement — the premium choice
Brand: James Hardie HardiePlank
basePrice (declared)
$18,000
Σ(lineItems) (computed)
$18,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| James Hardie HardiePlank (2,000 sq ft)source: https://www.jameshardie.com/products/hardieplank-lap-siding | equipment | $7,500 |
| ColorPlus Factory Paint Finish | equipment | $2,000 |
| HardieWrap Housewrap | equipment | $1,200 |
| Trim & Accessories (HardieTrim) | equipment | $2,000 |
| Old Siding Demo & Disposal (12 hrs) | labor | $1,500 |
| Fiber Cement Installation Labor (38 hrs) | labor | $3,800 |
Specs (display only)
- Brand: James Hardie HardiePlank Lap Siding
- Material: Fiber cement (Portland cement + cellulose fiber)
- Warranty: 30-yr product, 15-yr ColorPlus finish
- Fire Rating: Non-combustible (Class A fire rating)
- Termite: Termite-resistant
Tier add-ons
| add-on | price |
|---|---|
foam_wrap — 1" Rigid Foam Insulation BoardR-6 continuous insulation under siding | $2,000 |
hardie_soffit — Hardie Soffit & Fascia ReplacementMatch new siding with rot-proof soffit and fascia | $3,000 |
Pros (display only)
- James Hardie — #1 fiber cement brand in the US
- Non-combustible — lower homeowner insurance premiums
- Termite-proof and rot-proof
- ColorPlus factory paint finish lasts 15+ years without repainting
- Can be painted any color when time to refresh
Cons (display only)
- Heavier than vinyl — requires more labor to install
- Must be primed and painted on cuts
- More expensive than vinyl
tags: fiber_cement eng_wood medium large
Premium siding + insulation system — maximum performance
Brand: James Hardie Reveal Panel / LP SmartSide
basePrice (declared)
$30,000
Σ(lineItems) (computed)
$30,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Hardie Panel or LP SmartSide (2,000 sq ft)source: https://lpcorp.com/products/smartside | equipment | $12,000 |
| 1" Continuous Rigid Foam Insulation | equipment | $4,000 |
| Premium Air/Moisture Barrier (Huber ZIP System)source: https://www.huberwood.com/zip-system/ | equipment | $2,000 |
| Trim, Corner Boards & Architectural Details (35 hrs) | labor | $3,500 |
| Old Siding Demo, Sheathing Inspection & Repairs (20 hrs) | labor | $2,000 |
| Premium Installation Labor (65 hrs) | labor | $6,500 |
Specs (display only)
- Brand: James Hardie Architectural Collection or LP SmartSide Strand
- Insulation: 1" continuous rigid foam (R-6) + air/moisture barrier
- Warranty: 30-yr product, 5-yr labor
- Style: Board & batten, deep shadow lines, premium trim
- Wall R-Value Improvement: +R-6 over entire envelope
Tier add-ons
| add-on | price |
|---|---|
exterior_repaint — Full Exterior RepaintCustom color match + 5-year exterior paint warranty | $4,000 |
window_flashing — Full Window Re-FlashingReplace all window flashing during siding project | $2,000 |
Pros (display only)
- Complete wall system — insulation + weather barrier + premium cladding
- Architectural-grade panels — modern design statement
- Significant energy efficiency improvement
- LP SmartSide — 50-year limited warranty, highest impact resistance
- Custom color palette with Sherwin-Williams ColorPlus
Cons (display only)
- Highest material and labor cost
- Longer project timeline — 1–2 weeks for full installation
- Architectural panels require precise layout planning
tags: real_wood metal stucco insulated large xl
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | siding_type ∈ { "vinyl" } |
good | 2 | current_condition ∈ { "cosmetic", "aging" } |
good | 1 | home_size ∈ { "small" } |
better | 4 | siding_type ∈ { "fiber_cement" } |
better | 2 | home_size ∈ { "medium", "large" } |
better | 1 | current_condition ∈ { "damaged" } |
best | 3 | siding_type ∈ { "real_wood", "metal", "stucco" } |
best | 2 | insulation_wrap ∈ { "yes_premium" } |
best | 2 | current_condition ∈ { "rotted" } |
best | 1 | home_size ∈ { "xl" } |
Final price formula (this vertical)
// computeTierPricing(siding-replacement, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $400 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
siding_type=vinyl— "Vinyl siding — most popular, low maintenance"home_size=small— "Under 1,500 sq ft siding"current_condition=cosmetic— "Just needs a fresh look — still structurally sound"insulation_wrap=no— "No — standard housewrap only"style=traditional_lap— "Traditional horizontal lap siding"
Σ(tier.lineItems) = $18,000 Σ(answer priceDeltas) = $0 permits = $400 installerCost = $18,400 platformFee (5%) = $920 customerTotal = $19,320
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- James Hardie HardiePlank — https://www.jameshardie.com/products/hardieplank-lap-siding
- LP SmartSide — https://lpcorp.com/products/smartside
- Hardie Board Siding Cost 2025 (RemodelingCalculator) — https://www.remodelingcalculator.org/hardie-siding-prices/
- James Hardie Siding Cost Guide — https://www.jameshardie.com/blog/siding-project-planning/how-much-does-siding-replacement-cost/
Source file: src/lib/flow-engine/verticals/siding-replacement.ts · run the live flow →
⚡Generator Installation slug:generator-installation
Get a transparent estimate for standby generator installation
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$7,500 – $18,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Electrical and gas permits required. Utility notification required for standby generators. (estimate: $300)
labor note: Labor includes electrical, gas connection, pad, and load calculation.
timeline: Installation typically 1–2 days once unit is delivered. Lead time varies: 2–6 weeks for equipment.
installer note: Your installer will perform a load calculation to confirm proper sizing for your home before ordering.
Photo prompts
- Photo of your electrical panel with the door open — show the breaker layout and main breaker amp rating for transfer switch planning
- Photo of the proposed generator location outdoors — show the area next to the house with at least 5 feet clearance from windows, doors, and vents
Questionnaire (5 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/generator-installation.ts.
What type of generator are you looking for?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
portable | Portable generator (manual setup during outage) |
|
standby_partial | Standby — essential circuits only (partial transfer switch) |
|
standby_whole | Standby — whole-home automatic (auto-starts in seconds) |
|
What do you need to keep running during an outage?
Helps size the generator correctly.
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
lights_outlets | Lights and outlets (essential) | no direct price effect |
refrigerator | Refrigerator/freezer | no direct price effect |
hvac | HVAC (heating & cooling) |
|
sump_pump | Sump pump | no direct price effect |
medical | Medical equipment (CPAP, oxygen, etc.) |
|
well_pump | Well pump |
|
ev_charging | EV charger |
|
whole_house | Everything — full house power |
|
What fuel do you want the generator to run on?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
natural_gas | Natural gas (permanent line, never runs out) |
|
propane | Propane (if no natural gas available) |
|
dual_fuel | Dual fuel (gas + propane backup) |
|
gasoline | Gasoline (portable only) |
|
How large is your home?
Why we ask: Home square footage sizes the system load — drives both equipment capacity and labor hours.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
under_2000 | Under 2,000 sq ft |
|
2000_3000 | 2,000–3,000 sq ft |
|
over_3000 | Over 3,000 sq ft |
|
How often does your area lose power?
Why we ask: Age of the structure flags conditions that change scope (older wiring, lead, asbestos era, code upgrades).
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
rare | Rarely (less than once a year) |
|
occasional | Occasionally (a few times a year) |
|
frequent | Frequently (monthly or storm-prone area) |
|
medical_dependent | Critical — I or a family member depend on power |
|
Tiers (3)
Essential backup — lights, fridge, sump pump
Brand: Generac 10kW / Kohler 12RES
basePrice (declared)
$7,500
Σ(lineItems) (computed)
$7,500
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Generac Guardian 10kW Generatorsource: https://www.generac.com/residential-products/standby-generators | equipment | $3,800 |
| 16-Circuit Manual Transfer Switchsource: https://www.generac.com/residential-products/transfer-switches | equipment | $800 |
| Installation Labor — electrician + gas fitter (~8 hrs total) | labor | $2,000 |
| Concrete Pad (pre-formed 3' × 5' pad)source: https://www.generac.com/residential-products/accessories/concrete-pads | equipment | $400 |
| Permit & Utility Notification (~2 hrs admin) | labor | $500 |
Specs (display only)
- Brand: Generac Guardian 10kW (G0071720)
- Fuel: Natural gas or propane
- Auto-Start: Yes — starts automatically in 10 seconds
- Transfer: 16-circuit transfer switch
- Warranty: 5-yr limited
- Noise Level: 66 dB
Pros (display only)
- Covers essential circuits — lights, fridge, outlets, sump pump
- Auto-starts within 10 seconds of power loss
- Generac — #1 home generator brand in America
- Most affordable standby option
- Natural gas — never runs out of fuel
Cons (display only)
- 10kW won't run HVAC and everything else simultaneously
- 16-circuit limit — requires priority selection
- Louder than premium models
tags: standby partial nat_gas propane
Whole-home protection for most households
Brand: Generac 18kW / Kohler 20RCL
basePrice (declared)
$12,000
Σ(lineItems) (computed)
$12,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Generac Guardian 18kW Generatorsource: https://www.generac.com/residential-products/standby-generators/gaseous/18kw-standby-generator-wifi-enabled-7226/ | equipment | $5,800 |
| 200A Automatic Transfer Switch (Generac RTSC200A3)source: https://www.generac.com/residential-products/transfer-switches | equipment | $1,500 |
| Installation Labor — electrician + gas (~10 hrs total) | labor | $2,800 |
| Concrete Pad + Gravel Base (pre-formed 3' × 5')source: https://www.generac.com/residential-products/accessories/concrete-pads | equipment | $550 |
| Gas Line — up to 60 ft from meter (~4 hrs gas fitter) | labor | $850 |
| Permit & Utility Paperwork (~2 hrs admin) | labor | $500 |
Specs (display only)
- Brand: Generac Guardian 18kW (G0071730) or Kohler 20RCL
- Fuel: Natural gas or propane
- Auto-Start: Yes — automatic transfer in <10 seconds
- Transfer: 200A whole-house automatic transfer switch
- Warranty: 5-yr Generac, 5-yr Kohler
- Noise Level: 63 dB
Tier add-ons
| add-on | price |
|---|---|
mobile_link — Mobile Link Remote Monitor UpgradeLTE-based monitoring (if WiFi not reliable at generator) | $150 |
maintenance_plan — Annual Maintenance Plan (3 years)Oil change, spark plug, filter + inspection | $750 |
Pros (display only)
- Handles whole-home load for most 2,000–3,000 sq ft homes
- 200A transfer switch — covers everything without manual circuit selection
- Mobile Link WiFi monitoring — check status from anywhere
- Weekly self-test runs automatically
- Qualifies for some homeowner insurance discounts
Cons (display only)
- May short-cycle HVAC on very large homes or simultaneous heavy loads
- Higher cost than essential-circuits tier
tags: standby whole_home nat_gas propane medium_home
Ultra-quiet whole-home generator — industrial reliability
Brand: Kohler 24RCLA / Briggs & Stratton 26000
basePrice (declared)
$18,000
Σ(lineItems) (computed)
$18,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Kohler 24RCLA or Cummins RS20A Generatorsource: https://www.kohlerpower.com/residential/ | equipment | $8,500 |
| 200A Automatic Transfer Switch (aluminum enclosure)source: https://www.kohlerpower.com/residential/product/transfer-switches | equipment | $2,000 |
| Installation Labor — master electrician + gas (~14 hrs total) | labor | $4,000 |
| Concrete Pad (engineered pour, 4' × 6')source: https://www.kohlerpower.com/residential/product/accessories/pads | equipment | $750 |
| Gas Line Sizing & Upgrade — up to 60 ft, larger diameter pipe (~5 hrs gas fitter) | labor | $1,500 |
| Permit, Load Calculation & Utility Paperwork (~3 hrs admin) | labor | $750 |
| System Commissioning & Testing (~2 hrs technician) | labor | $500 |
Specs (display only)
- Brand: Kohler 24RCLA or Cummins RS Series 20kW
- Fuel: Natural gas
- Auto-Start: Yes — <10 seconds
- Transfer: 200A aluminum automatic transfer switch
- Warranty: 5-yr standard / 7-yr Cummins
- Noise Level: 62 dB (quietest in class)
Tier add-ons
| add-on | price |
|---|---|
smart_load — Kohler Decision-Maker Load ControlIntelligent load shedding — prevents overload automatically | $1,200 |
battery_integration — Battery Backup Integration PrepPre-wire for future Tesla Powerwall or Generac PWRcell | $2,000 |
Pros (display only)
- Handles large homes and all major loads simultaneously
- Quietest operation — neighbors won't know it's running
- Kohler and Cummins — built for decades of commercial-grade reliability
- 7-year Cummins warranty option — best available
- Advanced load management — prioritizes critical loads automatically
Cons (display only)
- Highest upfront cost
- Requires larger gas meter/line for 24kW+ models
- Professional-only service required
tags: standby whole_home nat_gas large_home critical
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | generator_type ∈ { "standby_partial" } |
good | 2 | outage_frequency ∈ { "rare", "occasional" } |
good | 1 | home_sqft ∈ { "under_2000" } |
better | 3 | generator_type ∈ { "standby_whole" } |
better | 2 | backup_needs ∈ { "hvac" } |
better | 2 | outage_frequency ∈ { "frequent" } |
better | 1 | home_sqft ∈ { "2000_3000" } |
best | 4 | outage_frequency ∈ { "medical_dependent" } |
best | 3 | backup_needs ∈ { "whole_house" } |
best | 2 | home_sqft ∈ { "over_3000" } |
best | 1 | backup_needs ∈ { "medical" } |
Final price formula (this vertical)
// computeTierPricing(generator-installation, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $300 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
generator_type=portable— "Portable generator (manual setup during outage)"backup_needs=lights_outlets— "Lights and outlets (essential)"fuel_type=natural_gas— "Natural gas (permanent line, never runs out)"home_sqft=under_2000— "Under 2,000 sq ft"outage_frequency=rare— "Rarely (less than once a year)"
Σ(tier.lineItems) = $12,000 Σ(answer priceDeltas) = $0 permits = $300 installerCost = $12,300 platformFee (5%) = $615 customerTotal = $12,915
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- Generac Residential Standby Generators — https://www.generac.com/residential-products/standby-generators
- Kohler Residential Generators — https://www.kohlerpower.com/residential/
- Generac Generator Cost Guide 2025 — https://backupgenerator.guide/blog/generac-generator-cost
- Generac 18kW Guardian (Home Depot) — https://www.homedepot.com/p/315449036
Source file: src/lib/flow-engine/verticals/generator-installation.ts · run the live flow →
🪵Flooring Installation slug:flooring-installation
Get a transparent estimate for new flooring throughout your home
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$5,800 – $12,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
No permits required for flooring installation.
labor note: Pricing shown is per ~1,000 sq ft installed. Adjust for your actual square footage.
timeline: LVP/laminate: 1–3 days. Engineered hardwood: 2–4 days. Solid hardwood: 3–5 days + finish dry time.
installer note: Your installer will measure exact square footage and assess subfloor condition before finalizing pricing.
Photo prompts
- Photo of each room to be floored — show the current flooring material, room size (stand in a corner and shoot diagonally), and any transitions to other rooms
Questionnaire (6 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/flooring-installation.ts.
What type of flooring are you installing?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
lvp | Luxury vinyl plank (LVP/LVT) — waterproof, durable |
|
hardwood_solid | Solid hardwood — classic, can be refinished |
|
hardwood_engineered | Engineered hardwood — more stable than solid |
|
laminate | Laminate — wood-look at lower cost |
|
tile_ceramic | Ceramic or porcelain tile |
|
carpet | Carpet — bedrooms and living areas |
|
How many square feet are you flooring?
Why we ask: Area to be serviced — primary multiplier for material and labor.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
under_500 | Under 500 sq ft (1–2 rooms) |
|
500_1000 | 500–1,000 sq ft |
|
1000_1500 | 1,000–1,500 sq ft |
|
over_1500 | Over 1,500 sq ft (most of the home) |
|
What's the current floor underneath?
Why we ask: Existing-condition signal — determines whether removal, prep, or remediation line items kick in.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
subfloor | Bare subfloor / new construction | no direct price effect |
vinyl | Old vinyl / linoleum |
|
carpet | Existing carpet to remove |
|
hardwood | Existing hardwood (refinish or install over) |
|
tile | Existing tile (may need to demo) |
|
Which rooms are you flooring?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
living_dining | Living / dining room | no direct price effect |
bedrooms | Bedrooms | no direct price effect |
kitchen | Kitchen | no direct price effect |
bathrooms | Bathrooms | no direct price effect |
basement | Basement |
|
stairs | Stairs / stair landing | no direct price effect |
Is this installation above, on, or below grade?
Relevant for hardwood and some LVP installations.
branch Hidden when flooring_type ∈ { "hardwood_solid", "hardwood_engineered", "lvp" }
Why we ask: Material/finish selection — primary cost driver inside the tier ladder.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
above | Above grade (2nd floor or higher) | no direct price effect |
on_grade | On grade (main floor / slab) | no direct price effect |
below_grade | Below grade (basement) |
|
What wood species or look do you prefer?
branch Hidden when flooring_type ∈ { "hardwood_solid", "hardwood_engineered" }
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
oak | Oak (most popular — natural grain, very durable) |
|
maple | Maple (light, contemporary look) |
|
hickory | Hickory (dramatic grain, very hard) |
|
walnut | Walnut (rich, dark, premium) |
|
white_oak | White oak (trending — light with gray undertones) |
|
Tiers (3)
Durable, waterproof LVP — best value in flooring
Brand: LifeProof / CoreTec Essential
basePrice (declared)
$5,800
Σ(lineItems) (computed)
$5,800
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| LifeProof / COREtec LVP (supply, 1,000 sq ft @ $2.75/sqft)source: https://www.flooranddecor.com/lvp/ | equipment | $2,750 |
| Underlayment (if not pre-attached)source: https://www.flooranddecor.com/underlayment/ | equipment | $500 |
| Old Floor Removal & Disposal (~4 hrs @ $75/hr, 500 sqft) | labor | $750 |
| Installation Labor (~8 hrs @ $90/hr, 1,000 sqft @ $1.80/sqft) | labor | $1,800 |
Specs (display only)
- Material: LifeProof 12mil wear layer LVP or CoreTec Essential
- Thickness: 6mm
- Wear Layer: 12 mil
- Waterproof: Yes — 100% waterproof
- Warranty: Limited lifetime residential
Pros (display only)
- 100% waterproof — safe for kitchens, bathrooms, basements
- Click-lock installation — fast and clean
- Handles pets, kids, heavy traffic
- Softer underfoot than tile
- Wide selection of realistic wood-look patterns
Cons (display only)
- Cannot be sanded/refinished like hardwood
- May feel hollow underfoot compared to solid wood
- Lower-mil wear layer scratches more easily than premium
tags: lvp laminate carpet small medium
Engineered hardwood — real wood look and feel
Brand: Shaw Repel / Mohawk RevWood
basePrice (declared)
$8,500
Σ(lineItems) (computed)
$8,500
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Shaw Repel Engineered Hardwood (1,000 sq ft @ $4.50/sqft)source: https://www.shawfloors.com/flooring/hardwood | equipment | $4,500 |
| Underlayment & Vapor Barrier | equipment | $600 |
| Old Floor Removal & Disposal (~5 hrs @ $80/hr) | labor | $1,000 |
| Installation Labor (~10 hrs @ $100/hr, floating or glue-down) | labor | $2,000 |
| Transitions, Base Shoe & Moldings (~2 hrs @ $80/hr) | labor | $400 |
Specs (display only)
- Material: Shaw Repel Engineered Hardwood or Mohawk RevWood Premier
- Thickness: 3/8" to 1/2" engineered (7-ply core)
- Wear Layer: 2mm hardwood veneer
- Waterproof: Water-resistant (Shaw ScufResist finish)
- Warranty: 25-yr residential finish
Tier add-ons
| add-on | price |
|---|---|
stairs — Stair Nose & Stair InstallationMatch flooring on staircase treads and risers | $800 |
radiant_prep — Radiant Heat Compatibility InspectionConfirm subfloor temp requirements are met | $200 |
Pros (display only)
- Real hardwood top layer — not a photo print
- Wide plank (7.5–9.5") — modern, spacious feel
- Can be lightly sanded and refinished once
- Works on concrete slab and radiant heat
- 25-year finish warranty
Cons (display only)
- More expensive than LVP
- Still not as durable as solid hardwood for sanding
- Not ideal for fully wet areas (direct water exposure)
tags: engineered hardwood medium large
Solid hardwood — a lifetime floor
Brand: Carlisle Wide Plank / Boen / Mirage
basePrice (declared)
$12,000
Σ(lineItems) (computed)
$12,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Mirage / Boen Solid Hardwood (1,000 sq ft)source: https://www.miragefloors.com | equipment | $6,500 |
| Old Floor Demo & Disposal (~6 hrs @ $80/hr) | labor | $1,200 |
| Subfloor Leveling & Prep (~4 hrs @ $100/hr) | labor | $800 |
| Installation Labor (~12 hrs @ $100/hr, nail-down, 1,000 sqft) | labor | $2,000 |
| Sanding & 3-Coat Finish (~8 hrs @ $100/hr, if unfinished) | labor | $1,200 |
| Transitions, Base & Shoe Molding (~1.5 hrs @ $80/hr) | labor | $300 |
Specs (display only)
- Material: Mirage Hardwood or Boen 5" white oak solid hardwood
- Thickness: 3/4" solid
- Species: White oak, walnut, or hickory
- Finish: Rubio Monocoat oil or pre-finished aluminum oxide
- Warranty: 50-yr finish, lifetime structural
Tier add-ons
| add-on | price |
|---|---|
custom_stain — Custom Stain Color MatchingColor sample boards and custom stain blend | $500 |
inlay_border — Decorative Floor Inlay or BorderCustom walnut or maple inlay design | $2,000 |
Pros (display only)
- Can be sanded and refinished 5–7 times — a truly forever floor
- Adds the most home value of any flooring type
- Unique grain patterns in each board — real, not simulated
- Mirage and Boen — premium quality with tight tolerances
- Increases home appraisal value
Cons (display only)
- Most expensive option
- Not suitable for basements or over radiant heat without moisture barriers
- Needs acclimation period before installation (3–7 days)
tags: hardwood large xl
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | flooring_type ∈ { "lvp", "laminate", "carpet" } |
good | 2 | square_footage ∈ { "under_500" } |
good | 2 | rooms_type ∈ { "basement" } |
better | 3 | flooring_type ∈ { "hardwood_engineered" } |
better | 2 | square_footage ∈ { "500_1000", "1000_1500" } |
better | 1 | grade_level ∈ { "on_grade", "below_grade" } |
best | 4 | flooring_type ∈ { "hardwood_solid" } |
best | 2 | wood_species ∈ { "walnut", "white_oak" } |
best | 1 | square_footage ∈ { "over_1500" } |
Final price formula (this vertical)
// computeTierPricing(flooring-installation, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
flooring_type=lvp— "Luxury vinyl plank (LVP/LVT) — waterproof, durable"square_footage=under_500— "Under 500 sq ft (1–2 rooms)"existing_floor=subfloor— "Bare subfloor / new construction"rooms_type=living_dining— "Living / dining room"grade_level=above— "Above grade (2nd floor or higher)"wood_species=oak— "Oak (most popular — natural grain, very durable)"
Σ(tier.lineItems) = $8,500 Σ(answer priceDeltas) = $0 permits = $0 installerCost = $8,500 platformFee (5%) = $425 customerTotal = $8,925
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- Shaw Repel Engineered Hardwood — https://www.shawfloors.com/flooring/hardwood
- Mirage Hardwood Floors — https://www.miragefloors.com
- Floor & Decor — LVP — https://www.flooranddecor.com/lvp/
Source file: src/lib/flow-engine/verticals/flooring-installation.ts · run the live flow →
🪵Deck Building slug:deck-building
Get a transparent estimate for your new deck or outdoor living space
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$9,000 – $30,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Deck permits required in most jurisdictions. Elevated decks may need structural engineering. (estimate: $400)
labor note: Pricing based on ~300 sq ft deck. Request custom quote for your exact size.
timeline: Standard deck: 3–7 days. Large or complex: 1–3 weeks.
installer note: Your contractor will confirm footing requirements, setback rules, and HOA compliance before building.
Photo prompts
- Photo of the area where the deck will go — show the back of your house, the ground surface, any slope, and where the deck will attach to the house
Questionnaire (6 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/deck-building.ts.
How large do you want the deck?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Small — up to 200 sq ft (12×16 or similar) |
|
medium | Medium — 200–400 sq ft |
|
large | Large — 400–600 sq ft |
|
xl | Multi-level or over 600 sq ft |
|
What decking material do you want?
Why we ask: Material choice is the largest single cost driver inside the tier ladder — equipment and labor both scale.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
pressure_treated | Pressure-treated wood (ACQ) — most affordable |
|
cedar_redwood | Cedar or redwood — natural beauty, naturally rot-resistant |
|
composite | Composite decking (Trex, TimberTech, Fiberon) |
|
pvc | PVC / all-plastic (Azek, Fiberon Paramount) |
|
hardwood_ipe | Hardwood (Ipe, Cumaru) — extremely durable |
|
How high off the ground will the deck be?
Elevated decks require more structural work and may need engineering.
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
ground_level | Ground level (less than 12" off ground) |
|
low | Low — 1–3 feet off the ground |
|
mid | Mid — 4–8 feet (typical 2nd story walkout) |
|
high | High — over 8 feet |
|
What features do you want on the deck?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
railing | Railing system | no direct price effect |
stairs | Stairs to yard | no direct price effect |
pergola | Pergola or shade structure |
|
built_in_bench | Built-in bench seating |
|
outdoor_lighting | Deck lighting (post caps, step lights) |
|
cable_railing | Cable or glass railing (premium look) |
|
Do you have a composite brand preference?
branch Hidden when material ∈ { "composite", "pvc" }
Why we ask: Equipment identity — drives the equipment line item and warranty.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
trex_enhance | Trex Enhance Basic — entry composite |
|
trex_select | Trex Select — mid-range, solid colors |
|
trex_transcend | Trex Transcend — premium, looks most like wood |
|
timbertech_azek | TimberTech AZEK — quietest, coolest surface temp |
|
fiberon | Fiberon Paramount (PVC) — fully cellular, most durable |
|
When do you want the deck finished?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
asap | Before summer / as soon as possible |
|
couple_months | Within a couple months | no direct price effect |
fall_spring | Fall or next spring is fine | no direct price effect |
Tiers (3)
Solid pressure-treated deck — durable and affordable
Brand: ACQ Pressure-Treated Pine
basePrice (declared)
$9,000
Σ(lineItems) (computed)
$9,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Pressure-Treated Decking (300 sq ft) | equipment | $2,500 |
| PT Framing, Joists & Ledger | equipment | $1,800 |
| Concrete Piers & Footings | equipment | $1,200 |
| PT Wood Railing System | equipment | $1,000 |
| Stairs (one set) | equipment | $800 |
| Framing, Decking & Finishing Labor (17 hrs) | labor | $1,700 |
Specs (display only)
- Decking: Pressure-treated Southern yellow pine (ACQ)
- Framing: PT lumber on concrete piers
- Railing: PT wood railing with metal balusters
- Warranty: 1-yr labor (wood requires regular sealing)
- Lifespan: 15–25 years with maintenance
Pros (display only)
- Most affordable option
- Can be stained or painted any color
- Widely available materials and contractors
- Solid, proven framing system
Cons (display only)
- Requires annual sealing/staining to prevent gray weathering
- Can warp, crack, or splinter over time without maintenance
- Not as smooth underfoot as composite
tags: pt_wood small medium ground
Composite deck — beautiful and virtually maintenance-free
Brand: Trex Transcend / TimberTech
basePrice (declared)
$16,000
Σ(lineItems) (computed)
$16,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Trex Transcend Composite Decking (300 sq ft)source: https://www.trex.com/trex-products/decking/transcend/ | equipment | $6,500 |
| Trex Signature Railing Systemsource: https://www.trex.com/trex-products/railing/ | equipment | $3,000 |
| PT Framing & Footings | equipment | $2,000 |
| Hidden Fastener System (Camo or Trex Hideaway) | equipment | $600 |
| Composite Stairs | equipment | $1,200 |
| Framing, Decking & Composite Install Labor (27 hrs) | labor | $2,700 |
Specs (display only)
- Decking: Trex Transcend Lineage or TimberTech Pro Legacy
- Framing: Pressure-treated with hidden fasteners
- Railing: Trex Signature aluminum posts + composite top rail
- Warranty: 25-yr fade & stain warranty (Trex)
- Lifespan: 25–30 years, no sealing required
Tier add-ons
| add-on | price |
|---|---|
lighting_pkg — Trex Deck Lighting PackagePost cap lights + step lights (full deck) | $1,200 |
pergola — Attached Pergola (12×16)Cedar or aluminum pergola with shade fabric | $5,000 |
Pros (display only)
- Zero maintenance — no sealing, staining, or sanding ever
- Composite stays splinter-free — better barefoot experience
- 25-year fade and stain warranty from Trex
- Hidden fasteners — clean look, no visible screws
- Much more color and texture options than pressure-treated
Cons (display only)
- Higher material cost than pressure-treated
- Can get hot in direct summer sun (premium brands less so)
tags: composite pvc medium large
Premium outdoor living — the backyard you've always wanted
Brand: AZEK TimberTech / Ipe Hardwood
basePrice (declared)
$30,000
Σ(lineItems) (computed)
$30,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| AZEK Harvest Collection or Ipe (300 sq ft)source: https://www.azek.com/products/decking | equipment | $10,000 |
| Stainless Cable Railing System | equipment | $4,500 |
| Steel or Heavy PT Framing | equipment | $3,500 |
| Concrete Footings (engineered) | equipment | $2,000 |
| Attached Pergola with Shade Sails (materials + 35 hrs) | equipment | $6,000 |
| Deck Lighting (full system) | equipment | $1,500 |
| Premium Installation Labor & Project Management (25 hrs) | labor | $2,500 |
Specs (display only)
- Decking: AZEK TimberTech AZEK or Ipe hardwood
- Framing: Steel or PT with concealed hardware
- Railing: Cable railing (stainless steel) or glass panels
- Warranty: 30-yr AZEK structural warranty + fade
- Lifespan: 30–50+ years (Ipe is nearly indestructible)
Tier add-ons
| add-on | price |
|---|---|
outdoor_kitchen — Outdoor Kitchen Built-InGrill station, mini fridge, granite counter | $8,000 |
fire_pit — Gas Fire Pit TableIntegrated propane fire pit, glass burner | $3,500 |
Pros (display only)
- AZEK is coolest-to-touch composite available
- Ipe hardwood — used on commercial boardwalks, lasts 50+ years
- Cable railing — stunning, unobstructed views
- Premium look commands significant home value increase
- Fully integrated lighting, pergola, and outdoor kitchen options
Cons (display only)
- Highest material and labor cost
- Ipe must be pre-drilled — specialized installation
- Structural engineering may be required for high decks
tags: hardwood_deck composite large xl cable_rail
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | material ∈ { "pressure_treated" } |
good | 2 | deck_size ∈ { "small" } |
good | 1 | deck_height ∈ { "ground_level" } |
better | 3 | material ∈ { "composite" } |
better | 2 | deck_size ∈ { "medium", "large" } |
better | 1 | composite_brand ∈ { "trex_transcend", "timbertech_azek" } |
best | 4 | material ∈ { "hardwood_ipe" } |
best | 3 | material ∈ { "pvc" } |
best | 2 | deck_size ∈ { "xl" } |
best | 2 | features ∈ { "cable_railing", "pergola" } |
Final price formula (this vertical)
// computeTierPricing(deck-building, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $400 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
deck_size=small— "Small — up to 200 sq ft (12×16 or similar)"material=pressure_treated— "Pressure-treated wood (ACQ) — most affordable"deck_height=ground_level— "Ground level (less than 12" off ground)"features=railing— "Railing system"composite_brand=trex_enhance— "Trex Enhance Basic — entry composite"timeline=asap— "Before summer / as soon as possible"
Σ(tier.lineItems) = $16,000 Σ(answer priceDeltas) = $0 permits = $400 installerCost = $16,400 platformFee (5%) = $820 customerTotal = $17,220
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- Trex Transcend Decking — https://www.trex.com/trex-products/decking/transcend/
- AZEK TimberTech Decking — https://www.azek.com/products/decking
- TimberTech Pro Legacy — https://www.timbertech.com/decking/
- Fiberon Paramount PVC — https://www.fiberondecking.com/products/paramount/
- HomeGuide Deck Building Cost — https://homeguide.com/costs/cost-to-build-a-deck
Source file: src/lib/flow-engine/verticals/deck-building.ts · run the live flow →
🏠Garage Door Replacement slug:garage-door-replacement
Get a transparent estimate for your new garage door
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$1,800 – $4,800 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Garage door replacement typically does not require a permit unless structural changes are made.
labor note: Includes removal of old door and all hardware.
timeline: Standard doors: same-day or next-day installation. Custom/wood: 4–8 week lead time.
installer note: Your installer will verify the opening dimensions and spring requirements before installation.
Photo prompts
- Photo of your current garage door from the driveway — show the full door, frame, and any visible damage or weathering
- Photo from inside the garage looking at the door — show the tracks, springs, opener (if any), and ceiling clearance above the door
Questionnaire (5 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/garage-door-replacement.ts.
What size garage door(s) do you have?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
single_8x7 | Single car — 8×7 ft |
|
single_9x7 | Single car — 9×7 ft (most common) |
|
double_16x7 | Double car — 16×7 ft |
|
double_18x7 | Double car — 18×7 ft (wide) |
|
two_singles | Two single doors |
|
custom | Custom size or carriage house |
|
What material do you want?
Why we ask: Material choice is the largest single cost driver inside the tier ladder — equipment and labor both scale.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
steel_standard | Steel — standard (most popular) |
|
steel_insulated | Steel — insulated (better energy & noise) |
|
carriage_steel | Carriage house style — steel with windows |
|
carriage_wood | Real wood carriage house |
|
aluminum_glass | Aluminum / full-view glass panels (modern) |
|
How important is insulation to you?
Insulated doors are warmer in winter and quieter — important if you have living space above the garage.
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
not_important | Not important — standalone detached garage |
|
moderate | Somewhat — attached garage but not conditioned space |
|
important | Very important — living space above or adjacent |
|
Are you replacing the garage door opener too?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
no | No — keeping my current opener | no direct price effect |
standard | Yes — standard chain drive (LiftMaster 8065) |
|
smart | Yes — smart belt drive with MyQ app (LiftMaster 87504-267) |
|
Why are you replacing the door?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
cosmetic | Want a new look / curb appeal update |
|
damaged | Damaged — dented, broken panels |
|
old_noisy | Old, noisy, or hard to operate |
|
new_home | New home purchase / renovation |
|
energy | Better insulation / energy efficiency |
|
Tiers (3)
Reliable steel door — practical and durable
Brand: Clopay 4050 / CHI 2250
basePrice (declared)
$1,800
Σ(lineItems) (computed)
$1,800
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Clopay 4050 or CHI 2250 16×7 Doorsource: https://www.clopay.com/garage-doors | equipment | $950 |
| New Hardware (springs, cables, rollers) | equipment | $350 |
| Door Installation Labor (3 hrs) | labor | $400 |
| Haul Away & Dispose of Old Door (1 hr) | labor | $100 |
Specs (display only)
- Model: Clopay Coiling Steel 4050 or CHI 2250
- Insulation: R-9 (2-layer polyurethane)
- Wind: Rated for standard loads
- Warranty: Limited lifetime on door, 1-yr labor
- Finish: PrePainted steel, 4 color options
Pros (display only)
- Durable and maintenance-free steel
- R-9 insulation — solid for attached garages
- Smooth operation
- Most affordable new door option
- Same-day installation typically available
Cons (display only)
- Limited color and style options
- Steel can dent from impact
- Basic look — not a showpiece
tags: steel insulated no_insulation mid_insulation
Carriage house style — the best curb appeal upgrade
Brand: Clopay Gallery / Wayne Dalton 9700
basePrice (declared)
$2,050
Σ(lineItems) (computed)
$2,050
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Clopay Gallery 16×7 Door with Windowssource: https://www.clopay.com/products/gallery | equipment | $1,200 |
| New Hardware & Spring Upgrade (TorqueMaster) | equipment | $400 |
| Door Installation Labor (2.5 hrs) | labor | $350 |
| Haul Away & Cleanup (0.5 hrs) | labor | $100 |
Specs (display only)
- Model: Clopay Gallery Collection or Wayne Dalton 9700
- Insulation: R-12.9 (ClopayPlus polyurethane)
- Finish: Embossed wood-grain steel, faux window inserts
- Warranty: Limited lifetime door, 2-yr labor
- Colors: 12+ color options + custom paint
Tier add-ons
| add-on | price |
|---|---|
smart_opener — LiftMaster 87504 Smart Opener w/ CameraBelt drive, whisper-quiet, built-in camera, MyQ app | $550 |
keypad — Exterior Keypad + Battery BackupLiftMaster 877MAX + 485LM battery | $120 |
Pros (display only)
- Looks like real wood without the maintenance
- R-12.9 insulation — better energy performance
- Carriage house design dramatically improves curb appeal
- Faux windows add character and natural light
- Significant home value increase vs. builder-grade doors
Cons (display only)
- Higher cost than plain steel
- Still steel — can dent (more costly to repair due to embossed look)
tags: carriage insulated high_insulation cosmetic renovation
Statement door — modern glass or custom real wood
Brand: Clopay Avante / Portes Bourassa Real Wood
basePrice (declared)
$4,800
Σ(lineItems) (computed)
$4,800
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Clopay Avante Glass Door or Custom Woodsource: https://www.clopay.com/products/avante | equipment | $3,000 |
| Premium Hardware & Spring System | equipment | $600 |
| LiftMaster 87504 Smart Belt Drive Openersource: https://www.liftmaster.com/all-products/products/garage-door-openers/ | equipment | $550 |
| Door & Opener Installation Labor (2.5 hrs) | labor | $350 |
| Trim, Weatherseal & Final Adjustment (1.5 hrs) | labor | $200 |
| Haul Away & Cleanup (0.5 hrs) | labor | $100 |
Specs (display only)
- Model: Clopay Avante (aluminum/glass) or custom real wood
- Insulation: N/A for glass (thermal break) / natural for wood
- Finish: Anodized aluminum + tempered glass panels
- Warranty: Limited lifetime (aluminum), 5-yr (wood)
- Style: Modern full-view or classic carriage real wood
Tier add-ons
| add-on | price |
|---|---|
floor_seal — Custom Threshold SealWeathertight seal prevents water and pests under door | $150 |
smart_lock — Garage Door Smart Lock + MonitorAutomatic lock that engages when door closes | $200 |
Pros (display only)
- Full-view glass — unique, modern, increases natural light in garage
- Real wood — no two doors are identical, premium curb appeal
- Significantly increases home resale value
- Paired with smart opener — the complete package
- Custom sizing and finishes available
Cons (display only)
- Glass is full-view — no privacy without frosted options
- Real wood requires annual sealing
- Longest lead time (4–8 weeks for custom)
tags: wood_door modern aluminum_glass
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | material ∈ { "steel_standard", "steel_insulated" } |
good | 2 | current_issue ∈ { "damaged", "old_noisy" } |
good | 1 | insulation ∈ { "not_important" } |
better | 3 | material ∈ { "carriage_steel" } |
better | 2 | current_issue ∈ { "cosmetic", "new_home" } |
better | 1 | insulation ∈ { "important" } |
best | 4 | material ∈ { "aluminum_glass", "carriage_wood" } |
best | 2 | opener ∈ { "smart" } |
best | 1 | door_size ∈ { "custom", "two_singles" } |
Final price formula (this vertical)
// computeTierPricing(garage-door-replacement, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
door_size=single_8x7— "Single car — 8×7 ft"material=steel_standard— "Steel — standard (most popular)"insulation=not_important— "Not important — standalone detached garage"opener=no— "No — keeping my current opener"current_issue=cosmetic— "Want a new look / curb appeal update"
Σ(tier.lineItems) = $2,050 Σ(answer priceDeltas) = $0 permits = $0 installerCost = $2,050 platformFee (5%) = $103 customerTotal = $2,153
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- Clopay Garage Doors — https://www.clopay.com/garage-doors
- Clopay Residential Price Guide — https://www.clopaydoor.com/residential/garage-door-price-guide
- LiftMaster Openers — https://www.liftmaster.com
- A1 Garage Door Replacement Cost 2025 — https://a1garage.com/garage-door-replacement-cost-in-2025/
- GarageDoorGuides Clopay Prices — https://garagedoorguides.com/door-cost/clopay/
Source file: src/lib/flow-engine/verticals/garage-door-replacement.ts · run the live flow →
🔒Home Security System slug:home-security-system
Get a transparent estimate for professional home security installation
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$650 – $5,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Alarm system permits (annual registration) required in many municipalities to avoid false alarm fines. Professional installers handle filing.
labor note: DIY tier includes equipment only. Professional tiers include installation, configuration, and testing.
timeline: DIY: 2–4 hours self-install. Professional wireless: 4–6 hours. Full hardwired system: 1 full day.
installer note: Your security professional will assess all entry points and recommend sensor placement before finalizing the quote.
Questionnaire (6 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/home-security-system.ts.
How large is your home?
Why we ask: Home size drives material and labor quantities for the entire job.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
apartment_condo | Apartment or condo |
|
small_home | Small house — under 1,500 sq ft |
|
medium_home | Medium house — 1,500–3,000 sq ft |
|
large_home | Large house — over 3,000 sq ft |
|
What type of monitoring do you want?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
self_monitor | Self-monitoring only (app alerts, no monthly fee) |
|
professional | 24/7 professional monitoring (police/fire dispatch) |
|
not_sure | Not sure — open to both | no direct price effect |
What type of security system setup do you prefer?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
diy_wireless | DIY wireless (Ring, SimpliSafe — you install it) |
|
pro_installed | Professionally installed wireless |
|
hardwired | Hardwired system (panel + cameras + sensors) |
|
How important are security cameras?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
none | Not a priority — just alarm system |
|
doorbell | Just a video doorbell |
|
basic | A few cameras (front door, garage, backyard) |
|
full_coverage | Full coverage — all entry points + indoor |
|
Do you want the security system integrated with smart home?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
no | No — standalone security system |
|
voice | Yes — Alexa / Google Home voice control |
|
full_integration | Yes — full integration with lights, locks, thermostat |
|
How many doors and windows need sensors?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
few | Minimal — 2–4 main entry points |
|
standard | Standard — 5–10 doors and windows |
|
many | Comprehensive — 10+ (all windows and doors) |
|
Tiers (3)
Reliable DIY-installed wireless system
Brand: Ring Alarm Pro / SimpliSafe
basePrice (declared)
$650
Σ(lineItems) (computed)
$650
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Ring Alarm Pro 8-Piece Kitsource: https://ring.com/products/alarm-pro-base-station | equipment | $250 |
| Ring Video Doorbell Pro 2source: https://ring.com/products/video-doorbell-pro-2 | equipment | $220 |
| 2× Ring Outdoor Cam Plussource: https://ring.com/products/outdoor-camera-plus | equipment | $180 |
Specs (display only)
- System: Ring Alarm Pro 8-piece or SimpliSafe
- Cameras: Ring Video Doorbell + 2 outdoor cams
- Monitoring: $20–$25/month (optional Ring Protect)
- Installation: Self-install (1–3 hours)
- Connectivity: WiFi + cellular backup (Ring Alarm Pro)
Pros (display only)
- No installation labor cost — easy DIY setup
- No contract required
- Ring integrates with Alexa natively
- Ring Alarm Pro has built-in Eero WiFi router
- Expandable — add sensors and cameras anytime
Cons (display only)
- Self-installation means no professional verification
- Monthly monitoring fee for professional dispatch
- App-dependent — can be bypassed if WiFi goes down (without cellular)
tags: diy self_monitor small few_sensors
Professionally installed wireless — complete protection
Brand: Alarm.com / Qolsys IQ Panel 4
basePrice (declared)
$2,000
Σ(lineItems) (computed)
$2,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Qolsys IQ Panel 4 + 8 Sensorssource: https://www.qolsys.com/iq4 | equipment | $800 |
| 4× Alarm.com Camerassource: https://www.alarm.com/partners/dealer-portal | equipment | $600 |
| Professional Installation & Programming (4–5 hrs) | labor | $600 |
Specs (display only)
- System: Qolsys IQ Panel 4 + Alarm.com platform
- Cameras: 4 Alarm.com cameras (door, garage, 2 outdoor)
- Monitoring: $30–$45/month (professional dispatch + cloud video)
- Installation: Professional (3–5 hours)
- Connectivity: Dual-path WiFi + cellular (no single point of failure)
Tier add-ons
| add-on | price |
|---|---|
smart_locks — Schlage Encode Smart Lock (2 doors)Z-Wave locks with keypad + auto-lock | $500 |
smoke_co — Smart Smoke & CO Detectors (3-pack)Monitored by central station | $250 |
Pros (display only)
- Professional installation — everything verified and tested
- Qolsys IQ Panel 4 — one of the most advanced consumer panels
- Alarm.com platform — real-time geo-awareness, smart rules, video analytics
- Works with Z-Wave smart locks and lights
- Professional monitoring includes police, fire, and carbon monoxide dispatch
Cons (display only)
- Monthly monitoring fee required for full features
- Higher upfront cost
- Changing providers requires re-installation of panel
tags: pro_installed pro_monitor medium standard_sensors
Enterprise-grade protection for your home
Brand: Resideo ProSeries / Napco / 2GIG
basePrice (declared)
$5,000
Σ(lineItems) (computed)
$5,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Honeywell Resideo Panel + Full Sensor Packagesource: https://www.resideo.com/us/en/products/security/ | equipment | $1,500 |
| 8× 4K IP Camerassource: https://www.resideo.com/us/en/products/security/ | equipment | $1,200 |
| Network Video Recorder (NVR, 4TB)source: https://www.resideo.com/us/en/products/security/ | equipment | $600 |
| Smart Lock Integration (3 doors) | equipment | $600 |
| Smoke, CO, Flood & Glass Break Sensors | equipment | $600 |
| Professional Installation & Full Programming (7–8 hrs) | labor | $500 |
Specs (display only)
- System: Honeywell Resideo PROA7PLUS + full sensor suite
- Cameras: 8+ 4K cameras with NVR + person detection AI
- Monitoring: $50–$75/month (video verification + dispatch)
- Installation: Professional (full day)
- Video: 4K NVR with 2-week local storage + cloud
Tier add-ons
| add-on | price |
|---|---|
doorbell_4k — 4K Video Doorbell with Face RecognitionIdentifies known faces, alerts on strangers | $300 |
panic_buttons — Wireless Panic Buttons (3)Portable panic buttons for medical or emergency | $100 |
Pros (display only)
- 4K cameras with AI person detection — minimal false alarms
- Local NVR storage — video saved even without internet
- Panel has built-in redundancy — cellular + WiFi + Z-Wave + Zigbee
- Video verification reduces police response times
- Full smart home integration — HVAC, lighting, irrigation, locks
Cons (display only)
- Highest upfront and monthly cost
- Requires professional setup and configuration
- Overkill for small homes
tags: hardwired pro_monitor large many_sensors full_smart
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | system_type ∈ { "diy_wireless" } |
good | 2 | monitoring ∈ { "self_monitor" } |
good | 1 | home_size ∈ { "apartment_condo", "small_home" } |
better | 3 | system_type ∈ { "pro_installed" } |
better | 2 | monitoring ∈ { "professional" } |
better | 1 | home_size ∈ { "medium_home" } |
best | 3 | system_type ∈ { "hardwired" } |
best | 2 | cameras ∈ { "full_coverage" } |
best | 2 | smart_home ∈ { "full_integration" } |
best | 1 | home_size ∈ { "large_home" } |
Final price formula (this vertical)
// computeTierPricing(home-security-system, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Pricing sources cited in code
- Ring Alarm Pro Kit — https://ring.com/products/alarm-pro-base-station
- SimpliSafe Home Security — https://simplisafe.com/home-security
- Qolsys IQ Panel 4 — https://www.qolsys.com/iq4
- Resideo Security Products — https://www.resideo.com/us/en/products/security/
- This Old House — Home Security System Cost — https://www.thisoldhouse.com/home-security/home-security-system-cost
Source file: src/lib/flow-engine/verticals/home-security-system.ts · run the live flow →
🏡Smart Home Setup slug:smart-home-setup
Get a transparent estimate for a professionally integrated smart home
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$1,500 – $30,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
No permits required for smart home device installation unless new electrical circuits are added. (estimate: $0)
timeline: Basic setup: 1 day. Integrated system: 3–5 days. Full Control4: 1–2 weeks.
installer note: A site assessment is required for Control4 and RadioRA 3 installations.
Questionnaire (5 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/smart-home-setup.ts.
What do you want to automate first?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
lighting | Smart lighting | no direct price effect |
thermostat | Smart thermostat | no direct price effect |
security | Locks, cameras, alarms | no direct price effect |
entertainment | AV / entertainment system | no direct price effect |
shades | Motorized shades or blinds | no direct price effect |
whole_home | Full integration — everything works together |
|
What smart home ecosystem do you prefer?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
amazon | Amazon Alexa (Echo) |
|
google | Google Home (Nest) |
|
apple | Apple HomeKit / Siri |
|
no_preference | No preference — recommend the best |
|
control4 | Professional grade (Control4 / Crestron) |
|
How large is your home?
Why we ask: Home size drives material and labor quantities for the entire job.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Under 1,500 sq ft |
|
medium | 1,500–3,000 sq ft |
|
large | 3,000–5,000 sq ft |
|
xl | Over 5,000 sq ft or estate |
|
What's your home WiFi situation?
Smart devices need solid WiFi throughout the home.
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
strong | Strong everywhere — mesh network or recent router | no direct price effect |
ok | OK in most rooms but some dead spots |
|
poor | Poor — single router, lots of dead spots |
|
How tech-savvy are you?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
comfortable | Very comfortable — I'll configure it myself |
|
moderate | Moderate — I can do basics but want it set up right | no direct price effect |
hands_off | Not very — I want it to just work, no fiddling |
|
Tiers (3)
Core smart devices — big convenience upgrade
Brand: Nest / Lutron Caseta / Schlage
basePrice (declared)
$1,500
Σ(lineItems) (computed)
$1,500
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Google Nest Learning Thermostatsource: https://store.google.com/us/product/nest_learning_thermostat | equipment | $250 |
| Lutron Caseta Wireless Kit (6 dimmers)source: https://www.lutron.com/en-US/Products/Pages/StandAloneControls/Caseta/Overview.aspx | equipment | $400 |
| Schlage Encode Smart Locksource: https://www.schlage.com/en/home/smart-locks/encode.html | equipment | $300 |
| Amazon Echo Show 5 Hubsource: https://www.amazon.com/dp/B09B2SBHQK | equipment | $100 |
| Setup & Configuration Labor (4 hrs) | labor | $450 |
Specs (display only)
- Thermostat: Google Nest Learning Thermostat (3rd gen)
- Lighting: Lutron Caseta smart switches (6-room starter)
- Locks: Schlage Encode smart lock (1 door)
- Hub: Google Home or Amazon Echo
- Warranty: Device manufacturer warranties
Pros (display only)
- Massive convenience — control everything from your phone
- Lutron Caseta — most reliable smart switch system on the market
- Nest thermostat pays for itself in ~2 years via energy savings
- Works with Alexa, Google, and Apple HomeKit
- Easy to expand over time
Cons (display only)
- Devices work individually — not deeply integrated
- Different apps for different devices
- Self-install or basic setup only
tags: alexa google apple small medium diy
Integrated smart home — everything works together
Brand: Lutron / Ecobee / Ring / Sonos
basePrice (declared)
$7,000
Σ(lineItems) (computed)
$7,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Lutron RadioRA 3 System (15 devices)source: https://www.lutron.com/en-US/Solutions/Pages/Whole-Home/RadioRA3.aspx | equipment | $1,800 |
| Ecobee SmartThermostat + 3 sensorssource: https://www.ecobee.com/en-us/smart-thermostats/smart-wifi-thermostat-with-voice-control/ | equipment | $300 |
| Ring Alarm Pro + 4 cameras + doorbellsource: https://ring.com/products/alarm-pro-system | equipment | $800 |
| Sonos Era 100 (2 rooms)source: https://www.sonos.com/en-us/shop/era-100 | equipment | $600 |
| Lutron Serena Motorized Shades (4 windows)source: https://www.lutron.com/en-US/Products/Pages/Standalone-Controls/Serena/Overview.aspx | equipment | $1,000 |
| Eero Pro 6E Mesh WiFi (3-pack)source: https://eero.com/shop/eero-pro-6e | equipment | $500 |
| Professional Programming & Integration (16 hrs) | labor | $2,000 |
Specs (display only)
- Platform: Lutron RadioRA 3 (pro-grade Z-Wave)
- Thermostat: Ecobee SmartThermostat Premium
- Lighting: Lutron RadioRA 3 (whole home)
- Security: Ring Alarm Pro + 4 cameras
- Audio: Sonos Era 100 (2-room audio)
- Shades: Lutron Serena motorized shades (2 rooms)
Tier add-ons
| add-on | price |
|---|---|
additional_rooms — Additional Room Audio (Sonos)Per room Sonos Era 100 installation | $500 |
outdoor_audio — Outdoor Audio (Polk Audio Atrium 6)Weatherproof outdoor speakers + Sonos Amp | $1,500 |
Pros (display only)
- Lutron RadioRA 3 — the professional standard for reliable smart lighting
- Ecobee multi-room temperature sensing
- Full Ring security integration
- Sonos + Lutron + Ring all talk to each other via Alexa/Google
- Professional programming — scenes, schedules, geofencing
Cons (display only)
- Requires professional installation for RadioRA 3
- Higher upfront cost
- Monthly cloud fees for Ring monitoring
tags: open medium large hands_off
Professional grade — Control4 whole-home automation
Brand: Control4 / Crestron / Lutron HomeWorks QSX
basePrice (declared)
$30,000
Σ(lineItems) (computed)
$30,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Control4 Controller + Touchpanels (2)source: https://www.control4.com | equipment | $5,000 |
| Lutron HomeWorks QSX Lighting Systemsource: https://www.lutron.com/en-US/Solutions/Pages/Whole-Home/HomeWorks.aspx | equipment | $6,000 |
| 4K AV Distribution (5 rooms)source: https://www.control4.com/products/video | equipment | $5,000 |
| Whole-Home Audio (Triad / Sonos for 8 zones)source: https://triad-speakers.com | equipment | $3,500 |
| Motorized Shades (whole home)source: https://www.lutron.com/en-US/Products/Pages/Standalone-Controls/SerenaShades/Overview.aspx | equipment | $5,000 |
| Professional Installation + Programming (40 hrs) | labor | $5,500 |
Specs (display only)
- Platform: Control4 CA-10 controller + EA-5
- Lighting: Lutron HomeWorks QSX (whole home)
- AV: 4K distribution to all TVs + whole-home audio
- Climate: Control4-integrated multi-zone HVAC
- Shades: Lutron motorized (whole home)
- UI: Control4 touch panels + iOS/Android app
Tier add-ons
| add-on | price |
|---|---|
outdoor_av — Outdoor Audio & Video PackageWeatherproof speakers + outdoor TV + Control4 integration | $4,000 |
cinema_room — Dedicated Home TheaterProjection system, acoustic panels, media server | $30,000 |
Pros (display only)
- Control4 — everything controlled from one app, one touch panel
- Cinema-quality AV distribution — any source to any screen
- Lutron HomeWorks QSX — bulletproof professional lighting
- Scenes: One button sets lights, shades, music, temperature
- Dedicated dealer + annual service plan = always working
Cons (display only)
- Requires certified Control4 dealer for installation
- Annual service plan recommended (~$500–$1,500/yr)
- Changes require dealer access
tags: pro_av whole_home xl large
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | tech_comfort ∈ { "comfortable" } |
good | 2 | home_size ∈ { "small" } |
good | 1 | platform ∈ { "amazon", "google", "apple" } |
better | 3 | tech_comfort ∈ { "hands_off" } |
better | 2 | home_size ∈ { "medium", "large" } |
better | 1 | priority ∈ { "whole_home" } |
best | 4 | platform ∈ { "control4" } |
best | 3 | home_size ∈ { "xl" } |
best | 1 | priority ∈ { "shades", "entertainment" } |
Final price formula (this vertical)
// computeTierPricing(smart-home-setup, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Pricing sources cited in code
- Lutron RadioRA 3 — https://www.lutron.com/en-US/Solutions/Pages/Whole-Home/RadioRA3.aspx
- Control4 Smart Home — https://www.control4.com
- Google Nest Learning Thermostat — https://store.google.com/us/product/nest_learning_thermostat
- Control4 Pricing Guide — https://www.heyosmart.com/post/control-4-pricing
Source file: src/lib/flow-engine/verticals/smart-home-setup.ts · run the live flow →
🏠Insulation slug:insulation
Get a transparent estimate for home insulation upgrades
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$2,000 – $15,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Insulation permits may be required if accessing through exterior — contractor handles.
labor note: Check for local utility rebates in your area — many states offer insulation incentives.
timeline: Attic only: half day. Full home package: 1–3 days. Spray foam: 1–2 days.
installer note: A blower door test before starting will identify air leaks and maximize the value of your investment.
Photo prompts
- Photo of the area to insulate — for attics, show the current insulation depth and any gaps; for walls, show the access point or area; for crawlspaces, show the entrance and any existing vapor barrier
Questionnaire (5 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/insulation.ts.
Which areas need insulation?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
attic | Attic | no direct price effect |
walls | Exterior walls | no direct price effect |
crawlspace | Crawl space / floor | no direct price effect |
basement | Basement rim joists or walls | no direct price effect |
garage | Garage ceiling or walls | no direct price effect |
What type of insulation are you considering?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
blown_fiberglass | Blown-in fiberglass (attic standard) |
|
blown_cellulose | Blown-in cellulose (recycled material, denser) |
|
spray_foam_open | Open-cell spray foam (good air sealing) |
|
spray_foam_closed | Closed-cell spray foam (best R-value per inch) |
|
fiberglass_batts | Fiberglass batts (walls/floors) |
|
rigid_foam | Rigid foam board (basement walls, exterior) |
|
What's the current insulation situation?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
none | None or very little insulation |
|
some | Some — but I know it's insufficient |
|
old | Has old insulation (fiberglass batts, unknown age) |
|
unknown | Not sure what's there | no direct price effect |
What's your home's square footage?
Why we ask: Home square footage sizes the system load — drives both equipment capacity and labor hours.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Under 1,200 sq ft |
|
medium | 1,200–2,200 sq ft |
|
large | 2,200–3,500 sq ft |
|
xl | Over 3,500 sq ft |
|
What's your main reason for insulating?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
energy_bills | Reduce energy bills |
|
comfort | Eliminate hot/cold rooms or drafts |
|
sound | Reduce noise between rooms or outside |
|
moisture | Moisture control or condensation issues |
|
rebate | Taking advantage of utility rebates |
|
Tiers (3)
Blown-in attic insulation — biggest ROI upgrade
Brand: CertainTeed InsulSafe / Owens Corning ProPink
basePrice (declared)
$2,000
Σ(lineItems) (computed)
$2,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Blown-In Fiberglass (1,500 sq ft attic to R-49) | labor | $1,200 |
| Air Sealing (attic penetrations) | labor | $500 |
| Installation Labor | labor | $300 |
Specs (display only)
- Material: Blown-in fiberglass (CertainTeed InsulSafe SP)
- R-Value: R-38 to R-49 in attic
- Coverage: 1,500 sq ft attic
- Warranty: Limited lifetime
- Energy Savings: 10–20% on heating/cooling bills
Pros (display only)
- Fastest ROI of any home upgrade — typically under 3 years
- Check for local utility rebates in your area
- Non-combustible fiberglass
- Covers entire attic floor — eliminates air stratification
- Completed in half a day
Cons (display only)
- Blown fiberglass can settle 5–10% over time
- Doesn't air-seal — additional caulk/foam needed around penetrations
- Not ideal for walls (requires removing drywall or drilling)
tags: blown_fg blown_cel batts small medium
Full home air sealing + insulation package
Brand: Johns Manville / Owens Corning EcoTouch
basePrice (declared)
$6,000
Σ(lineItems) (computed)
$6,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Blown Cellulose Attic (R-49, 1,500 sq ft) | labor | $1,800 |
| Dense-Pack Walls (exterior, drill & fill) | labor | $2,000 |
| Rim Joist Spray Foam (basement perimeter) | labor | $1,000 |
| Comprehensive Air Sealing | labor | $800 |
| Patching & Cleanup | labor | $400 |
Specs (display only)
- Material: Blown cellulose (attic) + fiberglass batts (walls/floors)
- R-Value: R-49 attic, R-15 walls
- Air Sealing: Comprehensive attic + basement rim joists
- Warranty: Limited lifetime
- Energy Savings: 20–30% heating/cooling reduction
Tier add-ons
| add-on | price |
|---|---|
energy_audit — Blower Door Energy AuditIdentifies all air leaks before insulating — maximizes value | $500 |
crawl_insulation — Crawl Space Batt InsulationR-19 fiberglass batts on crawl space floor/rim | $1,200 |
Pros (display only)
- Whole-home approach — attic, walls, and rim joists
- Air sealing included — stops drafts at the source
- Cellulose is denser than fiberglass — better sound attenuation
- Check for local utility rebates — many states offer insulation incentives
- Blown-in dense-pack walls without demo in many cases
Cons (display only)
- Dense-pack wall installation requires drilling small holes from exterior
- 2–3 day project
- Higher cost than attic-only
tags: spray_open batts medium large efficiency comfort
Closed-cell spray foam — maximum R-value and air sealing
Brand: Icynene Proseal / Demilec Heatlok XT
basePrice (declared)
$15,000
Σ(lineItems) (computed)
$15,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Closed-Cell SPF — Attic Deck (1,500 sq ft × 3")source: https://www.icynene.com/en-us/products/closed-cell | equipment | $6,000 |
| Closed-Cell SPF — Crawl Space Walls | labor | $3,000 |
| Rim Joist SPF Treatment | labor | $1,200 |
| Certified Application Labor | labor | $3,500 |
| Post-Install Air Quality Clearance | labor | $300 |
| Blower Door Test (before + after) | equipment | $1,000 |
Specs (display only)
- Material: Closed-cell spray polyurethane foam (ccSPF)
- R-Value: R-6.5 per inch — R-20 in 3" application
- Air Barrier: Complete monolithic air and vapor barrier
- Warranty: Lifetime on foam
- Energy Savings: 30–50% reduction in conditioning costs
Tier add-ons
| add-on | price |
|---|---|
dense_pack_walls — Dense-Pack Cellulose WallsComplement SPF with wall insulation for complete envelope | $3,000 |
erv — Energy Recovery Ventilator (ERV)Required for tight homes — maintains fresh air exchange | $2,500 |
Pros (display only)
- R-6.5 per inch — highest R-value per inch available
- Simultaneously insulates AND air-seals in one step
- Adds structural rigidity to walls and roof deck
- Vapor retarder — prevents moisture issues
- Ideal for basements, crawlspaces, and unvented attics
Cons (display only)
- Highest upfront cost per square foot
- Must be installed by certified applicators
- Off-gassing during and after application — vacate during install
- Not removable — permanent choice
tags: spray_closed rigid large xl moisture sound
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | area ∈ { "attic" } |
good | 2 | insulation_type ∈ { "blown_fiberglass", "blown_cellulose", "fiberglass_batts" } |
good | 2 | home_sqft ∈ { "small" } |
better | 3 | primary_goal ∈ { "energy_bills", "comfort" } |
better | 2 | home_sqft ∈ { "medium", "large" } |
better | 1 | current_r_value ∈ { "none", "some" } |
best | 4 | insulation_type ∈ { "spray_foam_closed" } |
best | 2 | primary_goal ∈ { "moisture", "sound" } |
best | 1 | home_sqft ∈ { "xl" } |
Final price formula (this vertical)
// computeTierPricing(insulation, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Pricing sources cited in code
- Owens Corning Insulation Products — https://www.owenscorning.com/insulation
- Icynene Spray Foam Products — https://www.icynene.com/en-us/products/closed-cell
- DOE Insulation Recommendations — https://www.energy.gov/energysaver/insulation
Source file: src/lib/flow-engine/verticals/insulation.ts · run the live flow →
🏠Attic Insulation slug:attic-insulation
Get a transparent estimate for attic insulation and air sealing
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$1,500 – $7,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Spray foam attic work may require a building permit. Contractor advises.
labor note: Check for local utility rebates in your area — many states offer insulation incentives.
timeline: Blown-in: half day. Blown + air sealing: 1 full day. Spray foam: 1–2 days.
installer note: Have your attic checked for bathroom fans venting into the attic — a common code violation that must be corrected before insulating.
Photo prompts
- Photo of your attic space from the access point — show the current insulation (or lack of it), joists, and any ductwork or wiring visible
Questionnaire (5 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/attic-insulation.ts.
What's the current state of your attic insulation?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
none | None or almost none |
|
old_fiberglass | Old fiberglass batts (laid flat, compressing over time) |
|
some_blown | Some blown-in but not enough (under R-30) |
|
vermiculite | Old vermiculite (may contain asbestos — needs testing) |
|
good_adding | Good condition — just want to add R-value |
|
How large is your attic (roughly equal to home footprint)?
Why we ask: Sizing input. Drives base price and which tier the customer can realistically use.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Under 800 sq ft |
|
medium | 800–1,500 sq ft |
|
large | 1,500–2,500 sq ft |
|
xl | Over 2,500 sq ft |
|
How is the attic access?
Why we ask: Access difficulty drives labor hours and may require special equipment (lifts, scaffolding, narrow-access tools).
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
scuttle | Standard scuttle hatch (pull-down or removable panel) |
|
walk_in | Walk-up stairs or walk-in attic |
|
tight | Very tight — limited clearance or no standing room |
|
Do you want air sealing performed along with insulation?
Air sealing stops drafts through recessed lights, junction boxes, and penetrations — the #1 way to improve results.
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
yes | Yes — do both for maximum efficiency |
|
no | Insulation only |
|
unsure | I'm not sure what that means | no direct price effect |
What's your main goal?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
energy_bills | Lower energy bills |
|
comfort | Warmer in winter, cooler in summer |
|
rebate | Qualify for utility rebates |
|
ice_dams | Prevent ice dams (attic heat escaping to roof) |
|
Tiers (3)
Blown-in fiberglass — quick and effective upgrade
Brand: Owens Corning PROPINK L77
basePrice (declared)
$1,500
Σ(lineItems) (computed)
$1,500
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| OC PROPINK L77 Blown-In Fiberglass (1,200 sq ft to R-38)source: https://www.owenscorning.com/insulation/blown-in/propink | equipment | $1,000 |
| Installation Labor (4 hrs) | labor | $400 |
| Attic Hatch Insulation + Weatherstrip | equipment | $100 |
Specs (display only)
- Material: Owens Corning PROPINK L77 blown-in fiberglass
- R-Value: R-38 (1,000 sq ft attic)
- Install Method: Blown over existing insulation or bare floor
- Warranty: Limited lifetime on product
- Energy Savings: 10–20% on heating/cooling
Pros (display only)
- Fastest installation — usually a half day
- ENERGY STAR certified — check for local utility rebates in your area
- Owens Corning PROPINK — consistent, quality coverage
- Non-combustible
- Best ROI of any home upgrade
Cons (display only)
- Blown fiberglass settles slightly over 5–10 years
- Doesn't air-seal — air leaks still happen
tags: no_insulation old insufficient small medium
R-49 + comprehensive air sealing
Brand: CertainTeed InsulSafe + Spray Foam Sealing
basePrice (declared)
$2,800
Σ(lineItems) (computed)
$2,800
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| CertainTeed InsulSafe SP to R-49 (1,200 sq ft)source: https://www.certainteed.com/insulation/products/insulSafe-sp/ | equipment | $1,500 |
| Comprehensive Air Sealing — spray foam (3 hrs) | labor | $800 |
| Attic Hatch Rigid Foam Cover | equipment | $200 |
| Pull-Down Stair Insulation Cover | equipment | $150 |
| Installation Labor & Documentation (1 hr) | labor | $150 |
Specs (display only)
- Material: CertainTeed InsulSafe SP blown-in fiberglass
- R-Value: R-49 to R-60 (Department of Energy recommendation)
- Air Sealing: Spray foam around all penetrations, junction boxes, soffits
- Warranty: Limited lifetime insulation + 1-yr air sealing labor
- Energy Savings: 20–30% heating/cooling reduction
Tier add-ons
| add-on | price |
|---|---|
bathroom_fans — Bathroom Exhaust Fan Duct SealingReroute/seal bathroom fans venting into attic (code violation) | $300 |
vermiculite_test — Vermiculite Asbestos TestLab test sample before disturbing old insulation | $100 |
Pros (display only)
- R-49 meets or exceeds DOE recommendation for most US climates
- Comprehensive air sealing stops drafts at the source
- Prevents ice dam formation by keeping attic cold
- Check for local utility rebates — many states offer insulation incentives
- Written air sealing report for rebate paperwork
Cons (display only)
- Slightly higher cost than insulation alone
- Air sealing adds time — full day project
tags: old adding air_seal medium large bills comfort ice_dams
Unvented attic with closed-cell spray foam — highest performance
Brand: Icynene ProSeal / Demilec Heatlok
basePrice (declared)
$7,000
Σ(lineItems) (computed)
$7,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Closed-Cell SPF on Roof Deck (1,200 sq ft, 3")source: https://www.icynene.com/en-us/products/closed-cell | equipment | $5,000 |
| Transition Air Sealing at Eaves (2 hrs) | labor | $800 |
| Attic Hatch Upgrade + Air Barrier | equipment | $300 |
| Blower Door Test — pre + post (2 hrs) | labor | $600 |
| Rebate Documentation Package (1 hr) | labor | $300 |
Specs (display only)
- Material: Closed-cell spray foam on roof deck (unvented assembly)
- R-Value: R-20 minimum (3" ccSPF) — effectively higher due to air sealing
- Approach: Unvented conditioned attic (HVAC in thermal envelope)
- Advantage: Ductwork in conditioned space — massive efficiency gain
- Warranty: Lifetime on foam
Pros (display only)
- Roof deck spray foam = most air-tight attic possible
- HVAC ducts in conditioned space — eliminates duct leakage losses
- Best ice dam prevention — entire roof deck insulated
- Adds structural rigidity to roof deck
- Eliminates soffit vent system maintenance
Cons (display only)
- Most expensive — 3–5× cost of blown-in
- Permanent — can't be removed
- Requires certified applicators
tags: vermiculite no_insulation large xl ice_dams rebate
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | current_situation ∈ { "good_adding", "some_blown" } |
good | 2 | air_sealing ∈ { "no" } |
good | 1 | attic_sqft ∈ { "small" } |
better | 3 | air_sealing ∈ { "yes" } |
better | 2 | current_situation ∈ { "none", "old_fiberglass" } |
better | 2 | goal ∈ { "ice_dams", "comfort", "energy_bills" } |
best | 3 | goal ∈ { "ice_dams" } ∧attic_sqft ∈ { "large", "xl" } |
best | 2 | goal ∈ { "rebate" } |
best | 1 | current_situation ∈ { "vermiculite" } |
Final price formula (this vertical)
// computeTierPricing(attic-insulation, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
current_situation=none— "None or almost none"attic_sqft=small— "Under 800 sq ft"access=scuttle— "Standard scuttle hatch (pull-down or removable panel)"air_sealing=yes— "Yes — do both for maximum efficiency"goal=energy_bills— "Lower energy bills"
Σ(tier.lineItems) = $2,800 Σ(answer priceDeltas) = $0 permits = $0 installerCost = $2,800 platformFee (5%) = $140 customerTotal = $2,940
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- Owens Corning PROPINK L77 Blown-In — https://www.owenscorning.com/insulation/blown-in/propink
- CertainTeed InsulSafe SP — https://www.certainteed.com/insulation/products/insulSafe-sp/
- DOE Insulation Recommendations by Climate Zone — https://www.energy.gov/energysaver/insulation
- Icynene Closed-Cell Spray Foam — https://www.icynene.com/en-us/products/closed-cell
Source file: src/lib/flow-engine/verticals/attic-insulation.ts · run the live flow →
🏠Chimney Repair slug:chimney-repair
Get a transparent estimate for chimney inspection and repair
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$400 – $5,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Liner installation may require a building permit in some jurisdictions. (estimate: $150)
labor note: All work performed by CSIA-certified sweeps and masons.
timeline: Inspection + cleaning: 2–3 hours. Masonry repairs: 1–2 days. Full liner: 1–2 days.
installer note: A Level 2 or Level 3 camera inspection will be performed before any repair scope is confirmed.
Photo prompts
- Photo of the full chimney from ground level — zoom in if needed, and try to show the chimney cap, crown, and flashing where it meets the roof
- Close-up of any visible damage — cracked mortar joints, missing bricks, white staining (efflorescence), or damaged flashing at the roof line
Questionnaire (5 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/chimney-repair.ts.
What type of chimney do you have?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
masonry_brick | Masonry — brick or stone (classic chimney) |
|
masonry_block | Masonry — concrete block |
|
prefab | Prefab / factory-built metal chimney |
|
unknown | Not sure | no direct price effect |
What's the main reason you're calling?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
inspection | Annual inspection / cleaning (no known issues) |
|
leak | Water leaking into fireplace or ceiling |
|
cracks | Visible cracks in brick or mortar |
|
smoke | Smoke coming back into house |
|
cap_missing | Missing or damaged chimney cap |
|
rebuild | Chimney needs partial or full rebuild |
|
When was your last chimney inspection?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
recent | Within the last 2 years |
|
few_years | 3–5 years ago |
|
long_ago | More than 5 years or never |
|
unknown | Not sure | no direct price effect |
How often do you use your fireplace?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
rarely | Rarely or never | no direct price effect |
occasional | A few times per year | no direct price effect |
regular | Regularly — weekly or more in season |
|
primary_heat | Primary heat source |
|
Do you know the condition of your chimney liner?
A damaged liner is a fire and CO hazard.
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
unknown | No idea — never had it checked | no direct price effect |
cracked | Told it's cracked or deteriorating |
|
good | Was inspected and passed recently | no direct price effect |
no_liner | No liner / older home — needs assessment |
|
Tiers (3)
Inspection, cleaning & minor repairs
Brand: CSIA-Certified Sweep
basePrice (declared)
$400
Σ(lineItems) (computed)
$400
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| CSIA Level 1 Inspection (1 hr) | labor | $150 |
| Chimney Sweep / Flue Cleaning (1 hr) | labor | $150 |
| Chimney Cap Replacement — if needed (1 hr) | labor | $100 |
Specs (display only)
- Service: Level 1 CSIA Inspection + chimney sweep
- Cleaning: Flue brush cleaning (all soot and creosote)
- Minor Repairs: Cap replacement, minor tuckpointing
- Warranty: 1-yr on minor repair work
- Certifications: CSIA-certified chimney sweep
Pros (display only)
- Prevents creosote buildup — #1 cause of chimney fires
- CSIA Level 1 inspection meets NFPA 211 requirements
- Cap replacement stops water and animals
- Peace of mind before fireplace season
- Usually completed in 2–3 hours
Cons (display only)
- Doesn't address structural damage or liner issues
- Minor tuckpointing only — not for significant spalling
tags: inspection cap maintained prefab
Masonry repair & waterproofing — stop the leaks
Brand: ChimneySaver / Saver Systems
basePrice (declared)
$2,500
Σ(lineItems) (computed)
$2,500
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| CSIA Level 2 Video Inspection (1.5 hrs) | labor | $400 |
| Flue Sweep & Cleaning (1 hr) | labor | $200 |
| Crown Repair or Rebuild (3 hrs) | labor | $800 |
| Tuckpointing — up to 50 linear ft (3 hrs) | labor | $650 |
| ChimneySaver Waterproofing Application (1 hr) | labor | $450 |
Specs (display only)
- Service: Level 2 inspection + tuckpointing + crown repair + waterproofing
- Crown: Rebuild chimney crown with proper slope
- Waterproofing: ChimneySaver water repellent (10-yr warranty)
- Warranty: 5-yr on masonry and crown repair
- Certifications: CSIA-certified mason
Tier add-ons
| add-on | price |
|---|---|
damper_upgrade — Top-Sealing Damper (Lyemance)Replaces throat damper — seals completely when closed | $350 |
chase_cover — Stainless Steel Chase CoverFor prefab chimneys — replace rusted chase cover | $300 |
Pros (display only)
- Crown repair — the primary entry point for water
- Tuckpointing — resets deteriorated mortar joints
- ChimneySaver penetrating water repellent with 10-year warranty
- Stops water damage before it reaches framing
- Level 2 video inspection included
Cons (display only)
- More expensive than basic sweep
- May take 1–2 days for full crown and tuckpointing
tags: leak cracks masonry needs_check overdue
Chimney liner installation — complete restoration
Brand: HeatShield / Flexmaster Stainless Liner
basePrice (declared)
$5,000
Σ(lineItems) (computed)
$5,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Level 3 CSIA Inspection & Video Report (2 hrs) | labor | $600 |
| 316L Stainless Liner with Insulation Wrapsource: https://www.flexmaster.com | equipment | $1,800 |
| Liner Installation — top to firebox (4 hrs) | labor | $1,000 |
| Crown Rebuild + Chimney Cap (3 hrs) | labor | $800 |
| Full Tuckpointing & Masonry Restoration (2 hrs) | labor | $550 |
| ChimneySaver Waterproofing (1 hr) | labor | $250 |
Specs (display only)
- Service: Level 3 inspection + stainless liner + full masonry restoration
- Liner: 316L stainless steel flexible liner with insulation wrap
- Masonry: Full exterior tuckpointing + crown rebuild
- Warranty: Lifetime on liner (with annual sweeping)
- Certifications: CSIA + NFPA 211 compliant installation
Tier add-ons
| add-on | price |
|---|---|
firebox_rebuild — Firebox Repair (HeatShield resurfacing)Repair cracked firebox with HeatShield ceramic coating | $800 |
smoke_chamber — Smoke Chamber PargingSmooth corbeled smoke chamber with refractory cement | $600 |
Pros (display only)
- New liner — complete fire safety and CO protection
- Flexible stainless steel fits any flue shape
- Insulation wrap improves draft and prevents condensation
- Addresses the root cause of most chimney problems
- Lifetime warranty — adds value at home sale
Cons (display only)
- Most expensive chimney service
- 1–2 day project including all masonry work
- Requires full access to chimney flue
tags: rebuild liner_damaged no_liner primary_heat regular_use
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | primary_issue ∈ { "inspection", "cap_missing" } |
good | 2 | last_inspection ∈ { "recent", "few_years" } |
good | 1 | chimney_type ∈ { "prefab" } |
better | 3 | primary_issue ∈ { "leak", "cracks" } |
better | 2 | last_inspection ∈ { "long_ago", "unknown" } |
better | 1 | chimney_type ∈ { "masonry_brick" } |
best | 4 | liner_concern ∈ { "cracked", "no_liner" } |
best | 3 | primary_issue ∈ { "rebuild", "smoke" } |
best | 2 | fireplace_use ∈ { "primary_heat" } |
Final price formula (this vertical)
// computeTierPricing(chimney-repair, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $150 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
chimney_type=masonry_brick— "Masonry — brick or stone (classic chimney)"primary_issue=inspection— "Annual inspection / cleaning (no known issues)"last_inspection=recent— "Within the last 2 years"fireplace_use=rarely— "Rarely or never"liner_concern=unknown— "No idea — never had it checked"
Σ(tier.lineItems) = $2,500 Σ(answer priceDeltas) = $0 permits = $150 installerCost = $2,650 platformFee (5%) = $133 customerTotal = $2,783
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- CSIA Chimney Safety Institute — https://www.csia.org
- ChimneySaver Water Repellent — https://www.saver.com/chimneys
- Flexmaster Stainless Steel Liners — https://www.flexmaster.com
- Bob Vila Chimney Repair Cost — https://www.bobvila.com/articles/chimney-repair-cost/
Source file: src/lib/flow-engine/verticals/chimney-repair.ts · run the live flow →
🔧Plumbing Repair slug:plumbing-repair
Get a transparent estimate for plumbing repairs and upgrades
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$300 – $4,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Permits required for repiping and major sewer work. Not required for standard repairs. (estimate: $150)
timeline: Emergency repairs: same day. Standard repairs: next day. Repiping: 3–5 days.
installer note: Your licensed plumber will diagnose on-site and confirm pricing before starting work.
Photo prompts
- Photo of the plumbing issue — show the leak, clog, or damaged fixture up close, and include a wider shot showing access to the area (under sink, behind wall, etc.)
Questionnaire (4 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/plumbing-repair.ts.
What's the main plumbing issue?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
leak | Leak — pipe, fixture, or under sink |
|
drain_clog | Clogged drain (tub, sink, or main line) |
|
toilet | Toilet issue (running, clogged, won't flush) |
|
fixture | Replace faucet, showerhead, or toilet |
|
water_pressure | Low water pressure throughout home |
|
sewer | Sewer smell or slow drains throughout |
|
How urgent is this?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
emergency | Emergency — active leak or flooding |
|
today | Need it fixed today |
|
soon | Soon — within a few days | no direct price effect |
when_available | No rush — schedule when convenient | no direct price effect |
How old is your home's plumbing?
Why we ask: Home age flags era-specific conditions: older wiring, FPE/Zinsco panels, lead, asbestos, or knob-and-tube.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
newer | Modern — copper or PVC (installed after 1990) | no direct price effect |
mixed | Mixed — some older, some newer | no direct price effect |
old | Older — galvanized steel or lead (pre-1970s) |
|
unknown | Not sure | no direct price effect |
Where is the issue located?
Why we ask: Location drives regional pricing and installer matching radius.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
bathroom | Bathroom | no direct price effect |
kitchen | Kitchen | no direct price effect |
basement | Basement or utility room | no direct price effect |
yard | Yard or main line |
|
multiple | Multiple locations | no direct price effect |
Tiers (3)
Targeted repair — fix the immediate issue
Brand: Licensed Plumber
basePrice (declared)
$300
Σ(lineItems) (computed)
$300
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Service Call & Diagnosis (~0.5 hrs @ $150/hr) | labor | $100 |
| Repair Labor (up to 2 hrs @ $75/hr) | labor | $150 |
| Standard Parts & Materials | equipment | $50 |
Specs (display only)
- Service: Single issue repair (1–2 hours)
- Scope: Diagnose and fix one plumbing problem
- Parts: Standard parts (Moen, Delta, Kohler)
- Warranty: 90-day labor warranty
Pros (display only)
- Fastest fix — usually same or next-day
- Clear flat-rate pricing on common repairs
- Gets the water flowing or leak stopped quickly
Cons (display only)
- Doesn't address potential underlying issues
- Older pipes may have additional problems nearby
tags: clog toilet fixture leak
Full diagnosis + repair + preventive check
Brand: Licensed Master Plumber
basePrice (declared)
$750
Σ(lineItems) (computed)
$750
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Comprehensive Plumbing Inspection (~1 hr @ $150/hr) | labor | $200 |
| Drain Camera Inspection — main line (~1 hr @ $175/hr) | labor | $250 |
| Targeted Repair Labor & Parts (~1.5 hrs @ $130/hr) | labor | $300 |
Specs (display only)
- Service: Full plumbing inspection + targeted repair
- Scope: Fix issue + inspect connected systems
- Camera: Drain camera inspection included
- Warranty: 1-year labor warranty
Tier add-ons
| add-on | price |
|---|---|
hydro_jet — Hydro-Jetting (drain clearing)High-pressure water clears roots and buildup | $450 |
pressure_regulator — Pressure Reducing Valve (PRV)Protects pipes from high water pressure damage | $350 |
Pros (display only)
- Camera inspection finds problems before they become emergencies
- Fix the issue + prevent the next one
- Master plumber — can permit and approve any repair
- Written inspection report provided
Cons (display only)
- Higher cost than quick repair
- May reveal additional needed work
tags: sewer pressure old_pipes clog
Repiping or full system repair
Brand: Licensed Master Plumber
basePrice (declared)
$4,000
Σ(lineItems) (computed)
$4,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Partial Repiping — 1,500 sq ft home (~16 hrs @ $125/hr) | labor | $2,000 |
| Fixture Replacement Package (~6 hrs @ $125/hr) | labor | $1,000 |
| Drywall Patching & Restoration (~5 hrs @ $100/hr) | labor | $700 |
| Permits & Final Inspection | labor | $300 |
Specs (display only)
- Service: Partial or full repiping + fixture upgrades
- Scope: Replace aging pipes + all fixtures in affected area
- Pipe Material: PEX or copper (your choice)
- Warranty: 5-year labor + manufacturer warranties
Tier add-ons
| add-on | price |
|---|---|
water_filtration — Whole-Home Water FiltrationPelican NaturSoft or AquaOx whole-house filter — see pelican.com for pricing | $1,500 |
Pros (display only)
- Solves root cause — replace failing pipes entirely
- PEX is flexible, freeze-resistant, and more affordable than copper
- Upgrade fixtures at same time for best value
- Eliminates future emergency service calls
Cons (display only)
- Most disruptive — drywall access may be required
- Highest cost
tags: emergency sewer old_pipes pressure main_line
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | issue_type ∈ { "toilet", "fixture", "drain_clog" } |
good | 2 | severity ∈ { "when_available", "soon" } |
better | 3 | issue_type ∈ { "leak", "water_pressure" } |
better | 2 | home_age ∈ { "old" } |
better | 1 | severity ∈ { "today" } |
best | 4 | issue_type ∈ { "sewer" } |
best | 3 | severity ∈ { "emergency" } |
best | 2 | home_age ∈ { "old" } ∧location ∈ { "multiple" } |
Final price formula (this vertical)
// computeTierPricing(plumbing-repair, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $150 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Pricing sources cited in code
- HomeGuide Plumbing Estimates — https://homeguide.com/costs/average-plumbing-estimates
- Forbes Home Plumber Costs — https://www.forbes.com/home-improvement/plumbing/plumber-cost/
Source file: src/lib/flow-engine/verticals/plumbing-repair.ts · run the live flow →
⚡Electrical Services slug:electrical-services
Get a transparent estimate for electrical work and upgrades
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$250 – $10,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Permits required for panel upgrades, new circuits, and rewiring. Not required for simple outlet/switch/fan installs. Electrician handles filing. (estimate: $250)
timeline: Minor repairs: same/next day. Panel upgrade: 1 day. Rewire: 3–7 days.
installer note: Your licensed electrician will perform a load calculation and inspection before starting any panel or circuit work.
Photo prompts
- Photo of your electrical panel with the door open — show breaker labels and the main breaker amp rating clearly
- Photo of the specific area needing electrical work — show existing wiring, outlets, or fixtures and the surrounding space
Questionnaire (5 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/electrical-services.ts.
What electrical work do you need?
Why we ask: Service type is the primary branching question — a single outlet or fan is a $250-$500 service call while a panel upgrade or whole-house rewire is a $2,500-$10,000 major project. This determines the tier ladder and all downstream questions.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
outlet_switch | Add or replace outlets / switches |
|
panel_upgrade | Panel upgrade or breaker replacement |
|
new_circuit | Add new circuits (kitchen, garage, EV, hot tub) |
|
ceiling_fan | Ceiling fan installation |
|
lighting | Light fixture installation or recessed lighting |
|
whole_house | Whole-house rewiring |
|
outdoor | Outdoor / landscape lighting or outlets |
|
How many items need work?
branch Hidden when service_type ∈ { "outlet_switch", "ceiling_fan", "lighting" }
Why we ask: Item count multiplies the base labor — each additional outlet, fan, or fixture adds incremental electrician time and materials. Answered only for simple task types where quantity meaningfully changes scope.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
1 | Just 1 | no direct price effect |
2_3 | 2–3 |
|
4_plus | 4 or more |
|
What size is your current electrical panel?
branch Hidden when service_type ∈ { "panel_upgrade", "new_circuit", "whole_house" }
Why we ask: Utility infrastructure check — flags whether upgrades or service runs are part of scope.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
200amp | 200A panel (modern standard) | no direct price effect |
100amp | 100A panel (older home — may need upgrade) |
|
60amp | 60A or fuse box (significant upgrade needed) |
|
unknown | Not sure | no direct price effect |
How urgent is this?
Why we ask: Urgency determines dispatch routing and potentially overtime rates. Emergency (safety hazard, power out) gets immediate routing to available electricians; planned work gets cost-optimized matching with no premium.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
emergency | Emergency — power out or safety hazard |
|
soon | Soon — within a week | no direct price effect |
planned | Planned project — flexible timing | no direct price effect |
How old is your home?
Why we ask: Home age flags era-specific conditions: older wiring, FPE/Zinsco panels, lead, asbestos, or knob-and-tube.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
new | Built after 1990 — modern wiring | no direct price effect |
mid | Built 1970–1990 |
|
old | Built before 1970 — may have aluminum wiring |
|
Tiers (3)
Single-task electrical service
Brand: Licensed Electrician
basePrice (declared)
$250
Σ(lineItems) (computed)
$250
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Service Call & Diagnosis (0.5 hr) | labor | $85 |
| Installation Labor (1.5 hrs avg) | labor | $120 |
| Parts & Materials | equipment | $45 |
Specs (display only)
- Service: One task: outlet, switch, fan, or fixture install
- Duration: 1–3 hours
- Warranty: 1-yr labor
- License: Licensed journeyman electrician
Pros (display only)
- Fast, affordable single-task service
- Same/next-day availability common
- Licensed and insured
- GFCI outlets and code-compliant work
Cons (display only)
- Single task only — additional items cost extra
- Doesn't address panel capacity issues
tags: minor fan lighting outdoor
Panel upgrade or dedicated circuit installation
Brand: Licensed Master Electrician
basePrice (declared)
$2,500
Σ(lineItems) (computed)
$2,500
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| 200A Panel (Square D QO or Siemens)source: https://www.homedepot.com/b/Electrical-Breaker-Boxes-Load-Centers/200-Amp/N-5yc1vZc25vZl4g | equipment | $800 |
| Installation Labor — master electrician (6 hrs) | labor | $1,100 |
| Permit & Inspection | permits | $350 |
| Misc Materials & Breakers | equipment | $250 |
Specs (display only)
- Service: 200A panel upgrade or 1–3 new dedicated circuits
- Duration: 4–8 hours
- Warranty: 2-yr labor
- License: Master electrician + permit
Tier add-ons
| add-on | price |
|---|---|
ev_circuit — 50A EV Charging CircuitDedicated 50A circuit for Level 2 EV charger | $400 |
whole_house_surge — Whole-Home Surge ProtectorEaton CHSPT2ULTRA — protects every device | $250 |
Pros (display only)
- 200A upgrade future-proofs your home for EV, solar, and heat pumps
- Permits pulled — all work inspected and code-compliant
- Handle multiple circuits in one visit — efficient
- Arc-fault and GFCI breakers included where required
Cons (display only)
- Power off for several hours during panel work
- Higher cost than single-task service
tags: panel circuit small_panel old_panel
Complete electrical renovation — safe and future-ready
Brand: Licensed Master Electrician
basePrice (declared)
$10,000
Σ(lineItems) (computed)
$10,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Whole-Home Rewire (1,500 sq ft) | labor | $5,500 |
| 200A Panel Upgradesource: https://www.homedepot.com/b/Electrical-Breaker-Boxes-Load-Centers/200-Amp/N-5yc1vZc25vZl4g | equipment | $1,800 |
| Drywall Repair & Patching | labor | $1,200 |
| Permits, Inspections & Engineering | permits | $800 |
| Misc Materials & Fixtures | equipment | $700 |
Specs (display only)
- Service: Full rewire or major renovation electrical
- Duration: 3–7 days
- Warranty: 5-yr labor
- License: Master electrician + structural coordination
Pros (display only)
- Eliminates old aluminum wiring or knob-and-tube
- New panel + all new wiring = like a new construction home
- Full permit and final inspection
- Coordinated with any structural or renovation work
Cons (display only)
- Most disruptive — drywall access required
- Most expensive — but complete solution
tags: rewire old_wiring emergency
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | service_type ∈ { "outlet_switch", "ceiling_fan", "lighting", "outdoor" } |
good | 1 | urgency ∈ { "soon" } |
better | 3 | service_type ∈ { "panel_upgrade", "new_circuit" } |
better | 2 | panel_size ∈ { "100amp", "60amp" } |
best | 4 | service_type ∈ { "whole_house" } |
best | 3 | home_age ∈ { "old" } |
best | 2 | urgency ∈ { "emergency" } |
Final price formula (this vertical)
// computeTierPricing(electrical-services, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $250 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
service_type=outlet_switch— "Add or replace outlets / switches"quantity=1— "Just 1"panel_size=200amp— "200A panel (modern standard)"urgency=emergency— "Emergency — power out or safety hazard"home_age=new— "Built after 1990 — modern wiring"
Σ(tier.lineItems) = $2,500 Σ(answer priceDeltas) = $0 permits = $250 installerCost = $2,750 platformFee (5%) = $138 customerTotal = $2,888
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- This Old House — Panel Upgrade Cost — https://www.thisoldhouse.com/electrical/cost-to-upgrade-electrical-panel
- Forbes Home — Cost to Rewire a House — https://www.forbes.com/home-improvement/electrical/cost-to-rewire-a-house/
Source file: src/lib/flow-engine/verticals/electrical-services.ts · run the live flow →
🎨Interior Painting slug:interior-painting
Get a transparent estimate for professional interior painting
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$3,000 – $12,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
No permits required for interior painting. (estimate: $0)
timeline: Single room: 1 day. Whole house: 3–7 days.
installer note: Your painter will provide a per-room quote based on a walkthrough of the space.
Photo prompts
- Photos of each room to be painted — show the walls, ceiling height, trim/molding, and any areas with damage, peeling, or wallpaper that needs removal
Questionnaire (4 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/interior-painting.ts.
What are you having painted?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
single_room | One room |
|
few_rooms | 2–4 rooms |
|
whole_house | Whole house interior |
|
ceilings_trim | Ceilings and trim only (no walls) |
|
How large is the space being painted?
Why we ask: Home square footage sizes the system load — drives both equipment capacity and labor hours.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Under 1,000 sq ft |
|
medium | 1,000–2,000 sq ft |
|
large | 2,000–3,500 sq ft |
|
xl | Over 3,500 sq ft |
|
What paint quality do you want?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
standard | Standard — durable, good coverage (Sherwin-Williams ProClassic) |
|
premium | Premium — scrubbable, washable, better hide (SW Emerald or Duration) |
|
designer | Designer — Benjamin Moore Aura or Farrow & Ball |
|
What's the wall condition?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
good | Good — clean walls, just need paint | no direct price effect |
minor_repairs | Minor repairs needed — nail holes, small cracks |
|
major_prep | Significant prep — large holes, texture, or wallpaper removal |
|
Tiers (3)
Clean, professional paint job with quality materials
Brand: Sherwin-Williams ProClassic
basePrice (declared)
$3,000
Σ(lineItems) (computed)
$3,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Paint (SW ProClassic, 1,500 sq ft)source: https://www.sherwin-williams.com/content/sw/en-us/us/paint/interior/proclassic.html | equipment | $800 |
| Labor (prep, tape, 2 coats, ~8 hrs @ $112/hr) | labor | $1,800 |
| Primer, Caulk & Materials | equipment | $400 |
Specs (display only)
- Paint: Sherwin-Williams ProClassic Interior
- Coats: 2 coats walls, 1 coat ceilings
- Finish: Eggshell walls, flat ceilings
- Warranty: 1-yr touch-up warranty
Pros (display only)
- Professional application — no roller marks or lap lines
- SW ProClassic — trusted contractor-grade paint
- Good coverage and washability
- Proper prep included (tape, drop cloths, caulk)
Cons (display only)
- Standard paint vs. premium — shorter life in high-traffic areas
tags: standard_paint small medium
Premium paint, flawless finish
Brand: Sherwin-Williams Emerald
basePrice (declared)
$5,000
Σ(lineItems) (computed)
$5,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| SW Emerald Interior Paintsource: https://www.sherwin-williams.com/content/sw/en-us/us/paint/interior/emerald.html | equipment | $1,400 |
| Labor — walls, trim, ceilings (~15 hrs @ $100/hr, 2,000 sqft) | labor | $3,000 |
| Primer, Caulk, Materials & Cleanup | equipment | $600 |
Specs (display only)
- Paint: Sherwin-Williams Emerald Interior
- Coats: 2 coats walls, trim, and ceilings
- Finish: Eggshell/satin walls, semi-gloss trim
- Warranty: 2-yr touch-up warranty
Tier add-ons
| add-on | price |
|---|---|
color_consult — Professional Color Consultation1-hr session with certified color consultant | $150 |
accent_wall — Accent Wall / Feature ColorOne contrasting accent wall per room | $100 |
Pros (display only)
- Emerald — SW's best interior paint, exceptional coverage
- Scrubbable and stain-resistant — lasts twice as long in heavy use
- Trim painted separately for crisp lines
- Color consultation included
Cons (display only)
- Higher cost than standard tier
tags: premium_paint medium large
Designer-grade, flawless walls and fine detail
Brand: Benjamin Moore Aura / Farrow & Ball
basePrice (declared)
$12,000
Σ(lineItems) (computed)
$12,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Benjamin Moore Aura / Farrow & Ball Paint (~20 gal @ $90/gal)source: https://www.benjaminmoore.com/en-us/interior-exterior-paints-stains/product-families/aura | equipment | $4,500 |
| Labor — full prep, prime, 3 coats, trim (~24 hrs @ $125/hr, 2,500 sqft)source: https://homewyse.com/services/cost_to_paint_home.html | labor | $6,000 |
| Materials, Primer, Cleanup, Touch-Up Kit | equipment | $800 |
| Color Curation & Consultation Service (~3.5 hrs @ $100/hr) | labor | $700 |
Specs (display only)
- Paint: Benjamin Moore Aura or Farrow & Ball
- Coats: 3 coats (primer + 2 finish coats)
- Finish: Custom sheen selection per room
- Warranty: 3-yr warranty + touch-up service
Pros (display only)
- Benjamin Moore Aura — the benchmark for color accuracy and durability
- Farrow & Ball — iconic 132-color palette (if requested)
- 3-coat system — deep, rich color, no holidays
- Color curation service included
- Annual touch-up visit included
Cons (display only)
- Highest cost — F&B paint is expensive
tags: designer_paint large xl whole_house
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | scope ∈ { "single_room", "few_rooms" } |
good | 2 | paint_quality ∈ { "standard" } |
better | 3 | paint_quality ∈ { "premium" } |
better | 2 | scope ∈ { "whole_house" } |
best | 4 | paint_quality ∈ { "designer" } |
best | 2 | home_sqft ∈ { "large", "xl" } |
Final price formula (this vertical)
// computeTierPricing(interior-painting, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
scope=single_room— "One room"(−$1,000 → "Single room discount")home_sqft=small— "Under 1,000 sq ft"paint_quality=standard— "Standard — durable, good coverage (Sherwin-Williams ProClassic)"prep_needed=good— "Good — clean walls, just need paint"
Σ(tier.lineItems) = $5,000 Σ(answer priceDeltas) = −$1,000 permits = $0 installerCost = $4,000 platformFee (5%) = $200 customerTotal = $4,200
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- Benjamin Moore Aura — https://www.benjaminmoore.com/en-us/interior-exterior-paints-stains/product-families/aura
- Homewyse — Paint a Home Cost Calculator 2026 — https://homewyse.com/services/cost_to_paint_home.html
- Forbes Home — Interior House Painting Cost — https://www.forbes.com/home-improvement/painting/interior-house-painting-cost/
Source file: src/lib/flow-engine/verticals/interior-painting.ts · run the live flow →
🌿Landscaping slug:landscaping
Get a transparent estimate for landscaping and outdoor design
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$1,500 – $25,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Permits may be required for retaining walls over 4 feet and hardscape work near property lines. (estimate: $0)
timeline: Cleanup: 1 day. New beds: 2–5 days. Full landscape: 2–4 weeks.
installer note: Your landscape contractor or designer will visit the site and provide a finalized plant list and cost before starting.
Photo prompts
- Photos of your yard from multiple angles — include front and back yards, showing existing plants, hardscape, and the overall lot shape
- Close-up of the specific area to be landscaped — show the soil condition, existing plants to keep or remove, and any drainage or grading issues
Questionnaire (4 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/landscaping.ts.
What landscaping project are you planning?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
cleanup | Cleanup — trim, mulch, and freshen up existing beds |
|
new_beds | New planting beds + plants |
|
full_design | Full landscape design and installation |
|
hardscape | Hardscape — patio, walkway, retaining wall |
|
irrigation | Irrigation system installation |
|
How large is the landscaping area?
Why we ask: Yard size drives material quantity and crew time.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Small — front yard or under 1,000 sq ft |
|
medium | Medium — up to 3,000 sq ft |
|
large | Large — over 3,000 sq ft or full property |
|
What outdoor style do you like?
This helps us match you with the right landscaper and plant palette.
Why we ask: Style choice maps to specific SKUs and labor patterns — affects equipment cost and install time.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
low_maintenance | Low maintenance — native plants, minimal upkeep |
|
traditional | Traditional — symmetrical beds, classic plants |
|
modern | Modern — clean lines, ornamental grasses, bold plants |
|
cottage | Cottage / English — lush, colorful, layered planting |
|
Do you have an irrigation system?
New plantings need reliable watering to establish — irrigation is often included in larger projects.
branch Hidden when project_type ∈ { "cleanup" }
Why we ask: Existing-condition signal — determines whether removal, prep, or remediation line items kick in.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
yes | Yes — existing system in good shape | no direct price effect |
partial | Partial — covers some areas |
|
no | No irrigation |
|
Tiers (3)
Seasonal cleanup + fresh mulch and plantings
Brand: Local Landscape Pro
basePrice (declared)
$1,500
Σ(lineItems) (computed)
$1,500
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Spring Cleanup & Edge Trim (2 hrs) | labor | $400 |
| Hardwood Mulch (3 cubic yards, installed) | equipment | $500 |
| Annual Plantings (flats) | equipment | $400 |
| Labor & Cleanup (1 hr) | labor | $200 |
Specs (display only)
- Service: Cleanup, edge, mulch (2"), and annual color planting
- Plants: Annual flowers and shrubs from local nursery
- Mulch: Hardwood or pine bark mulch
- Warranty: 1-yr on labor
Pros (display only)
- Big visual improvement for modest cost
- Fresh mulch is the easiest curb-appeal boost
- Same-day or next-day availability
Cons (display only)
- Annual plantings need replanting each year
tags: cleanup small
New planting beds with design and perennials
Brand: Local Landscape Designer
basePrice (declared)
$5,000
Σ(lineItems) (computed)
$5,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Landscape Design Plan (4 hrs) | labor | $500 |
| New Planting Beds — Soil Prep & Edging (4 hrs) | labor | $1,000 |
| Shrubs + Perennials (20–30 plants) | equipment | $2,000 |
| Premium Mulch (6 cubic yards) | equipment | $800 |
| Labor, Planting & Cleanup (4 hrs) | labor | $700 |
Specs (display only)
- Service: Landscape design plan + new beds + perennial planting
- Plants: Shrubs, ornamental grasses, perennials (Proven Winners or similar)
- Design: Hand-sketched plan included
- Warranty: 1-yr plant warranty (drought established)
- Mulch: Premium shredded hardwood, 3" depth
Tier add-ons
| add-on | price |
|---|---|
irrigation — Drip Irrigation for New BedsRainbird or Hunter drip system for efficient watering | $1,200 |
lighting — Path & Accent LightingLow-voltage LED landscape lighting package | $2,000 |
Pros (display only)
- Perennials come back every year — better ROI than annuals
- Design plan ensures plants complement each other and the home
- Proper soil amendment for plant health
- Curb appeal increase significantly impacts home value
Cons (display only)
- Takes 2–3 years for new plants to fill in fully
tags: planting medium full_design
Full landscape design + hardscape + irrigation
Brand: Landscape Architect / Design-Build Firm
basePrice (declared)
$25,000
Σ(lineItems) (computed)
$25,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Landscape Architecture Design & Plans (8 hrs) | labor | $2,500 |
| Hardscape — Paver Patio + Walkway (2 days) | labor | $8,000 |
| Specimen Trees (3–5 trees) | equipment | $4,000 |
| Shrubs, Perennials & Mass Plantings | equipment | $3,500 |
| Rainbird Smart Irrigation Systemsource: https://www.rainbird.com/homeowners/products/drip-irrigation | equipment | $2,500 |
| LED Landscape Lighting (full system) | equipment | $2,000 |
| Mulch, Soil, Edging & Cleanup (4 hrs) | labor | $2,500 |
Specs (display only)
- Service: Landscape architect design + full installation
- Hardscape: Paver patio or walkway, retaining walls
- Irrigation: Rainbird smart zone system
- Lighting: Full landscape lighting with transformer
- Plants: Premium specimen trees and mature shrubs
Pros (display only)
- Landscape architect plan — cohesive design from street to back
- Mature specimen trees make an immediate impact
- Hardscape + plants + lighting = complete outdoor living
- Smart irrigation automatically adjusts for weather
- Dramatically increases appraisal value
Cons (display only)
- Highest cost — appropriate for full property transformations
tags: hardscape full_design irrigation large
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | project_type ∈ { "cleanup" } |
good | 1 | yard_size ∈ { "small" } |
good | 1 | style ∈ { "low_maintenance" } |
better | 3 | project_type ∈ { "new_beds" } |
better | 2 | yard_size ∈ { "medium" } |
better | 1 | style ∈ { "traditional", "modern" } |
best | 3 | project_type ∈ { "full_design", "hardscape" } |
best | 2 | yard_size ∈ { "large" } |
best | 1 | project_type ∈ { "irrigation" } |
best | 1 | style ∈ { "cottage" } |
best | 1 | existing_irrigation ∈ { "no" } |
Final price formula (this vertical)
// computeTierPricing(landscaping, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
project_type=cleanup— "Cleanup — trim, mulch, and freshen up existing beds"yard_size=small— "Small — front yard or under 1,000 sq ft"style=low_maintenance— "Low maintenance — native plants, minimal upkeep"existing_irrigation=yes— "Yes — existing system in good shape"
Σ(tier.lineItems) = $5,000 Σ(answer priceDeltas) = $0 permits = $0 installerCost = $5,000 platformFee (5%) = $250 customerTotal = $5,250
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- Angi Landscaping Costs — https://www.angi.com/articles/how-much-does-landscaping-cost.htm
- Forbes Home Landscaping Guide — https://www.forbes.com/home-improvement/landscape/landscaping-cost/
Source file: src/lib/flow-engine/verticals/landscaping.ts · run the live flow →
🏡Fencing slug:fencing
Get a transparent estimate for new fence installation
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$4,000 – $9,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Fence permits required in most jurisdictions. HOA may have height/style restrictions. (estimate: $200)
timeline: Most fences installed in 1–3 days.
installer note: Your installer will confirm property lines and utility locations (call 811) before installation.
Photo prompts
- Photo of the area to be fenced — show the full perimeter from a corner, including terrain (flat, sloped, rocky) and any gates or access points needed
- Photo of any existing fence to be replaced — show the current condition, post spacing, and material so we can plan removal
Questionnaire (5 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/fencing.ts.
What type of fence are you installing?
Why we ask: Material/finish selection — primary cost driver inside the tier ladder.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
wood_privacy | Wood privacy fence (cedar or pine) |
|
vinyl | Vinyl / PVC fence — no maintenance |
|
chain_link | Chain-link — durable and affordable |
|
aluminum | Aluminum or wrought iron (decorative) |
|
composite | Composite wood (TimberTech or Trex Fencing) |
|
Approximately how many linear feet of fence?
Why we ask: Linear footage is the primary unit-of-work for fences, gutters, baseboards, etc.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
under_150 | Under 150 linear feet |
|
150_300 | 150–300 linear feet |
|
300_500 | 300–500 linear feet |
|
over_500 | Over 500 linear feet |
|
How tall does the fence need to be?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
4ft | 4 feet — decorative or front yard |
|
6ft | 6 feet — standard privacy height (most common) |
|
8ft | 8 feet — maximum privacy or security |
|
What's the main purpose of the fence?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
privacy | Privacy — block neighbors and passersby |
|
pets_kids | Contain pets or children |
|
security | Security — deter entry |
|
decorative | Decorative / curb appeal |
|
pool | Pool code compliance (required safety fence) |
|
Is there an existing fence to remove?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
no | No existing fence |
|
yes | Yes — existing fence needs demo |
|
Tiers (3)
Pressure-treated or chain-link — durable and budget-friendly
Brand: Pressure-Treated Pine / Galvanized Chain-Link
basePrice (declared)
$4,000
Σ(lineItems) (computed)
$4,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| PT Wood or Chain-Link Materials (200 LF) | equipment | $2,000 |
| Post Holes (concrete set) | equipment | $800 |
| Installation Labor (12 hrs) | labor | $1,200 |
Specs (display only)
- Material: Pressure-treated pine (6-ft privacy) or galvanized chain-link
- Post Material: 4×4 PT pine or galvanized steel
- Warranty: 1-yr labor
- Linear Foot: ~$20–$30/LF installed
Pros (display only)
- Most affordable fencing option
- Pressure-treated lasts 15–20 years
- Chain-link is nearly indestructible
- Fast installation
Cons (display only)
- Wood needs sealing every 2–3 years
- Wood will gray and weather without maintenance
tags: wood chain_link small medium containment
Vinyl or cedar — no maintenance, great look
Brand: Certainteed Bufftech / Western Red Cedar
basePrice (declared)
$7,000
Σ(lineItems) (computed)
$7,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Vinyl PVC or Cedar Materials (200 LF) | equipment | $3,800 |
| Reinforced Posts & Concrete | equipment | $1,200 |
| Installation Labor (12 hrs) | labor | $1,200 |
| Gate (standard single gate) | equipment | $400 |
| Cleanup, Permits & Misc (4 hrs) | labor | $400 |
Specs (display only)
- Material: Vinyl PVC or Western Red Cedar
- Post Material: Steel-reinforced vinyl or 4×4 cedar
- Warranty: Limited lifetime on vinyl
- Linear Foot: ~$25–$45/LF installed
Tier add-ons
| add-on | price |
|---|---|
double_gate — Double-Drive Gate12-ft wide double gate for vehicle access | $900 |
post_caps — Decorative Post CapsSolar-powered LED post cap lights | $300 |
Pros (display only)
- Vinyl — never paint, seal, or stain. Lifetime warranty.
- Cedar — beautiful, naturally rot-resistant
- More color and style options
- Higher home value contribution
Cons (display only)
- Vinyl can fade slightly after 10+ years
- Cedar still benefits from occasional sealing
tags: vinyl wood privacy medium large
Aluminum or composite — premium curb appeal
Brand: Specrail Aluminum / Trex Seclusions
basePrice (declared)
$9,000
Σ(lineItems) (computed)
$9,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Aluminum or Composite Fencing (200 LF)source: https://www.trex.com/trex-products/fencing/seclusions/ | equipment | $5,400 |
| Heavy-Duty Posts & Concrete Footings | equipment | $1,200 |
| Premium Gates (2×) | equipment | $1,000 |
| Installation Labor (12 hrs) | labor | $1,200 |
| Cleanup, Permits & Misc (2 hrs) | labor | $200 |
Specs (display only)
- Material: Specrail aluminum or Trex Seclusions composite
- Post Material: Heavy-wall steel posts (powder-coated)
- Warranty: 25-yr composite, lifetime aluminum
- Linear Foot: ~$35–$55/LF installed
Pros (display only)
- Aluminum — elegant, rust-proof, powder-coated
- Trex composite — wood look with zero maintenance
- Dramatically increases curb appeal
- Works with smart gate locks and access control
Cons (display only)
- Highest per-foot cost
- Aluminum picket fencing provides less privacy
tags: metal composite_fence decorative pool_fence security
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | fence_material ∈ { "chain_link" } |
good | 2 | purpose ∈ { "pets_kids" } |
better | 3 | fence_material ∈ { "vinyl", "wood_privacy" } |
better | 2 | purpose ∈ { "privacy" } |
best | 4 | fence_material ∈ { "aluminum", "composite" } |
best | 2 | purpose ∈ { "decorative", "pool_fence" } |
Final price formula (this vertical)
// computeTierPricing(fencing, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $200 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
fence_material=wood_privacy— "Wood privacy fence (cedar or pine)"linear_feet=under_150— "Under 150 linear feet"fence_height=4ft— "4 feet — decorative or front yard"purpose=privacy— "Privacy — block neighbors and passersby"demo=no— "No existing fence"
Σ(tier.lineItems) = $7,000 Σ(answer priceDeltas) = $0 permits = $200 installerCost = $7,200 platformFee (5%) = $360 customerTotal = $7,560
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- HomeGuide Fence Installation Cost 2026 — https://homeguide.com/costs/fence-installation-cost
- ServiceCostPro Fence Pricing 2025 — https://www.servicecostpro.com/blog/fence-installation-cost-2025
Source file: src/lib/flow-engine/verticals/fencing.ts · run the live flow →
🌧️Gutter Installation & Cleaning slug:gutter-services
Get a transparent estimate for gutter services
Flow & payment model
Direct Pay (full price collected at booking)
Tier price range (declared base)
$225 – $7,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
No permits typically required for gutter work. (estimate: $0)
timeline: Cleaning: 2–3 hours. Seamless replacement: 1 day. Copper: 1–2 days.
installer note: Seamless gutters are custom-fabricated on-site — installer confirms final linear footage during visit.
Questionnaire (4 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/gutter-services.ts.
What gutter service do you need?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
cleaning | Gutter cleaning (remove debris, flush downspouts) |
|
repair | Repair — rehang, reseal, or fix sagging sections |
|
replace | Replace existing gutters |
|
new_install | New installation — no gutters currently |
|
guards | Add gutter guards to existing gutters |
|
How large is your home?
Why we ask: Home size drives material and labor quantities for the entire job.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Small — under 1,500 sq ft |
|
medium | Medium — 1,500–2,500 sq ft |
|
large | Large — over 2,500 sq ft |
|
What gutter material do you want?
branch Hidden when service_type ∈ { "replace", "new_install" }
Why we ask: Material/finish selection — primary cost driver inside the tier ladder.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
aluminum | Seamless aluminum (most popular — custom cut on-site) |
|
steel | Steel (stronger, good for heavy snow loads) |
|
copper | Copper (premium — beautiful and ultra-long-lasting) |
|
vinyl | Vinyl (budget — okay for mild climates) |
|
How many stories is your home?
Why we ask: Multi-story homes add scaffolding, ladders, and labor time — drives an access/labor adjustment.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
one | 1 story | no direct price effect |
two | 2 stories |
|
three_plus | 3+ stories |
|
Tiers (3)
Professional gutter cleaning and minor repairs
Brand: Local Gutter Pro
basePrice (declared)
$225
Σ(lineItems) (computed)
$225
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Full Gutter Cleaning — all sections (1.5 hrs) | labor | $150 |
| Downspout Flushing & Clear (0.5 hrs) | labor | $50 |
| Minor Resealing — joints + end caps (0.5 hrs) | labor | $25 |
Specs (display only)
- Service: Clean all gutters + flush downspouts
- Minor Repair: Reseal end caps and joints
- Warranty: 90-day service warranty
- Frequency: Recommended 2× per year
Pros (display only)
- Prevents water damage to foundation and fascia
- Fast — completed in 2–3 hours
- Most affordable option
- Spot repairs included for small leaks
Cons (display only)
- Cleaning only — won't fix structural issues or replace gutters
- Need to repeat 1–2× per year
tags: cleaning small medium
Seamless aluminum replacement — no seams, no leaks
Brand: Seamless Aluminum + LeafFilter or HomeCraft
basePrice (declared)
$1,800
Σ(lineItems) (computed)
$1,800
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Seamless Aluminum Gutters (150 LF)source: https://homeguide.com/costs/gutter-installation-cost | equipment | $1,000 |
| 3×4" Aluminum Downspouts (6 units) | equipment | $250 |
| Installation & Hanger Upgrades (5–6 hrs) | labor | $450 |
| Old Gutter Demo & Disposal (1 hr) | labor | $100 |
Specs (display only)
- Material: Seamless K-style aluminum (custom cut on-site)
- Size: 5" or 6" gutters
- Guards: Micro-mesh guards (optional)
- Warranty: Limited lifetime on seamless gutters + 1-yr labor
- Downspouts: 3×4" aluminum downspouts included
Tier add-ons
| add-on | price |
|---|---|
guards_micro — Micro-Mesh Gutter Guards (full home)Never clean gutters again — lifetime warranty | $1,500 |
downspout_extensions — Underground Downspout DrainageRoute downspouts underground away from foundation | $600 |
Pros (display only)
- Seamless — no joints = no leaks between seams
- Custom-cut at your home for perfect fit
- Aluminum doesn't rust — great in all climates
- Significantly improves water management
- Wide color selection to match trim
Cons (display only)
- Still needs cleaning 1–2× per year (without guards)
- Higher cost than vinyl
tags: replace new aluminum medium large
Copper gutters — forever beautiful
Brand: Copper Seamless / K-guard or LeafGuard
basePrice (declared)
$7,000
Σ(lineItems) (computed)
$7,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Seamless Copper Gutters (150 LF)source: https://homeguide.com/costs/gutter-installation-cost | equipment | $5,000 |
| Round Copper Downspouts (6 units)source: https://homeguide.com/costs/gutter-installation-cost | equipment | $1,000 |
| Installation — certified copper specialist (8 hrs) | labor | $800 |
| Old Gutter Demo & Disposal (1 hr) | labor | $200 |
Specs (display only)
- Material: Seamless copper gutters (natural patina)
- Size: 5" half-round or K-style
- Guards: Copper or stainless micro-mesh
- Warranty: 50+ year service life
- Downspouts: Round copper downspouts
Pros (display only)
- Copper develops beautiful verdigris patina over 5–10 years
- Never needs painting — only gets more attractive with age
- 50+ year service life — outlasts the home in many cases
- Significant luxury home value contribution
- Antimicrobial — algae and mold resistant
Cons (display only)
- Highest material cost (6–8× aluminum)
- Requires specialist installer — can't DIY
- Initial bright copper look takes years to patina
tags: copper replace new large
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | service_type ∈ { "cleaning", "repair" } |
good | 1 | home_size ∈ { "small" } |
better | 3 | service_type ∈ { "replace", "new_install" } |
better | 2 | gutter_material ∈ { "aluminum", "steel" } |
better | 3 | service_type ∈ { "guards" } |
best | 4 | gutter_material ∈ { "copper" } |
best | 2 | home_size ∈ { "large" } |
Final price formula (this vertical)
// computeTierPricing(gutter-services, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: simple/direct_pay → collect FULL customerTotal at booking.Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
service_type=cleaning— "Gutter cleaning (remove debris, flush downspouts)"home_size=small— "Small — under 1,500 sq ft"gutter_material=aluminum— "Seamless aluminum (most popular — custom cut on-site)"stories=one— "1 story"
Σ(tier.lineItems) = $1,800 Σ(answer priceDeltas) = $0 permits = $0 installerCost = $1,800 platformFee (5%) = $90 customerTotal = $1,890
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- Bob Vila Gutter Installation Cost — https://www.bobvila.com/articles/gutter-installation-cost/
- HomeGuide Gutter Installation Cost — https://homeguide.com/costs/gutter-installation-cost
Source file: src/lib/flow-engine/verticals/gutter-services.ts · run the live flow →
💨Duct Cleaning slug:duct-cleaning
Get a transparent estimate for professional air duct cleaning
Flow & payment model
Direct Pay (full price collected at booking)
Tier price range (declared base)
$400 – $2,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
No permits required for duct cleaning. (estimate: $0)
timeline: Standard cleaning: 2–4 hours. Full system + sanitization: 4–6 hours.
installer note: NADCA-certified technicians use inspection cameras and verify results before completion.
Questionnaire (4 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/duct-cleaning.ts.
What's prompting this service?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
routine | Routine maintenance (it's been 3–5+ years) |
|
allergy | Allergy or asthma concerns |
|
new_home | Recently moved in or after construction/renovation |
|
mold | Musty smell or possible mold in ducts |
|
rodent | Evidence of rodents or pests in ducts |
|
How large is your home?
Why we ask: Home square footage sizes the system load — drives both equipment capacity and labor hours.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Under 1,500 sq ft |
|
medium | 1,500–3,000 sq ft |
|
large | Over 3,000 sq ft |
|
How many HVAC systems does your home have?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
one | 1 system (most homes) | no direct price effect |
two | 2 systems (common in larger homes) | no direct price effect |
three_plus | 3+ systems | no direct price effect |
When were your ducts last cleaned?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
never | Never or don't know |
|
over_5 | 5+ years ago |
|
recent | Within 3–5 years | no direct price effect |
Tiers (3)
Standard duct cleaning — remove built-up debris
Brand: NADCA-Certified Duct Cleaner
basePrice (declared)
$400
Σ(lineItems) (computed)
$400
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Air Duct Cleaning (supply + return, up to 20 vents) (2–3 hrs) | labor | $300 |
| Dryer Vent Cleaning (0.5 hrs) | labor | $100 |
Specs (display only)
- Service: Rotary brush + negative pressure vacuum
- Coverage: Supply and return ducts + main trunk
- Duration: 2–4 hours
- Warranty: Satisfaction guarantee
- Certification: NADCA member company
Pros (display only)
- NADCA standards — proper technique and verification
- Removes dust, pet dander, and allergens
- Improves HVAC airflow and efficiency
- Completed in a half day
Cons (display only)
- Doesn't address mold, sanitization, or liner damage
tags: routine small medium
Full system cleaning + sanitization
Brand: NADCA Pro + Benefect or Sporicidin
basePrice (declared)
$750
Σ(lineItems) (computed)
$750
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Full System Duct Cleaning (up to 25 vents) (3–4 hrs) | labor | $400 |
| Antimicrobial Sanitization Treatment (0.5 hrs) | labor | $200 |
| Furnace Coil & Blower Cleaning (0.5 hrs) | labor | $100 |
| Dryer Vent + Documentation (0.5 hrs) | labor | $50 |
Specs (display only)
- Service: Full duct cleaning + antimicrobial sanitization
- Coverage: All ducts + furnace compartment + dryer vent
- Sanitizer: Benefect or Sporicidin — EPA-registered, plant-based
- Duration: 4–6 hours
- Documentation: Before/after photos provided
Tier add-ons
| add-on | price |
|---|---|
uv_light — UV Air Purifier InstallationRadic8 or Aprilaire UV — kills mold and bacteria 24/7 | $650 |
Pros (display only)
- Sanitization kills mold spores, bacteria, and allergens
- Includes furnace blower and coil cleaning
- Before/after photos — proof of work done
- Significantly reduces allergy and asthma triggers
Cons (display only)
- Higher cost than cleaning only
tags: allergy new_home mold_concern medium large
Complete air quality restoration
Brand: NADCA + Mold Remediation Pro
basePrice (declared)
$2,000
Σ(lineItems) (computed)
$2,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Full System NADCA Duct Cleaning (3–4 hrs) | labor | $600 |
| Mold Testing — Before + After (1 hr) | labor | $400 |
| Antimicrobial Mold Remediation (2–3 hrs) | labor | $600 |
| UV Air Purifier Installation (1 hr) | equipment | $300 |
| Post-Treatment Air Quality Verification (0.5 hrs) | labor | $100 |
Specs (display only)
- Service: Duct cleaning + mold testing + remediation + air quality test
- Coverage: Full system + all plenums + UV light install
- Testing: Pre/post air quality particle count
- Warranty: 1-yr installer workmanship warranty
Pros (display only)
- Addresses underlying mold or contamination — not just surface cleaning
- Post-treatment air quality measurement confirms results
- UV light prevents future mold growth inside ducts
- Best for immunocompromised households or severe air quality issues
Cons (display only)
- Most expensive option — appropriate for serious air quality concerns
tags: mold_concern pest allergy never_cleaned large
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | reason ∈ { "routine" } |
good | 1 | home_sqft ∈ { "small" } |
better | 3 | reason ∈ { "allergy", "new_home" } |
better | 2 | last_cleaned ∈ { "never", "over_5" } |
best | 4 | reason ∈ { "mold", "rodent" } |
best | 2 | home_sqft ∈ { "large" } |
Final price formula (this vertical)
// computeTierPricing(duct-cleaning, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: simple/direct_pay → collect FULL customerTotal at booking.Pricing sources cited in code
- Fixr — Air Duct Cleaning Cost (2026) — https://www.fixr.com/costs/air-duct-cleaning
- NADCA — National Air Duct Cleaners Association — https://www.nadca.com
Source file: src/lib/flow-engine/verticals/duct-cleaning.ts · run the live flow →
🐜Pest Control slug:pest-control
Pests, wildlife, or mosquitoes — get honest pricing before they quote you
Flow & payment model
Direct Pay (full price collected at booking)
Tier price range (declared base)
$200 – $2,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
No permits required for pest control. Wildlife trapping must follow state wildlife laws — your specialist handles relocation and reporting where required. (estimate: $0)
timeline: Insect treatments: same or next day. Wildlife exclusion: 3–7 days (trap-check cycle). Mosquito barrier: scheduled within a week. Termite bait system: 1–3 days.
installer note: Your pest control or wildlife technician will inspect on-site and confirm the treatment plan before starting.
Photo prompts
- Photo of the affected area (entry point, nest, damage) — if safe to capture
- For wildlife: photo of the entry/exit point and any visible nesting material
- For mosquito: photo of standing water sources or yard areas of concern
Questionnaire (10 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/pest-control.ts.
What are you dealing with?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price. (heuristic fallback — not explicitly authored)
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
ants | Ants (carpenter, odorous house, fire) |
|
roaches | Cockroaches |
|
termites | Termites (or evidence of termite damage) |
|
rodents | Rodents — mice or rats |
|
bed_bugs | Bed bugs |
|
wasps_bees | Wasps, hornets, or bees (nest removal) |
|
wildlife | Wildlife — raccoons, squirrels, bats, birds, opossums |
|
mosquito | Mosquitoes — outdoor yard treatment |
|
general | General pest prevention (year-round program) |
|
Which wildlife species?
branch Hidden when pest_type ∈ { "ants", "roaches", "termites", "rodents", "bed_bugs", "wasps_bees", "mosquito", "general" }
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price. (heuristic fallback — not explicitly authored)
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
raccoons | Raccoons |
|
squirrels | Squirrels (attic, soffit, or chimney) |
|
bats | Bats (in attic or chimney) — protected species, requires specialist |
|
birds | Birds (pigeons, starlings, sparrows) |
|
opossums | Opossums or skunks |
|
groundhogs | Groundhogs, moles, or voles (yard) |
|
snakes | Snakes |
|
other_wildlife | Other wildlife |
|
Where is the wildlife?
branch Hidden when pest_type ∈ { "ants", "roaches", "termites", "rodents", "bed_bugs", "wasps_bees", "mosquito", "general" }
Why we ask: Used for regional pricing multiplier and installer matching radius. (heuristic fallback — not explicitly authored)
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
attic | In the attic |
|
chimney | In the chimney |
|
crawl_basement | Crawlspace or basement |
|
soffit_eave | Soffit, eave, or roof line |
|
yard | Yard or under the deck |
|
multiple | Multiple locations |
|
Is there visible damage or droppings?
branch Hidden when pest_type ∈ { "ants", "roaches", "termites", "rodents", "bed_bugs", "wasps_bees", "mosquito", "general" }
Why we ask: Age of the structure flags conditions that change scope (older wiring, lead, asbestos era, code upgrades). (heuristic fallback — not explicitly authored)
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
none | No visible damage — just want them out | no direct price effect |
minor | Minor — some droppings, chewed wires or insulation | no direct price effect |
major | Major — significant insulation damage, structural concern |
|
How large is your yard?
branch Hidden when pest_type ∈ { "ants", "roaches", "termites", "rodents", "bed_bugs", "wasps_bees", "wildlife", "general" }
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price. (heuristic fallback — not explicitly authored)
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Small — under 1/4 acre |
|
medium | Medium — 1/4 to 1/2 acre |
|
large | Large — 1/2 to 1 acre |
|
xl | Very large — over 1 acre |
|
What kind of mosquito treatment do you want?
branch Hidden when pest_type ∈ { "ants", "roaches", "termites", "rodents", "bed_bugs", "wasps_bees", "wildlife", "general" }
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price. (heuristic fallback — not explicitly authored)
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
one_time_event | One-time spray for an event (wedding, party, BBQ) |
|
monthly | Monthly barrier spray (May–October — the standard recurring plan) |
|
natural | Natural / organic treatment (essential oil based) |
|
in2care | In2Care or similar trap system (kills adults + larvae) |
|
unsure | Not sure — recommend what's right | no direct price effect |
Any specific concerns?
branch Hidden when pest_type ∈ { "ants", "roaches", "termites", "rodents", "bed_bugs", "wasps_bees", "wildlife", "general" }
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price. (heuristic fallback — not explicitly authored)
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
kids | Kids in the yard — want kid-safe products |
|
pets | Pets — want pet-safe products |
|
pollinators | Bees & pollinators — avoid harming them |
|
ticks | Also want tick treatment |
|
garden | Vegetable garden — avoid spray on edibles | no direct price effect |
How bad is the infestation?
branch Hidden when pest_type ∈ { "wildlife", "mosquito" }
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier. (heuristic fallback — not explicitly authored)
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
mild | Mild — spotted a few |
|
moderate | Moderate — regular sightings, evidence of activity |
|
severe | Severe — large numbers, structural concern |
|
How large is your home?
branch Hidden when pest_type ∈ { "mosquito" }
Why we ask: Sizing input. Drives base price and which tier the customer can realistically use. (heuristic fallback — not explicitly authored)
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Under 1,500 sq ft |
|
medium | 1,500–3,000 sq ft |
|
large | Over 3,000 sq ft |
|
One-time treatment or ongoing service?
branch Hidden when pest_type ∈ { "wildlife", "mosquito" }
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price. (heuristic fallback — not explicitly authored)
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
one_time | One-time treatment |
|
quarterly | Quarterly service plan (best prevention) |
|
monthly | Monthly service (for serious or recurring issues) |
|
Tiers (5)
Targeted one-time treatment or single mosquito spray
Brand: Orkin / Terminix / Local Pro
basePrice (declared)
$200
Σ(lineItems) (computed)
$200
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Initial Inspection & Assessment (30 min) | labor | $50 |
| Treatment Application (60–90 min) | labor | $120 |
| Follow-Up Materials | equipment | $30 |
Specs (display only)
- Service: Single targeted treatment
- Products: Professional-grade pesticide application
- Warranty: 30-day re-service guarantee
- Duration: 1–2 hours
Pros (display only)
- Immediate treatment of active infestation
- Fast — usually same or next-day available
- 30-day re-service if problem returns
- EPA-registered products
Cons (display only)
- One-time treatment may not eliminate full colony
- No ongoing prevention
tags: ants roaches stinging mild one_time event small_lot
Quarterly plan or recurring mosquito barrier
Brand: Orkin / Mosquito Joe / Local Pro
basePrice (declared)
$600
Σ(lineItems) (computed)
$600
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Initial Treatment — Interior + Exterior (2 hrs) | labor | $200 |
| Recurring Visits (4× quarterly / 6× monthly for mosquito) | labor | $300 |
| Annual Plan Admin & Reports | labor | $100 |
Specs (display only)
- Service: Initial treatment + ongoing visits (quarterly pests / monthly mosquito May–Oct)
- Products: Interior + exterior barrier OR yard-wide mosquito spray
- Warranty: Unlimited re-service between visits
- Coverage: Year-round prevention
Tier add-ons
| add-on | price |
|---|---|
tick_addon — Tick treatment add-onAdds tick suppression to each mosquito visit | $150 |
spider_web — Cobweb & Wasp Nest Removal (each visit)De-webbing and preventive nest treatment | $100 |
Pros (display only)
- Year-round barrier = pests never get a foothold
- Unlimited re-service between visits at no extra charge
- Mosquito: barrier spray drops adult population 80–90% within a day
- Digital reports and service records
- Kid- and pet-safe products available
Cons (display only)
- Annual commitment for best pricing
- Monthly cost ($50–$100/mo) ongoing
tags: general quarterly monthly_mosquito moderate bed_bugs
Sentricon termite system + full pest plan
Brand: Terminix / Orkin Termite + Home Protection
basePrice (declared)
$2,000
Σ(lineItems) (computed)
$2,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Sentricon Termite System Installation — 20 stations (4 hrs) | labor | $1,200 |
| Full Home Treatment — Interior + Exterior (2 hrs) | labor | $400 |
| Rodent Entry Exclusion (2 hrs) | labor | $250 |
| Annual Warranty & Monitoring | labor | $150 |
Specs (display only)
- Service: Termite bait system + full pest plan
- Termite System: Sentricon Always Active bait stations
- Warranty: $1M Termite Damage Repair Guarantee
- Coverage: Termites + all common pests
- Monitoring: 24/7 bait station monitoring
Pros (display only)
- Sentricon — the gold standard in termite control
- $1 million termite damage repair guarantee (Terminix)
- Bait stations last forever — no liquid treatment in soil
- Covers all pests + rodent entry-point exclusion
- Transferable to home buyer at sale
Cons (display only)
- Highest annual cost
- Bait stations require annual inspection and renewal
tags: termites rodents severe
Trap, remove, seal entry points, sanitize
Brand: Licensed wildlife specialist
basePrice (declared)
$650
Σ(lineItems) (computed)
$650
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Inspection & Entry Point Mapping (1 hr) | labor | $120 |
| Live Trap Set + Daily Monitoring (3–7 days) | labor | $180 |
| Animal Removal & Relocation | labor | $80 |
| Entry Point Sealing — hardware cloth, sealant, vent caps | equipment | $180 |
| Attic Sanitization & Droppings Cleanup (basic) | labor | $90 |
Specs (display only)
- Service: Humane trap + remove + seal entry points + sanitize
- Methods: Live trapping, one-way exclusion doors, exclusion sealing
- Warranty: 1-yr re-entry warranty on sealed points
- Duration: Initial visit + 3–7 day trap monitoring
Tier add-ons
| add-on | price |
|---|---|
insulation_remove — Contaminated insulation removal & replacementRemove urine/dropping-soaked insulation and re-blow with new | $1,800 |
bat_specialist — Bat exclusion specialist (NWCOA-certified)Required for any bat exclusion — protected species | $800 |
chimney_cap — Chimney cap installStainless steel cap to prevent re-entry | $350 |
Pros (display only)
- Licensed wildlife specialist (NWCOA certified) — not a generic exterminator
- Humane live trapping where required by state law
- Entry points sealed with hardware cloth / steel — guaranteed against re-entry
- Includes attic sanitization and droppings cleanup
- Bats handled by certified bat-exclusion specialists (protected species)
Cons (display only)
- Takes longer than insect treatment (3–7 days of trap checks)
- Bat exclusion can ONLY be done outside maternity season (April–August in most states)
- Insurance damage cleanup quoted separately if needed
tags: wildlife raccoons squirrels birds opossums groundhogs snakes bats
Wedding, party, or one-shot yard treatment
Brand: Mosquito Joe / Mosquito Squad / Local Pro
basePrice (declared)
$250
Σ(lineItems) (computed)
$250
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Yard Walkthrough & Breeding Source ID (15 min) | labor | $40 |
| Barrier Spray Application — perimeter & shrubs (1 hr) | labor | $160 |
| Larvicide Treatment of Standing Water Sources | equipment | $50 |
Specs (display only)
- Service: One-time barrier spray applied 24–48 hrs before event
- Coverage: Whole yard — perimeter, shrubs, undersides of leaves
- Duration: 1–2 hours on-site, lasts 14–21 days
- Warranty: Re-spray free within 7 days if rain washes off
Tier add-ons
| add-on | price |
|---|---|
in2care_install — In2Care trap station rental (4 stations)Targets adults AND larvae — kills mosquitoes before they can breed | $180 |
tick_spray — Tick treatment add-onAdds tick suppression to the same spray | $80 |
Pros (display only)
- Drops mosquito count 80–90% within 24 hours
- Lasts the duration of a typical event window (2–3 weeks)
- Bee-safe formulations available (sprayed in evening when pollinators inactive)
- Same week scheduling in most markets
Cons (display only)
- Not a long-term solution — recurring plan is better value if you have ongoing problem
- Doesn't address breeding sources (standing water) — pro will flag them
tags: mosquito event one_time
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | service_preference ∈ { "one_time" } |
good | 2 | severity ∈ { "mild" } |
better | 3 | service_preference ∈ { "quarterly", "monthly" } |
better | 2 | pest_type ∈ { "general", "ants", "roaches", "bed_bugs" } |
better | 10 | mosquito_treatment_type ∈ { "monthly", "natural", "in2care" } |
best | 4 | pest_type ∈ { "termites" } |
best | 3 | pest_type ∈ { "rodents" } |
best | 2 | severity ∈ { "severe" } |
best | 2 | pest_type ∈ { "bed_bugs" } |
wildlife | 10 | pest_type ∈ { "wildlife" } |
mosquito_event | 10 | mosquito_treatment_type ∈ { "one_time_event" } |
mosquito_event | 5 | pest_type ∈ { "mosquito" } |
Final price formula (this vertical)
// computeTierPricing(pest-control, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: simple/direct_pay → collect FULL customerTotal at booking.Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
pest_type=ants— "Ants (carpenter, odorous house, fire)"wildlife_type=raccoons— "Raccoons"wildlife_location=attic— "In the attic"wildlife_damage=none— "No visible damage — just want them out"mosquito_lot_size=small— "Small — under 1/4 acre"mosquito_treatment_type=one_time_event— "One-time spray for an event (wedding, party, BBQ)"mosquito_concerns=kids— "Kids in the yard — want kid-safe products"severity=mild— "Mild — spotted a few"home_size=small— "Under 1,500 sq ft"service_preference=one_time— "One-time treatment"
Σ(tier.lineItems) = $600 Σ(answer priceDeltas) = $0 permits = $0 installerCost = $600 platformFee (5%) = $30 customerTotal = $630
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- This Old House — Pest Control Costs (2026) — https://www.thisoldhouse.com/pest-control/pest-control-cost
- NWCOA — Wildlife Control Operators — https://www.nwcoa.com/
- Terminix Pest Control — https://www.terminix.com
- Orkin Pest Control — https://www.orkin.com
- Mosquito Joe — Barrier Spray Info — https://www.mosquitojoe.com/
Source file: src/lib/flow-engine/verticals/pest-control.ts · run the live flow →
🌳Tree Removal slug:tree-removal
Get a transparent estimate for professional tree removal
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$1,000 – $6,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Tree removal permits may be required in some municipalities, especially for trees over a certain diameter or in protected zones. Arborist advises. (estimate: $0)
timeline: Standard removals: 1 day. Crane or technical work: 1–2 days. Emergency: same-day available.
installer note: Your arborist will assess access, nearby structures, and the best removal method before quoting.
Photo prompts
- Photo of each tree to be removed — stand back far enough to show the full tree height, trunk diameter, lean direction, and proximity to structures, power lines, or fences
Questionnaire (5 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/tree-removal.ts.
How large is the tree (trunk diameter at chest height)?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Small — under 12" diameter (young or ornamental tree) |
|
medium | Medium — 12–24" diameter |
|
large | Large — 24–36" diameter |
|
xl | Very large — over 36" diameter |
|
Where is the tree located?
Why we ask: Location drives regional pricing and installer matching radius.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
open_yard | Open yard — easy to fell and remove |
|
near_structure | Near house, fence, or utility line |
|
tight_access | Tight access — between structures or limited equipment room |
|
leaning_over | Leaning over home or driveway — high risk |
|
What's the condition of the tree?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
healthy | Healthy — removing for space or view | no direct price effect |
diseased | Diseased — losing leaves, cankers, or dead branches |
|
dead | Dead — standing dead tree |
|
storm_damage | Storm damage — partially fallen or cracked |
|
How many trees need to be removed?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
one | 1 tree |
|
two_three | 2–3 trees |
|
four_plus | 4 or more trees |
|
What do you want done with the stump?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
leave | Leave the stump (lowest cost) | no direct price effect |
grind | Stump grinding (remove to below grade) | no direct price effect |
full_removal | Full root removal (needed for replanting or construction) | no direct price effect |
Tiers (3)
Efficient tree removal with cleanup
Brand: ISA-Certified Arborist
basePrice (declared)
$1,000
Σ(lineItems) (computed)
$1,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Tree Removal & Limb Chipping (4 hrs) | labor | $800 |
| Debris Cleanup & Haul Away (1 hr) | labor | $200 |
Specs (display only)
- Service: Tree felling + limb chipping + debris removal
- Warranty: 1-yr on any damage from work
- Certification: ISA-certified arborist
- Duration: Half day to full day
Pros (display only)
- Professional, safe removal
- All debris chipped and hauled
- Bonded and insured
- Fast — most small/medium trees removed same day
Cons (display only)
- Stump left behind (add stump grinding if needed)
tags: small medium easy healthy
Complex removal + stump grinding
Brand: ISA-Certified Crew + Stump Grinder
basePrice (declared)
$2,500
Σ(lineItems) (computed)
$2,500
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Tree Removal (large or near-structure, 6 hrs) | labor | $1,800 |
| Stump Grinding — 12" below grade (1 hr) | labor | $500 |
| Cleanup, Backfill & Haul Away (1 hr) | labor | $200 |
Specs (display only)
- Service: Tree removal + stump grinding to 12" below grade
- Duration: 1 full day
- Warranty: 1-yr workmanship warranty
- Stump: Ground to below-grade, backfilled with chips
Tier add-ons
| add-on | price |
|---|---|
additional_trees — Additional Trees (per tree)Discount rate for multiple trees removed same day | $800 |
replanting — New Tree PlantingPlant a new shade tree with 1-yr guarantee | $500 |
Pros (display only)
- Complete removal — tree and stump gone
- Ready for grass or replanting after grinding
- Large crew handles near-structure work safely
- Drone assessment for tight-access trees
Cons (display only)
- Near-structure work takes longer and costs more
tags: large near_structure diseased dead storm
Hazardous tree removal — crane or technical takedown
Brand: ISA Board-Certified Master Arborist
basePrice (declared)
$6,000
Σ(lineItems) (computed)
$6,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Crane Rental (8 hrs) | labor | $2,000 |
| Technical Rigging Crew — 3–4 people (8 hrs) | labor | $2,000 |
| Tree Removal & Debris Chipping (6 hrs) | labor | $1,000 |
| Stump Grinding — full removal (2 hrs) | labor | $800 |
| Cleanup & Haul Away (1 hr) | labor | $200 |
Specs (display only)
- Service: Technical piece-work removal with crane or rigging
- Crane: 50–100 ton crane for direct lift (zero drop risk)
- Duration: Full day or multi-day
- Warranty: Full liability coverage on crane work
Pros (display only)
- Zero-risk removal — piece by piece via crane
- Only option for trees over structures
- Board-certified master arborist on-site
- Full insurance and engineering-grade rigging
- Emergency response available
Cons (display only)
- Highest cost — crane day rate is significant
tags: xl dangerous near_structure difficult storm
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | tree_size ∈ { "small", "medium" } |
good | 2 | location ∈ { "open_yard" } |
better | 3 | tree_size ∈ { "large" } |
better | 2 | health ∈ { "diseased", "dead", "storm_damage" } |
better | 1 | stump ∈ { "grind" } |
best | 4 | location ∈ { "leaning_over", "tight_access" } |
best | 3 | tree_size ∈ { "xl" } |
best | 2 | health ∈ { "storm_damage" } |
Final price formula (this vertical)
// computeTierPricing(tree-removal, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Pricing sources cited in code
- ISA Arborist Certification — https://www.isa-arbor.com/certification
- CostHelper Tree Removal Guide — https://home.costhelper.com/tree-removal.html
Source file: src/lib/flow-engine/verticals/tree-removal.ts · run the live flow →
🌳Tree Services slug:tree-services
Removal, trimming, or stump grinding — get a real arborist quote
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$150 – $6,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Tree work permits may be required in some municipalities, especially for trees over a certain diameter, in historic districts, or in protected zones. Arborist advises. (estimate: $0)
timeline: Trimming: 2–6 hrs. Standard removal: 1 day. Crane work: 1–2 days. Stump grinding only: 30 min – 2 hrs. Emergency: same-day dispatch available.
installer note: Your arborist will assess access, nearby structures, and the best method on-site before quoting. Insurance documentation provided for storm-damage jobs.
Photo prompts
- Photo of each tree from the ground — stand back far enough to show the full height, trunk, lean direction, and what's nearby (house, fence, power lines)
- For trimming: photo of the branches you want trimmed and a photo showing the canopy overall
- For stump grinding: close-up of the stump showing diameter (use a tape measure or shoe for scale)
Questionnaire (13 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/tree-services.ts.
What kind of tree work do you need?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price. (heuristic fallback — not explicitly authored)
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
removal | Tree removal (whole tree comes down) |
|
trimming | Trimming or pruning (tree stays, branches go) |
|
stump_grinding | Stump grinding only (tree already down) |
|
emergency | Emergency / storm damage cleanup (fallen or hanging tree) |
|
multiple | Multiple services (removal + grinding, trim + remove) |
|
consult | Consultation — need an arborist to assess first |
|
How large is the tree (trunk diameter at chest height)?
branch Hidden when service_type ∈ { "stump_grinding", "consult" }
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price. (heuristic fallback — not explicitly authored)
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Small — under 12" diameter (young or ornamental) |
|
medium | Medium — 12–24" diameter |
|
large | Large — 24–36" diameter |
|
xl | Very large — over 36" diameter |
|
Where is the tree located?
branch Hidden when service_type ∈ { "stump_grinding", "consult" }
Why we ask: Used for regional pricing multiplier and installer matching radius. (heuristic fallback — not explicitly authored)
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
open_yard | Open yard — easy to fell and remove |
|
near_structure | Near house, fence, or utility line |
|
tight_access | Tight access — between structures or limited equipment room |
|
leaning_over | Leaning over home or driveway — high risk |
|
What's the condition of the tree?
branch Hidden when service_type ∈ { "stump_grinding", "trimming", "consult" }
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price. (heuristic fallback — not explicitly authored)
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
healthy | Healthy — removing for space or view | no direct price effect |
diseased | Diseased — losing leaves, cankers, or dead branches |
|
dead | Dead — standing dead tree |
|
storm_damage | Storm damage — partially fallen or cracked |
|
How many trees?
branch Hidden when service_type ∈ { "consult" }
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price. (heuristic fallback — not explicitly authored)
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
one | 1 tree |
|
two_three | 2–3 trees |
|
four_plus | 4 or more trees |
|
How much trimming do you need?
branch Hidden when service_type ∈ { "removal", "stump_grinding", "emergency", "consult" }
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price. (heuristic fallback — not explicitly authored)
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
light | Light — a few branches, dead wood removal |
|
standard | Standard — full crown thinning or canopy reduction |
|
heavy | Heavy — major canopy reduction or storm-damage trim |
|
hazard | Hazard removal — branches over the house or driveway |
|
Why are you trimming?
branch Hidden when service_type ∈ { "removal", "stump_grinding", "emergency", "consult" }
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price. (heuristic fallback — not explicitly authored)
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
health | Tree health — encourage growth, remove dead branches | no direct price effect |
clearance | Clearance — house, driveway, power lines, sidewalk | no direct price effect |
view | View / aesthetics | no direct price effect |
storm_prep | Storm prep — pre-hurricane / pre-winter pruning | no direct price effect |
fruit | Fruit tree pruning (apple, pear, citrus) | no direct price effect |
How many stumps?
branch Hidden when service_type ∈ { "removal", "trimming", "emergency", "multiple", "consult" }
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price. (heuristic fallback — not explicitly authored)
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
one | 1 stump | no direct price effect |
two_three | 2–3 stumps | no direct price effect |
four_plus | 4 or more stumps | no direct price effect |
How large are the stumps (diameter)?
branch Hidden when service_type ∈ { "removal", "trimming", "emergency", "multiple", "consult" }
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price. (heuristic fallback — not explicitly authored)
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Small — under 12" | no direct price effect |
medium | Medium — 12–24" | no direct price effect |
large | Large — over 24" | no direct price effect |
How deep do you need it ground?
branch Hidden when service_type ∈ { "removal", "trimming", "emergency", "multiple", "consult" }
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price. (heuristic fallback — not explicitly authored)
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
below_grade | Just below grade (standard — ready for grass) | no direct price effect |
deep | Deeper (12"+ — for re-planting or construction) | no direct price effect |
full_removal | Full root ball removal (needed for foundation work) | no direct price effect |
What do you want done with the stump?
branch Hidden when service_type ∈ { "trimming", "stump_grinding", "emergency", "consult" }
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price. (heuristic fallback — not explicitly authored)
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
leave | Leave the stump (lowest cost) | no direct price effect |
grind | Stump grinding (remove to below grade) | no direct price effect |
full_removal | Full root removal (needed for replanting or construction) | no direct price effect |
What's the current state?
branch Hidden when service_type ∈ { "removal", "trimming", "stump_grinding", "multiple", "consult" }
Why we ask: Existing-condition signal — determines whether removal, prep, or remediation line items kick in. (heuristic fallback — not explicitly authored)
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
on_house | Tree is on the house, garage, or vehicle (immediate risk) |
|
blocking | Blocking driveway or street |
|
hanging | Hanging / leaning dangerously, hasn't fallen yet |
|
down_in_yard | Down in the yard — not blocking anything |
|
Is this an insurance claim?
branch Hidden when service_type ∈ { "removal", "trimming", "stump_grinding", "multiple", "consult" }
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price. (heuristic fallback — not explicitly authored)
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
filed | Yes — claim filed, need quote for adjuster |
|
considering | Considering filing — want a quote first |
|
no | No — paying out of pocket | no direct price effect |
Tiers (6)
Crown thinning, dead-wood removal, clearance trimming
Brand: ISA-Certified Arborist
basePrice (declared)
$350
Σ(lineItems) (computed)
$350
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Climbing or Bucket-Truck Setup (1 hr) | labor | $80 |
| Trimming & Pruning Labor (3 hrs) | labor | $180 |
| Debris Chipping & Haul Away (1 hr) | labor | $60 |
| Cleanup & Final Walk | labor | $30 |
Specs (display only)
- Service: Pruning, crown work, hazard branch removal — tree stays standing
- Visit length: 2–6 hours
- Warranty: 1-yr on tree health
- Certification: ISA-certified arborist
Tier add-ons
| add-on | price |
|---|---|
additional_tree_trim — Additional tree (per tree)Discount rate for trimming multiple trees same visit | $250 |
hazard_branch — Hazard branch over structureRoped takedown of a large branch over the house | $300 |
Pros (display only)
- Tree stays — costs a fraction of removal
- Promotes long-term health and reduces storm risk
- Often same-day or next-week scheduling
- Insured, bonded — debris hauled away
- Right call for clearance from house, lines, or driveway
Cons (display only)
- Aggressive trimming (>25% canopy) can stress the tree — pro will advise
tags: trimming light_trim standard_trim hazard_trim
Efficient tree removal with cleanup (small to medium)
Brand: ISA-Certified Arborist
basePrice (declared)
$1,000
Σ(lineItems) (computed)
$1,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Tree Removal & Limb Chipping (4 hrs) | labor | $800 |
| Debris Cleanup & Haul Away (1 hr) | labor | $200 |
Specs (display only)
- Service: Tree felling + limb chipping + debris removal
- Warranty: 1-yr on any damage from work
- Certification: ISA-certified arborist
- Duration: Half day to full day
Tier add-ons
| add-on | price |
|---|---|
stump_grind_addon — Stump grinding (after removal)Grind the stump to 12" below grade | $300 |
Pros (display only)
- Professional, safe removal
- All debris chipped and hauled
- Bonded and insured
- Fast — most small/medium trees removed same day
Cons (display only)
- Stump left behind unless grinding selected as add-on
tags: removal small medium easy healthy
Big trees, tight access, or near house — with stump grinding
Brand: ISA-Certified Crew + Stump Grinder
basePrice (declared)
$2,500
Σ(lineItems) (computed)
$2,500
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Tree Removal (large or near-structure, 6 hrs) | labor | $1,800 |
| Stump Grinding — 12" below grade (1 hr) | labor | $500 |
| Cleanup, Backfill & Haul Away (1 hr) | labor | $200 |
Specs (display only)
- Service: Tree removal + stump grinding to 12" below grade
- Duration: 1 full day
- Warranty: 1-yr workmanship warranty
- Stump: Ground to below-grade, backfilled with chips
Tier add-ons
| add-on | price |
|---|---|
additional_trees — Additional trees (per tree)Discount rate for multiple trees removed same day | $800 |
replanting — New tree plantingPlant a new shade tree with 1-yr guarantee | $500 |
Pros (display only)
- Complete removal — tree and stump gone
- Ready for grass or replanting after grinding
- Large crew handles near-structure work safely
- Drone assessment for tight-access trees
Cons (display only)
- Near-structure work takes longer and costs more
tags: removal large near_structure diseased dead storm
Hazardous tree — crane lift or technical rigging
Brand: ISA Board-Certified Master Arborist
basePrice (declared)
$6,000
Σ(lineItems) (computed)
$6,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Crane Rental (8 hrs) | labor | $2,000 |
| Technical Rigging Crew — 3–4 people (8 hrs) | labor | $2,000 |
| Tree Removal & Debris Chipping (6 hrs) | labor | $1,000 |
| Stump Grinding — full removal (2 hrs) | labor | $800 |
| Cleanup & Haul Away (1 hr) | labor | $200 |
Specs (display only)
- Service: Technical piece-work removal with crane or rigging
- Crane: 50–100 ton crane for direct lift (zero drop risk)
- Duration: Full day or multi-day
- Warranty: Full liability coverage on crane work
Pros (display only)
- Zero-risk removal — piece by piece via crane
- Only option for trees over structures
- Board-certified master arborist on-site
- Full insurance and engineering-grade rigging
- Emergency response available
Cons (display only)
- Highest cost — crane day rate is significant
tags: removal xl dangerous near_structure difficult storm on_structure
Existing stumps ground to below grade
Brand: Local arborist or stump-grinder specialist
basePrice (declared)
$150
Σ(lineItems) (computed)
$150
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Stump Grinder Setup (15 min) | labor | $30 |
| Grinding Labor (30–60 min) | labor | $80 |
| Chip Backfill & Cleanup | labor | $40 |
Specs (display only)
- Service: Grind existing stumps to 6–12" below grade
- Duration: 30 min – 2 hours depending on stump size
- Warranty: 1-yr on grinding completeness
Tier add-ons
| add-on | price |
|---|---|
extra_stump — Each additional stumpDiscounted rate after the first stump | $75 |
haul_chips — Haul away grindings (instead of backfill)Remove chips entirely instead of backfilling the hole | $50 |
Pros (display only)
- Cheapest path when the tree is already down
- Same-day or next-day scheduling in most markets
- Backfilled with mulch chips, ready for grass
- Discounted rate for 2+ stumps
Cons (display only)
- Doesn't remove the root system — full removal is a separate, much pricier job
- Surface roots may still pop up over time
tags: stump_only stump_grinding
Tree on house, blocking driveway, or storm-damaged
Brand: 24/7 emergency arborist + crane if needed
basePrice (declared)
$1,800
Σ(lineItems) (computed)
$1,800
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Emergency Dispatch & Site Assessment (1 hr) | labor | $250 |
| Insurance Documentation & Adjuster Quote | labor | $150 |
| Removal Labor — 2 person crew (4–6 hrs at emergency rate) | labor | $1,000 |
| Debris Chipping & Haul Away | labor | $250 |
| Tarp / Secure-in-Place (if structure damaged) | equipment | $150 |
Specs (display only)
- Service: Emergency dispatch — secure, cut, and remove fallen or hanging tree
- Response: Same-day in most markets
- Warranty: Full liability + insurance documentation
Tier add-ons
| add-on | price |
|---|---|
crane_emergency — Crane dispatch (for trees on house)50-ton crane required for safe removal from structure | $2,000 |
after_hours — After-hours / overnight ratePremium for nights, weekends, or holidays | $500 |
Pros (display only)
- Same-day or next-day emergency dispatch
- Insurance-claim-ready documentation
- Crane available for trees on structures
- Tarp / secure-in-place service if rain is coming
- Coordinate directly with your adjuster
Cons (display only)
- Emergency rate is 1.5–2× standard removal
- If tree is on structure, drywall/roof repair is a separate job
tags: emergency storm on_structure hanging blocking dangerous
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
trim_only | 10 | service_type ∈ { "trimming" } |
stump_only | 10 | service_type ∈ { "stump_grinding" } |
emergency | 10 | service_type ∈ { "emergency" } |
good | 3 | tree_size ∈ { "small", "medium" } |
good | 2 | location ∈ { "open_yard" } |
better | 3 | tree_size ∈ { "large" } |
better | 2 | health ∈ { "diseased", "dead", "storm_damage" } |
better | 1 | stump ∈ { "grind" } |
best | 4 | location ∈ { "leaning_over", "tight_access" } |
best | 3 | tree_size ∈ { "xl" } |
best | 2 | health ∈ { "storm_damage" } |
Final price formula (this vertical)
// computeTierPricing(tree-services, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Pricing sources cited in code
- ISA Arborist Certification — https://www.isa-arbor.com/certification
- CostHelper Tree Removal Guide — https://home.costhelper.com/tree-removal.html
- Angi — Tree Trimming Costs — https://www.angi.com/articles/how-much-does-tree-trimming-cost.htm
Source file: src/lib/flow-engine/verticals/tree-services.ts · run the live flow →
🏠Roof Repair slug:roof-repair
Fix that leak — without a full roof replacement
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$600 – $3,800 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Most roof repairs do not require a permit. Larger structural repairs (decking, joists) may — your pro will advise. (estimate: $0)
labor note: Labor includes diagnostic, tear-off of the damaged area, replacement, and debris removal.
timeline: Spot repair: 1–3 hours. Section repair: half-day to full day. Major repair: 1–2 days. Emergency tarp: same day.
installer note: Your licensed roofer will inspect the damaged area in person and confirm final scope. If hidden rot or decking damage is found, that's quoted as an add-on before any extra work is done.
Photo prompts
- Photo of the damaged area from the ground — try to capture the full section, including the area around any visible damage
- Close-up of the issue — missing shingles, lifted flashing, soft spots, granule loss, or visible holes
- Photo of any interior water damage — ceiling stains, attic moisture, or dripping spots (helps confirm the leak path)
- Photo of your roof from each side of the house from the ground (helps the pro understand pitch, access, and overall condition)
Questionnaire (10 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/roof-repair.ts.
What's wrong with your roof?
If you have more than one issue, pick the most urgent — your pro will quote the rest in person.
Why we ask: Issue type pre-loads the right repair scope — flashing patch, missing shingle replacement, and structural sagging each need different materials, crew size, and labor hours. Structural issues (sagging) push toward the major repair tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
active_leak | Active leak — water coming in right now |
|
missing_shingles | Missing or damaged shingles |
|
flashing | Flashing — around chimney, vent, or skylight |
|
sagging | Sagging or soft spots — structural concern |
|
storm_damage | Storm or hail damage (insurance claim possible) |
|
granule_loss | Granule loss or aging — not sure if it leaks yet |
|
ice_dam | Ice dam or winter damage (cold climate) |
|
unknown | Not sure — something is off and I want a pro to look |
|
Where do you see the problem on the roof?
Skip if you're not sure — your pro will inspect.
Why we ask: Problem location changes the repair approach: penetration leaks (chimney, skylights) need flashing work; valley leaks need specific membrane materials; multiple areas push toward the major repair tier. Helps the installer show up prepared.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
single_spot | One specific spot or area |
|
around_penetration | Around a chimney, vent, or skylight |
|
valley_or_edge | Roof valley, edge, or eave |
|
multiple_areas | Multiple areas — spread across the roof |
|
unknown | Not sure — I just see the symptom inside | no direct price effect |
How large is the damaged area?
Repair cost scales with area — same as replacement, just smaller scope.
Why we ask: Repair area is the primary cost lever — it drives tier selection (spot, section, major) and determines crew size, material quantities, and whether a dumpster is needed.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
spot | Small spot — under 10 sq ft (a few shingles) |
|
section | Section — 10–100 sq ft (a roof face partially) |
|
major | Major — 100+ sq ft or a full roof face |
|
unknown | Not sure — pro to assess | no direct price effect |
What's your existing roofing material?
Why we ask: Repair materials must match existing to maintain watertightness and visual consistency. Premium materials (slate, tile, metal, cedar shake) require specialized crews and cost 2-4x more than asphalt repair labor.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
asphalt_3tab | 3-tab asphalt shingles | no direct price effect |
asphalt_architectural | Architectural / dimensional shingles | no direct price effect |
metal | Metal (standing seam, panels, or shingles) | no direct price effect |
tile | Clay or concrete tile | no direct price effect |
wood_shake | Cedar shake or wood shingle | no direct price effect |
slate | Slate | no direct price effect |
flat_membrane | Flat roof — EPDM, TPO, or modified bitumen | no direct price effect |
unknown | I'm not sure | no direct price effect |
How old is your roof?
This helps decide whether repair makes sense or replacement might be smarter.
Why we ask: Roof age determines whether repair is cost-effective. Roofs 20+ years old with active leaks often cost more to keep patching than to replace — we surface this trade-off in the recommendation and installer briefing.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
under_5 | Under 5 years old (likely still under manufacturer warranty) |
|
5_15 | 5–15 years old (repair is usually right) | no direct price effect |
15_20 | 15–20 years old (repair OK, but plan for replacement soon) |
|
20_plus | 20+ years old (replacement may be cheaper long-term) |
|
unknown | Not sure | no direct price effect |
How steep is your roof?
Steeper roofs require more safety gear and slow the job down.
Why we ask: Pitch drives labor time and safety requirements. Steep roofs (7/12+) require harness systems and slow the repair process — adds a steep-pitch labor surcharge and affects which roofers can take the job.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
low | Low pitch — almost flat (2/12–4/12) | no direct price effect |
moderate | Moderate pitch — typical ranch or colonial (4/12–7/12) | no direct price effect |
steep | Steep pitch — visible from the street (7/12+) | no direct price effect |
very_steep | Very steep / complex (mansard, multiple valleys) | no direct price effect |
unknown | Not sure | no direct price effect |
How accessible is the damaged area?
Why we ask: Access difficulty determines whether a ladder is sufficient or if scaffolding or a lift is required. Hard access (3-story, narrow lot, no ladder reach) adds equipment rental cost and planning time.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
easy | Easy — single story, simple ladder access | no direct price effect |
moderate | Moderate — two-story or some obstructions | no direct price effect |
hard | Hard — three-story, tight access, or no ladder reach | no direct price effect |
Is there visible interior damage from the leak?
Interior repairs (ceiling, insulation, drywall) are often a separate job from the roof itself.
Why we ask: Interior water damage (drywall, insulation, structural joists) requires a separate contractor scope. Knowing this upfront lets us coordinate trades and surface the full cost — not just the roofing portion.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
none | No — leak hasn't reached inside yet | no direct price effect |
stains | Minor — ceiling stains or attic moisture only | no direct price effect |
drywall | Drywall, paint, or insulation damage | no direct price effect |
structural | Structural damage — sagging deck, rotted joists |
|
Is this an insurance claim?
Why we ask: Insurance claim routing changes the deliverable — claim filers need an adjuster-ready invoice with line-item documentation and photo evidence. This answer determines whether we produce that format and recommend GAF- or OC-certified installers familiar with claims.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
filed | Yes — claim filed, need a quote for the adjuster |
|
considering | Considering filing — want to know cost first |
|
no | No — paying out of pocket | no direct price effect |
How urgent is this?
Why we ask: Urgency drives dispatch tier — emergency (water coming in now) gets same-day tarp routing; ASAP gets priority queue; flexible gets standard scheduling. Emergency dispatch carries a premium line item for same-day service.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
emergency | Emergency — water coming in right now (same-day tarp) |
|
asap | ASAP — within a few days | no direct price effect |
month | Within the month | no direct price effect |
flexible | I'm flexible — planning ahead | no direct price effect |
Tiers (3)
A few shingles, sealant, or flashing patch
Brand: Local licensed roofer
basePrice (declared)
$600
Σ(lineItems) (computed)
$600
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Diagnostic & Site Visit (30–60 min) | labor | $120 |
| Spot Repair Labor (2–3 hrs) | labor | $320 |
| Shingles, Sealant & Flashing Materials | equipment | $100 |
| Safety Setup & Cleanup | labor | $60 |
Specs (display only)
- Scope: Spot repair (under 10 sq ft)
- Visit length: 1–3 hours
- Warranty: 1-yr workmanship
- Materials: Matching shingles + roof sealant + flashing as needed
Pros (display only)
- Cheapest path to stop a leak fast
- Same-day or next-day available in most markets
- Minimal disruption — small crew, no dumpster
- 1-year workmanship warranty on the repaired area
Cons (display only)
- Color match on aged shingles isn't perfect
- Doesn't extend the life of the whole roof — just the patched area
tags: spot_repair leak shingles flashing
Replace a damaged section — flashing, valleys, or partial roof face
Brand: Licensed local roofer + crew
basePrice (declared)
$1,400
Σ(lineItems) (computed)
$1,400
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Diagnostic, Documentation & Insurance Quote | labor | $180 |
| Tear-Off of Damaged Section (1–2 hrs) | labor | $220 |
| Section Repair Labor — 2 person crew (4–6 hrs) | labor | $600 |
| Shingles, Underlayment & Ice/Water Shield | equipment | $280 |
| Flashing, Drip Edge & Fasteners | equipment | $80 |
| Debris Haul & Cleanup | labor | $40 |
Specs (display only)
- Scope: Section repair (10–100 sq ft)
- Visit length: Half-day to full day
- Warranty: 2-yr workmanship
- Materials: Matching shingles, underlayment, flashing, ice & water shield in valleys
Tier add-ons
| add-on | price |
|---|---|
gutter_check — Gutter inspection & re-secureInspect and re-secure gutters disturbed during the repair | $120 |
attic_inspection — Attic moisture inspectionPro checks decking, insulation, and moisture inside the attic | $150 |
Pros (display only)
- Right scope for storm damage or partial roof face replacement
- Includes underlayment + ice & water shield where it matters
- Crew of 2–3 — faster, safer than a one-person spot fix
- 2-year workmanship warranty
- Insurance-claim-friendly invoice
Cons (display only)
- Color/age difference more visible across a larger patched area
- May reveal additional damage once shingles are pulled (pro will confirm)
tags: section_repair storm insurance flashing valley
Significant damage — half a face, multiple areas, or structural fix
Brand: Licensed roofer + multi-day crew
basePrice (declared)
$3,800
Σ(lineItems) (computed)
$3,800
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Diagnostic, Documentation & Insurance Quote | labor | $250 |
| Tear-Off — Major Area (3–5 hrs) | labor | $500 |
| Repair Labor — 3 person crew (1.5 days) | labor | $1,800 |
| Shingles, Underlayment, Ice & Water Shield | equipment | $750 |
| Flashing, Drip Edge, Ridge Cap & Fasteners | equipment | $220 |
| Decking Patch Materials (if needed) | equipment | $180 |
| Dumpster Rental & Disposal | labor | $100 |
Specs (display only)
- Scope: Major repair (100+ sq ft) or multi-area
- Visit length: 1–2 days
- Warranty: 5-yr workmanship
- Materials: Matching shingles, full underlayment, decking replacement as needed
Tier add-ons
| add-on | price |
|---|---|
deck_replace — Decking replacement (per 4x8 sheet)Replace rotted plywood/OSB found during tear-off | $95 |
ridge_vent — Ridge vent installAdd ridge vent during the repair for better attic ventilation | $350 |
gutters — Gutter section replacementReplace gutters disturbed or damaged during the repair | $600 |
Pros (display only)
- Right call when one section has hail damage AND another has wind damage
- Includes decking replacement if rot is found under the shingles
- 5-year workmanship warranty — closer to a partial replacement
- Crew of 3–4 — done in 1–2 days
- Best path when insurance is replacing >100 sq ft
Cons (display only)
- Cost can creep close to full replacement on smaller homes — your pro may suggest replacement instead
- Larger crew + dumpster means more disruption than a spot fix
tags: major_repair structural storm multiple
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | repair_area ∈ { "spot" } |
good | 2 | issue_type ∈ { "missing_shingles", "flashing" } |
good | 2 | leak_location ∈ { "single_spot" } |
better | 3 | repair_area ∈ { "section" } |
better | 2 | issue_type ∈ { "storm_damage", "ice_dam" } |
better | 2 | insurance ∈ { "filed", "considering" } |
better | 1 | leak_location ∈ { "around_penetration", "valley_or_edge" } |
better | 1 | timeline ∈ { "emergency" } |
best | 4 | repair_area ∈ { "major" } |
best | 3 | issue_type ∈ { "sagging" } |
best | 2 | leak_location ∈ { "multiple_areas" } |
best | 2 | interior_damage ∈ { "structural" } |
best | 1 | roof_age ∈ { "20_plus" } |
best | 1 | roof_material ∈ { "tile", "slate", "wood_shake" } |
Final price formula (this vertical)
// computeTierPricing(roof-repair, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Pricing sources cited in code
- HomeAdvisor — Roof Repair Cost Guide — https://www.homeadvisor.com/cost/roofing/repair-a-roof/
- Angi — Roof Leak Repair Costs — https://www.angi.com/articles/how-much-does-it-cost-fix-roof-leak.htm
- RoofCalc — Repair Pricing 2025 — https://www.roofcalc.org/roof-repair-cost/
Source file: src/lib/flow-engine/verticals/roof-repair.ts · run the live flow →
🛣️Concrete & Driveway slug:concrete-driveway
Get a transparent estimate for concrete work and driveway replacement
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$4,000 – $9,600 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Permits may be required for driveway approach and sidewalk work. Contractor advises.
timeline: Standard concrete: 1–2 days pour + 28 days cure. Stamped: 2 days pour + cure.
installer note: Concrete cannot be poured in freezing temperatures. Your contractor will confirm timing.
Photo prompts
- Photo of your current driveway or the area for new concrete — show the full length, any cracks or heaving, and where it connects to the street and garage
Questionnaire (4 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/concrete-driveway.ts.
What concrete project do you need?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
driveway_replace | Replace existing driveway |
|
driveway_extend | Extend or widen existing driveway |
|
sidewalk | Sidewalk or walkway |
|
patio | Concrete patio |
|
garage_floor | Garage floor |
|
repair | Crack repair or resurfacing |
|
How large is the area?
Why we ask: Area to be serviced — primary multiplier for material and labor.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Under 400 sq ft (single-car driveway or patio) |
|
medium | 400–800 sq ft (standard 2-car driveway) |
|
large | 800–1,500 sq ft (long driveway or large area) |
|
xl | Over 1,500 sq ft |
|
What finish do you want?
Why we ask: Finish level moves the equipment line item and influences which tier we recommend.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
broom | Brushed broom finish (standard — good traction) |
|
exposed_aggregate | Exposed aggregate (gravel texture — classic) |
|
stamped | Stamped concrete (looks like stone or brick) |
|
colored | Integral color (tinted throughout) |
|
epoxy_coated | Epoxy or polyurea coated (garage floors) |
|
Is there existing concrete to remove?
branch Hidden when project_type ∈ { "repair" }
Why we ask: Existing-condition signal — determines whether removal, prep, or remediation line items kick in.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
no | No — new concrete on dirt/base | no direct price effect |
yes | Yes — needs demo and haul away |
|
asphalt | Yes — asphalt driveway to remove |
|
Tiers (3)
Standard concrete — durable and practical
Brand: 4" Broom-Finish Concrete
basePrice (declared)
$4,000
Σ(lineItems) (computed)
$4,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Concrete — 600 sq ft, 4" slab | equipment | $2,000 |
| Base Prep, Gravel & Forms (4 hrs) | labor | $800 |
| Installation Labor — pour, finish & joints (5 hrs) | labor | $1,000 |
| Demo & Haul Away — if applicable (2 hrs) | labor | $200 |
Specs (display only)
- Concrete: 4,000 PSI concrete, 4" thickness
- Finish: Broom finish with standard expansion joints
- Rebar: Wire mesh reinforcement
- Warranty: 1-yr labor
- Lifespan: 25–30 years with minimal maintenance
Pros (display only)
- Most affordable option
- Proven durability in all climates
- Good traction — won't be slippery when wet
- Can be sealed later to extend life
Cons (display only)
- Plain gray look
- Cracks can develop over time (normal for concrete)
tags: standard_finish small medium repair
Exposed aggregate or colored — polished look
Brand: 5" Reinforced Concrete + Color or Aggregate
basePrice (declared)
$7,000
Σ(lineItems) (computed)
$7,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Colored/Aggregate Concrete — 600 sq ft, 5" | equipment | $3,500 |
| Rebar Grid + Base Prep (5 hrs) | labor | $1,200 |
| Color Additive or Aggregate Seeding (2 hrs) | labor | $600 |
| Sealer Application — 2 coats (2 hrs) | labor | $500 |
| Labor, Forms & Finishing (5 hrs) | labor | $1,200 |
Specs (display only)
- Concrete: 4,500 PSI concrete, 5" thickness
- Finish: Exposed aggregate or integral color + sealer
- Rebar: Rebar grid reinforcement
- Warranty: 2-yr labor
- Lifespan: 30–40 years
Tier add-ons
| add-on | price |
|---|---|
decorative_border — Decorative Exposed Aggregate BorderContrast border using different aggregate | $800 |
heated_driveway — Radiant Heat Driveway (HeatTrak or in-slab)Electric or hydronic in-slab heating for snow melt | $5,000 |
Pros (display only)
- Exposed aggregate — beautiful, non-slip texture
- Integral color — sun won't fade it like surface color
- 5" slab handles heavier loads (SUVs, light trucks)
- Sealed finish extends life and improves appearance
Cons (display only)
- Higher cost than plain concrete
- Exposed aggregate requires occasional sealing (5–7 years)
tags: aggregate colored medium large driveway
Stamped concrete — premium stone or brick look
Brand: Stamped & Stained Concrete
basePrice (declared)
$9,600
Σ(lineItems) (computed)
$9,600
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Concrete — stamped, 5–6", 600 sq ft | equipment | $4,800 |
| Stamp Pattern + Color Hardener | equipment | $1,500 |
| Acid Stain or Dye | equipment | $800 |
| Polyurethane Sealer — 2 coats | equipment | $600 |
| Demo & Haul Away (3 hrs) | labor | $700 |
| Labor, Forms & Finishing (6 hrs) | labor | $1,200 |
Specs (display only)
- Concrete: 4,500 PSI, 5–6" depth
- Finish: Stamped pattern + acid stain or color hardener
- Sealer: UV-resistant polyurethane sealer
- Warranty: 3-yr labor
- Lifespan: 30+ years with 3–5 year resealing
Pros (display only)
- Looks like flagstone, brick, or wood plank — for a fraction of the cost
- Completely custom — patterns, colors, borders
- Dramatically increases curb appeal
- Stain sealer brings out deep, rich color
Cons (display only)
- Requires resealing every 3–5 years
- Stamping only possible during pour — no changes later
tags: stamped large xl patio
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | finish ∈ { "broom" } |
good | 2 | project_type ∈ { "sidewalk", "repair" } |
good | 1 | square_footage ∈ { "small" } |
better | 3 | finish ∈ { "exposed_aggregate", "colored" } |
better | 2 | project_type ∈ { "driveway_replace" } |
better | 1 | square_footage ∈ { "medium", "large" } |
best | 4 | finish ∈ { "stamped" } |
best | 2 | project_type ∈ { "patio" } |
best | 1 | square_footage ∈ { "xl" } |
Final price formula (this vertical)
// computeTierPricing(concrete-driveway, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
project_type=driveway_replace— "Replace existing driveway"square_footage=small— "Under 400 sq ft (single-car driveway or patio)"finish=broom— "Brushed broom finish (standard — good traction)"existing=no— "No — new concrete on dirt/base"
Σ(tier.lineItems) = $7,000 Σ(answer priceDeltas) = $0 permits = $0 installerCost = $7,000 platformFee (5%) = $350 customerTotal = $7,350
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- Bob Vila Concrete Driveway Cost — https://www.bobvila.com/articles/concrete-driveway-cost/
- Angi Concrete Driveway Costs — https://www.angi.com/articles/how-much-does-concrete-driveway-cost.htm
Source file: src/lib/flow-engine/verticals/concrete-driveway.ts · run the live flow →
💡Outdoor Lighting slug:outdoor-lighting
Get a transparent estimate for landscape and security lighting
Flow & payment model
Direct Pay (full price collected at booking)
Tier price range (declared base)
$1,150 – $12,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
No permits typically required for low-voltage landscape lighting. Line-voltage work may require electrical permit. (estimate: $0)
timeline: Basic path lighting: 1 day. Full system: 2–3 days.
installer note: A site visit at dusk is recommended for designer lighting systems.
Photo prompts
- Photo of the area where lights will be installed — show the landscape/pathway/structure at dusk if possible, and include any existing electrical outlets or wiring nearby
Questionnaire (4 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/outdoor-lighting.ts.
What type of outdoor lighting do you want?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
low_voltage | Low-voltage landscape lighting (path lights, uplights) |
|
security | Security lighting (motion sensors, floodlights) |
|
string_lights | String lights / bistro lights for entertaining |
|
full_system | Full design — landscape + security + accents |
|
How large is the area to light?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Small — front walk or one area |
|
medium | Medium — front and back yard |
|
large | Large — full property or large lot |
|
Do you want smart controls?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
timer | Simple timer — on at dusk, off at dawn | no direct price effect |
smart_app | App-controlled — schedule and customize from phone |
|
full_smart | Fully integrated with smart home / voice control |
|
What quality fixtures do you prefer?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
standard | Standard — functional and durable |
|
premium | Premium — designer-grade fixtures (Kichler, Hadco, FX Luminaire) |
|
Tiers (3)
Low-voltage path and garden lighting
Brand: VOLT Lighting / Hampton Bay
basePrice (declared)
$1,150
Σ(lineItems) (computed)
$1,150
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| 10× LED Path/Spot Lights (supply)source: https://www.voltlighting.com/collections/path-lights | equipment | $350 |
| 120W Transformer with Timersource: https://www.voltlighting.com/collections/transformers | equipment | $150 |
| 12-Gauge Cable & Connectors | equipment | $100 |
| Installation Labor & Wiring (4 hrs) | labor | $550 |
Specs (display only)
- Fixtures: VOLT or Hampton Bay LED path/spot lights
- Transformer: 120W landscape transformer with timer
- Wire: 12-gauge copper direct burial cable
- Warranty: 5-yr on VOLT fixtures
Pros (display only)
- Big impact on curb appeal and safety
- Easy to expand — add fixtures anytime
- LED — minimal energy use
- DIY-friendly if desired
Cons (display only)
- Timer-based — no remote dimming or scene control
tags: low_voltage security small standard_fixtures
Smart landscape + security lighting system
Brand: Kichler / FX Luminaire + Ring Floodlight
basePrice (declared)
$4,000
Σ(lineItems) (computed)
$4,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| 20× Kichler LED Landscape Fixturessource: https://www.kichler.com/landscape-lighting/ | equipment | $1,500 |
| FX SmartConnect WiFi Transformersource: https://www.fxl.com/products/transformers | equipment | $350 |
| 2× Ring Floodlight Cam Wired Plus (installed)source: https://ring.com/products/floodlight-cam-wired-plus | equipment | $600 |
| Installation Labor, Trenching & Wiring (8 hrs) | labor | $1,200 |
| Smart App Setup & Programming (2 hrs) | labor | $350 |
Specs (display only)
- Fixtures: Kichler or FX Luminaire brass fixtures
- Controller: FX SmartConnect WiFi transformer
- Security: Ring Floodlight Cam Wired Plus (2 units)
- Control: App dimming, scheduling, color tuning
- Warranty: 10-yr Kichler fixture warranty
Tier add-ons
| add-on | price |
|---|---|
deck_lights — Deck/Patio String LightingCommercial-grade bistro lights with timer | $800 |
driveway_lights — In-Ground Driveway Marker LightsLED driveway bollards or ground flush lights | $1,200 |
Pros (display only)
- App-controlled — adjust any light from your phone
- Security cameras with integrated floodlights
- Brass fixtures weather beautifully over time
- Zone control — front yard, back yard, trees separate
Cons (display only)
- Higher cost — but lasts 20+ years
tags: full_system medium smart premium_fixtures
Professional designer lighting — architectural-grade
Brand: Hadco / Cast Lighting / FX Luminaire Maestro
basePrice (declared)
$12,000
Σ(lineItems) (computed)
$12,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Lighting Design Consultation & Plan (4 hrs) | labor | $1,000 |
| 40+ Architectural LED Fixturessource: https://www.cast-lighting.com/products | equipment | $6,000 |
| FX Maestro Controller (zone/color programming)source: https://www.fxl.com/products/controllers | equipment | $800 |
| Installation, Trenching & Electrical (16 hrs) | labor | $3,500 |
| Programming & Night-Shoot Tune-Up (2 hrs) | labor | $700 |
Specs (display only)
- Fixtures: Cast or Hadco brass/copper architectural fixtures
- Controller: FX Luminaire Maestro or Hunter Hydrawise
- Scope: Full professional lighting design
- Warranty: Lifetime on Cast/Hadco, 10-yr on FX
Pros (display only)
- Lighting designer creates a cohesive night-time look
- Architectural-grade fixtures — same brands used in luxury hotels
- Multiple color temperatures and beam angles dialed in per fixture
- Integrates with Lutron, Control4, or any smart home platform
- Night photography session often included
Cons (display only)
- Significant investment — appropriate for premium homes
tags: full_system large full_smart premium_fixtures
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | lighting_type ∈ { "low_voltage", "security" } |
good | 2 | property_size ∈ { "small" } |
better | 2 | smart_control ∈ { "smart_app" } |
better | 2 | property_size ∈ { "medium" } |
best | 3 | lighting_type ∈ { "full_system" } |
best | 2 | smart_control ∈ { "full_smart" } |
best | 1 | property_size ∈ { "large" } |
Final price formula (this vertical)
// computeTierPricing(outdoor-lighting, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: simple/direct_pay → collect FULL customerTotal at booking.Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
lighting_type=low_voltage— "Low-voltage landscape lighting (path lights, uplights)"property_size=small— "Small — front walk or one area"smart_control=timer— "Simple timer — on at dusk, off at dawn"fixtures=standard— "Standard — functional and durable"
Σ(tier.lineItems) = $4,000 Σ(answer priceDeltas) = $0 permits = $0 installerCost = $4,000 platformFee (5%) = $200 customerTotal = $4,200
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- VOLT Landscape Lighting — https://www.voltlighting.com
- FX Luminaire Products — https://www.fxl.com
- Kichler Landscape Lighting — https://www.kichler.com/landscape-lighting/
Source file: src/lib/flow-engine/verticals/outdoor-lighting.ts · run the live flow →
🪞Bathroom Vanity slug:bathroom-vanity
Get a transparent estimate for bathroom vanity replacement
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$1,200 – $9,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
No permits required for vanity replacement unless moving plumbing. (estimate: $0)
timeline: Standard vanity replacement: half day to 1 day. Custom/floating: 1–2 days.
installer note: Your plumber/contractor will confirm plumbing connections and wall support before installation.
Photo prompts
- Photo of your current vanity area — show the full vanity, countertop, mirror, and plumbing connections underneath if visible
Questionnaire (5 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/bathroom-vanity.ts.
What size vanity are you replacing?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small_24_30 | Small — 24" to 30" (single sink, smaller bath) |
|
medium_36_48 | Medium — 36" to 48" (standard single) |
|
double_60_72 | Double — 60" to 72" (double sink) |
|
custom | Custom size or floating |
|
What style are you going for?
Why we ask: Style choice maps to specific SKUs and labor patterns — affects equipment cost and install time.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
traditional | Traditional (raised panel doors, furniture-style) |
|
transitional | Transitional (shaker doors, timeless) |
|
modern_floating | Modern floating (wall-mount, clean lines) |
|
farmhouse | Farmhouse (open shelf, apron-style) |
|
What countertop / sink material do you prefer?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
integrated_ceramic | Integrated ceramic (molded top + sink — easy clean) |
|
quartz | Quartz top with undermount sink |
|
marble | Marble or stone top |
|
vessel_sink | Vessel sink (above-counter, statement look) |
|
Are you changing the vanity size or moving plumbing?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
same_size | Same size — just swapping the vanity | no direct price effect |
different_size | Different size — may need plumbing adjustments | no direct price effect |
moving_plumbing | Moving plumbing to a new location | no direct price effect |
What faucet finish do you want?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
chrome | Chrome (classic, easy to maintain) | no direct price effect |
brushed_nickel | Brushed nickel (most popular) |
|
matte_black | Matte black (trending) |
|
gold_brass | Brushed gold or unlacquered brass |
|
Tiers (3)
Quality vanity — reliable brands, great value
Brand: Kohler / Home Depot Glacier Bay
basePrice (declared)
$1,200
Σ(lineItems) (computed)
$1,200
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Vanity Cabinet + Top (supply)source: https://www.us.kohler.com/us/bathroom/vanities | equipment | $500 |
| Faucet (Moen or Delta)source: https://www.moen.com/bath/faucets | equipment | $120 |
| Installation Labor (~3 hrs @ $133/hr) | labor | $400 |
| Plumbing Connection & Haul Away (~1.5 hrs @ $120/hr) | labor | $180 |
Specs (display only)
- Cabinet: Kohler or Glacier Bay 36" shaker vanity
- Top: Integrated ceramic or cultured marble
- Faucet: Moen Adler or Delta Foundations
- Warranty: 1-yr labor
Pros (display only)
- Big visual improvement at an affordable price
- Kohler and Moen — trusted, widely available
- Fast installation (half day)
- Wide selection of finishes and styles
Cons (display only)
- MDF construction — not ideal for wet environment long-term
tags: small medium ceramic traditional transitional
Semi-custom with quartz top
Brand: Strasser Woodenworks / James Martin
basePrice (declared)
$4,500
Σ(lineItems) (computed)
$4,500
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| All-Wood Vanity (supply)source: https://www.jamesmartinfurniture.com | equipment | $1,500 |
| Quartz Top + Undermount Sinksource: https://www.msisurfaces.com/quartz/bathroom-vanity-tops/ | equipment | $800 |
| Delta Trinsic or Moen Gibson Faucetsource: https://www.deltafaucet.com/bathroom/collections/trinsic | equipment | $250 |
| LED Mirrorsource: https://www.homedepot.com/s/led%20vanity%20mirror | equipment | $250 |
| Installation Labor (~5 hrs @ $100/hr) | labor | $1,000 |
| Plumbing Connections & Haul Away (~3.5 hrs @ $100/hr) | labor | $700 |
Specs (display only)
- Cabinet: Strasser or James Martin 48" soft-close all-wood
- Top: Quartz top with undermount sink
- Faucet: Delta Trinsic or Moen Gibson
- Warranty: 2-yr labor, 5-yr on vanity
Tier add-ons
| add-on | price |
|---|---|
electrical_outlet — Hidden Outlet in Vanity DrawerPop-up USB+outlet inside vanity for device charging | $150 |
Pros (display only)
- All-wood (no MDF) — handles bathroom humidity better
- Quartz top — durable, zero-maintenance
- Soft-close doors and drawers
- LED mirror included
Cons (display only)
- Higher cost — worth it for primary bathrooms
tags: medium double quartz transitional modern
Custom or luxury floating vanity — designer finish
Brand: Robern / Lacava / Custom Millwork
basePrice (declared)
$9,000
Σ(lineItems) (computed)
$9,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Robern M Series or Custom Millwork Vanitysource: https://www.robern.com/products/vanities/ | equipment | $4,000 |
| Marble or Stone Countertop + Sinksource: https://www.msisurfaces.com/marble/bathroom-countertops/ | equipment | $1,800 |
| Hansgrohe Logis or Kohler Purist Faucetsource: https://www.hansgrohe-usa.com/bathroom/faucets | equipment | $800 |
| Robern Illuminated Mirror Medicine Cabinetsource: https://www.robern.com/products/medicine-cabinets/ | equipment | $800 |
| Installation Labor (~6 hrs @ $100/hr) | labor | $1,000 |
| Plumbing, Wall Blocking & Structural Prep (~4 hrs @ $150/hr) | labor | $600 |
Specs (display only)
- Cabinet: Robern M Series wall-mount or custom millwork
- Top: Marble or quartz with vessel or undermount
- Faucet: Hansgrohe Logis or Kohler Purist
- Warranty: Robern lifetime, 3-yr labor
Pros (display only)
- Floating mount — easy floor cleaning, modern look
- Robern mirror with integrated lighting and medicine cabinet
- Custom millwork matches any design vision
- Natural stone — each top is one-of-a-kind
Cons (display only)
- Premium investment — requires floating mount capability (blocking in wall)
tags: double custom stone vessel modern
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | vanity_size ∈ { "small_24_30" } |
good | 2 | countertop ∈ { "integrated_ceramic" } |
better | 3 | countertop ∈ { "quartz" } |
better | 2 | vanity_size ∈ { "medium_36_48", "double_60_72" } |
best | 4 | style ∈ { "modern_floating" } |
best | 3 | countertop ∈ { "marble" } |
best | 2 | vanity_size ∈ { "custom" } |
Final price formula (this vertical)
// computeTierPricing(bathroom-vanity, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Pricing sources cited in code
- Robern Vanities — https://www.robern.com/products/vanities/
- LatestCost — Custom Bathroom Vanity Cost Guide — https://latestcost.com/custom-bathroom-vanity-cost/
- James Martin Furniture Vanities — https://www.jamesmartinfurniture.com
Source file: src/lib/flow-engine/verticals/bathroom-vanity.ts · run the live flow →
🚰Septic System slug:septic-system
Get a transparent estimate for septic pumping, repair, or replacement
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$450 – $15,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Septic system replacement and repair requires health department permits. (estimate: $500)
timeline: Pumping: 1–2 hours. Full inspection: 3–4 hours. Replacement: 3–7 days.
installer note: A licensed septic contractor must perform a percolation test and site evaluation before replacement work begins.
Questionnaire (4 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/septic-system.ts.
What septic service do you need?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
pumping | Routine pumping (every 3–5 years) |
|
inspection | Inspection + pumping (real estate or concern) |
|
repair | Repair — system isn't draining or has odor |
|
replacement | Full system replacement |
|
How many bedrooms / people in your home?
Determines tank size and capacity needs.
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
1_2br | 1–2 bedrooms (1–3 people) |
|
3br | 3 bedrooms (3–5 people) |
|
4_5br | 4–5 bedrooms (5+ people) |
|
Are you experiencing any symptoms?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
none | None — routine service |
|
slow_drains | Slow drains throughout home |
|
odor | Sewage smell in yard or home |
|
wet_spots | Wet or soggy spots over drain field |
|
backup | Sewage backup into home |
|
When was your system last serviced?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
recent | Within 3 years |
|
overdue | 3–7 years ago |
|
unknown | Unknown / never (home purchase) |
|
Tiers (3)
Routine pumping — keep it healthy
Brand: Licensed Septic Service
basePrice (declared)
$450
Σ(lineItems) (computed)
$450
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Tank Pump-Out (up to 1,000 gal) | labor | $350 |
| Locate/Uncover Lid (if needed) | labor | $100 |
Specs (display only)
- Service: Tank pump-out (up to 1,000-gallon tank)
- Duration: 1–2 hours
- Inspection: Visual inspection included
- Warranty: N/A — service call
- Frequency: Every 3–5 years recommended
Pros (display only)
- Prevents costly backups and field failures
- Licensed vacuum truck and certified technician
- Visual check included — flag any concerns
- Most affordable maintenance investment
Cons (display only)
- Pumping only — doesn't address existing damage
tags: pumping routine small_system medium_system
Full inspection + pumping + minor repairs
Brand: Licensed Septic Inspector
basePrice (declared)
$1,200
Σ(lineItems) (computed)
$1,200
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Tank Pump-Out | labor | $450 |
| Camera Inspection + Written Report | labor | $500 |
| Minor Repair (baffle/riser if needed) | labor | $250 |
Specs (display only)
- Service: Pump-out + camera inspection + written report
- Camera: Camera inspection of inlet/outlet baffles and tank
- Report: Written report for home sale or personal records
- Warranty: 90-day on minor repair work
Tier add-ons
| add-on | price |
|---|---|
riser_install — Concrete to PVC Riser ConversionAdd access risers to both lids — easier future service | $800 |
effluent_filter — Outlet Effluent Filter InstallPolylok filter — protects drain field from solids | $300 |
Pros (display only)
- Camera inspection shows tank condition and baffle status
- Written report for real estate transactions
- Minor baffle or riser repairs included
- Drain field flow test included
Cons (display only)
- More expensive than pumping alone
tags: inspection repair slow_drains odor
Drain field repair or full system replacement
Brand: Licensed Septic Contractor
basePrice (declared)
$15,000
Σ(lineItems) (computed)
$15,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Site Assessment & Perc Test | labor | $1,000 |
| Excavation & Old System Demo | labor | $3,000 |
| New Septic Tank (1,000-gal concrete) | equipment | $2,500 |
| New Drain Field (gravel + pipe + fabric) | equipment | $7,000 |
| Permits, Backfill & Restoration | labor | $1,500 |
Specs (display only)
- Service: Drain field repair/replacement or full new system
- System: Conventional or advanced treatment (mound, drip)
- Permit: Full permitting and inspection
- Warranty: 3–5 yr on new drain field
Pros (display only)
- New drain field — resolves failure permanently
- Engineered system sized for your household
- All permits and health department approvals included
- Modern systems last 25–30 years with proper maintenance
Cons (display only)
- Significant investment — but required when field has failed
tags: replacement drain_field_fail backup large_system
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | service_type ∈ { "pumping" } |
good | 2 | symptoms ∈ { "none" } |
better | 3 | service_type ∈ { "inspection", "repair" } |
better | 2 | symptoms ∈ { "slow_drains", "odor" } |
better | 1 | last_service ∈ { "unknown" } |
best | 4 | service_type ∈ { "replacement" } |
best | 3 | symptoms ∈ { "wet_spots", "backup" } |
Final price formula (this vertical)
// computeTierPricing(septic-system, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $500 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Pricing sources cited in code
- EPA Septic System Guide — https://www.epa.gov/septic
- BobVila Septic Tank Cost Guide — https://www.bobvila.com/articles/septic-tank-cost/
Source file: src/lib/flow-engine/verticals/septic-system.ts · run the live flow →
🏊Pool Service slug:pool-service
Get a transparent estimate for pool maintenance and repair
Flow & payment model
Direct Pay (full price collected at booking)
Tier price range (declared base)
$200 – $650 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
No permits required for pool maintenance services. (estimate: $0)
timeline: Weekly service starts within 3–5 business days. Opening/closing: typically 2–4 hours.
installer note: Your pool technician will assess equipment age and condition at the first visit.
Questionnaire (4 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/pool-service.ts.
What pool service do you need?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
weekly | Weekly maintenance (chemical balance, clean, vacuum) |
|
opening | Seasonal opening (spring) |
|
closing | Seasonal closing (winterization) |
|
repair | Equipment repair (pump, filter, heater, lights) |
|
What type of pool do you have?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
inground_vinyl | In-ground vinyl liner |
|
inground_fiberglass | In-ground fiberglass |
|
inground_concrete | In-ground concrete / gunite |
|
above_ground | Above-ground |
|
What size is your pool?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Small — under 15,000 gallons |
|
medium | Medium — 15,000–30,000 gallons |
|
large | Large — over 30,000 gallons + spa |
|
What sanitization system do you use?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
chlorine | Traditional chlorine |
|
salt | Salt water chlorine generator |
|
mineral | Mineral (Nature2, Frog) |
|
unknown | Not sure | no direct price effect |
Tiers (3)
Reliable weekly maintenance service
Brand: Local Pool Pro
basePrice (declared)
$200
Σ(lineItems) (computed)
$200
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Weekly Chemical Balance & Skim (30–45 min/visit) | labor | $150 |
| Monthly Filter Cleaning (30 min) | labor | $50 |
Specs (display only)
- Service: Weekly chemical test + balance + brush + skim
- Chemicals: Chlorine, pH, alkalinity maintained
- Duration: 30–60 min per visit
- Reporting: Basic text/log after each visit
Pros (display only)
- Keeps water balanced and clear all season
- No more buying chemicals or guessing ratios
- Regular filter cleaning included
- Most affordable weekly plan
Cons (display only)
- Vacuum typically bi-weekly, not every visit
tags: weekly small medium above_ground
Full-service weekly care + opening or closing
Brand: Certified Pool Operator (CPO)
basePrice (declared)
$350
Σ(lineItems) (computed)
$350
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Full Weekly Service w/ Chemicals (45–60 min/visit) | labor | $300 |
| Equipment Inspection Report (30 min/mo) | labor | $50 |
Specs (display only)
- Service: Weekly chemical + vacuum + brush + full report
- Opening/Closing: Seasonal opening or closing included
- Chemicals: All chemicals included in monthly fee
- Equipment Check: Monthly equipment inspection
- Reporting: Digital report with photos
Tier add-ons
| add-on | price |
|---|---|
algae_treatment — Algae Treatment (if needed)Shock + algaecide for green pool recovery | $250 |
salt_cell_clean — Salt Cell Cleaning (quarterly)Descale and inspect salt chlorine generator | $150 |
Pros (display only)
- Chemicals included — no separate chemical runs
- Full vacuum every week — always swim-ready
- Seasonal opening or closing included
- CPO-certified technician
- Digital reports with water chemistry history
Cons (display only)
- Higher monthly cost than basic service
tags: weekly opening closing medium large
Full service + equipment repair coverage
Brand: CPO + Equipment Service Plan
basePrice (declared)
$650
Σ(lineItems) (computed)
$650
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Full Weekly Service w/ All Chemicals (45–60 min/visit) | labor | $350 |
| Equipment Repair Coverage (monthly) | labor | $200 |
| Priority Dispatch & Monthly Report (30 min/mo) | labor | $100 |
Specs (display only)
- Service: Weekly full care + priority repair coverage
- Equipment: Pump, filter, heater covered for repairs
- Chemicals: All chemicals included
- Response: 24-hr emergency response
- Reporting: Monthly detailed water chemistry report
Pros (display only)
- One invoice covers everything — zero surprises
- Equipment repair coverage — no emergency bills
- 24-hour emergency response (cloudy water, equipment failure)
- Priority scheduling
- Best for pools with older equipment
Cons (display only)
- Highest monthly cost — appropriate for busy families or second homes
tags: weekly repair large concrete fiberglass
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | service_type ∈ { "opening", "closing" } |
good | 2 | pool_size ∈ { "small" } |
better | 3 | service_type ∈ { "weekly" } |
better | 2 | pool_size ∈ { "medium" } |
best | 3 | service_type ∈ { "repair" } |
best | 2 | pool_size ∈ { "large" } |
best | 1 | pool_type ∈ { "inground_concrete" } |
Final price formula (this vertical)
// computeTierPricing(pool-service, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: simple/direct_pay → collect FULL customerTotal at booking.Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
service_type=weekly— "Weekly maintenance (chemical balance, clean, vacuum)"pool_type=inground_vinyl— "In-ground vinyl liner"pool_size=small— "Small — under 15,000 gallons"sanitization=chlorine— "Traditional chlorine"
Σ(tier.lineItems) = $350 Σ(answer priceDeltas) = $0 permits = $0 installerCost = $350 platformFee (5%) = $18 customerTotal = $368
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- HomeGuide Pool Service Costs — https://homeguide.com/costs/pool-maintenance-cost
- Forbes Pool Maintenance — https://www.forbes.com/home-improvement/swimming-pool/pool-maintenance-cost/
Source file: src/lib/flow-engine/verticals/pool-service.ts · run the live flow →
🌫️Radon Mitigation slug:radon-mitigation
Get a transparent estimate for radon reduction in your home
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$1,000 – $3,500 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Most jurisdictions do not require permits for radon mitigation. Some states require licensed mitigators. (estimate: $0)
timeline: Most radon systems installed in 1 day. Crawlspace encapsulation adds 1 additional day.
installer note: Your NRPP/AARST-certified mitigator will perform a pre-test and confirm the best suction point location.
Questionnaire (4 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/radon-mitigation.ts.
What radon level was measured in your home?
EPA action level is 4 pCi/L. Over 2 pCi/L warrants attention.
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
under_2 | Under 2 pCi/L (low — but want peace of mind) |
|
2_4 | 2–4 pCi/L (elevated — mitigation recommended) |
|
4_10 | 4–10 pCi/L (high — EPA action level) |
|
over_10 | Over 10 pCi/L (very high — priority) |
|
not_tested | Haven't tested yet — need test + mitigation |
|
What type of foundation do you have?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
basement_slab | Basement with poured concrete slab floor |
|
crawlspace | Crawl space foundation |
|
slab_on_grade | Slab-on-grade (no basement) |
|
combination | Combination — partial basement + crawlspace |
|
How large is the area below grade or slab?
Why we ask: Home square footage sizes the system load — drives both equipment capacity and labor hours.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Under 1,000 sq ft |
|
medium | 1,000–2,000 sq ft |
|
large | Over 2,000 sq ft |
|
Do you want a post-mitigation test included?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
yes | Yes — I want confirmation it worked |
|
no | I'll test separately | no direct price effect |
Tiers (3)
Standard sub-slab depressurization
Brand: RadonAway RP145 / Festa Radon
basePrice (declared)
$1,000
Σ(lineItems) (computed)
$1,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| SSD System Installation (1 suction point) | labor | $750 |
| RadonAway RP145 Fansource: https://www.radonaway.com | equipment | $150 |
| PVC Pipe, Fittings & Electrical | equipment | $100 |
Specs (display only)
- System: Sub-slab depressurization (SSD) — 1 suction point
- Fan: RadonAway RP145 (industry standard)
- Pipe: 3" or 4" PVC, routed to exterior
- Expected Reduction: 50–99% radon reduction
- Warranty: 1-yr labor, fan manufacturer warranty
Pros (display only)
- Most effective radon reduction method (50–99%)
- Standard for most basement and slab homes
- Fan runs continuously, very low energy (30–80W)
- Unobtrusive — pipe exits through wall or roof
- Certified NRPP/AARST mitigator
Cons (display only)
- One suction point may not cover very large or complex footprints
tags: moderate high basement_slab small medium
Multi-point system + post-mitigation test
Brand: RadonAway GP401 + NRPP Certified
basePrice (declared)
$1,750
Σ(lineItems) (computed)
$1,750
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| SSD System Installation (2 suction points) | labor | $1,200 |
| RadonAway GP401 Fan | equipment | $250 |
| Manometer + Electrical | labor | $150 |
| Post-Mitigation Radon Test (90-day) | labor | $150 |
Specs (display only)
- System: Sub-slab depressurization — 2 suction points + manometer
- Fan: RadonAway GP401 (higher CFM for large or complex slabs)
- Manometer: Visual indicator confirms system is working
- Post-Test: 90-day post-mitigation radon test included
- Warranty: 1-yr labor + visual monitor
Tier add-ons
| add-on | price |
|---|---|
crawl_seal — Crawlspace Vapor Barrier SealingSeal crawl space floor and walls to reduce radon entry | $800 |
Pros (display only)
- 2 suction points handle larger or complex slab areas
- Manometer allows homeowner to verify system is running
- Post-test confirms levels reduced below 4 pCi/L
- Recommended for 4–10 pCi/L readings
- Report provided for home resale disclosure
Cons (display only)
- More pipe routing required for 2 suction points
tags: high very_high medium large post_test
Complete radon system with crawlspace encapsulation
Brand: Festa Radon + CleanSpace
basePrice (declared)
$3,500
Σ(lineItems) (computed)
$3,500
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| SSD System (basement, 2 points) | equipment | $1,200 |
| Sub-Membrane Depressurization (crawlspace) | labor | $800 |
| 20-mil CleanSpace Vapor Barrier | equipment | $800 |
| RadonAway RP265 High-Capacity Fan | equipment | $350 |
| Airthings Wave Plus Smart Monitor | equipment | $200 |
| Post-Test + Documentation | labor | $150 |
Specs (display only)
- System: SSD + sub-membrane depressurization (crawlspace)
- Fan: RadonAway RP265 high-performance
- Encapsulation: 20-mil CleanSpace crawlspace vapor barrier
- Monitoring: Airthings Wave Plus smart radon monitor (ongoing)
- Warranty: 2-yr labor + continuous monitoring
Pros (display only)
- Handles combination basement + crawlspace homes
- Airthings smart monitor shows real-time radon levels via app
- CleanSpace vapor barrier also controls moisture in crawl
- Best for very high readings (>10 pCi/L)
- Transferable system for home sale
Cons (display only)
- Most expensive — but required for combination foundations
tags: very_high combo crawlspace large
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | radon_level ∈ { "2_4", "4_10" } |
good | 2 | foundation_type ∈ { "basement_slab" } |
better | 3 | post_test ∈ { "yes" } |
better | 2 | radon_level ∈ { "4_10", "over_10" } |
best | 3 | radon_level ∈ { "over_10" } |
best | 3 | foundation_type ∈ { "combination", "crawlspace" } |
best | 1 | home_sqft ∈ { "large" } |
Final price formula (this vertical)
// computeTierPricing(radon-mitigation, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Pricing sources cited in code
- RadonAway Fan Products — https://www.radonaway.com
- EPA Radon Guide — https://www.epa.gov/radon
- Airthings Wave Plus Radon Monitor — https://www.airthings.com/wave-plus
- AARST Radon Contractor Standards — https://aarst.org
Source file: src/lib/flow-engine/verticals/radon-mitigation.ts · run the live flow →
💧Water Softener slug:water-softener
Get a transparent estimate for water softener and filtration installation
Flow & payment model
Order Fee ($49 refundable, credited toward total)
We collect $49at booking. Refundable if we can't fulfill; otherwise credited against the final invoice / project total.
Tier price range (declared base)
$1,000 – $5,000 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
Plumbing permits may be required in some areas. Installer advises. (estimate: $0)
timeline: Standard installation: 2–4 hours. Multi-unit system: half to full day.
installer note: A water test is recommended before selecting your system to confirm hardness, iron levels, and pH.
Photo prompts
- Photo of where your main water line enters the house — show the shut-off valve, any existing filtration equipment, nearby drain, and available floor space for the new unit
Questionnaire (4 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/water-softener.ts.
What water quality issue are you dealing with?
Why we ask: Utility infrastructure check — flags whether upgrades or service runs are part of scope.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
hard_water | Hard water — mineral buildup on fixtures, soap scum |
|
taste_odor | Bad taste or smell (sulfur, chlorine) |
|
iron | Iron — orange staining in sinks and toilets |
|
all | Multiple issues — softening + filtration |
|
How many people in your household?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
1_2 | 1–2 people |
|
3_4 | 3–4 people |
|
5_plus | 5 or more |
|
What is your water source?
Why we ask: Utility infrastructure check — flags whether upgrades or service runs are part of scope.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
city | City / municipal water |
|
well | Private well |
|
Do you have a preference for salt-based vs. salt-free?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
salt_based | Salt-based — most effective at softening |
|
salt_free | Salt-free — no sodium in water, less maintenance |
|
no_preference | No preference — recommend what works best | no direct price effect |
Tiers (3)
Reliable salt-based water softener
Brand: Whirlpool WHES40E / Fleck 5600SXT
basePrice (declared)
$1,000
Σ(lineItems) (computed)
$1,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Fleck 5600SXT or Whirlpool WHES40E Unitsource: https://www.pentairwatersolutions.com | equipment | $500 |
| Installation Labor & Bypass Valve (2 hrs) | labor | $400 |
| Brine Tank + Initial Salt | equipment | $100 |
Specs (display only)
- Brand: Fleck 5600SXT 48,000-grain or Whirlpool WHES40E
- Capacity: 48,000 grains (up to 4 people)
- Control: Digital metered regeneration
- Warranty: 5-yr controller, 10-yr tank
- Salt: Standard resin tank
Pros (display only)
- Reliable salt-based softening — most effective method
- Metered control — only regenerates when needed (saves salt)
- Fleck and Whirlpool are trusted, widely serviced brands
- No more scale buildup on faucets, showers, and appliances
Cons (display only)
- Adds small amount of sodium to water (not for strict low-sodium diets)
tags: hard salt city_water small_hh medium_hh
Softener + whole-home carbon filter
Brand: Pelican or Springwell Combo System
basePrice (declared)
$2,200
Σ(lineItems) (computed)
$2,200
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Springwell SS + CF1 Systemsource: https://www.springwellwater.com | equipment | $1,300 |
| Installation Labor — softener + filter (3 hrs) | labor | $700 |
| Sediment Pre-Filter | equipment | $200 |
Specs (display only)
- Brand: Springwell Whole Home System (SS + CF1)
- Softener: 60,000-grain salt-based softener
- Filter: KDF + carbon filter (removes chlorine, chemicals)
- Warranty: Lifetime on tanks, 10-yr on control heads
- Water Quality: Soft + clean drinking water throughout
Tier add-ons
| add-on | price |
|---|---|
reverse_osmosis — Under-Sink Reverse Osmosis (Drinking)Springwell SSRO — pure drinking water at kitchen sink | $600 |
Pros (display only)
- Soft water + filtered water everywhere in the home
- Carbon filter removes chlorine, VOCs, and sediment
- Better tasting water from every tap — not just kitchen filter
- Springwell lifetime tank warranty
- WiFi control included
Cons (display only)
- Carbon filter media requires replacement every 5–7 years
tags: all taste city_water well_water medium_hh
Iron filtration + softener + RO drinking system
Brand: Springwell WS + CF + SSRO
basePrice (declared)
$5,000
Σ(lineItems) (computed)
$5,000
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Springwell Whole Home Iron Filter (WS)source: https://www.springwellwater.com/product/well-water-filter-system/ | equipment | $2,000 |
| 80,000-Grain Softenersource: https://www.springwellwater.com/product/futuresoft-salt-free-water-softener/ | equipment | $1,300 |
| Springwell SSRO Reverse Osmosissource: https://www.springwellwater.com/product/reverse-osmosis-system/ | equipment | $800 |
| Installation Labor — full system (4 hrs) | labor | $900 |
Specs (display only)
- Brand: Springwell Iron Filter + Softener + Reverse Osmosis
- Iron: Aeration iron filter removes up to 7 PPM iron, 8 PPM H₂S
- Softener: 80,000-grain — handles large household + well water
- Drinking: RO under-sink with tank + remineralization
- Warranty: Lifetime on tanks
Pros (display only)
- Eliminates iron staining permanently
- Largest capacity — handles big families or high water usage
- RO drinking system with remineralization — the healthiest water available
- Well-water optimized — handles higher mineral loads
- Set-and-forget with app monitoring
Cons (display only)
- Highest investment — appropriate for well water with multiple issues
tags: iron all well_water salt large_hh
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | water_issue ∈ { "hard_water" } |
good | 2 | water_source ∈ { "city" } |
better | 3 | water_issue ∈ { "taste_odor", "all" } |
better | 2 | household_size ∈ { "3_4" } |
best | 4 | water_issue ∈ { "iron" } |
best | 2 | water_source ∈ { "well" } |
best | 1 | household_size ∈ { "5_plus" } |
Final price formula (this vertical)
// computeTierPricing(water-softener, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: medium/order_fee → collect $49 at booking (refundable, credited to customerTotal).Pricing sources cited in code
- Springwell Water Systems — https://www.springwellwater.com
- Pentair Water Softener Products — https://www.pentairwatersolutions.com
Source file: src/lib/flow-engine/verticals/water-softener.ts · run the live flow →
❄️HVAC Maintenance slug:hvac-maintenance
Keep your heating and cooling running efficiently year-round
Flow & payment model
Direct Pay (full price collected at booking)
Tier price range (declared base)
$129 – $420 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
No permits required for routine HVAC maintenance. (estimate: $0)
timeline: Tune-ups can typically be scheduled within 3–7 business days. Emergency service available within 24 hours on service contracts.
installer note: Your HVAC technician will assess system condition and recommend any repairs at the first visit.
Questionnaire (4 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/hvac-maintenance.ts.
What HVAC service do you need?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
tune_up | Seasonal tune-up (AC or furnace) |
|
maintenance_plan | Maintenance plan (2x per year) |
|
service_contract | Full service contract with repair coverage |
|
filter_change | Filter change / air quality check |
|
What type of HVAC system do you have?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
central_ac_furnace | Central AC + furnace |
|
heat_pump | Heat pump (heating & cooling) |
|
mini_split | Ductless mini-split |
|
boiler | Boiler / radiant heat |
|
unknown | Not sure | no direct price effect |
How old is your HVAC system?
Why we ask: Age of the existing system flags expected condition and code-update scope.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
new | Less than 5 years |
|
mid | 5–15 years |
|
old | Over 15 years |
|
unknown | Not sure | no direct price effect |
How large is your home?
Why we ask: Home size drives material and labor quantities for the entire job.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Under 1,500 sq ft |
|
medium | 1,500–3,000 sq ft |
|
large | Over 3,000 sq ft |
|
Tiers (3)
One-time seasonal tune-up
Brand: Local HVAC Pro
basePrice (declared)
$129
Σ(lineItems) (computed)
$129
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Seasonal Tune-Up — AC or Furnace (1–1.5 hrs) | labor | $109 |
| Standard Filter Replacement | equipment | $20 |
Specs (display only)
- Service: Single-system seasonal tune-up
- Includes: Inspect, clean, test, replace filter
- Duration: 60–90 minutes
- Frequency: Once per season
Pros (display only)
- Affordable way to keep your system running
- Catches small problems before they become big ones
- Improves energy efficiency 5–15%
- No commitment or contract required
Cons (display only)
- Only covers one visit per season
- No repair coverage or priority scheduling
tags: tune_up filter newer small_home
Twice-yearly maintenance plan
Brand: Certified HVAC Technician
basePrice (declared)
$199
Σ(lineItems) (computed)
$199
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Spring AC Tune-Up (1–1.5 hrs) | labor | $95 |
| Fall Furnace Tune-Up (1–1.5 hrs) | labor | $95 |
| Filter Replacements (2x) | equipment | $9 |
Specs (display only)
- Service: Spring AC + fall furnace tune-up
- Includes: Full inspection, cleaning, calibration, filter changes
- Duration: 60–90 min per visit
- Extras: 15% discount on any repairs needed
- Frequency: 2x per year
Tier add-ons
| add-on | price |
|---|---|
duct_inspection — Duct Inspection & Sealing CheckVisual inspection of accessible ductwork for leaks | $75 |
indoor_air_quality — Indoor Air Quality TestCheck for allergens, mold, and CO levels | $120 |
Pros (display only)
- Both heating and cooling covered
- Discount on parts and labor if repairs arise
- Priority scheduling during peak seasons
- Extends equipment lifespan significantly
- Manufacturer warranty often requires annual maintenance
Cons (display only)
- Repairs still cost extra (though discounted)
tags: plan central heat_pump mid_age medium_home
Full service contract with priority repair coverage
Brand: Premium HVAC Service Plan
basePrice (declared)
$420
Σ(lineItems) (computed)
$420
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| 2x Annual Tune-Ups (2 × 1–1.5 hrs) | labor | $190 |
| Repair Coverage (annual) | labor | $180 |
| Priority Service & Filters | equipment | $50 |
Specs (display only)
- Service: 2x annual tune-ups + repair coverage
- Repair Coverage: Parts and labor included (up to $500/incident)
- Response: 24-hour priority dispatch
- No Overtime: No weekend/evening surcharges
- Guarantee: 100% satisfaction guarantee
Pros (display only)
- Zero surprise repair bills up to coverage limit
- 24-hour emergency service, no overtime fees
- Front-of-the-line scheduling during heat waves and cold snaps
- Best for older systems likely to need repairs
- All filters and consumables included
Cons (display only)
- Highest annual cost
- Major component replacements (compressor, heat exchanger) may exceed coverage
tags: contract older large_home boiler
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | service_type ∈ { "tune_up", "filter_change" } |
good | 2 | system_age ∈ { "new" } |
good | 1 | home_size ∈ { "small" } |
better | 3 | service_type ∈ { "maintenance_plan" } |
better | 2 | system_age ∈ { "mid" } |
better | 1 | home_size ∈ { "medium" } |
best | 3 | service_type ∈ { "service_contract" } |
best | 2 | system_age ∈ { "old" } |
best | 2 | home_size ∈ { "large" } |
Final price formula (this vertical)
// computeTierPricing(hvac-maintenance, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: simple/direct_pay → collect FULL customerTotal at booking.Pricing sources cited in code
- Fixr — HVAC Maintenance Costs (2026) — https://www.fixr.com/costs/hvac-maintenance
- Angi HVAC Tune-Up Pricing — https://www.angi.com/articles/how-much-does-hvac-tune-up-cost.htm
Source file: src/lib/flow-engine/verticals/hvac-maintenance.ts · run the live flow →
🧹House Cleaning slug:house-cleaning
Recurring cleaning service priced transparently
Flow & payment model
Direct Pay (full price collected at booking)
Tier price range (declared base)
$150 – $450 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
No permits required for house cleaning services. (estimate: $0)
timeline: First cleaning can typically be scheduled within 2–5 business days.
installer note: Your cleaning team will do a walkthrough before the first clean to confirm scope and any special requests.
Questionnaire (6 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/house-cleaning.ts.
What type of cleaning do you need?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
standard | Standard recurring clean |
|
deep | Deep clean |
|
move_in_out | Move-in / move-out clean |
|
premium | Premium service (cleaning + laundry + organizing) |
|
How many bedrooms?
This is the biggest factor in cleaning time and cost.
Why we ask: Home size drives material and labor quantities for the entire job.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | 1–2 bedrooms |
|
medium | 3 bedrooms |
|
large | 4–5 bedrooms |
|
xl | 6+ bedrooms |
|
How many bathrooms?
Bathrooms take the most time to clean — this affects pricing significantly.
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
one | 1 bathroom | no direct price effect |
two | 2 bathrooms | no direct price effect |
three | 3 bathrooms | no direct price effect |
four_plus | 4+ bathrooms |
|
How often do you want cleaning?
Why we ask: Service cadence — informs whether this is a one-time job or part of a recurring service plan.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
weekly | Weekly |
|
biweekly | Every 2 weeks |
|
monthly | Monthly |
|
one_time | One-time |
|
Do you have pets?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
no | No pets | no direct price effect |
yes | Yes — dogs, cats, or both |
|
Any additional services needed?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
inside_fridge | Inside fridge | no direct price effect |
inside_oven | Inside oven | no direct price effect |
laundry | Laundry (wash, dry, fold) | no direct price effect |
windows_interior | Interior windows | no direct price effect |
organizing | Light organizing / decluttering | no direct price effect |
Tiers (3)
Standard recurring clean — kitchen, baths, floors, dusting
Brand: Local Cleaning Pro
basePrice (declared)
$150
Σ(lineItems) (computed)
$150
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Standard Clean — 3BR home (2–3 hrs) | labor | $130 |
| Supplies & Materials | equipment | $20 |
Specs (display only)
- Service: Kitchen, bathrooms, floors, dusting, vacuuming
- Duration: 2–3 hours
- Team: 1–2 cleaners
- Supplies: You provide or add $15–$25
Pros (display only)
- Most affordable recurring option
- Covers all essential areas every visit
- Consistent crew for familiarity
- No long-term contract required
Cons (display only)
- Does not include deep cleaning tasks (baseboards, inside appliances)
- Supplies may not be included
tags: standard small medium weekly biweekly
Deep clean — baseboards, inside appliances, detailed work
Brand: Professional Cleaning Service
basePrice (declared)
$275
Σ(lineItems) (computed)
$275
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Deep Clean Service — 3BR home (3–5 hrs) | labor | $240 |
| Eco-Friendly Supplies | equipment | $35 |
Specs (display only)
- Service: Everything in Standard + baseboards, light fixtures, inside appliances
- Duration: 3–5 hours
- Team: 2–3 cleaners
- Supplies: All supplies included (eco-friendly options available)
Tier add-ons
| add-on | price |
|---|---|
inside_cabinets — Inside Cabinets & DrawersWipe down and organize all kitchen/bathroom cabinets | $75 |
garage_sweep — Garage Sweep & OrganizeSweep, mop, and light organization of garage | $50 |
Pros (display only)
- Thorough cleaning of every surface and corner
- Inside oven, fridge, and microwave included
- Baseboards, door frames, and light switches detailed
- All supplies and equipment included
- Great first clean before switching to standard recurring
Cons (display only)
- Takes longer — plan for 3–5 hours
- Higher per-visit cost
tags: deep move monthly large pets
Premium service — cleaning + laundry + organizing
Brand: Premium Home Care
basePrice (declared)
$450
Σ(lineItems) (computed)
$450
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Premium Deep Clean (3–4 hrs) | labor | $280 |
| Laundry Service — wash/dry/fold (1–2 hrs) | labor | $80 |
| Organization & Detailing (1 hr) | labor | $60 |
| Premium Supplies | equipment | $30 |
Specs (display only)
- Service: Deep clean + laundry + closet/pantry organizing
- Duration: 5–8 hours
- Team: 2–4 cleaners
- Supplies: Premium eco-friendly products included
- Extras: Bed making with fresh linens, fridge organization
Pros (display only)
- Hotel-level clean every visit
- Laundry washed, dried, and folded
- Closets and pantry organized
- Beds made with fresh linens
- Perfect for busy professionals and families
Cons (display only)
- Highest cost per visit
- Requires 5–8 hours for full service
tags: premium large one_time
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | cleaning_type ∈ { "standard" } |
good | 2 | frequency ∈ { "weekly", "biweekly" } |
good | 1 | home_size ∈ { "small" } |
better | 3 | cleaning_type ∈ { "deep", "move_in_out" } |
better | 2 | frequency ∈ { "monthly" } |
better | 1 | home_size ∈ { "medium" } |
better | 1 | bathrooms ∈ { "three", "four_plus" } |
best | 3 | cleaning_type ∈ { "premium" } |
best | 2 | home_size ∈ { "large", "xl" } |
best | 1 | pets ∈ { "yes" } |
best | 1 | bathrooms ∈ { "four_plus" } |
Final price formula (this vertical)
// computeTierPricing(house-cleaning, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: simple/direct_pay → collect FULL customerTotal at booking.Pricing sources cited in code
- Fixr — House Cleaning Costs (2025) — https://www.fixr.com/costs/house-cleaning
- Angi House Cleaning Prices — https://www.angi.com/articles/how-much-does-house-cleaning-cost.htm
Source file: src/lib/flow-engine/verticals/house-cleaning.ts · run the live flow →
💦Pressure Washing slug:pressure-washing
Restore your home's curb appeal with professional pressure washing
Flow & payment model
Direct Pay (full price collected at booking)
Tier price range (declared base)
$180 – $800 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
No permits required for pressure washing services. (estimate: $0)
timeline: Service can typically be scheduled within 3–7 business days. Full-property jobs take a full day.
installer note: Your pressure washing pro will walk the property to assess surfaces and confirm scope before starting.
Questionnaire (4 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/pressure-washing.ts.
What areas need pressure washing?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
driveway | Driveway / walkways |
|
siding | House siding / exterior walls |
|
deck | Deck / patio |
|
fence | Fence |
|
roof | Roof (soft wash) |
|
How large is your home's exterior?
Why we ask: Home size drives material and labor quantities for the entire job.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Small — under 1,500 sq ft |
|
medium | Medium — 1,500–2,500 sq ft |
|
large | Large — over 2,500 sq ft |
|
What's the current condition?
Why we ask: Existing-condition signal — determines whether removal, prep, or remediation line items kick in.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
light | Light dirt and dust |
|
moderate | Moderate buildup — mold, mildew, or algae |
|
heavy | Heavy staining — oil, rust, or years of neglect |
|
How often do you want this service?
Why we ask: Service cadence — informs whether this is a one-time job or part of a recurring service plan.
How it impacts price: No direct price delta. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
one_time | One-time cleaning |
|
annual | Annual (once a year) |
|
biannual | Twice a year |
|
Tiers (3)
Driveway and walkway cleaning
Brand: Local Pressure Wash Pro
basePrice (declared)
$180
Σ(lineItems) (computed)
$180
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Driveway Pressure Wash (1–1.5 hrs) | labor | $145 |
| Walkway Cleaning (30 min) | labor | $35 |
Specs (display only)
- Service: Driveway and walkway pressure washing
- Area: Up to 800 sq ft of concrete/pavers
- Duration: 1–2 hours
- Equipment: Commercial-grade pressure washer
Pros (display only)
- Most affordable option for instant curb appeal
- Removes oil stains, dirt, and algae from concrete
- Quick turnaround — done in 1–2 hours
- No chemicals on sensitive plants or siding
Cons (display only)
- Driveway/walkways only — no siding or deck
- Heavy oil stains may require additional treatment
tags: driveway small light one_time
House exterior + driveway package
Brand: Professional Wash Service
basePrice (declared)
$400
Σ(lineItems) (computed)
$400
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| House Siding Soft Wash (2–3 hrs) | labor | $250 |
| Driveway & Walkway Pressure Wash (1–1.5 hrs) | labor | $120 |
| Cleaning Solutions & Plant Protection | equipment | $30 |
Specs (display only)
- Service: House siding soft wash + driveway pressure wash
- Method: Soft wash for siding (low pressure + cleaning solution)
- Duration: 3–5 hours
- Plant Protection: Pre-soak and rinse landscaping
Tier add-ons
| add-on | price |
|---|---|
gutter_brightening — Gutter BrighteningClean exterior gutter faces — remove black streaks | $100 |
concrete_sealing — Driveway SealingApply protective sealant after washing | $150 |
Pros (display only)
- Complete curb appeal refresh — siding and driveway
- Soft wash protects siding while removing mold and mildew
- Plant and landscaping protection included
- Removes years of grime in a single visit
Cons (display only)
- Takes half a day for most homes
- Does not include deck/fence/roof
tags: siding driveway medium moderate annual
Whole property wash — siding, driveway, deck, fence, roof
Brand: Full-Service Exterior Cleaning
basePrice (declared)
$800
Σ(lineItems) (computed)
$800
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| House Siding Soft Wash (2–3 hrs) | labor | $250 |
| Driveway & Walkway Pressure Wash (1–1.5 hrs) | labor | $120 |
| Deck / Patio Cleaning (1.5–2 hrs) | labor | $150 |
| Fence Cleaning (1–1.5 hrs) | labor | $100 |
| Roof Soft Wash (1–2 hrs) | labor | $130 |
| Cleaning Solutions & Post-Treatment | equipment | $50 |
Specs (display only)
- Service: Complete property pressure/soft wash
- Areas: Siding, driveway, deck, patio, fence, roof
- Duration: 6–10 hours (full day)
- Method: Appropriate pressure + soft wash per surface type
- Post-Treatment: Mildew-resistant treatment applied
Pros (display only)
- Every exterior surface cleaned in one visit
- Each surface gets the right cleaning method
- Mildew-resistant post-treatment extends results
- Best value per surface when doing everything at once
- Ideal before selling or annual spring refresh
Cons (display only)
- Full-day service — plan accordingly
- Highest total cost
tags: siding driveway deck fence roof large heavy biannual
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | areas ∈ { "driveway" } |
good | 2 | home_size ∈ { "small" } |
good | 1 | surface_condition ∈ { "light" } |
better | 3 | areas ∈ { "siding" } |
better | 2 | home_size ∈ { "medium" } |
better | 1 | surface_condition ∈ { "moderate" } |
best | 3 | areas ∈ { "roof" } |
best | 2 | home_size ∈ { "large" } |
best | 2 | surface_condition ∈ { "heavy" } |
Final price formula (this vertical)
// computeTierPricing(pressure-washing, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: simple/direct_pay → collect FULL customerTotal at booking.Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
areas=driveway— "Driveway / walkways"home_size=small— "Small — under 1,500 sq ft"surface_condition=light— "Light dirt and dust"frequency=one_time— "One-time cleaning"
Σ(tier.lineItems) = $400 Σ(answer priceDeltas) = $0 permits = $0 installerCost = $400 platformFee (5%) = $20 customerTotal = $420
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- Angi Pressure Washing Prices — https://www.angi.com/articles/how-much-does-pressure-washing-cost.htm
- HomeGuide — Pressure Washing Prices — https://homeguide.com/costs/pressure-washing-cost
Source file: src/lib/flow-engine/verticals/pressure-washing.ts · run the live flow →
🪟Window Cleaning slug:window-cleaning
Crystal-clear windows with transparent pricing
Flow & payment model
Direct Pay (full price collected at booking)
Tier price range (declared base)
$200 – $500 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
No permits required for window cleaning services. (estimate: $0)
timeline: Service can typically be scheduled within 3–7 business days.
installer note: Your window cleaning pro will count and assess windows before starting to confirm the final price.
Questionnaire (4 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/window-cleaning.ts.
What window cleaning do you need?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
exterior | Exterior only |
|
both | Interior + exterior |
|
full | Interior + exterior + screens + tracks |
|
How many windows does your home have?
Why we ask: Count drives both material cost (per window) and labor hours.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | 10–15 windows |
|
medium | 16–25 windows |
|
large | 26–40 windows |
|
xl | 40+ windows |
|
How many stories is your home?
Why we ask: Multi-story homes add scaffolding, ladders, and labor time — drives an access/labor adjustment.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
one | Single story |
|
two | Two stories |
|
three_plus | Three+ stories |
|
How often do you want window cleaning?
Why we ask: Service cadence — informs whether this is a one-time job or part of a recurring service plan.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
one_time | One-time |
|
quarterly | Quarterly (4x/year) |
|
biannual | Twice a year |
|
annual | Once a year |
|
Tiers (3)
Exterior window cleaning — streak-free shine
Brand: Local Window Pro
basePrice (declared)
$200
Σ(lineItems) (computed)
$200
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Exterior Window Cleaning — avg home (2 hrs) | labor | $180 |
| Frame Wipe-Down (0.5 hrs) | labor | $20 |
Specs (display only)
- Service: Exterior window cleaning only
- Method: Squeegee + water-fed pole
- Duration: 1.5–3 hours
- Includes: Window frames wiped down
Pros (display only)
- Most affordable way to improve curb appeal
- Professional streak-free results
- No need to be home during service
- Water-fed pole system for upper-story windows
Cons (display only)
- Exterior only — interior glass not cleaned
- Screens and tracks not included
tags: exterior small medium single_story annual
Interior + exterior — every pane spotless
Brand: Professional Window Service
basePrice (declared)
$325
Σ(lineItems) (computed)
$325
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Interior Window Cleaning (2 hrs) | labor | $140 |
| Exterior Window Cleaning (2 hrs) | labor | $160 |
| Sills & Frames (0.5 hrs) | labor | $25 |
Specs (display only)
- Service: Interior and exterior window cleaning
- Method: Hand-cleaned interior, squeegee/pole exterior
- Duration: 3–5 hours
- Includes: Sills and frames wiped, mirror cleaning
Tier add-ons
| add-on | price |
|---|---|
chandelier — Chandelier CleaningHand-clean crystal or glass light fixtures | $75 |
skylight — Skylight CleaningInterior + exterior skylight cleaning | $50 |
Pros (display only)
- Both sides of every window cleaned
- Window sills and frames detailed
- Can spot issues like broken seals or rot
- Interior mirrors included at no extra charge
Cons (display only)
- Need to be home for interior access
- Screens and tracks not included
tags: both medium large two_story biannual
Complete service — windows, screens, tracks, and frames
Brand: Premium Window Care
basePrice (declared)
$500
Σ(lineItems) (computed)
$500
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Interior + Exterior Window Cleaning (4 hrs) | labor | $300 |
| Screen Removal, Cleaning & Reinstallation (1.5 hrs) | labor | $100 |
| Track Cleaning & Detailing (1 hr) | labor | $60 |
| Hard Water Stain Treatment (product + application) | equipment | $40 |
Specs (display only)
- Service: Interior + exterior + screens removed/cleaned + tracks vacuumed
- Duration: 5–8 hours
- Method: Hand-detailed every component
- Includes: Screen repair assessment, hard water stain removal
Pros (display only)
- Every component of every window serviced
- Screens removed, washed, and reinstalled
- Tracks vacuumed, scraped, and wiped clean
- Hard water stain treatment included
- Window condition report with photos
Cons (display only)
- Requires full-day access to your home
- Highest per-visit cost
tags: full large xl multi_story quarterly
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | service_scope ∈ { "exterior" } |
good | 2 | window_count ∈ { "small" } |
good | 1 | stories ∈ { "one" } |
better | 3 | service_scope ∈ { "both" } |
better | 2 | window_count ∈ { "medium" } |
better | 1 | frequency ∈ { "biannual" } |
best | 3 | service_scope ∈ { "full" } |
best | 2 | window_count ∈ { "large", "xl" } |
best | 1 | frequency ∈ { "quarterly" } |
Final price formula (this vertical)
// computeTierPricing(window-cleaning, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: simple/direct_pay → collect FULL customerTotal at booking.Pricing sources cited in code
- This Old House — Window Cleaning Costs (2026) — https://www.thisoldhouse.com/windows/window-cleaning-cost
- Angi Window Cleaning Prices — https://www.angi.com/articles/how-much-does-window-cleaning-cost.htm
Source file: src/lib/flow-engine/verticals/window-cleaning.ts · run the live flow →
🧼Carpet Cleaning slug:carpet-cleaning
Professional carpet cleaning with upfront, honest pricing
Flow & payment model
Direct Pay (full price collected at booking)
Tier price range (declared base)
$165 – $500 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
No permits required for carpet cleaning services. (estimate: $0)
timeline: Service can typically be scheduled within 2–5 business days.
installer note: Your carpet technician will do a pre-inspection to identify stains and recommend treatment before starting.
Questionnaire (4 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/carpet-cleaning.ts.
How much carpet needs cleaning?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
few_rooms | 2–3 rooms |
|
whole_house | Whole house (4–6 rooms) |
|
large_home | Large home (7+ rooms) |
|
Any specific concerns?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
general_dirt | General dirt and traffic wear |
|
pet_stains | Pet stains and odors |
|
deep_stains | Deep stains (wine, coffee, grease) |
|
allergens | Allergens and dust mites |
|
What type of carpet do you have?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
standard | Standard wall-to-wall carpet |
|
berber | Berber / loop pile |
|
plush | Plush / frieze |
|
area_rugs | Area rugs (wool, oriental, etc.) |
|
When were your carpets last professionally cleaned?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
recent | Within the last year |
|
while_ago | 1–3 years ago |
|
never | 3+ years or never |
|
Tiers (3)
2–3 room carpet cleaning — quick refresh
Brand: Local Carpet Pro
basePrice (declared)
$165
Σ(lineItems) (computed)
$165
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Carpet Cleaning — 2–3 rooms (1.5 hrs) | labor | $145 |
| Pre-Vacuuming & Prep (30 min) | labor | $20 |
Specs (display only)
- Service: Hot water extraction (steam) cleaning
- Rooms: 2–3 rooms (up to 500 sq ft)
- Duration: 1–2 hours
- Dry Time: 4–6 hours
Pros (display only)
- Most affordable professional cleaning option
- Removes surface dirt and light stains
- Quick service — done in 1–2 hours
- Carpet is walkable within 4–6 hours
Cons (display only)
- Limited to 2–3 rooms only
- No stain treatment or upholstery included
- Pre-treatment may cost extra
tags: few_rooms general standard recent
Whole house cleaning — deep extraction
Brand: Certified Carpet Technician
basePrice (declared)
$275
Σ(lineItems) (computed)
$275
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Whole House Carpet Cleaning — 4–6 rooms (4 hrs) | labor | $220 |
| Stain Pre-Treatment Solution | equipment | $30 |
| Deodorizer Application | equipment | $25 |
Specs (display only)
- Service: Truck-mounted hot water extraction
- Rooms: Whole house (4–6 rooms + hallways)
- Duration: 3–5 hours
- Dry Time: 4–8 hours
- Pre-Treatment: Stain pre-spray on high-traffic areas
Tier add-ons
| add-on | price |
|---|---|
scotchgard — Carpet Protectant (Scotchgard)Stain-resistant coating for all cleaned carpets | $75 |
staircase — Staircase CleaningUp to 15 stairs cleaned and pre-treated | $50 |
Pros (display only)
- Whole house cleaned in one visit
- Truck-mounted equipment provides deeper clean
- Pre-treatment of high-traffic and stained areas
- Deodorizer application included
- Better for homes with kids and pets
Cons (display only)
- Longer dry time (4–8 hours)
- Upholstery not included
tags: whole_house general pets moderate_wear
Whole house + upholstery + stain treatment
Brand: Premium Carpet & Upholstery Care
basePrice (declared)
$500
Σ(lineItems) (computed)
$500
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Whole House Deep Carpet Cleaning (5 hrs) | labor | $250 |
| Upholstery Cleaning — sofa + 2 chairs (2 hrs) | labor | $120 |
| Enzyme Pet Treatment Solution | equipment | $50 |
| Specialty Stain Removal Products | equipment | $40 |
| Carpet Protectant Application | equipment | $40 |
Specs (display only)
- Service: Truck-mounted extraction + specialty stain removal
- Rooms: Whole house + upholstery (sofa + chairs)
- Duration: 5–8 hours
- Stain Treatment: Enzyme pet treatment + specialty stain removal
- Protectant: Carpet protectant applied to all areas
Pros (display only)
- Carpets and upholstery done together for maximum impact
- Enzyme-based pet stain and odor treatment
- Specialty stain removal (wine, coffee, grease)
- Carpet protectant included — extends time between cleanings
- Satisfaction guarantee on stain removal
Cons (display only)
- Full-day service commitment
- Highest total cost
- Some old stains may be permanent despite treatment
tags: whole_house large_home pets stains heavy_wear rugs
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | scope ∈ { "few_rooms" } |
good | 2 | last_cleaned ∈ { "recent" } |
good | 1 | concerns ∈ { "general_dirt" } |
better | 3 | scope ∈ { "whole_house" } |
better | 2 | last_cleaned ∈ { "while_ago" } |
better | 1 | concerns ∈ { "allergens" } |
best | 3 | concerns ∈ { "pet_stains", "deep_stains" } |
best | 2 | scope ∈ { "large_home" } |
best | 2 | last_cleaned ∈ { "never" } |
Final price formula (this vertical)
// computeTierPricing(carpet-cleaning, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: simple/direct_pay → collect FULL customerTotal at booking.Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
scope=few_rooms— "2–3 rooms"concerns=general_dirt— "General dirt and traffic wear"carpet_type=standard— "Standard wall-to-wall carpet"last_cleaned=recent— "Within the last year"
Σ(tier.lineItems) = $275 Σ(answer priceDeltas) = $0 permits = $0 installerCost = $275 platformFee (5%) = $14 customerTotal = $289
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- LawnStarter — Carpet Cleaning Costs (2025) — https://www.lawnstarter.com/blog/cost/carpet-cleaning-price/
- Angi Carpet Cleaning Prices — https://www.angi.com/articles/how-much-does-carpet-cleaning-cost.htm
Source file: src/lib/flow-engine/verticals/carpet-cleaning.ts · run the live flow →
🔥Dryer Vent Cleaning slug:dryer-vent-cleaning
Prevent fires and improve dryer efficiency with professional vent cleaning
Flow & payment model
Direct Pay (full price collected at booking)
Tier price range (declared base)
$150 – $300 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
No permits required for dryer vent cleaning. (estimate: $0)
timeline: Service can typically be scheduled within 2–5 business days. Urgent requests (burning smell) prioritized.
installer note: Your technician will need access to the dryer and the exterior vent termination point.
Questionnaire (4 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/dryer-vent-cleaning.ts.
What service do you need?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
cleaning | Basic dryer vent cleaning |
|
cleaning_inspection | Cleaning + full inspection |
|
full_service | Cleaning + inspection + dryer maintenance |
|
How long is your dryer vent run?
Longer vents accumulate more lint and cost more to clean.
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
short | Short — wall-mounted dryer, vent exits nearby |
|
medium | Medium — 10–20 feet to exterior |
|
long | Long — 20+ feet or through roof |
|
When was it last cleaned?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
recent | Within the last year |
|
few_years | 2–3 years ago |
|
never | Never or can't remember |
|
Are you experiencing any of these?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
long_dry | Clothes taking longer to dry |
|
hot_dryer | Dryer getting very hot |
|
lint_outside | Lint visible around exterior vent |
|
burning_smell | Burning smell when dryer runs |
|
none | No issues — preventive maintenance | no direct price effect |
Tiers (3)
Basic dryer vent cleaning — lint removal and airflow restored
Brand: Local Vent Pro
basePrice (declared)
$150
Σ(lineItems) (computed)
$150
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Dryer Vent Cleaning (45 min) | labor | $130 |
| Lint Trap Area Cleaning (15 min) | labor | $20 |
Specs (display only)
- Service: Full vent line cleaning from dryer to exterior
- Method: Rotary brush + high-powered vacuum
- Duration: 30–60 minutes
- Includes: Interior lint trap area cleaning
Pros (display only)
- Reduces fire risk significantly
- Restores dryer efficiency — clothes dry faster
- Quick service — done in under an hour
- Most affordable fire prevention measure
Cons (display only)
- No detailed inspection of vent condition
- Doesn't include dryer interior cleaning
tags: cleaning short medium recent
Cleaning + full inspection with before/after photos
Brand: Certified Vent Technician
basePrice (declared)
$210
Σ(lineItems) (computed)
$210
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Dryer Vent Cleaning (45 min) | labor | $120 |
| Camera Inspection (20 min) | labor | $50 |
| Exterior Hood Inspection (10 min) | labor | $20 |
| Condition Report with Photos (15 min) | labor | $20 |
Specs (display only)
- Service: Complete vent cleaning + detailed inspection
- Inspection: Camera inspection of vent line
- Duration: 45–90 minutes
- Report: Before/after photos + condition report
- Includes: Vent connection check + exterior hood inspection
Tier add-ons
| add-on | price |
|---|---|
vent_repair — Vent Line RepairFix disconnected or damaged vent sections | $80 |
bird_guard — Bird Guard InstallationPrevent birds and pests from nesting in vent | $45 |
Pros (display only)
- Camera inspection reveals hidden issues (crimps, disconnections)
- Before/after photos document the cleaning
- Exterior vent hood inspected for proper function
- Written condition report for your records
- Identifies potential fire hazards beyond lint
Cons (display only)
- Higher cost than basic cleaning
- Slightly longer appointment
tags: inspection medium long overdue symptoms
Complete service — vent cleaning, inspection, and dryer maintenance
Brand: Full-Service Dryer Care
basePrice (declared)
$300
Σ(lineItems) (computed)
$300
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Dryer Vent Cleaning (45 min) | labor | $120 |
| Camera Inspection & Report (20 min) | labor | $50 |
| Dryer Interior Cleaning (45 min) | labor | $80 |
| Mechanical Inspection — belt, rollers (20 min) | labor | $50 |
Specs (display only)
- Service: Vent cleaning + camera inspection + dryer interior cleaning
- Dryer Service: Clean interior drum, lint housing, exhaust path, check belt/rollers
- Duration: 1.5–2.5 hours
- Report: Comprehensive report with photos and recommendations
- Guarantee: 90-day airflow guarantee
Pros (display only)
- Most thorough fire prevention service available
- Dryer interior cleaned — removes hidden lint buildup
- Belt, rollers, and bearings inspected for wear
- Maximum dryer efficiency restored
- 90-day guarantee on improved airflow
Cons (display only)
- Longest appointment time
- Highest cost per visit
tags: full_service long neglected urgent
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | service_type ∈ { "cleaning" } |
good | 2 | last_cleaned ∈ { "recent" } |
good | 1 | vent_length ∈ { "short" } |
better | 3 | service_type ∈ { "cleaning_inspection" } |
better | 2 | last_cleaned ∈ { "few_years" } |
better | 1 | vent_length ∈ { "medium" } |
best | 3 | service_type ∈ { "full_service" } |
best | 3 | symptoms ∈ { "burning_smell" } |
best | 2 | last_cleaned ∈ { "never" } |
Final price formula (this vertical)
// computeTierPricing(dryer-vent-cleaning, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: simple/direct_pay → collect FULL customerTotal at booking.Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
service_type=cleaning— "Basic dryer vent cleaning"vent_length=short— "Short — wall-mounted dryer, vent exits nearby"last_cleaned=recent— "Within the last year"symptoms=long_dry— "Clothes taking longer to dry"
Σ(tier.lineItems) = $210 Σ(answer priceDeltas) = $0 permits = $0 installerCost = $210 platformFee (5%) = $11 customerTotal = $221
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- Fixr — Dryer Vent Cleaning Cost (2025) — https://www.fixr.com/costs/dryer-vent-cleaning
- NFPA Dryer Fire Safety — https://www.nfpa.org/education-and-research/home-fire-safety/dryers
Source file: src/lib/flow-engine/verticals/dryer-vent-cleaning.ts · run the live flow →
🔧Appliance Repair slug:appliance-repair
Fix your appliances right the first time — with fair pricing
Flow & payment model
Direct Pay (full price collected at booking)
Tier price range (declared base)
$190 – $600 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
No permits required for standard appliance repairs. (estimate: $0)
timeline: Most repairs scheduled within 1–3 business days. Same-day service often available for an additional fee.
installer note: Your technician will diagnose the issue and provide a firm quote before beginning any repair work.
Questionnaire (4 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/appliance-repair.ts.
Which appliance needs repair?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
washer | Washing machine |
|
dryer | Dryer |
|
fridge | Refrigerator / freezer |
|
dishwasher | Dishwasher |
|
oven | Oven / range / stove |
|
microwave | Microwave (built-in) |
|
What's the problem?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
not_working | Won't turn on or start |
|
leaking | Leaking water |
|
noisy | Making unusual noise |
|
poor_performance | Not heating / cooling / cleaning properly |
|
error_code | Error code / blinking light |
|
other | Other issue | no direct price effect |
What brand is the appliance?
Why we ask: Equipment brand is part of the equipment line item and determines warranty terms.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
standard | Standard (GE, Whirlpool, Samsung, LG, Maytag, Frigidaire) |
|
premium | Premium (Sub-Zero, Viking, Bosch, Miele, Wolf) |
|
unknown | Other / not sure | no direct price effect |
Is the appliance under warranty?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
yes | Yes — still under manufacturer warranty | no direct price effect |
extended | Extended warranty / home warranty | no direct price effect |
no | No — out of warranty |
|
unsure | Not sure | no direct price effect |
Tiers (3)
Diagnostic visit + simple fix
Brand: Local Appliance Tech
basePrice (declared)
$190
Σ(lineItems) (computed)
$190
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Service Call & Diagnostic (1 hr) | labor | $100 |
| Simple Repair — common parts + labor (1 hr) | labor | $90 |
Specs (display only)
- Service: Diagnostic + repair if simple (thermostat, belt, filter, switch)
- Duration: 45–90 minutes
- Service Call: Diagnostic fee applied to repair
- Parts: Common parts from truck stock
Pros (display only)
- Diagnostic fee waived if you proceed with repair
- Most common fixes done on the first visit
- No hourly billing — flat diagnostic + repair rate
- Covers simple component replacements
Cons (display only)
- Complex repairs or specialty parts may require a second visit
- No extended warranty on labor
tags: electrical diagnostic standard_brand no_warranty
Parts + labor with 90-day warranty
Brand: Certified Appliance Technician
basePrice (declared)
$350
Σ(lineItems) (computed)
$350
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Diagnostic & Labor (1.5 hrs) | labor | $180 |
| OEM Parts | equipment | $170 |
Specs (display only)
- Service: Full diagnostic, parts replacement, and repair
- Parts: OEM or equivalent quality parts
- Warranty: 90-day warranty on parts and labor
- Duration: 1–3 hours (may require parts order)
Tier add-ons
| add-on | price |
|---|---|
maintenance_check — Full Appliance CheckupInspect and tune all major components while appliance is accessible | $50 |
second_appliance — Second Appliance DiagnosticAdd diagnostic for another appliance during same visit | $60 |
Pros (display only)
- OEM-quality parts for lasting repairs
- 90-day warranty on both parts and labor
- Factory-trained on major brands
- Most repairs completed same-day
- Transparent pricing before work begins
Cons (display only)
- Specialty parts may require 2–5 day wait
- Higher cost for major component repairs
tags: leak mechanical performance standard_brand
Premium repair with 1-year warranty
Brand: Factory-Authorized Service
basePrice (declared)
$600
Σ(lineItems) (computed)
$600
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Priority Diagnostic & Expert Labor (2 hrs) | labor | $250 |
| Genuine OEM Parts | equipment | $250 |
| 1-Year Warranty & Follow-Up Service (30 min) | labor | $100 |
Specs (display only)
- Service: Complete repair with OEM parts and 1-year warranty
- Parts: Genuine OEM parts only
- Warranty: 1-year warranty on parts and labor
- Scheduling: Priority scheduling with 2-hour arrival windows
- Follow: 30-day follow-up call to confirm repair
Pros (display only)
- 1-year warranty — peace of mind on every repair
- Genuine OEM parts from the manufacturer
- Priority scheduling with tight arrival windows
- Factory-authorized for warranty-safe repairs
- 30-day follow-up to confirm everything's working
Cons (display only)
- Highest repair cost
- For older appliances, replacement may be more cost-effective
tags: premium_brand fridge oven mechanical performance
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | issue ∈ { "not_working", "error_code" } |
good | 2 | brand ∈ { "standard" } |
good | 1 | appliance ∈ { "microwave" } |
better | 3 | issue ∈ { "leaking", "noisy", "poor_performance" } |
better | 2 | warranty ∈ { "no" } |
best | 3 | brand ∈ { "premium" } |
best | 2 | appliance ∈ { "fridge" } |
best | 1 | issue ∈ { "poor_performance" } |
Final price formula (this vertical)
// computeTierPricing(appliance-repair, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: simple/direct_pay → collect FULL customerTotal at booking.Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
appliance=washer— "Washing machine"issue=not_working— "Won't turn on or start"brand=standard— "Standard (GE, Whirlpool, Samsung, LG, Maytag, Frigidaire)"warranty=yes— "Yes — still under manufacturer warranty"
Σ(tier.lineItems) = $350 Σ(answer priceDeltas) = $0 permits = $0 installerCost = $350 platformFee (5%) = $18 customerTotal = $368
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- HomeGuide — Appliance Repair Costs — https://homeguide.com/costs/appliance-repair-cost
- Angi Appliance Repair Prices — https://www.angi.com/articles/how-much-does-appliance-repair-cost.htm
Source file: src/lib/flow-engine/verticals/appliance-repair.ts · run the live flow →
🛠️Handyman slug:handyman
Get honest pricing for general home repairs and odd jobs
Flow & payment model
Direct Pay (full price collected at booking)
Tier price range (declared base)
$175 – $650 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
No permits required for most handyman tasks. Electrical and plumbing work beyond minor repairs may need a licensed contractor. (estimate: $0)
timeline: Most handyman services can be scheduled within 2–7 business days. Same-week availability is common.
installer note: Your handyman will review your task list at arrival and prioritize based on complexity and time available.
Questionnaire (4 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/handyman.ts.
What kind of work do you need done?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
mounting | TV mounting / shelf hanging / picture frames |
|
assembly | Furniture assembly (IKEA, etc.) |
|
minor_plumbing | Minor plumbing (faucet, toilet, garbage disposal) |
|
minor_electrical | Minor electrical (outlets, switches, fixtures) |
|
drywall | Drywall repair / patching |
|
doors_windows | Door/window adjustment or replacement |
|
general | General repairs and maintenance |
|
How much work do you estimate?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Small — 1–2 tasks (couple hours) |
|
medium | Medium — 3–5 tasks (half day) |
|
large | Large — full day of tasks |
|
Do you have the materials needed?
Why we ask: Material/finish selection — primary cost driver inside the tier ladder.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
yes | Yes — I have everything |
|
some | Some — may need a few things |
|
no | No — handyman will need to source materials |
|
How soon do you need this done?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
flexible | Flexible — within 1–2 weeks |
|
soon | Within a few days |
|
asap | ASAP — urgent |
|
Tiers (3)
2-hour minimum — perfect for quick fixes
Brand: Local Handyman
basePrice (declared)
$175
Σ(lineItems) (computed)
$175
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Handyman Service (2 hrs minimum) | labor | $175 |
Specs (display only)
- Service: 2-hour minimum booking
- Rate: $65–$100/hour
- Typical: 1–2 small tasks completed
- Tools: Handyman brings standard tools
Pros (display only)
- Most affordable option for small jobs
- Great for single tasks or quick fixes
- No long-term commitment needed
- Experienced generalist for common repairs
Cons (display only)
- 2-hour minimum even for quick jobs
- Materials not included in base price
- Complex tasks may require a specialist
tags: mounting assembly small materials_ready flexible
Half-day booking — tackle your task list
Brand: Experienced Handyman
basePrice (declared)
$375
Σ(lineItems) (computed)
$375
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Half-Day Handyman Service (4 hrs) | labor | $325 |
| Hardware/Materials Run (if needed) | equipment | $50 |
Specs (display only)
- Service: 4-hour half-day booking
- Rate: $65–$85/hour (volume discount)
- Typical: 3–5 tasks completed
- Skills: Multi-trade experience (basic plumbing, electrical, carpentry)
Tier add-ons
| add-on | price |
|---|---|
extra_hours — Additional HoursExtend to full day as needed at $75/hr | $75 |
disposal — Debris RemovalHaul away old fixtures, packaging, etc. | $50 |
Pros (display only)
- Better hourly rate with half-day booking
- Knock out multiple tasks in one visit
- Multi-skilled — handles varied job types
- Hardware store run included if materials needed
- Great for that accumulated fix-it list
Cons (display only)
- Materials still billed separately
- Half-day commitment required
tags: plumbing electrical drywall medium some_materials soon
Full-day service — your complete to-do list, handled
Brand: Premium Handyman Service
basePrice (declared)
$650
Σ(lineItems) (computed)
$650
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Full-Day Handyman Service (8 hrs) | labor | $550 |
| Materials Sourcing & Pickup (1 hr) | labor | $50 |
| Workmanship Guarantee | labor | $50 |
Specs (display only)
- Service: Full 8-hour day
- Rate: $60–$75/hour (best per-hour rate)
- Skills: Licensed multi-trade professional
- Materials: Materials sourced and delivered
- Guarantee: Workmanship guarantee on all tasks
Pros (display only)
- Best per-hour rate for a full day
- Materials sourced and picked up for you
- Licensed professional — permitted for minor plumbing and electrical
- Workmanship guarantee on all completed tasks
- Perfect for move-in prep or seasonal maintenance
Cons (display only)
- Highest total day cost
- Full-day commitment — need enough tasks to fill the day
tags: doors general large need_materials urgent
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | time_estimate ∈ { "small" } |
good | 2 | job_type ∈ { "mounting", "assembly" } |
good | 1 | materials ∈ { "yes" } |
better | 3 | time_estimate ∈ { "medium" } |
better | 2 | job_type ∈ { "minor_plumbing", "minor_electrical", "drywall" } |
better | 1 | urgency ∈ { "soon" } |
best | 3 | time_estimate ∈ { "large" } |
best | 2 | materials ∈ { "no" } |
best | 1 | urgency ∈ { "asap" } |
Final price formula (this vertical)
// computeTierPricing(handyman, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: simple/direct_pay → collect FULL customerTotal at booking.Pricing sources cited in code
- HomeGuide — Handyman Prices (2025) — https://homeguide.com/costs/handyman-prices
- Angi Handyman Prices — https://www.angi.com/articles/how-much-does-handyman-cost.htm
Source file: src/lib/flow-engine/verticals/handyman.ts · run the live flow →
🏠Chimney Sweeping slug:chimney-sweeping
Keep your chimney safe and clean with professional sweeping and inspection
Flow & payment model
Direct Pay (full price collected at booking)
Tier price range (declared base)
$200 – $600 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
No permits required for chimney sweeping. Cap installation and minor repairs typically permit-free; major masonry may require permits. (estimate: $0)
timeline: Service can typically be scheduled within 3–10 business days. Fall is peak season — book early.
installer note: Your chimney sweep will place drop cloths and use HEPA vacuums to keep your home clean during service.
Questionnaire (4 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/chimney-sweeping.ts.
What chimney service do you need?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
sweep | Basic chimney sweep (Level 1) |
|
sweep_inspection | Sweep + detailed inspection (Level 2) |
|
full_service | Sweep + inspection + cap/damper repair |
|
What type of fireplace do you have?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
wood | Wood-burning fireplace |
|
gas | Gas fireplace |
|
wood_stove | Wood stove / insert |
|
pellet | Pellet stove |
|
When was your chimney last swept?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
recent | Within the last year |
|
few_years | 2–3 years ago |
|
long_time | 4+ years or never |
|
Any specific concerns?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
creosote | Heavy creosote buildup |
|
animal | Animal nesting / blockage |
|
smell | Smoke smell in the house |
|
damaged_cap | Missing or damaged chimney cap |
|
none | No specific concerns — routine maintenance | no direct price effect |
Tiers (3)
Level 1 sweep — creosote removal and basic visual check
Brand: CSIA Certified Sweep
basePrice (declared)
$200
Σ(lineItems) (computed)
$200
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Chimney Sweep (Level 1) | labor | $170 |
| Level 1 Visual Inspection | labor | $30 |
Specs (display only)
- Service: Full chimney sweep with creosote removal
- Inspection: Level 1 visual inspection (accessible areas)
- Duration: 45–90 minutes
- Method: Rotary brush system + HEPA vacuum
Pros (display only)
- Removes creosote buildup — the #1 chimney fire cause
- CSIA-certified sweep ensures proper technique
- HEPA vacuum keeps your home soot-free
- Meets insurance and code requirements for annual sweep
- Most affordable option for annual maintenance
Cons (display only)
- Visual inspection only — doesn't assess hidden flue damage
- No cap or damper repairs included
tags: sweep wood gas recent
Level 2 sweep + video inspection of flue liner
Brand: CSIA Certified + Video Inspection
basePrice (declared)
$375
Σ(lineItems) (computed)
$375
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Chimney Sweep | labor | $190 |
| Level 2 Camera Inspection | labor | $150 |
| Written Condition Report | labor | $35 |
Specs (display only)
- Service: Complete chimney sweep + Level 2 inspection
- Inspection: Camera inspection of entire flue liner
- Duration: 1.5–2.5 hours
- Report: Written report with photos of flue condition
- Includes: Smoke chamber and damper inspection
Tier add-ons
| add-on | price |
|---|---|
waterproofing — Chimney WaterproofingApply breathable sealant to prevent water damage | $150 |
animal_removal — Animal Nest RemovalRemove bird or raccoon nesting material from flue | $100 |
Pros (display only)
- Camera reveals cracks, gaps, and deterioration in flue liner
- Required by NFPA for home sales, after chimney fires, and after weather events
- Written report useful for insurance claims and real estate
- Identifies problems before they become dangerous
- Recommended for chimneys not swept in 2+ years
Cons (display only)
- Higher cost than basic sweep
- May reveal issues requiring costly repair
tags: inspection wood stove overdue blockage smell
Complete service — sweep, inspection, cap + damper repair
Brand: Full-Service Chimney Care
basePrice (declared)
$600
Σ(lineItems) (computed)
$600
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Chimney Sweep + Level 2 Inspection | labor | $300 |
| Chimney Cap (supply + install) | equipment | $170 |
| Damper Repair / Adjustment | labor | $80 |
| Crown Seal & Minor Masonry | labor | $50 |
Specs (display only)
- Service: Level 2 sweep and inspection + repairs
- Repairs: Chimney cap installation/replacement + damper repair
- Duration: 3–5 hours
- Crown Seal: Minor crown repair included
- Guarantee: 1-year warranty on cap and damper work
Pros (display only)
- Everything your chimney needs in one visit
- New cap prevents water, animals, and debris
- Damper repair/replacement improves draft and energy efficiency
- Minor crown sealing prevents water intrusion
- 1-year warranty on all repair work
Cons (display only)
- Highest per-visit cost
- Major masonry repairs quoted separately if discovered
tags: full_service neglected creosote cap_issue pellet
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | service_type ∈ { "sweep" } |
good | 2 | last_swept ∈ { "recent" } |
good | 1 | fireplace_type ∈ { "gas" } |
better | 3 | service_type ∈ { "sweep_inspection" } |
better | 2 | last_swept ∈ { "few_years" } |
better | 1 | concerns ∈ { "animal", "smell" } |
best | 3 | service_type ∈ { "full_service" } |
best | 2 | last_swept ∈ { "long_time" } |
best | 2 | concerns ∈ { "creosote", "damaged_cap" } |
Final price formula (this vertical)
// computeTierPricing(chimney-sweeping, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: simple/direct_pay → collect FULL customerTotal at booking.Pricing sources cited in code
- CSIA Chimney Safety Guidelines — https://www.csia.org/chimney-safety/
- HomeGuide — Chimney Sweep Costs — https://homeguide.com/costs/chimney-sweep-cost
Source file: src/lib/flow-engine/verticals/chimney-sweeping.ts · run the live flow →
❄️Snow Removal slug:snow-removal
Reliable snow removal with clear, upfront pricing
Flow & payment model
Direct Pay (full price collected at booking)
Tier price range (declared base)
$60 – $1,200 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
No permits required for snow removal services. (estimate: $0)
timeline: Seasonal contracts should be signed before first snowfall (ideally October). Per-push service available on-demand.
installer note: Your snow removal pro will walk the property to mark obstacles (garden edges, posts, curbs) before the first storm.
Questionnaire (4 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/snow-removal.ts.
What type of snow removal service do you need?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
per_push | Per-push / per-event service |
|
seasonal | Seasonal contract (unlimited pushes) |
|
full_property | Full property service with salting/sanding |
|
How large is the area to clear?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | Standard driveway + front walk |
|
medium | Large driveway + walkways + steps |
|
large | Whole property (long driveway, multiple walks, parking area) |
|
At what snow depth should service begin?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
two_inch | 2 inches (most responsive) |
|
four_inch | 4 inches (standard) |
|
six_inch | 6 inches (budget-friendly) |
|
Do you need ice treatment (salt/sand)?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
no | No — just snow removal | no direct price effect |
walkways | Walkways and steps only |
|
full | Full treatment — driveway + walkways |
|
Tiers (3)
Per-push service — pay only when it snows
Brand: Local Plow Pro
basePrice (declared)
$60
Σ(lineItems) (computed)
$60
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Driveway Plowing (per push, ~30 min) | labor | $45 |
| Walkway Shoveling (per push, ~15 min) | labor | $15 |
Specs (display only)
- Service: Driveway plowing + walkway shoveling
- Trigger: Billed per event (per push)
- Timing: Within 4–6 hours of snowfall ending
- Area: Standard driveway + front walk
Pros (display only)
- Only pay when it actually snows
- No contract commitment
- Great for mild winter areas with fewer storms
- Most affordable per-event option
Cons (display only)
- Can get expensive in heavy snow years
- May not be prioritized during big storms (contract customers first)
- No ice treatment included
tags: per_push small standard_trigger high_trigger
Seasonal contract — predictable monthly cost all winter
Brand: Professional Snow Service
basePrice (declared)
$600
Σ(lineItems) (computed)
$600
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Seasonal Contract — Plowing (Nov–Mar, ~1 hr/event) | labor | $450 |
| Walkway Shoveling (season, ~20 min/event) | labor | $100 |
| Basic Salt/Sand — Walkways (season) | equipment | $50 |
Specs (display only)
- Service: Unlimited plowing + shoveling
- Contract: Seasonal (Nov – Mar, typical)
- Trigger: Automatic service at trigger depth
- Timing: Priority service within 2–4 hours
- Ice: Basic salt/sand for walkways included
Tier add-ons
| add-on | price |
|---|---|
driveway_salt — Full Driveway SaltingDe-icing treatment for entire driveway after each plow | $150 |
roof_raking — Roof Snow RakingRemove snow from roof edges to prevent ice dams | $200 |
Pros (display only)
- Flat monthly rate — no surprises regardless of snowfall
- Priority scheduling over per-push customers
- Automatic service — no need to call each time
- Basic ice treatment for walkways included
- Saves money in average to heavy snow years
Cons (display only)
- Pay even in low-snow months
- Full driveway salting costs extra
tags: seasonal medium standard_trigger salt_walks
Full property service with salting and priority response
Brand: Premium Snow Management
basePrice (declared)
$1,200
Σ(lineItems) (computed)
$1,200
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Full Property Plowing (season, ~1.5 hrs/event) | labor | $550 |
| Complete Walkway/Steps Service (season, ~30 min/event) | labor | $200 |
| Full Property Salt/Sand Treatment (season) | equipment | $250 |
| Pre-Storm Treatment & Weather Monitoring (season) | labor | $100 |
| Priority Response Guarantee (season) | labor | $100 |
Specs (display only)
- Service: Complete property snow and ice management
- Areas: Driveway, all walkways, steps, parking, mailbox path
- Timing: Within 1–2 hours of trigger depth
- Ice: Full property salt/sand treatment included
- Monitoring: 24/7 weather monitoring with proactive pre-treatment
Pros (display only)
- Fastest response time — 1–2 hours
- Full property coverage including back walks and parking
- Pre-treatment before storms reduces ice formation
- Salt and sand for all surfaces included
- 24/7 weather monitoring — proactive service
- Best for large properties and safety-critical situations
Cons (display only)
- Highest seasonal cost
- May be overkill for mild winter areas
tags: full_property large low_trigger salt_full
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | service_type ∈ { "per_push" } |
good | 2 | property_size ∈ { "small" } |
good | 1 | trigger_depth ∈ { "six_inch" } |
better | 3 | service_type ∈ { "seasonal" } |
better | 2 | property_size ∈ { "medium" } |
better | 1 | ice_treatment ∈ { "walkways" } |
best | 3 | service_type ∈ { "full_property" } |
best | 2 | property_size ∈ { "large" } |
best | 2 | ice_treatment ∈ { "full" } |
Final price formula (this vertical)
// computeTierPricing(snow-removal, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: simple/direct_pay → collect FULL customerTotal at booking.Pricing sources cited in code
- HomeGuide — Snow Removal Costs — https://homeguide.com/costs/snow-removal-cost
- Angi Snow Plowing Prices — https://www.angi.com/articles/how-much-does-snow-removal-cost.htm
Source file: src/lib/flow-engine/verticals/snow-removal.ts · run the live flow →
💧Sprinkler Maintenance slug:sprinkler-maintenance
Keep your irrigation system running efficiently season after season
Flow & payment model
Direct Pay (full price collected at booking)
Tier price range (declared base)
$100 – $400 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
No permits required for sprinkler maintenance. New installations or major modifications may require permits. (estimate: $0)
timeline: Winterization should be scheduled before the first hard freeze (typically October–November). Spring startup available March–May.
installer note: Your irrigation technician will test every zone and provide a report on system health at each visit.
Questionnaire (4 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/sprinkler-maintenance.ts.
What sprinkler service do you need?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
winterization | Winterization (blow-out) |
|
spring_startup | Spring startup and activation |
|
both | Spring startup + fall winterization |
|
full_season | Full season maintenance package |
|
How many zones does your irrigation system have?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
small | 4–6 zones |
|
medium | 7–10 zones |
|
large | 11+ zones |
|
How old is your irrigation system?
Why we ask: Age of the existing system flags expected condition and code-update scope.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
new | Less than 5 years |
|
mid | 5–15 years |
|
old | Over 15 years |
|
Any known issues?
Why we ask: Informational / qualification — used by the recommendation engine, surfaced to the installer, or stored for the project file. Doesn't directly affect price.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
broken_heads | Broken or stuck sprinkler heads |
|
leaks | Leaking zones or wet spots |
|
coverage | Poor coverage / dry spots |
|
controller | Controller / timer issues |
|
none | No known issues | no direct price effect |
Tiers (3)
Winterization only — protect your system from freeze damage
Brand: Local Irrigation Pro
basePrice (declared)
$100
Σ(lineItems) (computed)
$100
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Sprinkler System Blow-Out (1 hr) | labor | $85 |
| Controller Shut-Down & Valve Service (0.5 hrs) | labor | $15 |
Specs (display only)
- Service: Compressed air blow-out of all zones
- Duration: 30–60 minutes
- Includes: Controller shut-off + main valve close
- Timing: Scheduled before first hard freeze
Pros (display only)
- Prevents costly freeze damage to pipes and heads
- Quick service — done in under an hour
- Most affordable seasonal maintenance
- Essential for any system in freezing climates
Cons (display only)
- Winterization only — no spring startup included
- No repairs or head adjustments
tags: winterize small_system newer
Spring startup + fall winterization — both seasons covered
Brand: Certified Irrigation Technician
basePrice (declared)
$200
Σ(lineItems) (computed)
$200
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Spring Startup & Zone Testing (1 hr) | labor | $100 |
| Fall Winterization Blow-Out (1 hr) | labor | $80 |
| Head Replacements (up to 2) | equipment | $20 |
Specs (display only)
- Service: Spring activation + fall blow-out
- Spring Startup: Charge system, test all zones, adjust heads, program controller
- Fall Winterization: Full compressed air blow-out
- Duration: 45–90 min per visit
- Includes: Up to 2 broken head replacements
Tier add-ons
| add-on | price |
|---|---|
rain_sensor — Rain Sensor InstallationAuto-skip watering during rain — saves water and money | $80 |
wifi_controller — Smart Controller UpgradeWi-Fi controller with app-based scheduling and weather adjustments | $180 |
Pros (display only)
- Both seasonal services at a bundled price
- Spring startup catches problems early — before dry season
- Basic head replacements included (up to 2)
- Controller reprogrammed for current season
- Identifies coverage issues before your lawn suffers
Cons (display only)
- Major repairs (line breaks, valve replacement) cost extra
tags: both startup medium_system mid_age
Full season maintenance — startup, mid-season check, winterization + repairs
Brand: Premium Irrigation Management
basePrice (declared)
$400
Σ(lineItems) (computed)
$400
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Spring Startup & Full Inspection (1.5 hrs) | labor | $120 |
| Mid-Season Audit & Optimization (1.5 hrs) | labor | $100 |
| Fall Winterization (1 hr) | labor | $80 |
| Parts — Heads, Nozzles, Minor Valves | equipment | $50 |
| Coverage Guarantee & Support (included) | labor | $50 |
Specs (display only)
- Service: 3-visit annual package: spring, mid-season, fall
- Mid-Season: Full system audit, head adjustment, coverage optimization
- Repairs: Unlimited head replacements + minor valve repairs included
- Controller: Seasonal reprogramming at each visit
- Guarantee: Coverage guarantee — dry spots addressed free
Pros (display only)
- Three visits ensure your system runs perfectly all year
- Mid-season audit catches issues before they damage your lawn
- Unlimited head replacements included
- Coverage guarantee — if you have dry spots, they fix it
- Controller optimized each season for water efficiency
Cons (display only)
- Highest annual cost
- Major line repairs (pipe breaks) still quoted separately
tags: full_season large_system older repair leak coverage controller
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | service_type ∈ { "winterization" } |
good | 2 | zone_count ∈ { "small" } |
good | 1 | system_age ∈ { "new" } |
better | 3 | service_type ∈ { "spring_startup", "both" } |
better | 2 | zone_count ∈ { "medium" } |
better | 1 | system_age ∈ { "mid" } |
best | 3 | service_type ∈ { "full_season" } |
best | 2 | zone_count ∈ { "large" } |
best | 2 | known_issues ∈ { "broken_heads", "leaks", "coverage" } |
Final price formula (this vertical)
// computeTierPricing(sprinkler-maintenance, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: simple/direct_pay → collect FULL customerTotal at booking.Pricing sources cited in code
- HomeGuide — Sprinkler Winterization Cost — https://homeguide.com/costs/sprinkler-winterization-cost
- Angi Irrigation Winterization Cost — https://www.angi.com/articles/how-much-does-sprinkler-winterization-cost.htm
Source file: src/lib/flow-engine/verticals/sprinkler-maintenance.ts · run the live flow →
🚛Junk Removal slug:junk-removal
Clear out clutter and junk with upfront, volume-based pricing
Flow & payment model
Direct Pay (full price collected at booking)
Tier price range (declared base)
$200 – $1,400 (before answer deltas, permits, add-ons, regional multiplier, and 5% platform fee)
Permits
No permits required for junk removal. Dumpster placement on public streets may require a permit in some municipalities. (estimate: $0)
timeline: Most jobs can be scheduled within 1–3 business days. Same-day service often available for an additional fee.
installer note: Your junk removal crew will provide a firm quote on-site before loading anything. No surprises.
Questionnaire (4 questions, in order)
Customer sees these one at a time. Any question with branch only renders when its condition holds. The full question schema lives in src/lib/flow-engine/verticals/junk-removal.ts.
How much junk do you need removed?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: No direct price delta. Feeds the recommendation engine to rank tiers. Otherwise informational / installer-facing.
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
partial | Partial truck load (a few large items or small pile) |
|
full | Full truck load (garage cleanout, multiple rooms) |
|
whole_house | Whole house cleanout (estate, hoarder, major declutter) |
|
What types of items need to go?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
furniture | Furniture (couches, mattresses, tables) |
|
appliances | Appliances (fridge, washer, etc.) |
|
yard_waste | Yard waste / debris |
|
construction | Construction debris (drywall, lumber, tile) |
|
electronics | Electronics and e-waste |
|
general | General household junk |
|
Where is the junk located?
Why we ask: Location drives regional pricing and installer matching radius.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
ground | Ground floor / garage / driveway |
|
upper | Upper floors (stairs required) |
|
basement | Basement |
|
When do you need this done?
Why we ask: Scope driver — at least one answer adds a line item or changes the recommended tier.
How it impacts price: Per-answer line-item deltas (see options below).
Options
| value | label shown to customer | effects on pricing / flow |
|---|---|---|
flexible | Flexible — within 1–2 weeks |
|
soon | Within a few days |
|
asap | Same day or next day |
|
Tiers (3)
Partial truck load — a few big items or a small pile
Brand: Local Junk Hauler
basePrice (declared)
$200
Σ(lineItems) (computed)
$200
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Partial Truck Load — loading & hauling (1 hr) | labor | $150 |
| Labor & Transport | labor | $30 |
| Disposal & Recycling Fees | labor | $20 |
Specs (display only)
- Service: Partial truck load removal (up to 1/3 truck)
- Capacity: Equivalent to a pickup truck load
- Duration: 30–60 minutes
- Includes: Loading, hauling, disposal/recycling
Pros (display only)
- Most affordable option for a few items
- Quick service — done in under an hour
- Great for post-move or seasonal declutter
- Responsible disposal and recycling where possible
Cons (display only)
- Limited to partial load — larger jobs need a bigger tier
- Heavy or hazardous items may incur surcharges
tags: partial furniture general easy_access flexible
Full truck load — garage cleanout or multi-room declutter
Brand: Professional Junk Removal
basePrice (declared)
$425
Σ(lineItems) (computed)
$425
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Full Truck Load — hauling (1.5 hrs) | labor | $300 |
| 2-Person Crew — Loading (1 hr) | labor | $75 |
| Disposal, Recycling & Donation | labor | $50 |
Specs (display only)
- Service: Full truck load removal
- Capacity: 12–16 cubic yards (standard junk truck)
- Duration: 1–3 hours
- Includes: Loading, hauling, donation drop-off, disposal
- Crew: 2-person crew
Tier add-ons
| add-on | price |
|---|---|
second_truck — Second Truck LoadFor jobs that exceed one full truck | $350 |
sweep_cleanup — Sweep & CleanupBroom sweep and basic cleanup of cleared area | $50 |
Pros (display only)
- Handles a full garage or multiple rooms of junk
- Donation-worthy items sorted and dropped off
- 2-person crew for efficient loading
- Most common option for residential cleanouts
- Price includes all labor, hauling, and disposal
Cons (display only)
- Hazardous materials (paint, chemicals) cannot be taken
- Construction debris may incur additional dump fees
tags: full furniture appliances yard general stairs soon
Whole house cleanout — estate, hoarder, or total declutter
Brand: Full-Service Cleanout
basePrice (declared)
$1,400
Σ(lineItems) (computed)
$1,400
Line items (base price breakdown)
| label | category | amount |
|---|---|---|
| Whole House Cleanout — crew labor (8–16 hrs) | labor | $800 |
| Multiple Truck Loads — Hauling (est. 3 loads) | labor | $350 |
| Disposal & Dump Fees | labor | $150 |
| Broom-Clean Sweep & Final Walkthrough (1 hr) | labor | $100 |
Specs (display only)
- Service: Complete property cleanout
- Capacity: Multiple truck loads as needed
- Duration: 1–3 days depending on volume
- Crew: 3–4 person crew
- Includes: Sorting, donation, recycling, disposal, sweep-clean
Pros (display only)
- Handles any volume — entire house if needed
- Items sorted: donate, recycle, or dispose
- Broom-clean condition when finished
- Perfect for estate cleanouts, foreclosures, and hoarding situations
- Project manager coordinates multi-day jobs
- Tax-deductible donation receipts provided
Cons (display only)
- Highest total cost — priced by volume and time
- May require 1–3 days for full house
tags: whole_house construction electronics basement urgent
Recommendation rules (additive scoring → highest score wins)
| tier | +score | when ALL conditions hold |
|---|---|---|
good | 3 | scope ∈ { "partial" } |
good | 2 | location ∈ { "ground" } |
good | 1 | item_types ∈ { "furniture", "general" } |
better | 3 | scope ∈ { "full" } |
better | 2 | item_types ∈ { "appliances", "yard_waste" } |
better | 1 | timeline ∈ { "soon" } |
best | 3 | scope ∈ { "whole_house" } |
best | 2 | item_types ∈ { "construction" } |
best | 2 | location ∈ { "basement" } |
Final price formula (this vertical)
// computeTierPricing(junk-removal, tier, answers, regionalMultiplier = 1.0)
baseLineItems = tier.lineItems
.filter(li => li.excludeWhen not satisfied by answers)
.filter(li => li.label ∉ answers→excludeLineItems)
.map(li => {
// equipment with a source URL stays at MSRP (not regionally multiplied)
amount: (li.source && li.category=="equipment")
? li.amount
: li.amount × regionalMultiplier
})
addOnTotal = Σ selectedTierAddOns + Σ selectedGlobalAddOns + Σ pre-included addOns (× regionalMultiplier)
permitsTotal = (state.permitWaived || answers.permit_handling=="customer_pulls")
? 0
: $0 × regionalMultiplier // permitEstimate for this vertical
answerDeltas = Σ over each question's chosen option(s) of option.priceDelta × regionalMultiplier
installerCost = Σ baseLineItems + addOnTotal + permitsTotal + answerDeltas
platformFee = installerCost × 0.05 // 5% — distributed across non-equipment line items
customerTotal = installerCost + platformFee
// Payment: simple/direct_pay → collect FULL customerTotal at booking.Worked example (tier: better, first option of every question, regionalMultiplier = 1.0)
Sample inputs:
scope=partial— "Partial truck load (a few large items or small pile)"item_types=furniture— "Furniture (couches, mattresses, tables)"location=ground— "Ground floor / garage / driveway"timeline=flexible— "Flexible — within 1–2 weeks"
Σ(tier.lineItems) = $425 Σ(answer priceDeltas) = $0 permits = $0 installerCost = $425 platformFee (5%) = $21 customerTotal = $446
Note: this synthetic example uses the first option for each question. The real flow uses the customer's actual selections, respects excludeWhen / excludeLineItems, applies tier add-ons, and may zero-out permits.
Pricing sources cited in code
- HomeGuide — Junk Removal Prices — https://homeguide.com/costs/junk-removal-prices
- Angi Junk Removal Prices — https://www.angi.com/articles/how-much-does-junk-removal-cost.htm
Source file: src/lib/flow-engine/verticals/junk-removal.ts · run the live flow →