/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:

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

  1. option.priceDelta — adds a line item (category: "adjustment") for that answer.
  2. option.excludeLineItems — removes matching line items from the tier base (e.g., "old unit removal" removed when there's no old unit).
  3. option.impliesSkip — skips downstream questions whose answers would have added cost.
  4. question.hideWhen / showWhen — branching; the question never renders, so its potential delta never fires.
  5. Recommendation rules — change which tier's base is chosen (the biggest lever of all).
  6. Per-unit pricing table (HVAC only today) — replaces the tier's flat basePrice with 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

medium · 27 verticals · ORDER FEE

complex · 8 verticals · CONSULTATION FEE

🌡️HVAC Replacement slug:hvac-replacement

CONSULTATION FEEcomplexity: complexprovider label: HVAC technicianphotos: requiredquestions: 19tiers: 3uses perUnitPricinghas dynamic branchingrequires contract

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

  1. Photo of your current indoor HVAC unit — show the model/serial number label if visible, and the area around it for sizing
  2. Photo of your thermostat — show the current display and mounting location so we can plan smart thermostat compatibility
  3. 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.

Q1system_typesingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
central_acCentral A/C onlyno direct price effect
furnaceFurnace onlyno direct price effect
bothA/C + Furnace (full system)
  • tags: full_system
heat_pumpHeat pump (heating + cooling)
  • tags: heat_pump
mini_splitMini-split / ductless
  • tags: mini_split
Q2unit_countsingle_selectdrives per-unit pricing

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

valuelabel shown to customereffects on pricing / flow
1Just oneno direct price effect
22 unitsno direct price effect
33 unitsno direct price effect
4_plus4 or moreno direct price effect
Q3unit_1_typesingle_select

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

valuelabel shown to customereffects on pricing / flow
central_acCentral A/Cno direct price effect
furnaceFurnaceno direct price effect
bothA/C + Furnaceno direct price effect
heat_pumpHeat pumpno direct price effect
Q4unit_1_tonnagesingle_select

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

valuelabel shown to customereffects on pricing / flow
1.51.5 ton (small room / addition)no direct price effect
22 ton (up to 1,000 sq ft)no direct price effect
2.52.5 ton (1,000–1,500 sq ft)no direct price effect
33 ton (1,500–2,000 sq ft)no direct price effect
3.53.5 ton (2,000–2,500 sq ft)no direct price effect
44 ton (2,500–3,000 sq ft)no direct price effect
55 ton (3,000+ sq ft)no direct price effect
unsureNot sure — installer will size itno direct price effect
Q5unit_2_typesingle_select

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

valuelabel shown to customereffects on pricing / flow
central_acCentral A/Cno direct price effect
furnaceFurnaceno direct price effect
bothA/C + Furnaceno direct price effect
heat_pumpHeat pumpno direct price effect
Q6unit_2_tonnagesingle_select

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

valuelabel shown to customereffects on pricing / flow
1.51.5 tonno direct price effect
22 tonno direct price effect
2.52.5 tonno direct price effect
33 tonno direct price effect
3.53.5 tonno direct price effect
44 tonno direct price effect
55 tonno direct price effect
unsureNot sureno direct price effect
Q7unit_3_typesingle_select

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

valuelabel shown to customereffects on pricing / flow
central_acCentral A/Cno direct price effect
furnaceFurnaceno direct price effect
bothA/C + Furnaceno direct price effect
heat_pumpHeat pumpno direct price effect
Q8unit_3_tonnagesingle_select

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

valuelabel shown to customereffects on pricing / flow
1.51.5 tonno direct price effect
22 tonno direct price effect
2.52.5 tonno direct price effect
33 tonno direct price effect
3.53.5 tonno direct price effect
44 tonno direct price effect
55 tonno direct price effect
unsureNot sureno direct price effect
Q9home_sqftsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
under_1000Under 1,000 sq ft (≈1.5 ton)
  • tags: small
1000_15001,000 – 1,500 sq ft (≈2 ton)
  • tags: small
1500_25001,500 – 2,500 sq ft (≈2.5–3 ton)
  • tags: medium
2500_35002,500 – 3,500 sq ft (≈3.5–4 ton)
  • tags: large
over_3500Over 3,500 sq ft (≈5 ton — may need multiple units)
  • tags: xl
Q10current_agesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
under_5Under 5 years
  • tags: newer_system
5_105–10 yearsno direct price effect
10_1510–15 years
  • tags: aging
over_1515+ years (or I don't know)
  • tags: old_system
Q11primary_concernsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
brokeSystem stopped working — need it ASAP
  • tags: urgent
inefficientHigh energy bills
  • tags: efficiency
comfortHot/cold spots, poor comfort
  • tags: comfort
proactiveBeing proactive / planned upgradeno direct price effect
home_salePreparing home for sale
  • tags: home_sale
Q12efficiency_prioritysingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
lowest_costKeep upfront cost low
  • tags: budget
balancedBalance cost and efficiencyno direct price effect
most_efficientBest efficiency, long-term savings
  • tags: premium
Q13ductworksingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
goodGood — sealed, insulated, relatively newno direct price effect
agingAging — 15+ years, may have leaksno direct price effect
poorPoor — visible gaps, no insulationno direct price effect
noneNo ductwork
  • tags: no_ducts
unsureNot sureno direct price effect
Q14num_zonessingle_selectprice delta

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

valuelabel shown to customereffects on pricing / flow
11 zone (single room or floor)no direct price effect
2_32–3 zones
  • price +$2,800 → line item "Additional Indoor Heads + Line Sets (2–3 zones)"
4_plus4+ zones
  • price +$5,500 → line item "Additional Indoor Heads + Line Sets (4+ zones)"
Q15fuel_typesingle_select

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

valuelabel shown to customereffects on pricing / flow
gasNatural gasno direct price effect
oilOil / propane
  • tags: oil_heat
electricElectricno direct price effect
unsureNot sureno direct price effect
Q16thermostatsingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
yesYes, include a smart thermostat
  • price +$325 → line item "Smart Thermostat + Install (Ecobee / Nest)"
  • tags: smart_therm
noNo thanks, basic thermostat swap
  • price +$75 → line item "Basic Thermostat & Wiring"
have_oneI already have a thermostat I want to keepno direct price effect
Q17zoning_interestsingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
noNo — single zone is fineno direct price effect
already_haveI already have zoningno direct price effect
interestedYes — I want to add zoning
  • tags: zoning
maybeInterested but depends on costno direct price effect
Q18timelinesingle_select

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

valuelabel shown to customereffects on pricing / flow
asapAs soon as possible
  • tags: urgent
within_monthWithin a monthno direct price effect
flexibleI'm flexible / planning aheadno direct price effect
Q19prioritiesmulti_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
budgetStay within budget
  • tags: budget
qualityBest quality materials
  • tags: premium
timelineGet it done quicklyno direct price effect
efficiencyEnergy efficiency / long-term savings
  • tags: premium
aestheticsBest looking result
  • tags: premium
warrantyLongest warranty coverage
  • tags: premium

Tiers (3)

tier:goodGoodBest Value

Reliable & affordable

Brand: Carrier / Lennox

basePrice (declared)

$4,700

Σ(lineItems) (computed)

$4,850drift +$150

Line items (base price breakdown)

labelcategoryamount
(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.

tonnageequipmentinstallation
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.

tier:betterBetterMost Popularhighlighted (default recommended)

Comfort upgrade with real savings

Brand: Trane / Rheem

basePrice (declared)

$6,000

Σ(lineItems) (computed)

$6,050drift +$50

Line items (base price breakdown)

labelcategoryamount
(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.

tonnageequipmentinstallation
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.

tier:bestBest

Premium performance & efficiency

Brand: Mitsubishi Hyper-Heat / Daikin

basePrice (declared)

$8,000

Σ(lineItems) (computed)

$8,100drift +$100

Line items (base price breakdown)

labelcategoryamount
(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.

tonnageequipmentinstallation
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-onprice
zoning2-Zone Damper SystemIndependent temperature control for different areashidden when zoning_interest{ "already_have", "no" }$2,500
uv_airUV Air PurifierKills bacteria and allergens in your ductwork$650
surge_protectWhole-System Surge ProtectorProtects your HVAC investment from power surges$300
air_purifierWhole-Home Air Purifier (Lennox PureAir)Hospital-grade air purification$1,200
humidity_ctrlWhole-Home Humidifier/DehumidifierYear-round humidity control$950
duct_repairDuctwork 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_replaceDuctwork ReplacementFull ductwork replacement for severely damaged systemshidden when ductwork{ "good", "aging", "unsure" }recommended when ductwork{ "poor" }$5,200
new_ductsNew 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+scorewhen ALL conditions hold
good3efficiency_priority{ "lowest_cost" }
good2home_sqft{ "under_1000", "1000_1500" }
good2primary_concern{ "home_sale" }
good1priorities{ "timeline" }
good2priorities{ "budget" }
best3efficiency_priority{ "most_efficient" }
best2primary_concern{ "inefficient" }
best2home_sqft{ "2500_3500", "over_3500" }
best1current_age{ "over_15" }
best1ductwork{ "poor" }
best2zoning_interest{ "interested" }
best1priorities{ "quality" }
best1priorities{ "efficiency" }
best1priorities{ "warranty" }
better2efficiency_priority{ "balanced" }
better1home_sqft{ "1500_2500" }
better1primary_concern{ "comfort" }
better3primary_concern{ "broke" }
better1thermostat{ "yes" }
better1zoning_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

Source file: src/lib/flow-engine/verticals/hvac-replacement.ts · run the live flow →

EV Charger Installation slug:ev-charger

ORDER FEEcomplexity: mediumprovider label: electricianphotos: requiredquestions: 11tiers: 6has dynamic branching

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

  1. Photo of your electrical panel with the door open — show all breaker labels clearly so we can check available capacity
  2. Photo of where you park — show the wall where the charger will mount, including any nearby outlets or obstructions
  3. 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.

Q1vehiclesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
teslaTesla (any model)
  • tags: tesla
fordFord F-150 Lightning / Mach-Eno direct price effect
gmChevy / GMC (Bolt, Silverado EV)no direct price effect
rivianRivian R1T / R1Sno direct price effect
bmw_polestarBMW, Polestar, Volvono direct price effect
otherOther / not sure yetno direct price effect
Q2charger_locationsingle_selectrequiredprice delta

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

valuelabel shown to customereffects on pricing / flow
garage_wallInside a garage (wall-mounted)no direct price effect
outdoor_wallOutside wall near driveway
  • price +$75 → line item "Outdoor-rated mounting hardware"
carportCarport or covered parkingno direct price effect
freestandingPedestal / freestanding mount
  • price +$200 → line item "Pedestal mounting kit + base"
Q3existing_outletsingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
yes_1450Yes — NEMA 14-50 (dryer/RV style)
  • price −$250 → line item "Existing 240V outlet (reduced install)"
yes_otherYes — 240V outlet but not sure which type
  • price −$200 → line item "Existing 240V outlet (installer will verify type)"
noNo 240V outlet nearbyno direct price effect
Q4wire_distancesingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
under_10Under 10 ft (panel is right there)no direct price effect
10_2510–25 ft
  • price +$100 → line item "Wiring run (10-25 ft)"
25_5025–50 ft
  • price +$200 → line item "Extended wiring run (25-50 ft)"
50_plus50+ ft
  • price +$400 → line item "Long-distance wiring run (50+ ft)"
unsureNot sure — installer will assess on siteno direct price effect
Q5panel_slotssingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
has_spaceYes — there are empty slotsno direct price effect
nearly_fullPanel is nearly full
  • price +$75 → line item "Tandem breaker swap (free up space)"
unknownI'm not sureno direct price effect
Q6wire_routingsingle_selectprice delta

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

valuelabel shown to customereffects on pricing / flow
walls_atticAlong walls, through attic, or exposed conduitno direct price effect
underground_dirtUnderground through dirt or lawn
  • price +$500 → line item "Underground trenching (dirt/lawn)"
underground_concreteUnder a driveway or concrete
  • price +$1,000 → line item "Concrete cutting, trenching, and patching"
Q7home_agesingle_select

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

valuelabel shown to customereffects on pricing / flow
newBuilt after 2000no direct price effect
1980s_90s1980s–1990sno direct price effect
1960s_70s1960s–1970sno direct price effect
pre_1960Before 1960no direct price effect
unsureNot sureno direct price effect
Q8panel_brandsingle_selectprice delta

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

valuelabel shown to customereffects on pricing / flow
normalSquare D, Siemens, Eaton, GE, Cutler-Hammer, or otherno direct price effect
federal_pacificFederal Pacific / Stab-Lok
  • price +$3,000 → line item "Panel replacement (Federal Pacific safety hazard)"
zinscoZinsco / GTE-Sylvania
  • price +$3,000 → line item "Panel replacement (Zinsco safety hazard)"
pushmaticPushmatic / Bulldog
  • price +$2,000 → line item "Panel replacement (Pushmatic — outdated)"
unknownI don't knowno direct price effect
Q9second_evsingle_selectprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
yesYes — plan ahead for two chargers
  • price +$150 → line item "Circuit sized for future second charger"
noNo — just one EVno direct price effect
maybeMaybe in the futureno direct price effect
Q10solarsingle_selectprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
yesYes — I want solar-integrated charging
  • price +$150 → line item "Solar Integration Wiring"
  • tags: solar
noNo solarno direct price effect
futureNot now but may add later
  • tags: future_solar
Q11permit_handlingsingle_select

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

valuelabel shown to customereffects on pricing / flow
electrum_handlesElectrum handles it (recommended)no direct price effect
customer_pullsI'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.
  • tags: permit_waived

Tiers (6)

tier:emporiaEmporiaSmart Value

Smart charger with built-in load management

Brand: Emporia

basePrice (declared)

$899

Σ(lineItems) (computed)

$899

Line items (base price breakdown)

labelcategoryamount
Emporia Smart EV Chargersource: https://shop.emporiaenergy.comequipment$449
Electrical Installation Labor (2-3 hrs)labor$350
Wiring & Conduit Materialsequipment$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-onprice
outdoor_enclosureWeatherproof Outdoor EnclosureNEMA 4 rated enclosure for outdoor installationsrecommended when charger_location{ "outdoor_wall", "freestanding" }$100
panel_upgradePanel 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

tier:grizzleGrizzl-EMost Durable

Tough, reliable, no-nonsense

Brand: Grizzl-E

basePrice (declared)

$800

Σ(lineItems) (computed)

$800

Line items (base price breakdown)

labelcategoryamount
Grizzl-E Classic 40A Chargersource: https://grizzl-e.comequipment$350
Electrical Installation Labor (2-3 hrs)labor$350
Wiring & Conduit Materialsequipment$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-onprice
load_managementSmart Load ManagementShares circuit capacity with other appliances — avoids breaker trips$250
outdoor_enclosureWeatherproof Outdoor EnclosureNEMA 4 rated enclosure for outdoor installationsrecommended when charger_location{ "outdoor_wall", "freestanding" }$100
panel_upgradePanel 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

tier:wallboxWallboxBest Design

Compact design, great app

Brand: Wallbox

basePrice (declared)

$900

Σ(lineItems) (computed)

$899drift −$1

Line items (base price breakdown)

labelcategoryamount
Wallbox Pulsar Plus 48Asource: https://wallbox.comequipment$449
Electrical Installation Labor (2-3 hrs)labor$350
Wiring & Conduit Materialsequipment$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-onprice
load_managementSmart Load ManagementShares circuit capacity with other appliances — avoids breaker trips$250
outdoor_enclosureWeatherproof Outdoor EnclosureNEMA 4 rated enclosure for outdoor installationsrecommended when charger_location{ "outdoor_wall", "freestanding" }$100
panel_upgradePanel 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

tier:chargepointChargePointMost Popularhighlighted (default recommended)

Most popular smart charger

Brand: ChargePoint

basePrice (declared)

$949

Σ(lineItems) (computed)

$949

Line items (base price breakdown)

labelcategoryamount
ChargePoint Home Flex 50Asource: https://store.chargepoint.comequipment$499
Electrical Installation Labor (2-3 hrs)labor$350
Wiring & Conduit Materialsequipment$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-onprice
load_managementSmart Load ManagementShares circuit capacity with other appliances — avoids breaker trips$250
outdoor_enclosureWeatherproof Outdoor EnclosureNEMA 4 rated enclosure for outdoor installationsrecommended when charger_location{ "outdoor_wall", "freestanding" }$100
panel_upgradePanel 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

tier:tesla_nacsTeslaBest for Tesla

Native Tesla charging, fastest for Tesla owners

Brand: Tesla

basePrice (declared)

$900

Σ(lineItems) (computed)

$900

Line items (base price breakdown)

labelcategoryamount
Tesla Wall Connector (NACS)source: https://shop.tesla.comequipment$450
Electrical Installation Labor (2-3 hrs)labor$350
Wiring & Conduit Materialsequipment$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-onprice
load_managementSmart Load ManagementShares circuit capacity with other appliances — avoids breaker trips$250
outdoor_enclosureWeatherproof Outdoor EnclosureNEMA 4 rated enclosure for outdoor installationsrecommended when charger_location{ "outdoor_wall", "freestanding" }$100
panel_upgradePanel 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

tier:tesla_universalTesla UniversalMost Versatile

Works with every EV — Tesla's universal option

Brand: Tesla

basePrice (declared)

$1,030

Σ(lineItems) (computed)

$1,030

Line items (base price breakdown)

labelcategoryamount
Tesla Universal Wall Connector (NACS + J1772)source: https://shop.tesla.comequipment$580
Electrical Installation Labor (2-3 hrs)labor$350
Wiring & Conduit Materialsequipment$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-onprice
load_managementSmart Load ManagementShares circuit capacity with other appliances — avoids breaker trips$250
outdoor_enclosureWeatherproof Outdoor EnclosureNEMA 4 rated enclosure for outdoor installationsrecommended when charger_location{ "outdoor_wall", "freestanding" }$100
panel_upgradePanel 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+scorewhen ALL conditions hold
tesla_nacs5vehicle{ "tesla" }
tesla_nacs2solar{ "yes", "future" }
tesla_universal7vehicle{ "tesla" }second_ev{ "yes" }
tesla_universal6vehicle{ "tesla" }second_ev{ "maybe" }
chargepoint4vehicle{ "ford", "gm", "rivian", "bmw_polestar", "other" }
grizzle3panel_slots{ "has_space" }wire_distance{ "under_10", "10_25" }
grizzle2existing_outlet{ "yes_1450" }
emporia4panel_slots{ "nearly_full" }
wallbox4second_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

Source file: src/lib/flow-engine/verticals/ev-charger.ts · run the live flow →

🌿Lawn Care slug:lawn-care

DIRECT PAYcomplexity: simpleprovider label: lawn care prophotos: nonequestions: 4tiers: 3

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.

Q1lawn_sizesingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
smallSmall — up to ¼ acre
  • tags: small
mediumMedium — ¼ to ½ acre
  • tags: medium
largeLarge — ½ to 1 acre
  • price +$20 → line item "Large lawn upcharge"
  • tags: large
xlOver 1 acre
  • price +$50 → line item "Over 1 acre upcharge"
  • tags: xl
Q2services_neededmulti_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
mowingMowing & edgingno direct price effect
fertilizingFertilizingno direct price effect
weed_controlWeed controlno direct price effect
aerationAeration & overseeding
  • price +$150 → line item "Aeration & overseeding"
leaf_removalLeaf / debris removal
  • price +$80 → line item "Leaf & debris removal"
mulchingMulching flower beds
  • price +$120 → line item "Flower bed mulching"
Q3frequencysingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
weeklyWeekly (peak season)
  • tags: frequent
biweeklyEvery 2 weeks
  • tags: regular
monthlyMonthly
  • tags: occasional
one_timeOne-time cleanup
  • tags: one_time
Q4conditionsingle_selectprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
greatGreat — just needs maintenanceno direct price effect
needs_workNeeds some work — patchy or weedy
  • price +$50 → line item "Lawn remediation"
neglectedNeglected — hasn't been maintained in a while
  • price +$120 → line item "Neglected lawn recovery"
  • tags: neglected

Tiers (3)

tier:goodBasicBest Value

Mowing & edging, reliably done

Brand: Local Pro

basePrice (declared)

$55

Σ(lineItems) (computed)

$55

Line items (base price breakdown)

labelcategoryamount
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

tier:betterStandardMost Popularhighlighted (default recommended)

Full lawn care, no hassle

Brand: Local Pro

basePrice (declared)

$95

Σ(lineItems) (computed)

$95

Line items (base price breakdown)

labelcategoryamount
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-onprice
aerationAnnual Aeration & OverseedingThickens lawn, reduces weeds, best done in fall$180
mulchSpring 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

tier:bestPremium

Golf-course results, zero effort

Brand: TruGreen / Local Premium

basePrice (declared)

$165

Σ(lineItems) (computed)

$165

Line items (base price breakdown)

labelcategoryamount
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-onprice
mosquitoMosquito Control ProgramMonthly barrier spraying, May–Oct$75
irrigation_checkIrrigation 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+scorewhen ALL conditions hold
good3frequency{ "one_time" }
good2services_needed{ "mowing" }
good1lawn_size{ "small" }
better2frequency{ "biweekly", "weekly" }
better2condition{ "needs_work" }
better1lawn_size{ "medium" }
best3condition{ "neglected" }
best2lawn_size{ "large", "xl" }
best2frequency{ "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

Source file: src/lib/flow-engine/verticals/lawn-care.ts · run the live flow →

🍳Kitchen Remodel slug:kitchen-remodel

CONSULTATION FEEcomplexity: complexprovider label: contractorphotos: requiredquestions: 11tiers: 3has dynamic branching

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

  1. Wide-angle photo of your entire kitchen from the doorway — show the full layout including cabinets, countertops, and appliances
  2. Close-up of your current cabinets (show door style, hardware, and condition) and countertops (show material and any damage)
  3. 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.

Q1remodel_scopesingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
cosmeticCosmetic refresh — paint, hardware, fixtures
  • tags: cosmetic
partialPartial remodel — new cabinets or counters
  • tags: partial
full_layout_sameFull remodel — same layout
  • tags: full
full_layout_changeFull remodel — changing layout / moving walls
  • price +$15,000 → line item "Layout change & structural work"
  • tags: full, layout_change
Q2kitchen_sizesingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
smallSmall — under 100 sq ft (galley or apartment)
  • tags: small
mediumMedium — 100–175 sq ft
  • tags: medium
largeLarge — 175–300 sq ft
  • price +$10,000 → line item "Large kitchen upcharge"
  • tags: large
xlChef's kitchen — over 300 sq ft
  • price +$25,000 → line item "Chef's kitchen upcharge"
  • tags: xl
Q3cabinet_preferencesingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
stockStock cabinets (IKEA, Home Depot, Lowes)
  • tags: budget_cabinets
semi_customSemi-custom (KraftMaid, Merillat)
  • tags: mid_cabinets
customFull custom (local millwork or premium brands)
  • price +$15,000 → line item "Custom cabinetry upgrade"
  • tags: premium_cabinets
refaceJust reface existing cabinets (new doors/fronts)
  • tags: reface
Q4countertop_materialsingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
laminateLaminate (Wilsonart, Formica)
  • tags: budget_counter
butcher_blockButcher block / wood
  • tags: budget_counter
quartzQuartz (Caesarstone, Silestone, MSI)
  • tags: mid_counter
graniteGranite (natural stone)
  • tags: mid_counter
marble_quartziteMarble or quartzite (premium stone)
  • price +$5,000 → line item "Premium stone countertop upgrade"
  • tags: premium_counter
Q5appliancessingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
noneNo — keeping my current appliancesno direct price effect
basicYes — standard (Samsung, LG, GE)
  • price +$4,000 → line item "Standard appliance package"
  • tags: basic_appliances
midYes — mid-range (Bosch, KitchenAid, Whirlpool)
  • price +$7,000 → line item "Mid-range appliance package"
  • tags: mid_appliances
premiumYes — premium (Wolf, Sub-Zero, Thermador)
  • price +$20,000 → line item "Premium appliance package"
  • tags: premium_appliances
Q6flooringsingle_selectprice delta

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

valuelabel shown to customereffects on pricing / flow
noNo — keeping existing floorno direct price effect
lvpYes — LVP / luxury vinyl plank
  • price +$1,500 → line item "LVP flooring"
tileYes — porcelain or ceramic tile
  • price +$2,500 → line item "Tile flooring"
hardwoodYes — hardwood to match rest of home
  • price +$3,500 → line item "Hardwood flooring"
Q7layout_changessingle_selectprice delta

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

valuelabel shown to customereffects on pricing / flow
no_movesNo — sink and appliances stay where they areno direct price effect
minor_movesMinor moves — outlet/lighting changes only
  • price +$2,000 → line item "Minor electrical/plumbing moves"
major_movesMajor — moving sink, gas line, or island addition
  • price +$6,000 → line item "Major plumbing & electrical relocation"
  • tags: major_moves
Q8backsplashsingle_selectprice delta

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

valuelabel shown to customereffects on pricing / flow
paintPainted (no tile)
  • tags: no_backsplash
subway_tileClassic subway tile
  • price +$800 → line item "Subway tile backsplash"
designer_tileDesigner tile or mosaic
  • price +$1,800 → line item "Designer tile backsplash"
full_slabFull slab — matching countertop material
  • price +$3,000 → line item "Full slab backsplash"
Q9design_helpsingle_selectprice delta

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

valuelabel shown to customereffects on pricing / flow
no_designNo — I have a clear visionno direct price effect
light_designLight design help — material selection guidance
  • price +$1,500 → line item "Light design assistance"
full_designFull interior design service — 3D renders included
  • price +$5,000 → line item "Full interior design service"
  • tags: full_design
Q10timelinesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
asapAs soon as possible
  • tags: urgent
within_monthWithin a monthno direct price effect
flexibleI'm flexible / planning aheadno direct price effect
Q11prioritiesmulti_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
budgetStay within budget
  • tags: budget
qualityBest quality materials
  • tags: premium
timelineGet it done quicklyno direct price effect
efficiencyEnergy efficiency / long-term savings
  • tags: premium
aestheticsBest looking result
  • tags: premium
warrantyLongest warranty coverage
  • tags: premium

Tiers (3)

tier:goodGoodBest Value

Practical refresh with quality materials

Brand: IKEA SEKTION / Silestone

basePrice (declared)

$22,000

Σ(lineItems) (computed)

$22,000

Line items (base price breakdown)

labelcategoryamount
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 Tileequipment$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

tier:betterBetterMost Popularhighlighted (default recommended)

Semi-custom renovation done right

Brand: KraftMaid / Caesarstone

basePrice (declared)

$55,000

Σ(lineItems) (computed)

$55,000

Line items (base price breakdown)

labelcategoryamount
KraftMaid Cabinets (supply & install, ~80 hrs)source: https://www.kraftmaid.comlabor$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/sinksequipment$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 & Overheadlabor$5,000
Hardware, Trim & Finishing Materialsequipment$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-onprice
appliance_packageBosch 800 Series Appliance Package30" range, dishwasher, counter-depth refrigerator$9,500
pot_fillerPot Filler FaucetOver-range pot filler, brushed gold or matte black$750
island_additionKitchen 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

tier:bestBest

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)

labelcategoryamount
Custom Cabinetry (full-inset, supply & install, ~200 hrs)labor$45,000
Natural Stone Countertopsequipment$18,000
Wolf 36" Dual Fuel Range (DF36650)source: https://www.subzero-wolf.com/wolf/ranges/dual-fuel-rangesequipment$10,500
Sub-Zero 36" Refrigerator (CL3650UFD)source: https://www.subzero-wolf.com/sub-zero/full-size-refrigerationequipment$10,000
Dishwasher (Miele G 7000 Series)source: https://www.mieleusa.com/domestic/dishwashers-768.htmequipment$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 Managementlabor$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-onprice
steam_ovenWolf Steam Oven30" convection steam oven$4,500
wine_fridgeSub-Zero Wine Storage UnitIntegrated 46-bottle column$6,500
smart_kitchenSmart 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+scorewhen ALL conditions hold
good3remodel_scope{ "cosmetic", "partial" }
good2cabinet_preference{ "stock", "reface" }
good2kitchen_size{ "small" }
good2countertop_material{ "laminate", "butcher_block" }
good1appliances{ "none" }
good2priorities{ "budget" }
better3remodel_scope{ "full_layout_same" }
better2cabinet_preference{ "semi_custom" }
better2countertop_material{ "quartz", "granite" }
better1kitchen_size{ "medium", "large" }
better1timeline{ "asap" }
best4cabinet_preference{ "custom" }
best3appliances{ "premium" }
best3countertop_material{ "marble_quartzite" }
best2remodel_scope{ "full_layout_change" }
best2kitchen_size{ "xl" }
best1priorities{ "quality" }
best1priorities{ "efficiency" }
best1priorities{ "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

Source file: src/lib/flow-engine/verticals/kitchen-remodel.ts · run the live flow →

🚿Bathroom Remodel slug:bathroom-remodel

CONSULTATION FEEcomplexity: complexprovider label: contractorphotos: requiredquestions: 11tiers: 3has dynamic branching

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

  1. Wide-angle photo from the doorway showing the full bathroom layout — include tub/shower, toilet, and vanity in one shot if possible
  2. Close-up of your current fixtures and tile — show the shower/tub surround, floor tile condition, and any grout issues or water damage
  3. 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.

Q1bathroom_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
half_bathHalf bath / powder room (toilet + sink only)
  • tags: half_bath
full_bathFull bath (tub/shower + toilet + sink)
  • tags: full_bath
master_bathMaster bath (larger, possibly double vanity)
  • tags: master_bath
en_suiteLuxury en suite (walk-in shower, soaking tub)
  • tags: en_suite
Q2remodel_scopesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
cosmeticCosmetic — new fixtures, paint, accessories
  • tags: cosmetic
partialPartial — new shower/tub surround or vanity
  • tags: partial
full_same_layoutFull gut — same layout
  • tags: full
full_new_layoutFull gut — new layout (moving plumbing)
  • tags: full, layout_change
Q3shower_preferencesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
tub_surroundTub with tile or acrylic surround
  • tags: tub
walk_in_showerWalk-in shower with tile walls
  • tags: walk_in
both_separateSeparate walk-in shower AND soaking tub
  • tags: both
prefab_unitPrefab shower unit (one-piece)
  • tags: budget_shower
steam_showerSteam shower with bench
  • tags: steam
Q4tile_stylesingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
standardStandard 12×24 porcelain or ceramic
  • tags: standard_tile
large_formatLarge format (24×48 or bigger)
  • tags: large_tile
natural_stoneNatural stone — travertine, marble, slate
  • tags: stone_tile
designerDesigner tile — Zellige, handmade, patterned
  • tags: designer_tile
Q5vanity_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
stock_singleStock single vanity (Home Depot / Kohler)
  • tags: stock_vanity
stock_doubleStock double vanity (48–72")
  • tags: double_vanity
semi_customSemi-custom floating vanity
  • tags: semi_custom_vanity
custom_builtFully custom vanity (millwork)
  • tags: custom_vanity
Q6toiletsingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
noNo — keeping existing toiletno direct price effect
standardYes — standard comfort height (Kohler, American Standard)no direct price effect
smart_bidetYes — smart toilet / bidet combo (TOTO Washlet)
  • tags: smart_toilet
Q7flooringsingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
ceramic_tileCeramic tile (budget-friendly)
  • tags: budget_floor
porcelain_tilePorcelain tile (more durable)
  • tags: mid_floor
heated_tileHeated tile floor (electric radiant)
  • tags: heated_floor
luxury_vinylLuxury vinyl plank / waterproof LVPno direct price effect
natural_stone_floorNatural stone floor (marble, travertine)
  • tags: premium_floor
Q8extrasmulti_select

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

valuelabel shown to customereffects on pricing / flow
nicheShower niche (built-in tile shelf)no direct price effect
glass_enclosureFrameless glass shower enclosureno direct price effect
towel_warmerTowel warmer / heated towel barno direct price effect
exhaust_upgradeWhisper-quiet exhaust fan with humidity sensorno direct price effect
medicine_cabinetRecessed medicine cabinet with LED mirrorno direct price effect
Q9accessibilitysingle_select

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

valuelabel shown to customereffects on pricing / flow
noneNo special accessibility needsno direct price effect
grab_barsGrab bars and non-slip surfaces
  • tags: accessibility
curbless_showerCurbless (zero-threshold) shower entry
  • tags: accessibility, curbless
full_adaFull ADA-compliant layout (wider door, roll-in shower, comfort height)
  • tags: ada, accessibility
Q10timelinesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
asapAs soon as possible
  • tags: urgent
within_monthWithin a monthno direct price effect
flexibleI'm flexible / planning aheadno direct price effect
Q11prioritiesmulti_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
budgetStay within budget
  • tags: budget
qualityBest quality materials
  • tags: premium
timelineGet it done quicklyno direct price effect
efficiencyEnergy efficiency / long-term savings
  • tags: premium
aestheticsBest looking result
  • tags: premium
warrantyLongest warranty coverage
  • tags: premium

Tiers (3)

tier:goodGoodBest Value

Clean, fresh, fully functional

Brand: Kohler / American Standard

basePrice (declared)

$8,000

Σ(lineItems) (computed)

$8,000

Line items (base price breakdown)

labelcategoryamount
Vanity, Sink & Faucet (Kohler)source: https://www.us.kohler.com/us/bathroom/vanitiesequipment$1,200
Toilet (Kohler Cimarron)source: https://www.us.kohler.com/us/bathroom/toilets/cimarronequipment$450
Tub/Shower Surround (acrylic kit)source: https://www.americanstandard-us.com/bath/tubsequipment$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

tier:betterBetterMost Popularhighlighted (default recommended)

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)

labelcategoryamount
Semi-Custom Vanity with Quartz Topequipment$3,500
TOTO Drake II Toiletsource: https://www.totousa.com/drake-ii-two-piece-toilet-10-gpf-08-gpf-newequipment$750
Walk-In Shower Tile (supply & install, ~30 hrs)equipment$4,000
Frameless Glass Shower Enclosuresource: https://www.fluidglass.com/frameless-shower-doorsequipment$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-5yc1vZc2gqequipment$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-onprice
heated_floorElectric Radiant Floor HeatingNuheat or SunTouch — warm tiles every morning$1,800
shower_nicheBuilt-In Shower Niche (double)Two recessed tile niches in the shower$350
body_spraysShower 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

tier:bestBest

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)

labelcategoryamount
Custom Vanity (millwork, double)equipment$12,000
TOTO Neorest NX2 Toiletsource: https://www.totousa.com/neorestequipment$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 & Floorequipment$7,000
Hansgrohe or Kohler Fixtures Packagesource: https://www.hansgrohe-usa.com/bathroomequipment$3,500
Heated Tile Floor (WarmlyYours)source: https://www.warmlyyours.com/en-US/categories/electric-floor-heatingequipment$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-onprice
smart_mirrorSmart LED Mirror (Kohler Verdera)Bluetooth, defogging, integrated lighting$2,000
smart_showerDigital Shower Control (Kohler DTV+)Preset temps and spray patterns from your phone$3,500
saunaInfrared 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+scorewhen ALL conditions hold
good3remodel_scope{ "cosmetic", "partial" }
good2bathroom_type{ "half_bath", "full_bath" }
good2vanity_type{ "stock_single" }
good2priorities{ "budget" }
better3shower_preference{ "walk_in_shower" }
better2remodel_scope{ "full_same_layout" }
better2bathroom_type{ "master_bath" }
better1vanity_type{ "semi_custom" }
better1timeline{ "asap" }
best4bathroom_type{ "en_suite" }
best3shower_preference{ "both_separate", "steam_shower" }
best3vanity_type{ "custom_built" }
best2tile_style{ "natural_stone", "designer" }
best1toilet{ "smart_bidet" }
best1priorities{ "quality" }
best1priorities{ "efficiency" }
best1priorities{ "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

Source file: src/lib/flow-engine/verticals/bathroom-remodel.ts · run the live flow →

🏠Roof Replacement slug:roof-replacement

CONSULTATION FEEcomplexity: complexprovider label: roofing contractorphotos: requiredquestions: 11tiers: 3

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

  1. Photo of your roof from each side of the house (try to get 2-4 angles from ground level showing the full roof line)
  2. Close-up photos of any damage — missing shingles, curling edges, dark spots, or problem areas you've noticed
  3. 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.

Q1roof_sizesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
smallSmall — under 1,500 sq ft home
  • tags: small
mediumMedium — 1,500–2,500 sq ft home
  • tags: medium
largeLarge — 2,500–3,500 sq ft home
  • tags: large
xlVery large — over 3,500 sq ft
  • tags: xl
Q2roof_pitchsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
lowLow pitch — almost flat (2/12–4/12)
  • tags: low_pitch
moderateModerate pitch — typical ranch or colonial (4/12–7/12)no direct price effect
steepSteep pitch — lots of height, visible from the street (7/12+)
  • tags: steep
very_steepVery steep / complex (mansard, gambrel, multiple valleys)
  • tags: complex
Q3material_preferencesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
asphalt_3tab3-tab asphalt shingles (most affordable)
  • tags: budget_roof
asphalt_architecturalArchitectural / dimensional shingles (most popular)
  • tags: arch_shingles
impact_resistantImpact-resistant shingles (Class 4 — hail protection)
  • tags: impact_resist
metal_steelSteel metal roofing (standing seam or panels)
  • tags: metal
metal_aluminumAluminum or copper metal roof
  • tags: premium_metal
cedar_shakeCedar shake or composite shake
  • tags: shake
tileClay or concrete tile
  • tags: tile_roof
Q4current_layerssingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
one1 layer — standard tearoff
  • tags: one_layer
two2 layers — full tearoff required
  • tags: two_layer
unknownI'm not sureno direct price effect
Q5decking_conditionsingle_select

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

valuelabel shown to customereffects on pricing / flow
goodGood — solid, no known issuesno direct price effect
some_rotSome soft spots or minor rotno direct price effect
significant_damageSignificant damage — large areas need replacementno direct price effect
unknownUnknown — not sureno direct price effect
Q6add_featuresmulti_select

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

valuelabel shown to customereffects on pricing / flow
ridge_ventRidge vent (improves attic ventilation)no direct price effect
ice_water_shieldIce & water shield (full coverage, cold climate)no direct price effect
guttersReplace gutters & downspouts at same timeno direct price effect
skylightsReplace or add skylightsno direct price effect
solar_ventsSolar-powered attic ventsno direct price effect
Q7reasonsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
ageAge — roof is near end of life (15–20+ years)
  • tags: age
leakActive leak or storm damage
  • tags: urgent
insuranceInsurance claim / storm damage
  • tags: insurance
sellingGetting ready to sell the home
  • tags: selling
upgradeProactive upgrade / improving look
  • tags: upgrade
Q8gutter_conditionsingle_select

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

valuelabel shown to customereffects on pricing / flow
goodGood — recently replaced or maintainedno direct price effect
needs_repairNeed some repair or sections replacedno direct price effect
replaceNeed full replacementno direct price effect
unsureNot sureno direct price effect
Q9ventilationsingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
yesYes — has ridge vents or powered ventsno direct price effect
noNo / not sureno direct price effect
upgradeWant to upgrade ventilation with new roof
  • tags: premium
Q10timelinesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
asapAs soon as possible
  • tags: urgent
within_monthWithin a monthno direct price effect
flexibleI'm flexible / planning aheadno direct price effect
Q11prioritiesmulti_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
budgetStay within budget
  • tags: budget
qualityBest quality materials
  • tags: premium
timelineGet it done quicklyno direct price effect
efficiencyEnergy efficiency / long-term savings
  • tags: premium
aestheticsBest looking result
  • tags: premium
warrantyLongest warranty coverage
  • tags: premium

Tiers (3)

tier:goodGoodBest Value

Dependable protection at the right price

Brand: GAF Timberline HDZ

basePrice (declared)

$11,000

Σ(lineItems) (computed)

$11,000

Line items (base price breakdown)

labelcategoryamount
GAF Timberline HDZ Shingles (material)source: https://www.gaf.com/en-us/roofing-products/residential-roofing/shingles/timberline-hdzequipment$3,500
Synthetic Underlaymentequipment$800
Ice & Water Shield (eaves + valleys)equipment$700
Ridge Cap Shinglesequipment$450
Tear-Off & Disposal (4–6 hrs)labor$2,200
Installation Labor (6–8 hrs)labor$2,800
Flashing, Pipe Boots & Accessoriesequipment$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

tier:betterBetterMost Popularhighlighted (default recommended)

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)

labelcategoryamount
OC Duration STORM Shingles (Class 4)source: https://www.owenscorning.com/en-us/roofing/shinglesequipment$6,000
WeatherLock Self-Sealing Underlaymentequipment$1,100
Ice & Water Shield (full coverage)equipment$1,200
Ridge Cap + Starter Stripequipment$650
Tear-Off & Disposal (4–6 hrs)labor$2,400
Premium Labor — certified installer (6–8 hrs)labor$3,800
Flashing, Vents & Accessoriesequipment$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-onprice
ridge_ventFull-Length Ridge VentImproved attic ventilation, reduces heat buildup$550
gutter_guardsLeafGuard 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

tier:bestBest

Premium protection — 50+ year system

Brand: CertainTeed Landmark Premium / Metal Roofing

basePrice (declared)

$28,000

Σ(lineItems) (computed)

$28,000

Line items (base price breakdown)

labelcategoryamount
Standing Seam Metal Panels (steel/aluminum)source: https://www.metalroofing.com/metal-roofing-pricesequipment$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 Detailsequipment$2,000
Ridge Cap & Fastenersequipment$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-onprice
solar_readySolar-Ready Conduit PrepRoute conduit for future solar panel installation$1,500
skylight_replacementVelux Skylight Replacement (per unit)Replace old skylights with new Velux flashed units$2,000
full_guttersSeamless 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+scorewhen ALL conditions hold
good3reason{ "selling" }
good2material_preference{ "asphalt_3tab", "asphalt_architectural" }
good1roof_size{ "small" }
good2priorities{ "budget" }
better3material_preference{ "impact_resistant" }
better2reason{ "insurance", "age" }
better2roof_size{ "medium", "large" }
better2reason{ "leak" }
better1timeline{ "asap" }
best4material_preference{ "metal_steel", "metal_aluminum" }
best3material_preference{ "tile", "cedar_shake" }
best2roof_size{ "xl" }
best1roof_pitch{ "very_steep" }
best1ventilation{ "upgrade" }
best1priorities{ "quality" }
best1priorities{ "efficiency" }
best1priorities{ "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

Source file: src/lib/flow-engine/verticals/roof-replacement.ts · run the live flow →

☀️Solar Panel Installation slug:solar-installation

CONSULTATION FEEcomplexity: complexprovider label: solar installerphotos: requiredquestions: 10tiers: 3

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

  1. 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)
  2. Photo of your electrical panel with the door open — show the breaker labels and main breaker amp rating so we can assess interconnection
  3. 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.

Q1avg_monthly_billsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
under_100Under $100/month (~4 kW system)
  • tags: small_system
100_200$100–$200/month (~6–7 kW system)
  • tags: small_system
200_300$200–$300/month (~8–10 kW system)
  • tags: medium_system
300_500$300–$500/month (~12–14 kW system)
  • tags: large_system
over_500Over $500/month (large home / pool / EV)
  • tags: xl_system
Q2roof_typesingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
comp_shingleAsphalt / composition shingles
  • tags: easy_mount
metalStanding seam metal
  • tags: easy_mount
tileClay or concrete tile
  • tags: tile_mount
flatFlat / low-slope (needs tilt mounts)
  • tags: flat_mount
composite_shingleComposite / synthetic shake
  • tags: easy_mount
Q3roof_agesingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
newUnder 5 years old
  • tags: new_roof
mid5–15 years oldno direct price effect
aging15–20 years old
  • tags: aging_roof
old20+ years (consider re-roofing first)
  • tags: old_roof
Q4shadingsingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
full_sunFull sun — no significant shading
  • tags: good_solar
partialSome shade from trees or neighbors (a few hours/day)
  • tags: partial_shade
heavy_shadeHeavy shade most of the day
  • tags: heavy_shade
Q5battery_storagesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
no_batteryNo — grid-tied only (most affordable)
  • tags: no_battery
partial_batteryYes — partial backup (lights, fridge, outlets)
  • tags: partial_battery
whole_homeYes — whole-home backup (Tesla Powerwall / Enphase IQ)
  • tags: full_battery
Q6panel_preferencesingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
standardStandard efficiency (good value) — Q CELLS, Canadian Solar
  • tags: standard_panels
premiumHigh efficiency (fewer panels needed) — REC, Panasonic EverVolt
  • tags: premium_panels
blackAll-black aesthetic — SunPower Maxeon, REC Alpha Black
  • tags: premium_panels, aesthetic
Q7ev_chargingsingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
yes_haveYes — I have an EV now
  • tags: ev
yes_soonPlanning to get one within 2 years
  • tags: ev
noNo EVno direct price effect
Q8financingsingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
cashCash / home equity
  • tags: purchase
solar_loanSolar loan (own the system, finance payments)
  • tags: purchase
leaseLease / PPA (no upfront cost, monthly payment)
  • tags: lease
unsureNot sure yet — show me optionsno direct price effect
Q9timelinesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
asapAs soon as possible
  • tags: urgent
within_monthWithin a monthno direct price effect
flexibleI'm flexible / planning aheadno direct price effect
Q10prioritiesmulti_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
budgetStay within budget
  • tags: budget
qualityBest quality materials
  • tags: premium
timelineGet it done quicklyno direct price effect
efficiencyEnergy efficiency / long-term savings
  • tags: premium
aestheticsBest looking result
  • tags: premium
warrantyLongest warranty coverage
  • tags: premium

Tiers (3)

tier:goodGoodBest Value

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)

labelcategoryamount
Q CELLS Q.PEAK DUO Panels (18 panels × 400W = 7.2 kW)source: https://us.q-cells.comequipment$7,200
Enphase IQ8 Microinverters (18 units)source: https://enphase.com/store/microinverters/iq8-series-microinverterequipment$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-onprice
monitoring_upgradeSense Energy MonitorReal-time whole-home energy monitoring$300
ev_charger_bundleLevel 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

tier:betterBetterMost Popularhighlighted (default recommended)

Solar + partial battery backup

Brand: REC Alpha / Enphase IQ Battery 5P

basePrice (declared)

$35,000

Σ(lineItems) (computed)

$35,000

Line items (base price breakdown)

labelcategoryamount
REC Alpha Pure-RX Panels (24 × 430W = 10.3 kW)source: https://www.recgroup.com/en/alpha-pure-rxequipment$12,000
Enphase IQ8+ Microinverters (24 units)source: https://enphase.com/store/microinverters/iq8-series-microinverterequipment$5,500
Enphase IQ Battery 5P (1 unit, 5 kWh)source: https://enphase.com/store/batteries/iq-battery-5pequipment$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-onprice
second_batteryAdd Second Enphase IQ Battery 5P10 kWh total — extends backup time significantly$6,000
ev_solar_bundleSolar-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

tier:bestBest

Solar + whole-home battery backup

Brand: SunPower Maxeon / Tesla Powerwall 3

basePrice (declared)

$55,000

Σ(lineItems) (computed)

$55,000

Line items (base price breakdown)

labelcategoryamount
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/powerwallequipment$12,000
Hybrid Inverter System (Enphase IQ8H or Tesla gateway)source: https://enphase.com/store/microinverters/iq8-series-microinverterequipment$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-onprice
second_powerwallSecond Tesla Powerwall 327 kWh total — truly off-grid capable for days$13,000
solar_roof_upgradeTesla 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+scorewhen ALL conditions hold
good3battery_storage{ "no_battery" }
good2avg_monthly_bill{ "under_100", "100_200" }
good1panel_preference{ "standard" }
good2financing{ "lease" }
good2priorities{ "budget" }
better3battery_storage{ "partial_battery" }
better2avg_monthly_bill{ "200_300", "300_500" }
better2ev_charging{ "yes_have", "yes_soon" }
better1panel_preference{ "black" }
better1timeline{ "asap" }
best4battery_storage{ "whole_home" }
best2avg_monthly_bill{ "over_500" }
best2panel_preference{ "black" }battery_storage{ "whole_home", "partial_battery" }
best1ev_charging{ "yes_have" }
best1financing{ "cash" }
best1priorities{ "quality" }
best1priorities{ "efficiency" }
best1priorities{ "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

Source file: src/lib/flow-engine/verticals/solar-installation.ts · run the live flow →

🏊Pool Installation slug:pool-installation

CONSULTATION FEEcomplexity: complexprovider label: pool contractorphotos: requiredquestions: 8tiers: 3

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

  1. Photos of your backyard from multiple angles — show the full yard, fencing, slope/grading, and distance from the house
  2. 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
  3. 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.

Q1pool_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
inground_vinylIn-ground vinyl liner
  • tags: inground, vinyl
inground_fiberglassIn-ground fiberglass (pre-formed)
  • tags: inground, fiberglass
inground_guniteIn-ground gunite / concrete (custom shape)
  • tags: inground, gunite
Q2pool_sizesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
smallSmall — up to 12×24 ft (plunge/lap-ish)
  • tags: small_pool
mediumMedium — 14×28 to 16×32 ft
  • tags: medium_pool
largeLarge — 16×36 to 20×40 ft
  • tags: large_pool
xlExtra large — over 20×40 ft or custom shape
  • tags: xl_pool
Q3yard_accesssingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
easyEasy access — large gate or open yardno direct price effect
moderateModerate — standard side gate (3–4 ft wide)no direct price effect
difficultTight access — fence removal or hand-digging needed
  • tags: difficult_access
Q4featuresmulti_select

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

valuelabel shown to customereffects on pricing / flow
heaterPool heater (gas or heat pump)no direct price effect
auto_coverAutomatic safety coverno direct price effect
waterfallWaterfall or water featureno direct price effect
spaAttached spa / hot tub
  • tags: has_spa
led_lightingLED color-changing underwater lightsno direct price effect
automationSmart automation (Pentair IntelliConnect)no direct price effect
salt_systemSalt water chlorine generatorno direct price effect
Q5deckingsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
plain_concretePlain brushed concrete (functional)
  • tags: basic_deck
stamped_concreteStamped or colored concrete
  • tags: mid_deck
travertineTravertine or natural stone pavers
  • tags: premium_deck
paversBrick or concrete pavers
  • tags: mid_deck
compositeComposite wood decking
  • tags: basic_deck
Q6permit_awarenesssingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
clearYes — no HOA restrictions, permits understood
  • tags: permit_clear
hoaHOA approval needed (may limit design options)no direct price effect
unsureNot sure yet — need to checkno direct price effect
Q7prioritiesmulti_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
budgetStay within budget
  • tags: budget
qualityBest quality materials
  • tags: premium
timelineGet it done quicklyno direct price effect
efficiencyEnergy efficiency / long-term savings
  • tags: premium
aestheticsBest looking result
  • tags: premium
warrantyLongest warranty coverage
  • tags: premium
Q8timelinesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
this_seasonThis pool season (book now for summer)
  • tags: this_season
next_seasonNext pool season (planning ahead)
  • tags: next_season
flexibleFlexible / no rush
  • tags: flexible

Tiers (3)

tier:goodGoodBest Value

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)

labelcategoryamount
Excavation & Gradinglabor$6,000
Steel Frame, Vermiculite Floorlabor$5,000
Latham 28-mil Vinyl Liner (supply & install)source: https://www.lathampool.comequipment$6,000
Hayward VS Pump + Sand Filterequipment$3,500
Plumbing & Electricallabor$3,500
Brushed Concrete Deck (300 sq ft)labor$5,000
Steps, Fittings & Miscequipment$1,500
Safety Fencing & Code Compliancelabor$3,500
Backfill, Grading & Cleanuplabor$2,500
Project Management & Generallabor$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

tier:betterBetterMost Popularhighlighted (default recommended)

Fiberglass pool — low-maintenance for life

Brand: Latham Fiberglass / Pentair

basePrice (declared)

$65,000

Σ(lineItems) (computed)

$65,000

Line items (base price breakdown)

labelcategoryamount
Latham Fiberglass Shell (supply & delivery)source: https://www.lathampool.com/pool-designs/fiberglass/equipment$16,000
Excavation, Gravel Base & Installationlabor$9,000
Pentair IntelliFlo3 VS + Cartridge Filterequipment$4,000
Hayward Aqua Rite Salt Chlorinatorequipment$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 Compliancelabor$4,000
Backfill, Grading & Landscape Restorationlabor$4,000
Landscaping, Fence & General Finishinglabor$5,000
Project Management & Permitslabor$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-onprice
heaterPentair UltraTemp Heat PumpExtend your swim season by 2–3 months each end$3,800
auto_coverAutomatic Safety Cover (Cover-Pools)Code-compliant safety cover + electric motor$5,500
smart_autoPentair 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

tier:bestBest

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)

labelcategoryamount
Engineering, Design & Permitslabor$5,000
Excavation & Structural Gunitelabor$32,000
Pebble Tec or Quartzite Interior Finishlabor$15,000
Pentair Full Equipment Package (pump, filter, heater)equipment$12,000
Integrated Spa with Spilloverlabor$15,000
Natural Stone Deck & Coping (600 sq ft)labor$20,000
Waterfall / Water Featurelabor$4,000
LED Color Lighting System (6 lights)equipment$3,500
Salt + UV Sanitation Systemequipment$3,000
Landscaping, Fencing & Cleanuplabor$12,000
Project Management & Overheadlabor$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-onprice
fire_featuresGas Fire Bowls or Fire Pit (2)Pentair or custom propane fire bowls at pool edge$6,000
outdoor_kitchenOutdoor Kitchen PackageBull or DCS grill, sink, fridge, granite counter$25,000
cabanaPool 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+scorewhen ALL conditions hold
good3pool_type{ "inground_vinyl" }
good2pool_size{ "small", "medium" }
good1decking{ "plain_concrete" }
good1timeline{ "this_season" }
good2priorities{ "budget" }
better3pool_type{ "inground_fiberglass" }
better2pool_size{ "medium", "large" }
better1decking{ "stamped_concrete", "pavers" }
better1timeline{ "this_season" }
best4pool_type{ "inground_gunite" }
best2pool_size{ "xl" }
best1decking{ "travertine" }
best1timeline{ "next_season", "flexible" }
best1priorities{ "quality" }
best1priorities{ "efficiency" }
best1priorities{ "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

Source file: src/lib/flow-engine/verticals/pool-installation.ts · run the live flow →

🏗️Foundation Repair slug:foundation-repair

CONSULTATION FEEcomplexity: complexprovider label: structural engineerphotos: requiredquestions: 9tiers: 3

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

  1. 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
  2. Photo of the exterior foundation from 5-10 feet away — show the full visible foundation wall, including any bowing, leaning, or displacement
  3. 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.

Q1foundation_typesingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
basementPoured concrete basement walls
  • tags: basement
blockConcrete block / CMU basement walls
  • tags: block
crawlspaceCrawl space foundation
  • tags: crawlspace
slabSlab-on-grade (no basement)
  • tags: slab
pier_beamPier & beam foundation
  • tags: pier_beam
Q2symptomsmulti_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
cracks_wallCracks in basement or exterior wallsno direct price effect
cracks_floorCracks in floor or slabno direct price effect
doors_stickDoors or windows sticking, hard to open/closeno direct price effect
bowing_wallsBowing or leaning basement walls
  • tags: bowing
water_intrusionWater seeping into basement or crawlspace
  • tags: water
floor_slopeUneven or sloping floors
  • tags: settlement
gap_exteriorGaps between walls and ceiling/floorno direct price effect
Q3crack_severitysingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
hairlineHairline — under 1/16" wide (normal settling)
  • tags: minor
moderateModerate — 1/16" to 1/4" wide
  • tags: moderate
significantSignificant — over 1/4" or stair-step pattern
  • price +$2,000 → line item "Significant Crack Surcharge"
  • tags: significant
severeSevere — wide, multiple locations, visible shifting
  • price +$6,000 → line item "Severe Structural Damage Allowance"
  • tags: severe
Q4how_longsingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
recentRecent — noticed in last 6 months
  • tags: active_movement
years1–5 years
  • tags: ongoing
longtimeAlways been there / many years
  • tags: historic
worseningGetting noticeably worse over time
  • price +$3,000 → line item "Active Movement Surcharge"
  • tags: active_movement, worsening
Q5soil_conditionssingle_selectprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
clayHeavy clay soil (swells when wet, shrinks when dry)
  • tags: clay_soil
sandySandy or loamy soilno direct price effect
expansiveExpansive soil (noticed heaving in yard)
  • price +$3,000 → line item "Expansive Soil Allowance"
  • tags: expansive
unknownNot sureno direct price effect
Q6drainagesingle_select

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

valuelabel shown to customereffects on pricing / flow
goodGood — water drains away from foundationno direct price effect
poorPoor — water pools near foundation after rain
  • tags: poor_drainage
gutters_missingGutters missing or disconnected
  • tags: poor_drainage
unknownNot sureno direct price effect
Q7prior_repairsingle_selectprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
noNo — first-time repairno direct price effect
yes_successfulYes — previous repair held wellno direct price effect
yes_failedYes — previous repair failed or cracks returned
  • price +$4,000 → line item "Prior Repair Failure Allowance"
  • tags: prior_failure
Q8timelinesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
asapAs soon as possible
  • tags: urgent
within_monthWithin a monthno direct price effect
flexibleI'm flexible / planning aheadno direct price effect
Q9prioritiesmulti_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
budgetStay within budget
  • tags: budget
qualityBest quality materials
  • tags: premium
timelineGet it done quicklyno direct price effect
efficiencyEnergy efficiency / long-term savings
  • tags: premium
aestheticsBest looking result
  • tags: premium
warrantyLongest warranty coverage
  • tags: premium

Tiers (3)

tier:goodGoodBest Value

Crack repair and surface stabilization

Brand: Carbon fiber straps / Epoxy injection

basePrice (declared)

$5,000

Σ(lineItems) (computed)

$5,000

Line items (base price breakdown)

labelcategoryamount
Structural Assessment & Engineering Reportlabor$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-fiberequipment$1,800
Polyurethane Foam Sealinglabor$450
Labor & Cleanuplabor$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

tier:betterBetterMost Popularhighlighted (default recommended)

Push pier stabilization — stops movement permanently

Brand: Supportworks / Earth Contact Products

basePrice (declared)

$15,000

Σ(lineItems) (computed)

$15,000

Line items (base price breakdown)

labelcategoryamount
Structural Engineering Assessmentlabor$1,500
Galvanized Steel Push Piers (8 piers)source: https://www.supportworks.comequipment$7,000
Pier Brackets & Load Transfer Hardwareequipment$2,000
Limited Excavation / Accesslabor$1,500
Crack Repair & Sealinglabor$1,000
Labor, Backfill & Cleanuplabor$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-onprice
drainageInterior French Drain SystemWaterGuard perimeter drain + sump pump to control water$6,000
wall_anchorWall 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

tier:bestBest

Comprehensive foundation system — complete peace of mind

Brand: Supportworks / Basement Systems

basePrice (declared)

$35,000

Σ(lineItems) (computed)

$35,000

Line items (base price breakdown)

labelcategoryamount
Geotechnical Assessment + Engineering Drawingslabor$3,000
Steel Push & Helical Piers (full perimeter)equipment$15,000
Steel Wall Anchor System (full wall)equipment$6,000
Interior Perimeter Drainage Systemequipment$5,000
TripleSafe Sump Pump Systemequipment$2,500
Crack Sealing, Waterproofing Coatlabor$1,500
Restoration, Cleanup & Final Reportlabor$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-onprice
encapsulationCrawl Space / Basement EncapsulationCleanSpace vapor barrier — full moisture control$6,000
dehumidifierSaniDry 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+scorewhen ALL conditions hold
good3crack_severity{ "hairline", "moderate" }
good2how_long{ "longtime" }
good1symptoms{ "cracks_wall" }
good2priorities{ "budget" }
better3crack_severity{ "significant" }
better2symptoms{ "floor_slope", "doors_stick" }
better2how_long{ "years", "recent" }
better1soil_conditions{ "clay" }
better1timeline{ "asap" }
best4crack_severity{ "severe" }
best3symptoms{ "bowing_walls" }
best3how_long{ "worsening" }
best2prior_repair{ "yes_failed" }
best2symptoms{ "water_intrusion" }
best1priorities{ "quality" }
best1priorities{ "efficiency" }
best1priorities{ "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

Source file: src/lib/flow-engine/verticals/foundation-repair.ts · run the live flow →

💧Basement Waterproofing slug:basement-waterproofing

CONSULTATION FEEcomplexity: complexprovider label: waterproofing specialistphotos: requiredquestions: 8tiers: 3

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

  1. Photos of any water stains, efflorescence (white mineral deposits), mold, or standing water — get close enough to show the severity
  2. Photo of the basement perimeter walls at floor level — show where the wall meets the floor, especially corners and joints where water enters
  3. 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.

Q1water_sourcesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
wall_seepageSeeping through basement walls (porous concrete)
  • tags: wall_seepage
floor_cracksComing up through floor cracks or drain
  • tags: floor_seepage
cove_jointWhere the wall meets the floor (cove joint)
  • tags: cove_joint
window_wellWindow wells flooding
  • tags: window_well
multipleMultiple sources / I'm not sure
  • tags: multiple
Q2basement_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
finishedFinished basement (carpet, drywall, drop ceiling)
  • tags: finished
partially_finishedPartially finished
  • tags: partial_finish
unfinishedUnfinished / utility
  • tags: unfinished
Q3severitysingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
efflorescenceWhite powder / efflorescence on walls (moisture wicking)
  • tags: mild
damp_smellDamp, musty smell but no standing water
  • tags: mild
wet_patchesWet patches or minor seeping during heavy rain
  • tags: moderate
standing_waterActual water pooling on floor
  • tags: severe
floodingRegular flooding — multiple inches of water
  • tags: severe, flooding
Q4sump_pumpsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
noneNo sump pump
  • tags: no_sump
basicYes — basic single pump, unknown brand/age
  • tags: has_sump
goodYes — newer pump, works wellno direct price effect
failedI had one — it failed or I'm not sure it works
  • tags: no_sump
Q5mold_concernsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
noneNo signs of moldno direct price effect
mustyMusty smell but no visible mold
  • tags: possible_mold
visibleVisible mold on walls or framing
  • tags: mold
significantSignificant mold — affecting large areas
  • tags: mold, severe_mold
Q6square_footagesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
smallSmall — under 600 sq ft
  • tags: small
mediumMedium — 600–1,200 sq ft
  • tags: medium
largeLarge — over 1,200 sq ft
  • tags: large
Q7drainage_exteriorsingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
yesYes — ground slopes away from foundationno direct price effect
flatMostly flat — minimal slope
  • tags: poor_grade
toward_houseNo — slopes toward the house
  • tags: negative_grade
unknownNot sureno direct price effect
Q8prioritiesmulti_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
budgetStay within budget
  • tags: budget
qualityBest quality materials
  • tags: premium
timelineGet it done quicklyno direct price effect
efficiencyEnergy efficiency / long-term savings
  • tags: premium
aestheticsBest looking result
  • tags: premium
warrantyLongest warranty coverage
  • tags: premium

Tiers (3)

tier:goodGoodBest Value

Interior sealant + drainage control

Brand: Drylok / SumpPro

basePrice (declared)

$2,500

Σ(lineItems) (computed)

$2,500

Line items (base price breakdown)

labelcategoryamount
Crack Injection (hydraulic cement, up to 6 cracks)labor$600
Drylok Extreme Masonry Waterproofer (labor + material)source: https://www.drylok.comlabor$700
Sump Pump Installation (Zoeller M53)equipment$800
Window Well Covers (2 windows)equipment$250
Labor & Materialslabor$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

tier:betterBetterMost Popularhighlighted (default recommended)

Interior drainage system — the industry standard

Brand: WaterGuard / Basement Systems

basePrice (declared)

$9,000

Σ(lineItems) (computed)

$9,000

Line items (base price breakdown)

labelcategoryamount
WaterGuard Interior Perimeter Drain Systemsource: https://www.basementsystems.com/waterguard/equipment$3,500
Concrete Cutting, Removal & Reinstallationlabor$2,000
SuperSump Plus Sump Pump Systemequipment$1,500
UltraSump Battery Backup Systemequipment$1,200
IceGuard Discharge Lineequipment$300
Labor & Cleanuplabor$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-onprice
dehumidifierSaniDry Sedona DehumidifierWhole-basement dehumidifier with auto drain to sump$1,300
cleanspaceCleanSpace 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

tier:bestBest

Complete interior system + encapsulation

Brand: Basement Systems Total Solution

basePrice (declared)

$22,000

Σ(lineItems) (computed)

$22,000

Line items (base price breakdown)

labelcategoryamount
WaterGuard Full Perimeter Drain (large basement)equipment$6,000
Concrete Cutting, Gravel & Reinstallationlabor$3,000
TripleSafe Sump Pump Systemsource: https://www.basementsystems.com/triplesafe/equipment$2,500
CleanSpace 20-mil Wall Vapor Barrierequipment$4,000
CleanSpace Floor Mattingequipment$2,000
SaniDry XP Commercial Dehumidifierequipment$2,000
Mold Remediation (walls/framing)labor$1,000
Labor, Permits & Cleanuplabor$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-onprice
ext_gradingExterior Grading CorrectionRegrade soil to slope away from foundation$2,000
window_wellsEgress Window Well EnlargementLarger wells with drains tied to drainage system$3,000
mold_treatmentMold 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+scorewhen ALL conditions hold
good3severity{ "efflorescence", "damp_smell" }
good2basement_type{ "unfinished" }
good1square_footage{ "small" }
good1water_source{ "window_well" }
good2priorities{ "budget" }
better3severity{ "wet_patches", "standing_water" }
better2water_source{ "cove_joint", "floor_cracks" }
better2sump_pump{ "none", "failed" }
better1square_footage{ "medium" }
best4severity{ "flooding" }
best3mold_concern{ "visible", "significant" }
best2basement_type{ "finished" }
best2square_footage{ "large" }
best1drainage_exterior{ "toward_house" }
best1priorities{ "quality" }
best1priorities{ "efficiency" }
best1priorities{ "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

Source file: src/lib/flow-engine/verticals/basement-waterproofing.ts · run the live flow →

📡Dish & Satellite Installation slug:dish-installation

ORDER FEEcomplexity: mediumprovider label: satellite installerphotos: requiredquestions: 7tiers: 3has dynamic branching

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

  1. Photo of your planned install location — show the area where the dish will be mounted (rooftop, wall, or ground) with surrounding obstructions visible
  2. 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.

Q1dish_typesingle_selectrequiredskips qs

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

valuelabel shown to customereffects on pricing / flow
starlinkStarlink (satellite internet)
  • tags: starlink
directv_dishDirecTV / DISH (satellite TV)
  • tags: sat_tv
other_dishOther satellite dish
  • tags: other_dish
removal_onlyI need help removing an old dish
  • skips questions: "mount_location", "roof_material", "stories", "cable_routing", "grounding_needed"
  • tags: removal_only
Q2mount_locationsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
rooftopRooftop
  • tags: rooftop
side_fasciaSide of house / fascia
  • tags: side_fascia
ground_poleGround mount / pole
  • tags: ground_pole
balcony_deckBalcony / deck railing
  • tags: balcony
Q3roof_materialsingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
asphaltAsphalt shingles
  • tags: asphalt
metalMetal
  • tags: metal_roof
tile_slateTile / slate
  • tags: tile_roof
flat_tpoFlat / TPO
  • tags: flat_roof
Q4storiessingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
one_story1 story
  • tags: one_story
two_story2 stories
  • tags: two_story
three_plus3+ stories / multi-unit
  • tags: three_plus
Q5cable_routingsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
exterior_wallThrough exterior wall (short run)
  • tags: short_run
attic_crawlThrough attic or crawl space
  • tags: attic_run
existing_conduitThrough existing conduit
  • tags: conduit
not_sure_routingNot sure / want pro to assess
  • tags: assess
Q6existing_dishsingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
no_existingNono direct price effect
same_locationYes — same mount location
  • tags: has_existing
different_locationYes — different location (removal only)
  • tags: has_existing, separate_removal
Q7grounding_neededsingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
yes_groundedYes
  • tags: grounded
no_not_sureNo / Not sure (most honest answer for homeowners)
  • tags: needs_grounding

Tiers (3)

tier:goodBasicBest Value

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)

labelcategoryamount
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-5yc1vZc8nrequipment$45
Cable, connectors, and weatherproofingequipment$30
Grounding kit (coax block + ground wire)source: https://www.homedepot.com/b/Electrical-TV-Satellite-Dish-Antennas-Accessories/N-5yc1vZc8nqequipment$25
Roof sealant / flashingequipment$15
Drive time and site cleanuplabor$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

tier:betterStandardMost Commonhighlighted (default recommended)

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)

labelcategoryamount
Installation labor (~3 hrs)labor$360
Mounting hardware (J-mount, specialty lag bolts for tile/slate)equipment$65
Cable, connectors, and in-wall routing materialsequipment$60
Grounding / bonding kit (full NEC-compliant package)equipment$35
Roof penetration weatherseal (butyl tape + cover plate)equipment$20
Drive time, staging, and cleanuplabor$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-onprice
wifi_dropIn-wall cable drop to equipment roomFish cable from attic entry to a wall plate in your TV or equipment room$85
signal_testSignal 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

tier:bestPremium

Ground / pole mount or multi-unit

Brand: Concrete footings, long cable runs, conduit

basePrice (declared)

$880

Σ(lineItems) (computed)

$880

Line items (base price breakdown)

labelcategoryamount
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-5yc1vZc8nrequipment$120
Concrete / footings (bag mix + tube form)equipment$80
Coaxial or Cat6 cable (exterior-rated, 50–100 ft run)equipment$80
Conduit, fittings, and weatherheadequipment$50
Grounding kit + inline surge protectorequipment$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-onprice
deep_trenchUnderground cable trench (50–100 ft)Buried conduit run for a clean yard — requires 24 hrs notice for dig-safe call$225
multi_unit_wiringMulti-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-onprice
old_dish_removalOld 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_groundingPremium 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+scorewhen ALL conditions hold
good3mount_location{ "rooftop", "side_fascia" }
good2stories{ "one_story", "two_story" }
good2cable_routing{ "exterior_wall" }
good1roof_material{ "asphalt", "metal_roof" }
better4roof_material{ "tile_slate", "flat_tpo" }
better4cable_routing{ "attic_crawl", "conduit" }
better3stories{ "three_plus" }
better2mount_location{ "balcony_deck" }
better1cable_routing{ "assess" }
best5mount_location{ "ground_pole" }
best2stories{ "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

Source file: src/lib/flow-engine/verticals/dish-installation.ts · run the live flow →

🔥Water Heater Replacement slug:water-heater-replacement

ORDER FEEcomplexity: mediumprovider label: plumberphotos: requiredquestions: 5tiers: 3has dynamic branching

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

  1. Photo of your current water heater — show the model/serial label (usually on the side) and the full unit from top to bottom
  2. 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.

Q1heater_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
tank_gasTank water heater — natural gas
  • tags: tank, gas
tank_electricTank water heater — electric
  • tags: tank, electric
tankless_gasTankless — gas (on-demand)
  • tags: tankless, gas
tankless_electricTankless — electric (on-demand)
  • tags: tankless, electric
heat_pumpHeat pump water heater (hybrid electric)
  • tags: heat_pump_wh
Q2household_sizesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
1_21–2 people (30–40 gallon / 3–4 GPM)
  • tags: small_household
3_43–4 people (40–50 gallon / 5–7 GPM)
  • tags: medium_household
5_plus5+ people (50–80 gallon / 7–9 GPM)
  • tags: large_household
Q3current_issuesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
failedBroken / no hot water right now
  • tags: urgent
oldOld unit (8+ years) — being proactive
  • tags: proactive
upgradeUpgrading to tankless or heat pump
  • tags: upgrade
capacityRunning out of hot water too fast
  • tags: capacity
efficiencyWant lower energy bills
  • tags: efficiency
Q4locationsingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
basementBasement or utility room (easy access)no direct price effect
garageGarageno direct price effect
closetInterior closet or small utility space
  • tags: tight_space
atticAttic
  • tags: attic_install
crawlspaceCrawlspace
  • tags: crawl
Q5gas_linesingle_select

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

valuelabel shown to customereffects on pricing / flow
yesYes — existing gas lineno direct price effect
noNo — gas line would need to be run
  • tags: new_gas
unsureNot sureno direct price effect

Tiers (3)

tier:goodGoodBest Value

Reliable tank replacement — fast and affordable

Brand: Rheem Performance Plus

basePrice (declared)

$1,600

Σ(lineItems) (computed)

$1,600

Line items (base price breakdown)

labelcategoryamount
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/pltequipment$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

tier:betterBetterMost Popularhighlighted (default recommended)

Tankless gas — endless hot water, lower bills

Brand: Navien NPE-240A2

basePrice (declared)

$3,100

Σ(lineItems) (computed)

$3,100

Line items (base price breakdown)

labelcategoryamount
Navien NPE-240A2 Tankless Heatersource: https://www.navieninc.com/products/npe-a2equipment$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/csstequipment$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-onprice
recirculationInstant Hot Water Recirculation PumpHot water at every faucet within seconds$450
water_softener_filterPre-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

tier:bestBest

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)

labelcategoryamount
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-pansequipment$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-onprice
smart_thermostatSmart 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+scorewhen ALL conditions hold
good3current_issue{ "failed" }
good2current_issue{ "old" }
good1heater_type{ "tank_gas", "tank_electric" }
better3heater_type{ "tankless_gas" }
better2current_issue{ "capacity", "upgrade" }
better1household_size{ "5_plus" }
best4heater_type{ "heat_pump" }
best2current_issue{ "efficiency" }
best1heater_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

Source file: src/lib/flow-engine/verticals/water-heater-replacement.ts · run the live flow →

🪟Window Replacement slug:window-replacement

ORDER FEEcomplexity: mediumprovider label: installerphotos: optionalquestions: 6tiers: 3

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

  1. 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.

Q1window_countsingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
1_51–5 windows
  • tags: small_job
6_106–10 windows
  • tags: medium_job
11_1511–15 windows
  • price +$2,400 → line item "Upgrade: 11–15 windows (+4 windows)"
  • tags: large_job
16_plus16+ windows (whole-house replacement)
  • price +$6,000 → line item "Upgrade: 16+ windows (+10 windows)"
  • tags: whole_house
Q2window_typesingle_selectrequiredprice delta

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

valuelabel shown to customereffects on pricing / flow
double_hungDouble-hung (both sashes open)
  • tags: standard
casementCasement (crank to open)
  • tags: casement
slidingSliding (glide left/right)
  • tags: standard
bay_bowBay or bow window
  • price +$1,500 → line item "Bay or bow window (structural complexity)"
  • tags: bay_bow
picturePicture window (fixed, doesn't open)
  • tags: picture
mixMix of types
  • tags: standard
Q3primary_concernsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
energy_billsReducing energy bills
  • tags: efficiency
comfortEliminating drafts and cold spots
  • tags: comfort
noiseNoise reduction from traffic or neighbors
  • tags: noise
curb_appealImproving the look of my home
  • tags: aesthetic
securitySecurity — harder to break into
  • tags: security
Q4glass_upgradesingle_selectprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
standard_dpStandard double-pane (Low-E coating)
  • tags: double_pane
triple_paneTriple-pane (best insulation, noise reduction)
  • price +$1,200 → line item "Triple-pane glass upgrade (per 6 windows)"
  • tags: triple_pane
impactImpact-resistant (hurricane/storm zones)
  • price +$1,800 → line item "Impact-resistant glass upgrade (per 6 windows)"
  • tags: impact
Q5frame_materialsingle_selectprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
vinylVinyl (most popular — low maintenance, affordable)
  • tags: vinyl_frame
fiberglassFiberglass (strongest, best thermal performance)
  • price +$900 → line item "Fiberglass frame upgrade (per 6 windows)"
  • tags: fiberglass_frame
wood_cladWood interior / aluminum exterior (premium look)
  • price +$2,000 → line item "Wood-clad frame upgrade (per 6 windows)"
  • tags: wood_clad
aluminumAluminum (modern, commercial look)
  • tags: aluminum_frame
Q6installation_typesingle_selectprice delta

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

valuelabel shown to customereffects on pricing / flow
insertInsert / pocket replacement (frames stay in place)
  • tags: insert
full_frameFull-frame replacement (remove everything including frame)
  • price +$750 → line item "Full-frame replacement (per 6 windows)"
  • tags: full_frame
unsureNot sure — need professional assessmentno direct price effect

Tiers (3)

tier:goodGoodBest Value

Reliable vinyl windows — immediate comfort upgrade

Brand: Simonton / Ply Gem

basePrice (declared)

$4,500

Σ(lineItems) (computed)

$4,500

Line items (base price breakdown)

labelcategoryamount
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

tier:betterBetterMost Popularhighlighted (default recommended)

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)

labelcategoryamount
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-onprice
grilles_betweenGrilles-Between-GlassSimulated divided light look without cleaning hassle$250
window_sensorWindow 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

tier:bestBest

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)

labelcategoryamount
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 & Caulkequipment$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-onprice
impact_upgradeUpgrade to Impact-Resistant GlassHurricane or security laminated glass option$2,000
remote_sensorsSmart 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+scorewhen ALL conditions hold
good3window_count{ "1_5" }
good2frame_material{ "vinyl" }
good1primary_concern{ "curb_appeal" }
better3primary_concern{ "energy_bills", "comfort" }
better2window_count{ "6_10", "11_15" }
better1frame_material{ "fiberglass" }
best3glass_upgrade{ "triple_pane", "impact" }
best2primary_concern{ "noise" }
best2window_count{ "16_plus" }
best1frame_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

Source file: src/lib/flow-engine/verticals/window-replacement.ts · run the live flow →

🏡Siding Replacement slug:siding-replacement

ORDER FEEcomplexity: mediumprovider label: contractorphotos: requiredquestions: 5tiers: 3

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

  1. 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.

Q1siding_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
vinylVinyl siding — most popular, low maintenance
  • tags: vinyl
fiber_cementFiber cement (James Hardie) — premium durability
  • tags: fiber_cement
engineered_woodEngineered wood (LP SmartSide) — wood look, composite durability
  • tags: eng_wood
real_woodReal wood (cedar, redwood shingles)
  • tags: real_wood
metalMetal siding (steel or aluminum)
  • tags: metal
stuccoStucco or EIFS (dryvit)
  • tags: stucco
Q2home_sizesingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
smallUnder 1,500 sq ft siding
  • tags: small
medium1,500–2,500 sq ft siding
  • tags: medium
large2,500–3,500 sq ft siding
  • price +$3,000 → line item "Large Home Siding Area (2,500–3,500 sq ft)"
  • tags: large
xlOver 3,500 sq ft
  • price +$7,000 → line item "Extra-Large Home Siding Area (3,500+ sq ft)"
  • tags: xl
Q3current_conditionsingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
cosmeticJust needs a fresh look — still structurally sound
  • tags: cosmetic
agingFaded, chalky, minor cracks or gaps
  • tags: aging
damagedDamaged — rot, impact damage, or failing sections
  • tags: damaged
rottedSignificant rot or moisture damage to sheathing
  • price +$2,000 → line item "Sheathing rot repair (sheathing replacement + extra labor)"
  • tags: rotted
Q4insulation_wrapsingle_selectprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
noNo — standard housewrap onlyno direct price effect
yes_basicYes — 1/2" foam board (R-3)
  • price +$800 → line item "Foam Board Insulation R-3 (~$0.40/sq ft + labor)"
yes_premiumYes — 1" foam board (R-6) + Tyvek
  • price +$1,800 → line item "Premium Insulation Wrap R-6 + Tyvek (~$0.90/sq ft + labor)"
  • tags: insulated
Q5stylesingle_select

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

valuelabel shown to customereffects on pricing / flow
traditional_lapTraditional horizontal lap siding
  • tags: lap
board_battenBoard and batten (vertical — popular farmhouse style)
  • tags: board_batten
shingleShingle / shake style (New England look)
  • tags: shingle_style
dutch_lapDutch lap (beveled shadow lines)
  • tags: dutch_lap

Tiers (3)

tier:goodGoodBest Value

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)

labelcategoryamount
CertainTeed Vinyl Siding (2,000 sq ft)source: https://www.certainteed.com/products/siding/equipment$4,500
Tyvek Housewrapequipment$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

tier:betterBetterMost Popularhighlighted (default recommended)

James Hardie fiber cement — the premium choice

Brand: James Hardie HardiePlank

basePrice (declared)

$18,000

Σ(lineItems) (computed)

$18,000

Line items (base price breakdown)

labelcategoryamount
James Hardie HardiePlank (2,000 sq ft)source: https://www.jameshardie.com/products/hardieplank-lap-sidingequipment$7,500
ColorPlus Factory Paint Finishequipment$2,000
HardieWrap Housewrapequipment$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-onprice
foam_wrap1" Rigid Foam Insulation BoardR-6 continuous insulation under siding$2,000
hardie_soffitHardie 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

tier:bestBest

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)

labelcategoryamount
Hardie Panel or LP SmartSide (2,000 sq ft)source: https://lpcorp.com/products/smartsideequipment$12,000
1" Continuous Rigid Foam Insulationequipment$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-onprice
exterior_repaintFull Exterior RepaintCustom color match + 5-year exterior paint warranty$4,000
window_flashingFull 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+scorewhen ALL conditions hold
good3siding_type{ "vinyl" }
good2current_condition{ "cosmetic", "aging" }
good1home_size{ "small" }
better4siding_type{ "fiber_cement" }
better2home_size{ "medium", "large" }
better1current_condition{ "damaged" }
best3siding_type{ "real_wood", "metal", "stucco" }
best2insulation_wrap{ "yes_premium" }
best2current_condition{ "rotted" }
best1home_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

Source file: src/lib/flow-engine/verticals/siding-replacement.ts · run the live flow →

Generator Installation slug:generator-installation

ORDER FEEcomplexity: mediumprovider label: electricianphotos: requiredquestions: 5tiers: 3

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

  1. Photo of your electrical panel with the door open — show the breaker layout and main breaker amp rating for transfer switch planning
  2. 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.

Q1generator_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
portablePortable generator (manual setup during outage)
  • tags: portable
standby_partialStandby — essential circuits only (partial transfer switch)
  • tags: standby, partial
standby_wholeStandby — whole-home automatic (auto-starts in seconds)
  • tags: standby, whole_home
Q2backup_needsmulti_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
lights_outletsLights and outlets (essential)no direct price effect
refrigeratorRefrigerator/freezerno direct price effect
hvacHVAC (heating & cooling)
  • tags: hvac_load
sump_pumpSump pumpno direct price effect
medicalMedical equipment (CPAP, oxygen, etc.)
  • tags: medical
well_pumpWell pump
  • tags: well
ev_chargingEV charger
  • price +$500 → line item "EV Charging Circuit Add-On"
whole_houseEverything — full house power
  • tags: full_power
Q3fuel_typesingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
natural_gasNatural gas (permanent line, never runs out)
  • tags: nat_gas
propanePropane (if no natural gas available)
  • tags: propane
dual_fuelDual fuel (gas + propane backup)
  • tags: dual_fuel
gasolineGasoline (portable only)
  • tags: gasoline
Q4home_sqftsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
under_2000Under 2,000 sq ft
  • tags: small_home
2000_30002,000–3,000 sq ft
  • tags: medium_home
over_3000Over 3,000 sq ft
  • tags: large_home
Q5outage_frequencysingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
rareRarely (less than once a year)
  • tags: rare
occasionalOccasionally (a few times a year)
  • tags: occasional
frequentFrequently (monthly or storm-prone area)
  • tags: frequent
medical_dependentCritical — I or a family member depend on power
  • tags: critical

Tiers (3)

tier:goodGoodBest Value

Essential backup — lights, fridge, sump pump

Brand: Generac 10kW / Kohler 12RES

basePrice (declared)

$7,500

Σ(lineItems) (computed)

$7,500

Line items (base price breakdown)

labelcategoryamount
Generac Guardian 10kW Generatorsource: https://www.generac.com/residential-products/standby-generatorsequipment$3,800
16-Circuit Manual Transfer Switchsource: https://www.generac.com/residential-products/transfer-switchesequipment$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-padsequipment$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

tier:betterBetterMost Popularhighlighted (default recommended)

Whole-home protection for most households

Brand: Generac 18kW / Kohler 20RCL

basePrice (declared)

$12,000

Σ(lineItems) (computed)

$12,000

Line items (base price breakdown)

labelcategoryamount
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-switchesequipment$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-padsequipment$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-onprice
mobile_linkMobile Link Remote Monitor UpgradeLTE-based monitoring (if WiFi not reliable at generator)$150
maintenance_planAnnual 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

tier:bestBest

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)

labelcategoryamount
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-switchesequipment$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/padsequipment$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-onprice
smart_loadKohler Decision-Maker Load ControlIntelligent load shedding — prevents overload automatically$1,200
battery_integrationBattery 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+scorewhen ALL conditions hold
good3generator_type{ "standby_partial" }
good2outage_frequency{ "rare", "occasional" }
good1home_sqft{ "under_2000" }
better3generator_type{ "standby_whole" }
better2backup_needs{ "hvac" }
better2outage_frequency{ "frequent" }
better1home_sqft{ "2000_3000" }
best4outage_frequency{ "medical_dependent" }
best3backup_needs{ "whole_house" }
best2home_sqft{ "over_3000" }
best1backup_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

Source file: src/lib/flow-engine/verticals/generator-installation.ts · run the live flow →

🪵Flooring Installation slug:flooring-installation

ORDER FEEcomplexity: mediumprovider label: installerphotos: optionalquestions: 6tiers: 3has dynamic branching

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

  1. 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.

Q1flooring_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
lvpLuxury vinyl plank (LVP/LVT) — waterproof, durable
  • tags: lvp
hardwood_solidSolid hardwood — classic, can be refinished
  • tags: hardwood
hardwood_engineeredEngineered hardwood — more stable than solid
  • tags: engineered
laminateLaminate — wood-look at lower cost
  • tags: laminate
tile_ceramicCeramic or porcelain tile
  • tags: tile
carpetCarpet — bedrooms and living areas
  • tags: carpet
Q2square_footagesingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
under_500Under 500 sq ft (1–2 rooms)
  • tags: small
500_1000500–1,000 sq ft
  • tags: medium
1000_15001,000–1,500 sq ft
  • tags: large
over_1500Over 1,500 sq ft (most of the home)
  • price +$1,000 → line item "Whole-Home Coverage (1,500+ sq ft)"
  • tags: xl
Q3existing_floorsingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
subfloorBare subfloor / new constructionno direct price effect
vinylOld vinyl / linoleum
  • tags: remove_old
carpetExisting carpet to remove
  • tags: remove_old
hardwoodExisting hardwood (refinish or install over)
  • tags: over_hardwood
tileExisting tile (may need to demo)
  • tags: remove_tile
Q4rooms_typemulti_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
living_diningLiving / dining roomno direct price effect
bedroomsBedroomsno direct price effect
kitchenKitchenno direct price effect
bathroomsBathroomsno direct price effect
basementBasement
  • tags: basement
stairsStairs / stair landingno direct price effect
Q5grade_levelsingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
aboveAbove grade (2nd floor or higher)no direct price effect
on_gradeOn grade (main floor / slab)no direct price effect
below_gradeBelow grade (basement)
  • tags: basement
Q6wood_speciessingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
oakOak (most popular — natural grain, very durable)
  • tags: oak
mapleMaple (light, contemporary look)
  • tags: maple
hickoryHickory (dramatic grain, very hard)
  • tags: hickory
walnutWalnut (rich, dark, premium)
  • tags: walnut
white_oakWhite oak (trending — light with gray undertones)
  • tags: white_oak

Tiers (3)

tier:goodGoodBest Value

Durable, waterproof LVP — best value in flooring

Brand: LifeProof / CoreTec Essential

basePrice (declared)

$5,800

Σ(lineItems) (computed)

$5,800

Line items (base price breakdown)

labelcategoryamount
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

tier:betterBetterMost Popularhighlighted (default recommended)

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)

labelcategoryamount
Shaw Repel Engineered Hardwood (1,000 sq ft @ $4.50/sqft)source: https://www.shawfloors.com/flooring/hardwoodequipment$4,500
Underlayment & Vapor Barrierequipment$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-onprice
stairsStair Nose & Stair InstallationMatch flooring on staircase treads and risers$800
radiant_prepRadiant 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

tier:bestBest

Solid hardwood — a lifetime floor

Brand: Carlisle Wide Plank / Boen / Mirage

basePrice (declared)

$12,000

Σ(lineItems) (computed)

$12,000

Line items (base price breakdown)

labelcategoryamount
Mirage / Boen Solid Hardwood (1,000 sq ft)source: https://www.miragefloors.comequipment$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-onprice
custom_stainCustom Stain Color MatchingColor sample boards and custom stain blend$500
inlay_borderDecorative 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+scorewhen ALL conditions hold
good3flooring_type{ "lvp", "laminate", "carpet" }
good2square_footage{ "under_500" }
good2rooms_type{ "basement" }
better3flooring_type{ "hardwood_engineered" }
better2square_footage{ "500_1000", "1000_1500" }
better1grade_level{ "on_grade", "below_grade" }
best4flooring_type{ "hardwood_solid" }
best2wood_species{ "walnut", "white_oak" }
best1square_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

Source file: src/lib/flow-engine/verticals/flooring-installation.ts · run the live flow →

🪵Deck Building slug:deck-building

ORDER FEEcomplexity: mediumprovider label: contractorphotos: optionalquestions: 6tiers: 3has dynamic branching

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

  1. 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.

Q1deck_sizesingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
smallSmall — up to 200 sq ft (12×16 or similar)
  • tags: small
mediumMedium — 200–400 sq ft
  • tags: medium
largeLarge — 400–600 sq ft
  • price +$2,000 → line item "Large Deck (400–600 sq ft, +100 sq ft materials & labor)"
  • tags: large
xlMulti-level or over 600 sq ft
  • price +$6,000 → line item "Multi-Level or 600+ sq ft (structural complexity + extra materials)"
  • tags: xl
Q2materialsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
pressure_treatedPressure-treated wood (ACQ) — most affordable
  • tags: pt_wood
cedar_redwoodCedar or redwood — natural beauty, naturally rot-resistant
  • tags: cedar
compositeComposite decking (Trex, TimberTech, Fiberon)
  • tags: composite
pvcPVC / all-plastic (Azek, Fiberon Paramount)
  • tags: pvc
hardwood_ipeHardwood (Ipe, Cumaru) — extremely durable
  • tags: hardwood_deck
Q3deck_heightsingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
ground_levelGround level (less than 12" off ground)
  • tags: ground
lowLow — 1–3 feet off the ground
  • tags: low_deck
midMid — 4–8 feet (typical 2nd story walkout)
  • price +$1,500 → line item "Mid-Height Deck Surcharge (extra structural posts & beams)"
  • tags: mid_deck
highHigh — over 8 feet
  • price +$4,000 → line item "High Deck Surcharge (engineering, LVL beams, extended posts)"
  • tags: high_deck
Q4featuresmulti_selectprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
railingRailing systemno direct price effect
stairsStairs to yardno direct price effect
pergolaPergola or shade structure
  • price +$4,000 → line item "Attached Pergola (materials + 30–40 hrs labor)"
built_in_benchBuilt-in bench seating
  • price +$800 → line item "Built-In Bench Seating (lumber + 6 hrs labor)"
outdoor_lightingDeck lighting (post caps, step lights)
  • price +$1,000 → line item "Deck Lighting Package (fixtures + wiring + 8 hrs labor)"
cable_railingCable or glass railing (premium look)
  • price +$2,500 → line item "Cable Railing Upgrade over standard wood railing"
  • tags: cable_rail
Q5composite_brandsingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
trex_enhanceTrex Enhance Basic — entry composite
  • tags: composite_budget
trex_selectTrex Select — mid-range, solid colors
  • tags: composite_mid
trex_transcendTrex Transcend — premium, looks most like wood
  • tags: composite_premium
timbertech_azekTimberTech AZEK — quietest, coolest surface temp
  • tags: composite_premium
fiberonFiberon Paramount (PVC) — fully cellular, most durable
  • tags: composite_premium
Q6timelinesingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
asapBefore summer / as soon as possible
  • tags: urgent
couple_monthsWithin a couple monthsno direct price effect
fall_springFall or next spring is fineno direct price effect

Tiers (3)

tier:goodGoodBest Value

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)

labelcategoryamount
Pressure-Treated Decking (300 sq ft)equipment$2,500
PT Framing, Joists & Ledgerequipment$1,800
Concrete Piers & Footingsequipment$1,200
PT Wood Railing Systemequipment$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

tier:betterBetterMost Popularhighlighted (default recommended)

Composite deck — beautiful and virtually maintenance-free

Brand: Trex Transcend / TimberTech

basePrice (declared)

$16,000

Σ(lineItems) (computed)

$16,000

Line items (base price breakdown)

labelcategoryamount
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 & Footingsequipment$2,000
Hidden Fastener System (Camo or Trex Hideaway)equipment$600
Composite Stairsequipment$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-onprice
lighting_pkgTrex Deck Lighting PackagePost cap lights + step lights (full deck)$1,200
pergolaAttached 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

tier:bestBest

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)

labelcategoryamount
AZEK Harvest Collection or Ipe (300 sq ft)source: https://www.azek.com/products/deckingequipment$10,000
Stainless Cable Railing Systemequipment$4,500
Steel or Heavy PT Framingequipment$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-onprice
outdoor_kitchenOutdoor Kitchen Built-InGrill station, mini fridge, granite counter$8,000
fire_pitGas 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+scorewhen ALL conditions hold
good3material{ "pressure_treated" }
good2deck_size{ "small" }
good1deck_height{ "ground_level" }
better3material{ "composite" }
better2deck_size{ "medium", "large" }
better1composite_brand{ "trex_transcend", "timbertech_azek" }
best4material{ "hardwood_ipe" }
best3material{ "pvc" }
best2deck_size{ "xl" }
best2features{ "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

Source file: src/lib/flow-engine/verticals/deck-building.ts · run the live flow →

🏠Garage Door Replacement slug:garage-door-replacement

ORDER FEEcomplexity: mediumprovider label: installerphotos: requiredquestions: 5tiers: 3

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

  1. Photo of your current garage door from the driveway — show the full door, frame, and any visible damage or weathering
  2. 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.

Q1door_sizesingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
single_8x7Single car — 8×7 ft
  • tags: single
single_9x7Single car — 9×7 ft (most common)
  • tags: single
double_16x7Double car — 16×7 ft
  • tags: double
double_18x7Double car — 18×7 ft (wide)
  • price +$400 → line item "Wide Door Upgrade (18x7)"
  • tags: double
two_singlesTwo single doors
  • price +$1,000 → line item "Second Door Addition"
  • tags: two_singles
customCustom size or carriage house
  • price +$2,000 → line item "Custom Door Allowance"
  • tags: custom
Q2materialsingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
steel_standardSteel — standard (most popular)
  • tags: steel
steel_insulatedSteel — insulated (better energy & noise)
  • tags: insulated
carriage_steelCarriage house style — steel with windows
  • tags: carriage
carriage_woodReal wood carriage house
  • price +$3,000 → line item "Real Wood Door Premium"
  • tags: wood_door
aluminum_glassAluminum / full-view glass panels (modern)
  • price +$4,000 → line item "Aluminum Glass Door Premium"
  • tags: modern
Q3insulationsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
not_importantNot important — standalone detached garage
  • tags: no_insulation
moderateSomewhat — attached garage but not conditioned space
  • tags: mid_insulation
importantVery important — living space above or adjacent
  • tags: high_insulation
Q4openersingle_selectprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
noNo — keeping my current openerno direct price effect
standardYes — standard chain drive (LiftMaster 8065)
  • price +$300 → line item "Garage Door Opener (Chain Drive)"
  • tags: standard_opener
smartYes — smart belt drive with MyQ app (LiftMaster 87504-267)
  • price +$600 → line item "Smart Garage Door Opener (Belt Drive)"
  • tags: smart_opener
Q5current_issuesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
cosmeticWant a new look / curb appeal update
  • tags: cosmetic
damagedDamaged — dented, broken panels
  • tags: damage
old_noisyOld, noisy, or hard to operate
  • tags: old
new_homeNew home purchase / renovation
  • tags: renovation
energyBetter insulation / energy efficiency
  • tags: efficiency

Tiers (3)

tier:goodGoodBest Value

Reliable steel door — practical and durable

Brand: Clopay 4050 / CHI 2250

basePrice (declared)

$1,800

Σ(lineItems) (computed)

$1,800

Line items (base price breakdown)

labelcategoryamount
Clopay 4050 or CHI 2250 16×7 Doorsource: https://www.clopay.com/garage-doorsequipment$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

tier:betterBetterMost Popularhighlighted (default recommended)

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)

labelcategoryamount
Clopay Gallery 16×7 Door with Windowssource: https://www.clopay.com/products/galleryequipment$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-onprice
smart_openerLiftMaster 87504 Smart Opener w/ CameraBelt drive, whisper-quiet, built-in camera, MyQ app$550
keypadExterior 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

tier:bestBest

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)

labelcategoryamount
Clopay Avante Glass Door or Custom Woodsource: https://www.clopay.com/products/avanteequipment$3,000
Premium Hardware & Spring Systemequipment$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-onprice
floor_sealCustom Threshold SealWeathertight seal prevents water and pests under door$150
smart_lockGarage 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+scorewhen ALL conditions hold
good3material{ "steel_standard", "steel_insulated" }
good2current_issue{ "damaged", "old_noisy" }
good1insulation{ "not_important" }
better3material{ "carriage_steel" }
better2current_issue{ "cosmetic", "new_home" }
better1insulation{ "important" }
best4material{ "aluminum_glass", "carriage_wood" }
best2opener{ "smart" }
best1door_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

Source file: src/lib/flow-engine/verticals/garage-door-replacement.ts · run the live flow →

🔒Home Security System slug:home-security-system

ORDER FEEcomplexity: mediumprovider label: technicianphotos: nonequestions: 6tiers: 3

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.

Q1home_sizesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
apartment_condoApartment or condo
  • tags: small
small_homeSmall house — under 1,500 sq ft
  • tags: small
medium_homeMedium house — 1,500–3,000 sq ft
  • tags: medium
large_homeLarge house — over 3,000 sq ft
  • tags: large
Q2monitoringsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
self_monitorSelf-monitoring only (app alerts, no monthly fee)
  • tags: self_monitor
professional24/7 professional monitoring (police/fire dispatch)
  • tags: pro_monitor
not_sureNot sure — open to bothno direct price effect
Q3system_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
diy_wirelessDIY wireless (Ring, SimpliSafe — you install it)
  • tags: diy
pro_installedProfessionally installed wireless
  • tags: pro_installed
hardwiredHardwired system (panel + cameras + sensors)
  • tags: hardwired
Q4camerassingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
noneNot a priority — just alarm system
  • tags: no_cameras
doorbellJust a video doorbell
  • tags: doorbell_only
basicA few cameras (front door, garage, backyard)
  • tags: cameras_basic
full_coverageFull coverage — all entry points + indoor
  • tags: cameras_full
Q5smart_homesingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
noNo — standalone security system
  • tags: standalone
voiceYes — Alexa / Google Home voice control
  • tags: voice_control
full_integrationYes — full integration with lights, locks, thermostat
  • tags: full_smart
Q6entry_pointssingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
fewMinimal — 2–4 main entry points
  • tags: few_sensors
standardStandard — 5–10 doors and windows
  • tags: standard_sensors
manyComprehensive — 10+ (all windows and doors)
  • tags: many_sensors

Tiers (3)

tier:goodGoodBest Value

Reliable DIY-installed wireless system

Brand: Ring Alarm Pro / SimpliSafe

basePrice (declared)

$650

Σ(lineItems) (computed)

$650

Line items (base price breakdown)

labelcategoryamount
Ring Alarm Pro 8-Piece Kitsource: https://ring.com/products/alarm-pro-base-stationequipment$250
Ring Video Doorbell Pro 2source: https://ring.com/products/video-doorbell-pro-2equipment$220
2× Ring Outdoor Cam Plussource: https://ring.com/products/outdoor-camera-plusequipment$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

tier:betterBetterMost Popularhighlighted (default recommended)

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)

labelcategoryamount
Qolsys IQ Panel 4 + 8 Sensorssource: https://www.qolsys.com/iq4equipment$800
4× Alarm.com Camerassource: https://www.alarm.com/partners/dealer-portalequipment$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-onprice
smart_locksSchlage Encode Smart Lock (2 doors)Z-Wave locks with keypad + auto-lock$500
smoke_coSmart 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

tier:bestBest

Enterprise-grade protection for your home

Brand: Resideo ProSeries / Napco / 2GIG

basePrice (declared)

$5,000

Σ(lineItems) (computed)

$5,000

Line items (base price breakdown)

labelcategoryamount
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 Sensorsequipment$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-onprice
doorbell_4k4K Video Doorbell with Face RecognitionIdentifies known faces, alerts on strangers$300
panic_buttonsWireless 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+scorewhen ALL conditions hold
good3system_type{ "diy_wireless" }
good2monitoring{ "self_monitor" }
good1home_size{ "apartment_condo", "small_home" }
better3system_type{ "pro_installed" }
better2monitoring{ "professional" }
better1home_size{ "medium_home" }
best3system_type{ "hardwired" }
best2cameras{ "full_coverage" }
best2smart_home{ "full_integration" }
best1home_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

Source file: src/lib/flow-engine/verticals/home-security-system.ts · run the live flow →

🏡Smart Home Setup slug:smart-home-setup

ORDER FEEcomplexity: mediumprovider label: technicianphotos: nonequestions: 5tiers: 3

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.

Q1prioritymulti_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
lightingSmart lightingno direct price effect
thermostatSmart thermostatno direct price effect
securityLocks, cameras, alarmsno direct price effect
entertainmentAV / entertainment systemno direct price effect
shadesMotorized shades or blindsno direct price effect
whole_homeFull integration — everything works together
  • tags: whole_home
Q2platformsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
amazonAmazon Alexa (Echo)
  • tags: alexa
googleGoogle Home (Nest)
  • tags: google
appleApple HomeKit / Siri
  • tags: apple
no_preferenceNo preference — recommend the best
  • tags: open
control4Professional grade (Control4 / Crestron)
  • tags: pro_av
Q3home_sizesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
smallUnder 1,500 sq ft
  • tags: small
medium1,500–3,000 sq ft
  • tags: medium
large3,000–5,000 sq ft
  • tags: large
xlOver 5,000 sq ft or estate
  • tags: xl
Q4wifisingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
strongStrong everywhere — mesh network or recent routerno direct price effect
okOK in most rooms but some dead spots
  • tags: wifi_issues
poorPoor — single router, lots of dead spots
  • tags: needs_wifi
Q5tech_comfortsingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
comfortableVery comfortable — I'll configure it myself
  • tags: diy
moderateModerate — I can do basics but want it set up rightno direct price effect
hands_offNot very — I want it to just work, no fiddling
  • tags: hands_off

Tiers (3)

tier:goodGoodBest Value

Core smart devices — big convenience upgrade

Brand: Nest / Lutron Caseta / Schlage

basePrice (declared)

$1,500

Σ(lineItems) (computed)

$1,500

Line items (base price breakdown)

labelcategoryamount
Google Nest Learning Thermostatsource: https://store.google.com/us/product/nest_learning_thermostatequipment$250
Lutron Caseta Wireless Kit (6 dimmers)source: https://www.lutron.com/en-US/Products/Pages/StandAloneControls/Caseta/Overview.aspxequipment$400
Schlage Encode Smart Locksource: https://www.schlage.com/en/home/smart-locks/encode.htmlequipment$300
Amazon Echo Show 5 Hubsource: https://www.amazon.com/dp/B09B2SBHQKequipment$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

tier:betterBetterMost Popularhighlighted (default recommended)

Integrated smart home — everything works together

Brand: Lutron / Ecobee / Ring / Sonos

basePrice (declared)

$7,000

Σ(lineItems) (computed)

$7,000

Line items (base price breakdown)

labelcategoryamount
Lutron RadioRA 3 System (15 devices)source: https://www.lutron.com/en-US/Solutions/Pages/Whole-Home/RadioRA3.aspxequipment$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-systemequipment$800
Sonos Era 100 (2 rooms)source: https://www.sonos.com/en-us/shop/era-100equipment$600
Lutron Serena Motorized Shades (4 windows)source: https://www.lutron.com/en-US/Products/Pages/Standalone-Controls/Serena/Overview.aspxequipment$1,000
Eero Pro 6E Mesh WiFi (3-pack)source: https://eero.com/shop/eero-pro-6eequipment$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-onprice
additional_roomsAdditional Room Audio (Sonos)Per room Sonos Era 100 installation$500
outdoor_audioOutdoor 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

tier:bestBest

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)

labelcategoryamount
Control4 Controller + Touchpanels (2)source: https://www.control4.comequipment$5,000
Lutron HomeWorks QSX Lighting Systemsource: https://www.lutron.com/en-US/Solutions/Pages/Whole-Home/HomeWorks.aspxequipment$6,000
4K AV Distribution (5 rooms)source: https://www.control4.com/products/videoequipment$5,000
Whole-Home Audio (Triad / Sonos for 8 zones)source: https://triad-speakers.comequipment$3,500
Motorized Shades (whole home)source: https://www.lutron.com/en-US/Products/Pages/Standalone-Controls/SerenaShades/Overview.aspxequipment$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-onprice
outdoor_avOutdoor Audio & Video PackageWeatherproof speakers + outdoor TV + Control4 integration$4,000
cinema_roomDedicated 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+scorewhen ALL conditions hold
good3tech_comfort{ "comfortable" }
good2home_size{ "small" }
good1platform{ "amazon", "google", "apple" }
better3tech_comfort{ "hands_off" }
better2home_size{ "medium", "large" }
better1priority{ "whole_home" }
best4platform{ "control4" }
best3home_size{ "xl" }
best1priority{ "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

Source file: src/lib/flow-engine/verticals/smart-home-setup.ts · run the live flow →

🏠Insulation slug:insulation

ORDER FEEcomplexity: mediumprovider label: insulation specialistphotos: optionalquestions: 5tiers: 3

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

  1. 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.

Q1areamulti_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
atticAtticno direct price effect
wallsExterior wallsno direct price effect
crawlspaceCrawl space / floorno direct price effect
basementBasement rim joists or wallsno direct price effect
garageGarage ceiling or wallsno direct price effect
Q2insulation_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
blown_fiberglassBlown-in fiberglass (attic standard)
  • tags: blown_fg
blown_celluloseBlown-in cellulose (recycled material, denser)
  • tags: blown_cel
spray_foam_openOpen-cell spray foam (good air sealing)
  • tags: spray_open
spray_foam_closedClosed-cell spray foam (best R-value per inch)
  • tags: spray_closed
fiberglass_battsFiberglass batts (walls/floors)
  • tags: batts
rigid_foamRigid foam board (basement walls, exterior)
  • tags: rigid
Q3current_r_valuesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
noneNone or very little insulation
  • tags: no_insulation
someSome — but I know it's insufficient
  • tags: some_insulation
oldHas old insulation (fiberglass batts, unknown age)
  • tags: old_insulation
unknownNot sure what's thereno direct price effect
Q4home_sqftsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
smallUnder 1,200 sq ft
  • tags: small
medium1,200–2,200 sq ft
  • tags: medium
large2,200–3,500 sq ft
  • tags: large
xlOver 3,500 sq ft
  • tags: xl
Q5primary_goalsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
energy_billsReduce energy bills
  • tags: efficiency
comfortEliminate hot/cold rooms or drafts
  • tags: comfort
soundReduce noise between rooms or outside
  • tags: sound
moistureMoisture control or condensation issues
  • tags: moisture
rebateTaking advantage of utility rebates
  • tags: rebate

Tiers (3)

tier:goodGoodBest Value

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)

labelcategoryamount
Blown-In Fiberglass (1,500 sq ft attic to R-49)labor$1,200
Air Sealing (attic penetrations)labor$500
Installation Laborlabor$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

tier:betterBetterMost Popularhighlighted (default recommended)

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)

labelcategoryamount
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 Sealinglabor$800
Patching & Cleanuplabor$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-onprice
energy_auditBlower Door Energy AuditIdentifies all air leaks before insulating — maximizes value$500
crawl_insulationCrawl 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

tier:bestBest

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)

labelcategoryamount
Closed-Cell SPF — Attic Deck (1,500 sq ft × 3")source: https://www.icynene.com/en-us/products/closed-cellequipment$6,000
Closed-Cell SPF — Crawl Space Wallslabor$3,000
Rim Joist SPF Treatmentlabor$1,200
Certified Application Laborlabor$3,500
Post-Install Air Quality Clearancelabor$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-onprice
dense_pack_wallsDense-Pack Cellulose WallsComplement SPF with wall insulation for complete envelope$3,000
ervEnergy 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+scorewhen ALL conditions hold
good3area{ "attic" }
good2insulation_type{ "blown_fiberglass", "blown_cellulose", "fiberglass_batts" }
good2home_sqft{ "small" }
better3primary_goal{ "energy_bills", "comfort" }
better2home_sqft{ "medium", "large" }
better1current_r_value{ "none", "some" }
best4insulation_type{ "spray_foam_closed" }
best2primary_goal{ "moisture", "sound" }
best1home_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

Source file: src/lib/flow-engine/verticals/insulation.ts · run the live flow →

🏠Attic Insulation slug:attic-insulation

ORDER FEEcomplexity: mediumprovider label: insulation specialistphotos: optionalquestions: 5tiers: 3

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

  1. 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.

Q1current_situationsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
noneNone or almost none
  • tags: no_insulation
old_fiberglassOld fiberglass batts (laid flat, compressing over time)
  • tags: old
some_blownSome blown-in but not enough (under R-30)
  • tags: insufficient
vermiculiteOld vermiculite (may contain asbestos — needs testing)
  • tags: vermiculite
good_addingGood condition — just want to add R-value
  • tags: adding
Q2attic_sqftsingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
smallUnder 800 sq ft
  • tags: small
medium800–1,500 sq ft
  • tags: medium
large1,500–2,500 sq ft
  • price +$800 → line item "Large Attic Area Adjustment (+800 sq ft)"
  • tags: large
xlOver 2,500 sq ft
  • price +$1,500 → line item "Extra-Large Attic Area Adjustment (2,500+ sq ft)"
  • tags: xl
Q3accesssingle_selectrequiredprice delta

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

valuelabel shown to customereffects on pricing / flow
scuttleStandard scuttle hatch (pull-down or removable panel)
  • tags: standard
walk_inWalk-up stairs or walk-in attic
  • tags: easy_access
tightVery tight — limited clearance or no standing room
  • price +$200 → line item "Tight Access Labor Surcharge"
  • tags: tight
Q4air_sealingsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
yesYes — do both for maximum efficiency
  • tags: air_seal
noInsulation only
  • tags: no_air_seal
unsureI'm not sure what that meansno direct price effect
Q5goalsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
energy_billsLower energy bills
  • tags: bills
comfortWarmer in winter, cooler in summer
  • tags: comfort
rebateQualify for utility rebates
  • tags: rebate
ice_damsPrevent ice dams (attic heat escaping to roof)
  • tags: ice_dams

Tiers (3)

tier:goodGoodBest Value

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)

labelcategoryamount
OC PROPINK L77 Blown-In Fiberglass (1,200 sq ft to R-38)source: https://www.owenscorning.com/insulation/blown-in/propinkequipment$1,000
Installation Labor (4 hrs)labor$400
Attic Hatch Insulation + Weatherstripequipment$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

tier:betterBetterMost Popularhighlighted (default recommended)

R-49 + comprehensive air sealing

Brand: CertainTeed InsulSafe + Spray Foam Sealing

basePrice (declared)

$2,800

Σ(lineItems) (computed)

$2,800

Line items (base price breakdown)

labelcategoryamount
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 Coverequipment$200
Pull-Down Stair Insulation Coverequipment$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-onprice
bathroom_fansBathroom Exhaust Fan Duct SealingReroute/seal bathroom fans venting into attic (code violation)$300
vermiculite_testVermiculite 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

tier:bestBest

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)

labelcategoryamount
Closed-Cell SPF on Roof Deck (1,200 sq ft, 3")source: https://www.icynene.com/en-us/products/closed-cellequipment$5,000
Transition Air Sealing at Eaves (2 hrs)labor$800
Attic Hatch Upgrade + Air Barrierequipment$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+scorewhen ALL conditions hold
good3current_situation{ "good_adding", "some_blown" }
good2air_sealing{ "no" }
good1attic_sqft{ "small" }
better3air_sealing{ "yes" }
better2current_situation{ "none", "old_fiberglass" }
better2goal{ "ice_dams", "comfort", "energy_bills" }
best3goal{ "ice_dams" }attic_sqft{ "large", "xl" }
best2goal{ "rebate" }
best1current_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

Source file: src/lib/flow-engine/verticals/attic-insulation.ts · run the live flow →

🏠Chimney Repair slug:chimney-repair

ORDER FEEcomplexity: mediumprovider label: masonphotos: requiredquestions: 5tiers: 3

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

  1. 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
  2. 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.

Q1chimney_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
masonry_brickMasonry — brick or stone (classic chimney)
  • tags: masonry
masonry_blockMasonry — concrete block
  • tags: masonry
prefabPrefab / factory-built metal chimney
  • tags: prefab
unknownNot sureno direct price effect
Q2primary_issuesingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
inspectionAnnual inspection / cleaning (no known issues)
  • tags: inspection
leakWater leaking into fireplace or ceiling
  • tags: leak, urgent
cracksVisible cracks in brick or mortar
  • tags: cracks
smokeSmoke coming back into house
  • tags: draft_issue
cap_missingMissing or damaged chimney cap
  • tags: cap
rebuildChimney needs partial or full rebuild
  • price +$1,500 → line item "Partial / Full Chimney Rebuild Surcharge"
  • tags: rebuild
Q3last_inspectionsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
recentWithin the last 2 years
  • tags: maintained
few_years3–5 years ago
  • tags: needs_check
long_agoMore than 5 years or never
  • tags: overdue
unknownNot sureno direct price effect
Q4fireplace_usesingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
rarelyRarely or neverno direct price effect
occasionalA few times per yearno direct price effect
regularRegularly — weekly or more in season
  • tags: regular_use
primary_heatPrimary heat source
  • tags: primary_heat
Q5liner_concernsingle_selectprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
unknownNo idea — never had it checkedno direct price effect
crackedTold it's cracked or deteriorating
  • price +$1,000 → line item "Liner Repair / Relining Surcharge"
  • tags: liner_damaged
goodWas inspected and passed recentlyno direct price effect
no_linerNo liner / older home — needs assessment
  • price +$1,000 → line item "New Liner Installation Surcharge"
  • tags: no_liner

Tiers (3)

tier:goodGoodBest Value

Inspection, cleaning & minor repairs

Brand: CSIA-Certified Sweep

basePrice (declared)

$400

Σ(lineItems) (computed)

$400

Line items (base price breakdown)

labelcategoryamount
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

tier:betterBetterMost Popularhighlighted (default recommended)

Masonry repair & waterproofing — stop the leaks

Brand: ChimneySaver / Saver Systems

basePrice (declared)

$2,500

Σ(lineItems) (computed)

$2,500

Line items (base price breakdown)

labelcategoryamount
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-onprice
damper_upgradeTop-Sealing Damper (Lyemance)Replaces throat damper — seals completely when closed$350
chase_coverStainless 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

tier:bestBest

Chimney liner installation — complete restoration

Brand: HeatShield / Flexmaster Stainless Liner

basePrice (declared)

$5,000

Σ(lineItems) (computed)

$5,000

Line items (base price breakdown)

labelcategoryamount
Level 3 CSIA Inspection & Video Report (2 hrs)labor$600
316L Stainless Liner with Insulation Wrapsource: https://www.flexmaster.comequipment$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-onprice
firebox_rebuildFirebox Repair (HeatShield resurfacing)Repair cracked firebox with HeatShield ceramic coating$800
smoke_chamberSmoke 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+scorewhen ALL conditions hold
good3primary_issue{ "inspection", "cap_missing" }
good2last_inspection{ "recent", "few_years" }
good1chimney_type{ "prefab" }
better3primary_issue{ "leak", "cracks" }
better2last_inspection{ "long_ago", "unknown" }
better1chimney_type{ "masonry_brick" }
best4liner_concern{ "cracked", "no_liner" }
best3primary_issue{ "rebuild", "smoke" }
best2fireplace_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

Source file: src/lib/flow-engine/verticals/chimney-repair.ts · run the live flow →

🔧Plumbing Repair slug:plumbing-repair

ORDER FEEcomplexity: mediumprovider label: plumberphotos: optionalquestions: 4tiers: 3

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

  1. 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.

Q1issue_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
leakLeak — pipe, fixture, or under sink
  • tags: leak, urgent
drain_clogClogged drain (tub, sink, or main line)
  • tags: clog
toiletToilet issue (running, clogged, won't flush)
  • tags: toilet
fixtureReplace faucet, showerhead, or toilet
  • tags: fixture
water_pressureLow water pressure throughout home
  • tags: pressure
sewerSewer smell or slow drains throughout
  • tags: sewer, urgent
Q2severitysingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
emergencyEmergency — active leak or flooding
  • tags: emergency
todayNeed it fixed today
  • tags: urgent
soonSoon — within a few daysno direct price effect
when_availableNo rush — schedule when convenientno direct price effect
Q3home_agesingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
newerModern — copper or PVC (installed after 1990)no direct price effect
mixedMixed — some older, some newerno direct price effect
oldOlder — galvanized steel or lead (pre-1970s)
  • tags: old_pipes
unknownNot sureno direct price effect
Q4locationsingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
bathroomBathroomno direct price effect
kitchenKitchenno direct price effect
basementBasement or utility roomno direct price effect
yardYard or main line
  • tags: main_line
multipleMultiple locationsno direct price effect

Tiers (3)

tier:goodGoodBest Value

Targeted repair — fix the immediate issue

Brand: Licensed Plumber

basePrice (declared)

$300

Σ(lineItems) (computed)

$300

Line items (base price breakdown)

labelcategoryamount
Service Call & Diagnosis (~0.5 hrs @ $150/hr)labor$100
Repair Labor (up to 2 hrs @ $75/hr)labor$150
Standard Parts & Materialsequipment$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

tier:betterBetterMost Popularhighlighted (default recommended)

Full diagnosis + repair + preventive check

Brand: Licensed Master Plumber

basePrice (declared)

$750

Σ(lineItems) (computed)

$750

Line items (base price breakdown)

labelcategoryamount
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-onprice
hydro_jetHydro-Jetting (drain clearing)High-pressure water clears roots and buildup$450
pressure_regulatorPressure 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

tier:bestBest

Repiping or full system repair

Brand: Licensed Master Plumber

basePrice (declared)

$4,000

Σ(lineItems) (computed)

$4,000

Line items (base price breakdown)

labelcategoryamount
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 Inspectionlabor$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-onprice
water_filtrationWhole-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+scorewhen ALL conditions hold
good3issue_type{ "toilet", "fixture", "drain_clog" }
good2severity{ "when_available", "soon" }
better3issue_type{ "leak", "water_pressure" }
better2home_age{ "old" }
better1severity{ "today" }
best4issue_type{ "sewer" }
best3severity{ "emergency" }
best2home_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

Source file: src/lib/flow-engine/verticals/plumbing-repair.ts · run the live flow →

Electrical Services slug:electrical-services

ORDER FEEcomplexity: mediumprovider label: electricianphotos: requiredquestions: 5tiers: 3has dynamic branching

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

  1. Photo of your electrical panel with the door open — show breaker labels and the main breaker amp rating clearly
  2. 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.

Q1service_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
outlet_switchAdd or replace outlets / switches
  • tags: minor
panel_upgradePanel upgrade or breaker replacement
  • tags: panel
new_circuitAdd new circuits (kitchen, garage, EV, hot tub)
  • tags: circuit
ceiling_fanCeiling fan installation
  • tags: fan
lightingLight fixture installation or recessed lighting
  • tags: lighting
whole_houseWhole-house rewiring
  • tags: rewire
outdoorOutdoor / landscape lighting or outlets
  • tags: outdoor
Q2quantitysingle_selectrequiredprice delta

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

valuelabel shown to customereffects on pricing / flow
1Just 1no direct price effect
2_32–3
  • price +$150 → line item "Additional Items (2–3)"
4_plus4 or more
  • price +$350 → line item "Multiple Items (4+)"
Q3panel_sizesingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
200amp200A panel (modern standard)no direct price effect
100amp100A panel (older home — may need upgrade)
  • tags: small_panel
60amp60A or fuse box (significant upgrade needed)
  • price +$1,500 → line item "Fuse Box / 60A Panel Upgrade"
  • tags: old_panel
unknownNot sureno direct price effect
Q4urgencysingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
emergencyEmergency — power out or safety hazard
  • tags: emergency
soonSoon — within a weekno direct price effect
plannedPlanned project — flexible timingno direct price effect
Q5home_agesingle_selectprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
newBuilt after 1990 — modern wiringno direct price effect
midBuilt 1970–1990
  • tags: mid_age
oldBuilt before 1970 — may have aluminum wiring
  • price +$1,000 → line item "Older Home Wiring Allowance"
  • tags: old_wiring

Tiers (3)

tier:goodGoodBest Value

Single-task electrical service

Brand: Licensed Electrician

basePrice (declared)

$250

Σ(lineItems) (computed)

$250

Line items (base price breakdown)

labelcategoryamount
Service Call & Diagnosis (0.5 hr)labor$85
Installation Labor (1.5 hrs avg)labor$120
Parts & Materialsequipment$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

tier:betterBetterMost Popularhighlighted (default recommended)

Panel upgrade or dedicated circuit installation

Brand: Licensed Master Electrician

basePrice (declared)

$2,500

Σ(lineItems) (computed)

$2,500

Line items (base price breakdown)

labelcategoryamount
200A Panel (Square D QO or Siemens)source: https://www.homedepot.com/b/Electrical-Breaker-Boxes-Load-Centers/200-Amp/N-5yc1vZc25vZl4gequipment$800
Installation Labor — master electrician (6 hrs)labor$1,100
Permit & Inspectionpermits$350
Misc Materials & Breakersequipment$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-onprice
ev_circuit50A EV Charging CircuitDedicated 50A circuit for Level 2 EV charger$400
whole_house_surgeWhole-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

tier:bestBest

Complete electrical renovation — safe and future-ready

Brand: Licensed Master Electrician

basePrice (declared)

$10,000

Σ(lineItems) (computed)

$10,000

Line items (base price breakdown)

labelcategoryamount
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-5yc1vZc25vZl4gequipment$1,800
Drywall Repair & Patchinglabor$1,200
Permits, Inspections & Engineeringpermits$800
Misc Materials & Fixturesequipment$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+scorewhen ALL conditions hold
good3service_type{ "outlet_switch", "ceiling_fan", "lighting", "outdoor" }
good1urgency{ "soon" }
better3service_type{ "panel_upgrade", "new_circuit" }
better2panel_size{ "100amp", "60amp" }
best4service_type{ "whole_house" }
best3home_age{ "old" }
best2urgency{ "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

Source file: src/lib/flow-engine/verticals/electrical-services.ts · run the live flow →

🎨Interior Painting slug:interior-painting

ORDER FEEcomplexity: mediumprovider label: painterphotos: optionalquestions: 4tiers: 3

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

  1. 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.

Q1scopesingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
single_roomOne room
  • price −$1,000 → line item "Single room discount"
  • tags: small
few_rooms2–4 rooms
  • tags: medium
whole_houseWhole house interior
  • price +$2,000 → line item "Whole house upcharge"
  • tags: large
ceilings_trimCeilings and trim only (no walls)
  • price −$500 → line item "Ceilings & trim only discount"
  • tags: detail
Q2home_sqftsingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
smallUnder 1,000 sq ft
  • tags: small
medium1,000–2,000 sq ft
  • tags: medium
large2,000–3,500 sq ft
  • tags: large
xlOver 3,500 sq ft
  • price +$1,000 → line item "XL space surcharge"
  • tags: xl
Q3paint_qualitysingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
standardStandard — durable, good coverage (Sherwin-Williams ProClassic)
  • tags: standard_paint
premiumPremium — scrubbable, washable, better hide (SW Emerald or Duration)
  • tags: premium_paint
designerDesigner — Benjamin Moore Aura or Farrow & Ball
  • price +$800 → line item "Designer paint upgrade"
  • tags: designer_paint
Q4prep_neededsingle_selectprice delta

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

valuelabel shown to customereffects on pricing / flow
goodGood — clean walls, just need paintno direct price effect
minor_repairsMinor repairs needed — nail holes, small cracks
  • price +$300 → line item "Minor wall repairs"
major_prepSignificant prep — large holes, texture, or wallpaper removal
  • price +$1,000 → line item "Heavy prep & wall repair"
  • tags: heavy_prep

Tiers (3)

tier:goodGoodBest Value

Clean, professional paint job with quality materials

Brand: Sherwin-Williams ProClassic

basePrice (declared)

$3,000

Σ(lineItems) (computed)

$3,000

Line items (base price breakdown)

labelcategoryamount
Paint (SW ProClassic, 1,500 sq ft)source: https://www.sherwin-williams.com/content/sw/en-us/us/paint/interior/proclassic.htmlequipment$800
Labor (prep, tape, 2 coats, ~8 hrs @ $112/hr)labor$1,800
Primer, Caulk & Materialsequipment$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

tier:betterBetterMost Popularhighlighted (default recommended)

Premium paint, flawless finish

Brand: Sherwin-Williams Emerald

basePrice (declared)

$5,000

Σ(lineItems) (computed)

$5,000

Line items (base price breakdown)

labelcategoryamount
SW Emerald Interior Paintsource: https://www.sherwin-williams.com/content/sw/en-us/us/paint/interior/emerald.htmlequipment$1,400
Labor — walls, trim, ceilings (~15 hrs @ $100/hr, 2,000 sqft)labor$3,000
Primer, Caulk, Materials & Cleanupequipment$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-onprice
color_consultProfessional Color Consultation1-hr session with certified color consultant$150
accent_wallAccent 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

tier:bestBest

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)

labelcategoryamount
Benjamin Moore Aura / Farrow & Ball Paint (~20 gal @ $90/gal)source: https://www.benjaminmoore.com/en-us/interior-exterior-paints-stains/product-families/auraequipment$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.htmllabor$6,000
Materials, Primer, Cleanup, Touch-Up Kitequipment$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+scorewhen ALL conditions hold
good3scope{ "single_room", "few_rooms" }
good2paint_quality{ "standard" }
better3paint_quality{ "premium" }
better2scope{ "whole_house" }
best4paint_quality{ "designer" }
best2home_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

Source file: src/lib/flow-engine/verticals/interior-painting.ts · run the live flow →

🌿Landscaping slug:landscaping

ORDER FEEcomplexity: mediumprovider label: landscaperphotos: optionalquestions: 4tiers: 3has dynamic branching

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

  1. Photos of your yard from multiple angles — include front and back yards, showing existing plants, hardscape, and the overall lot shape
  2. 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.

Q1project_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
cleanupCleanup — trim, mulch, and freshen up existing beds
  • tags: cleanup
new_bedsNew planting beds + plants
  • tags: planting
full_designFull landscape design and installation
  • tags: full_design
hardscapeHardscape — patio, walkway, retaining wall
  • tags: hardscape
irrigationIrrigation system installation
  • tags: irrigation
Q2yard_sizesingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
smallSmall — front yard or under 1,000 sq ft
  • tags: small
mediumMedium — up to 3,000 sq ft
  • tags: medium
largeLarge — over 3,000 sq ft or full property
  • price +$2,000 → line item "Large property upcharge"
  • tags: large
Q3stylesingle_selectprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
low_maintenanceLow maintenance — native plants, minimal upkeep
  • tags: native
traditionalTraditional — symmetrical beds, classic plants
  • tags: traditional
modernModern — clean lines, ornamental grasses, bold plants
  • tags: modern_style
cottageCottage / English — lush, colorful, layered planting
  • price +$1,000 → line item "Cottage/English garden style"
  • tags: cottage
Q4existing_irrigationsingle_selectprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
yesYes — existing system in good shapeno direct price effect
partialPartial — covers some areas
  • tags: needs_irrigation
noNo irrigation
  • price +$1,000 → line item "Irrigation installation needed"
  • tags: needs_irrigation

Tiers (3)

tier:goodGoodBest Value

Seasonal cleanup + fresh mulch and plantings

Brand: Local Landscape Pro

basePrice (declared)

$1,500

Σ(lineItems) (computed)

$1,500

Line items (base price breakdown)

labelcategoryamount
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

tier:betterBetterMost Popularhighlighted (default recommended)

New planting beds with design and perennials

Brand: Local Landscape Designer

basePrice (declared)

$5,000

Σ(lineItems) (computed)

$5,000

Line items (base price breakdown)

labelcategoryamount
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-onprice
irrigationDrip Irrigation for New BedsRainbird or Hunter drip system for efficient watering$1,200
lightingPath & 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

tier:bestBest

Full landscape design + hardscape + irrigation

Brand: Landscape Architect / Design-Build Firm

basePrice (declared)

$25,000

Σ(lineItems) (computed)

$25,000

Line items (base price breakdown)

labelcategoryamount
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 Plantingsequipment$3,500
Rainbird Smart Irrigation Systemsource: https://www.rainbird.com/homeowners/products/drip-irrigationequipment$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+scorewhen ALL conditions hold
good3project_type{ "cleanup" }
good1yard_size{ "small" }
good1style{ "low_maintenance" }
better3project_type{ "new_beds" }
better2yard_size{ "medium" }
better1style{ "traditional", "modern" }
best3project_type{ "full_design", "hardscape" }
best2yard_size{ "large" }
best1project_type{ "irrigation" }
best1style{ "cottage" }
best1existing_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

Source file: src/lib/flow-engine/verticals/landscaping.ts · run the live flow →

🏡Fencing slug:fencing

ORDER FEEcomplexity: mediumprovider label: fence installerphotos: optionalquestions: 5tiers: 3

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

  1. 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
  2. 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.

Q1fence_materialsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
wood_privacyWood privacy fence (cedar or pine)
  • tags: wood
vinylVinyl / PVC fence — no maintenance
  • tags: vinyl
chain_linkChain-link — durable and affordable
  • tags: chain_link
aluminumAluminum or wrought iron (decorative)
  • tags: metal
compositeComposite wood (TimberTech or Trex Fencing)
  • tags: composite_fence
Q2linear_feetsingle_selectrequiredprice delta

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

valuelabel shown to customereffects on pricing / flow
under_150Under 150 linear feet
  • tags: small
150_300150–300 linear feet
  • tags: medium
300_500300–500 linear feet
  • price +$1,000 → line item "Large Perimeter (300–500 LF)"
  • tags: large
over_500Over 500 linear feet
  • price +$3,000 → line item "Extra-Large Perimeter (500+ LF)"
  • tags: xl
Q3fence_heightsingle_selectprice delta

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

valuelabel shown to customereffects on pricing / flow
4ft4 feet — decorative or front yard
  • tags: short
6ft6 feet — standard privacy height (most common)
  • tags: standard_height
8ft8 feet — maximum privacy or security
  • price +$800 → line item "Tall Fence Upgrade (8 ft)"
  • tags: tall
Q4purposesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
privacyPrivacy — block neighbors and passersby
  • tags: privacy
pets_kidsContain pets or children
  • tags: containment
securitySecurity — deter entry
  • tags: security
decorativeDecorative / curb appeal
  • tags: decorative
poolPool code compliance (required safety fence)
  • tags: pool_fence
Q5demosingle_selectprice delta

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

valuelabel shown to customereffects on pricing / flow
noNo existing fence
  • tags: new_install
yesYes — existing fence needs demo
  • price +$500 → line item "Old Fence Removal"
  • tags: demo

Tiers (3)

tier:goodGoodBest Value

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)

labelcategoryamount
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

tier:betterBetterMost Popularhighlighted (default recommended)

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)

labelcategoryamount
Vinyl PVC or Cedar Materials (200 LF)equipment$3,800
Reinforced Posts & Concreteequipment$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-onprice
double_gateDouble-Drive Gate12-ft wide double gate for vehicle access$900
post_capsDecorative 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

tier:bestBest

Aluminum or composite — premium curb appeal

Brand: Specrail Aluminum / Trex Seclusions

basePrice (declared)

$9,000

Σ(lineItems) (computed)

$9,000

Line items (base price breakdown)

labelcategoryamount
Aluminum or Composite Fencing (200 LF)source: https://www.trex.com/trex-products/fencing/seclusions/equipment$5,400
Heavy-Duty Posts & Concrete Footingsequipment$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+scorewhen ALL conditions hold
good3fence_material{ "chain_link" }
good2purpose{ "pets_kids" }
better3fence_material{ "vinyl", "wood_privacy" }
better2purpose{ "privacy" }
best4fence_material{ "aluminum", "composite" }
best2purpose{ "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

Source file: src/lib/flow-engine/verticals/fencing.ts · run the live flow →

🌧️Gutter Installation & Cleaning slug:gutter-services

DIRECT PAYcomplexity: simpleprovider label: technicianphotos: nonequestions: 4tiers: 3has dynamic branching

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.

Q1service_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
cleaningGutter cleaning (remove debris, flush downspouts)
  • tags: cleaning
repairRepair — rehang, reseal, or fix sagging sections
  • tags: repair
replaceReplace existing gutters
  • tags: replace
new_installNew installation — no gutters currently
  • tags: new
guardsAdd gutter guards to existing gutters
  • tags: guards
Q2home_sizesingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
smallSmall — under 1,500 sq ft
  • tags: small
mediumMedium — 1,500–2,500 sq ft
  • tags: medium
largeLarge — over 2,500 sq ft
  • price +$500 → line item "Large Home Adjustment"
  • tags: large
Q3gutter_materialsingle_selectprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
aluminumSeamless aluminum (most popular — custom cut on-site)
  • tags: aluminum
steelSteel (stronger, good for heavy snow loads)
  • tags: steel
copperCopper (premium — beautiful and ultra-long-lasting)
  • price +$2,000 → line item "Copper Gutter Premium"
  • tags: copper
vinylVinyl (budget — okay for mild climates)
  • tags: vinyl
Q4storiessingle_selectprice delta

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

valuelabel shown to customereffects on pricing / flow
one1 storyno direct price effect
two2 stories
  • price +$300 → line item "Two-Story Height Access"
three_plus3+ stories
  • price +$800 → line item "Multi-Story Height Access"

Tiers (3)

tier:goodGoodBest Value

Professional gutter cleaning and minor repairs

Brand: Local Gutter Pro

basePrice (declared)

$225

Σ(lineItems) (computed)

$225

Line items (base price breakdown)

labelcategoryamount
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

tier:betterBetterMost Popularhighlighted (default recommended)

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)

labelcategoryamount
Seamless Aluminum Gutters (150 LF)source: https://homeguide.com/costs/gutter-installation-costequipment$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-onprice
guards_microMicro-Mesh Gutter Guards (full home)Never clean gutters again — lifetime warranty$1,500
downspout_extensionsUnderground 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

tier:bestBest

Copper gutters — forever beautiful

Brand: Copper Seamless / K-guard or LeafGuard

basePrice (declared)

$7,000

Σ(lineItems) (computed)

$7,000

Line items (base price breakdown)

labelcategoryamount
Seamless Copper Gutters (150 LF)source: https://homeguide.com/costs/gutter-installation-costequipment$5,000
Round Copper Downspouts (6 units)source: https://homeguide.com/costs/gutter-installation-costequipment$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+scorewhen ALL conditions hold
good3service_type{ "cleaning", "repair" }
good1home_size{ "small" }
better3service_type{ "replace", "new_install" }
better2gutter_material{ "aluminum", "steel" }
better3service_type{ "guards" }
best4gutter_material{ "copper" }
best2home_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

Source file: src/lib/flow-engine/verticals/gutter-services.ts · run the live flow →

💨Duct Cleaning slug:duct-cleaning

DIRECT PAYcomplexity: simpleprovider label: technicianphotos: nonequestions: 4tiers: 3

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.

Q1reasonsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
routineRoutine maintenance (it's been 3–5+ years)
  • tags: routine
allergyAllergy or asthma concerns
  • tags: allergy
new_homeRecently moved in or after construction/renovation
  • tags: new_home
moldMusty smell or possible mold in ducts
  • tags: mold_concern
rodentEvidence of rodents or pests in ducts
  • tags: pest
Q2home_sqftsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
smallUnder 1,500 sq ft
  • tags: small
medium1,500–3,000 sq ft
  • tags: medium
largeOver 3,000 sq ft
  • tags: large
Q3hvac_systemssingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
one1 system (most homes)no direct price effect
two2 systems (common in larger homes)no direct price effect
three_plus3+ systemsno direct price effect
Q4last_cleanedsingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
neverNever or don't know
  • tags: never_cleaned
over_55+ years ago
  • tags: overdue
recentWithin 3–5 yearsno direct price effect

Tiers (3)

tier:goodGoodBest Value

Standard duct cleaning — remove built-up debris

Brand: NADCA-Certified Duct Cleaner

basePrice (declared)

$400

Σ(lineItems) (computed)

$400

Line items (base price breakdown)

labelcategoryamount
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

tier:betterBetterMost Popularhighlighted (default recommended)

Full system cleaning + sanitization

Brand: NADCA Pro + Benefect or Sporicidin

basePrice (declared)

$750

Σ(lineItems) (computed)

$750

Line items (base price breakdown)

labelcategoryamount
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-onprice
uv_lightUV 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

tier:bestBest

Complete air quality restoration

Brand: NADCA + Mold Remediation Pro

basePrice (declared)

$2,000

Σ(lineItems) (computed)

$2,000

Line items (base price breakdown)

labelcategoryamount
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+scorewhen ALL conditions hold
good3reason{ "routine" }
good1home_sqft{ "small" }
better3reason{ "allergy", "new_home" }
better2last_cleaned{ "never", "over_5" }
best4reason{ "mold", "rodent" }
best2home_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

Source file: src/lib/flow-engine/verticals/duct-cleaning.ts · run the live flow →

🐜Pest Control slug:pest-control

DIRECT PAYcomplexity: simpleprovider label: technicianphotos: optionalquestions: 10tiers: 5has dynamic branching

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

  1. Photo of the affected area (entry point, nest, damage) — if safe to capture
  2. For wildlife: photo of the entry/exit point and any visible nesting material
  3. 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.

Q1pest_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
antsAnts (carpenter, odorous house, fire)
  • tags: ants, insect
roachesCockroaches
  • tags: roaches, insect
termitesTermites (or evidence of termite damage)
  • tags: termites
rodentsRodents — mice or rats
  • tags: rodents
bed_bugsBed bugs
  • tags: bed_bugs
wasps_beesWasps, hornets, or bees (nest removal)
  • tags: stinging, insect
wildlifeWildlife — raccoons, squirrels, bats, birds, opossums
  • tags: wildlife
mosquitoMosquitoes — outdoor yard treatment
  • tags: mosquito
generalGeneral pest prevention (year-round program)
  • tags: general
Q2wildlife_typesingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
raccoonsRaccoons
  • tags: raccoons
squirrelsSquirrels (attic, soffit, or chimney)
  • tags: squirrels
batsBats (in attic or chimney) — protected species, requires specialist
  • tags: bats
birdsBirds (pigeons, starlings, sparrows)
  • tags: birds
opossumsOpossums or skunks
  • tags: opossums
groundhogsGroundhogs, moles, or voles (yard)
  • tags: groundhogs
snakesSnakes
  • tags: snakes
other_wildlifeOther wildlife
  • tags: other_wildlife
Q3wildlife_locationsingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
atticIn the attic
  • tags: attic_entry
chimneyIn the chimney
  • tags: chimney_entry
crawl_basementCrawlspace or basement
  • tags: crawl_entry
soffit_eaveSoffit, eave, or roof line
  • tags: roofline_entry
yardYard or under the deck
  • tags: yard_entry
multipleMultiple locations
  • tags: multiple_entry
Q4wildlife_damagesingle_select

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

valuelabel shown to customereffects on pricing / flow
noneNo visible damage — just want them outno direct price effect
minorMinor — some droppings, chewed wires or insulationno direct price effect
majorMajor — significant insulation damage, structural concern
  • tags: major_damage
Q5mosquito_lot_sizesingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
smallSmall — under 1/4 acre
  • tags: small_lot
mediumMedium — 1/4 to 1/2 acre
  • tags: medium_lot
largeLarge — 1/2 to 1 acre
  • tags: large_lot
xlVery large — over 1 acre
  • tags: xl_lot
Q6mosquito_treatment_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
one_time_eventOne-time spray for an event (wedding, party, BBQ)
  • tags: event
monthlyMonthly barrier spray (May–October — the standard recurring plan)
  • tags: monthly_mosquito
naturalNatural / organic treatment (essential oil based)
  • tags: natural
in2careIn2Care or similar trap system (kills adults + larvae)
  • tags: in2care
unsureNot sure — recommend what's rightno direct price effect
Q7mosquito_concernsmulti_select

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

valuelabel shown to customereffects on pricing / flow
kidsKids in the yard — want kid-safe products
  • tags: kid_safe
petsPets — want pet-safe products
  • tags: pet_safe
pollinatorsBees & pollinators — avoid harming them
  • tags: pollinator_safe
ticksAlso want tick treatment
  • tags: ticks
gardenVegetable garden — avoid spray on ediblesno direct price effect
Q8severitysingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
mildMild — spotted a few
  • tags: mild
moderateModerate — regular sightings, evidence of activity
  • tags: moderate
severeSevere — large numbers, structural concern
  • price +$500 → line item "Severe infestation surcharge"
  • tags: severe
Q9home_sizesingle_selectrequiredprice delta

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

valuelabel shown to customereffects on pricing / flow
smallUnder 1,500 sq ft
  • tags: small
medium1,500–3,000 sq ft
  • tags: medium
largeOver 3,000 sq ft
  • price +$400 → line item "Large home surcharge"
  • tags: large
Q10service_preferencesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
one_timeOne-time treatment
  • tags: one_time
quarterlyQuarterly service plan (best prevention)
  • tags: quarterly
monthlyMonthly service (for serious or recurring issues)
  • tags: monthly

Tiers (5)

tier:goodGoodBest Value

Targeted one-time treatment or single mosquito spray

Brand: Orkin / Terminix / Local Pro

basePrice (declared)

$200

Σ(lineItems) (computed)

$200

Line items (base price breakdown)

labelcategoryamount
Initial Inspection & Assessment (30 min)labor$50
Treatment Application (60–90 min)labor$120
Follow-Up Materialsequipment$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

tier:betterBetterMost Popularhighlighted (default recommended)

Quarterly plan or recurring mosquito barrier

Brand: Orkin / Mosquito Joe / Local Pro

basePrice (declared)

$600

Σ(lineItems) (computed)

$600

Line items (base price breakdown)

labelcategoryamount
Initial Treatment — Interior + Exterior (2 hrs)labor$200
Recurring Visits (4× quarterly / 6× monthly for mosquito)labor$300
Annual Plan Admin & Reportslabor$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-onprice
tick_addonTick treatment add-onAdds tick suppression to each mosquito visit$150
spider_webCobweb & 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

tier:bestTermite + complete protection

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)

labelcategoryamount
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 & Monitoringlabor$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

tier:wildlifeWildlife removal & exclusion

Trap, remove, seal entry points, sanitize

Brand: Licensed wildlife specialist

basePrice (declared)

$650

Σ(lineItems) (computed)

$650

Line items (base price breakdown)

labelcategoryamount
Inspection & Entry Point Mapping (1 hr)labor$120
Live Trap Set + Daily Monitoring (3–7 days)labor$180
Animal Removal & Relocationlabor$80
Entry Point Sealing — hardware cloth, sealant, vent capsequipment$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-onprice
insulation_removeContaminated insulation removal & replacementRemove urine/dropping-soaked insulation and re-blow with new$1,800
bat_specialistBat exclusion specialist (NWCOA-certified)Required for any bat exclusion — protected species$800
chimney_capChimney 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

tier:mosquito_eventMosquito — single event spray

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)

labelcategoryamount
Yard Walkthrough & Breeding Source ID (15 min)labor$40
Barrier Spray Application — perimeter & shrubs (1 hr)labor$160
Larvicide Treatment of Standing Water Sourcesequipment$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-onprice
in2care_installIn2Care trap station rental (4 stations)Targets adults AND larvae — kills mosquitoes before they can breed$180
tick_sprayTick 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+scorewhen ALL conditions hold
good3service_preference{ "one_time" }
good2severity{ "mild" }
better3service_preference{ "quarterly", "monthly" }
better2pest_type{ "general", "ants", "roaches", "bed_bugs" }
better10mosquito_treatment_type{ "monthly", "natural", "in2care" }
best4pest_type{ "termites" }
best3pest_type{ "rodents" }
best2severity{ "severe" }
best2pest_type{ "bed_bugs" }
wildlife10pest_type{ "wildlife" }
mosquito_event10mosquito_treatment_type{ "one_time_event" }
mosquito_event5pest_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

Source file: src/lib/flow-engine/verticals/pest-control.ts · run the live flow →

🌳Tree Removal slug:tree-removal

ORDER FEEcomplexity: mediumprovider label: arboristphotos: optionalquestions: 5tiers: 3

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

  1. 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.

Q1tree_sizesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
smallSmall — under 12" diameter (young or ornamental tree)
  • tags: small
mediumMedium — 12–24" diameter
  • tags: medium
largeLarge — 24–36" diameter
  • tags: large
xlVery large — over 36" diameter
  • tags: xl
Q2locationsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
open_yardOpen yard — easy to fell and remove
  • tags: easy
near_structureNear house, fence, or utility line
  • tags: near_structure
tight_accessTight access — between structures or limited equipment room
  • tags: difficult
leaning_overLeaning over home or driveway — high risk
  • tags: dangerous
Q3healthsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
healthyHealthy — removing for space or viewno direct price effect
diseasedDiseased — losing leaves, cankers, or dead branches
  • tags: diseased
deadDead — standing dead tree
  • tags: dead
storm_damageStorm damage — partially fallen or cracked
  • tags: storm
Q4tree_countsingle_select

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

valuelabel shown to customereffects on pricing / flow
one1 tree
  • tags: single
two_three2–3 trees
  • tags: multiple
four_plus4 or more trees
  • tags: many
Q5stumpsingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
leaveLeave the stump (lowest cost)no direct price effect
grindStump grinding (remove to below grade)no direct price effect
full_removalFull root removal (needed for replanting or construction)no direct price effect

Tiers (3)

tier:goodGoodBest Value

Efficient tree removal with cleanup

Brand: ISA-Certified Arborist

basePrice (declared)

$1,000

Σ(lineItems) (computed)

$1,000

Line items (base price breakdown)

labelcategoryamount
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

tier:betterBetterMost Popularhighlighted (default recommended)

Complex removal + stump grinding

Brand: ISA-Certified Crew + Stump Grinder

basePrice (declared)

$2,500

Σ(lineItems) (computed)

$2,500

Line items (base price breakdown)

labelcategoryamount
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-onprice
additional_treesAdditional Trees (per tree)Discount rate for multiple trees removed same day$800
replantingNew 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

tier:bestBest

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)

labelcategoryamount
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+scorewhen ALL conditions hold
good3tree_size{ "small", "medium" }
good2location{ "open_yard" }
better3tree_size{ "large" }
better2health{ "diseased", "dead", "storm_damage" }
better1stump{ "grind" }
best4location{ "leaning_over", "tight_access" }
best3tree_size{ "xl" }
best2health{ "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

Source file: src/lib/flow-engine/verticals/tree-removal.ts · run the live flow →

🌳Tree Services slug:tree-services

ORDER FEEcomplexity: mediumprovider label: arboristphotos: optionalquestions: 13tiers: 6has dynamic branching

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

  1. 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)
  2. For trimming: photo of the branches you want trimmed and a photo showing the canopy overall
  3. 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.

Q1service_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
removalTree removal (whole tree comes down)
  • tags: removal
trimmingTrimming or pruning (tree stays, branches go)
  • tags: trimming
stump_grindingStump grinding only (tree already down)
  • tags: stump_only
emergencyEmergency / storm damage cleanup (fallen or hanging tree)
  • tags: emergency
multipleMultiple services (removal + grinding, trim + remove)
  • tags: multiple_services
consultConsultation — need an arborist to assess first
  • tags: consult
Q2tree_sizesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
smallSmall — under 12" diameter (young or ornamental)
  • tags: small
mediumMedium — 12–24" diameter
  • tags: medium
largeLarge — 24–36" diameter
  • tags: large
xlVery large — over 36" diameter
  • tags: xl
Q3locationsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
open_yardOpen yard — easy to fell and remove
  • tags: easy
near_structureNear house, fence, or utility line
  • tags: near_structure
tight_accessTight access — between structures or limited equipment room
  • tags: difficult
leaning_overLeaning over home or driveway — high risk
  • tags: dangerous
Q4healthsingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
healthyHealthy — removing for space or viewno direct price effect
diseasedDiseased — losing leaves, cankers, or dead branches
  • tags: diseased
deadDead — standing dead tree
  • tags: dead
storm_damageStorm damage — partially fallen or cracked
  • tags: storm
Q5tree_countsingle_select

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

valuelabel shown to customereffects on pricing / flow
one1 tree
  • tags: single
two_three2–3 trees
  • tags: multiple
four_plus4 or more trees
  • tags: many
Q6trim_scopesingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
lightLight — a few branches, dead wood removal
  • tags: light_trim
standardStandard — full crown thinning or canopy reduction
  • tags: standard_trim
heavyHeavy — major canopy reduction or storm-damage trim
  • tags: heavy_trim
hazardHazard removal — branches over the house or driveway
  • tags: hazard_trim
Q7trim_reasonsingle_select

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

valuelabel shown to customereffects on pricing / flow
healthTree health — encourage growth, remove dead branchesno direct price effect
clearanceClearance — house, driveway, power lines, sidewalkno direct price effect
viewView / aestheticsno direct price effect
storm_prepStorm prep — pre-hurricane / pre-winter pruningno direct price effect
fruitFruit tree pruning (apple, pear, citrus)no direct price effect
Q8stump_countsingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
one1 stumpno direct price effect
two_three2–3 stumpsno direct price effect
four_plus4 or more stumpsno direct price effect
Q9stump_sizesingle_select

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

valuelabel shown to customereffects on pricing / flow
smallSmall — under 12"no direct price effect
mediumMedium — 12–24"no direct price effect
largeLarge — over 24"no direct price effect
Q10stump_depthsingle_select

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

valuelabel shown to customereffects on pricing / flow
below_gradeJust below grade (standard — ready for grass)no direct price effect
deepDeeper (12"+ — for re-planting or construction)no direct price effect
full_removalFull root ball removal (needed for foundation work)no direct price effect
Q11stumpsingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
leaveLeave the stump (lowest cost)no direct price effect
grindStump grinding (remove to below grade)no direct price effect
full_removalFull root removal (needed for replanting or construction)no direct price effect
Q12emergency_statesingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
on_houseTree is on the house, garage, or vehicle (immediate risk)
  • tags: on_structure
blockingBlocking driveway or street
  • tags: blocking
hangingHanging / leaning dangerously, hasn't fallen yet
  • tags: hanging
down_in_yardDown in the yard — not blocking anything
  • tags: down
Q13insurancesingle_select

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

valuelabel shown to customereffects on pricing / flow
filedYes — claim filed, need quote for adjuster
  • tags: insurance
consideringConsidering filing — want a quote first
  • tags: insurance
noNo — paying out of pocketno direct price effect

Tiers (6)

tier:trim_onlyTrimmingTrim Only

Crown thinning, dead-wood removal, clearance trimming

Brand: ISA-Certified Arborist

basePrice (declared)

$350

Σ(lineItems) (computed)

$350

Line items (base price breakdown)

labelcategoryamount
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 Walklabor$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-onprice
additional_tree_trimAdditional tree (per tree)Discount rate for trimming multiple trees same visit$250
hazard_branchHazard 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

tier:goodStandard removal

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)

labelcategoryamount
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-onprice
stump_grind_addonStump 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

tier:betterLarge or near-structure removalMost Popularhighlighted (default recommended)

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)

labelcategoryamount
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-onprice
additional_treesAdditional trees (per tree)Discount rate for multiple trees removed same day$800
replantingNew 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

tier:bestCrane / technical takedown

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)

labelcategoryamount
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

tier:stump_onlyStump grinding onlyStump Only

Existing stumps ground to below grade

Brand: Local arborist or stump-grinder specialist

basePrice (declared)

$150

Σ(lineItems) (computed)

$150

Line items (base price breakdown)

labelcategoryamount
Stump Grinder Setup (15 min)labor$30
Grinding Labor (30–60 min)labor$80
Chip Backfill & Cleanuplabor$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-onprice
extra_stumpEach additional stumpDiscounted rate after the first stump$75
haul_chipsHaul 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

tier:emergencyEmergency / storm cleanup24/7

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)

labelcategoryamount
Emergency Dispatch & Site Assessment (1 hr)labor$250
Insurance Documentation & Adjuster Quotelabor$150
Removal Labor — 2 person crew (4–6 hrs at emergency rate)labor$1,000
Debris Chipping & Haul Awaylabor$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-onprice
crane_emergencyCrane dispatch (for trees on house)50-ton crane required for safe removal from structure$2,000
after_hoursAfter-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+scorewhen ALL conditions hold
trim_only10service_type{ "trimming" }
stump_only10service_type{ "stump_grinding" }
emergency10service_type{ "emergency" }
good3tree_size{ "small", "medium" }
good2location{ "open_yard" }
better3tree_size{ "large" }
better2health{ "diseased", "dead", "storm_damage" }
better1stump{ "grind" }
best4location{ "leaning_over", "tight_access" }
best3tree_size{ "xl" }
best2health{ "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

Source file: src/lib/flow-engine/verticals/tree-services.ts · run the live flow →

🏠Roof Repair slug:roof-repair

ORDER FEEcomplexity: mediumprovider label: rooferphotos: requiredquestions: 10tiers: 3

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

  1. Photo of the damaged area from the ground — try to capture the full section, including the area around any visible damage
  2. Close-up of the issue — missing shingles, lifted flashing, soft spots, granule loss, or visible holes
  3. Photo of any interior water damage — ceiling stains, attic moisture, or dripping spots (helps confirm the leak path)
  4. 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.

Q1issue_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
active_leakActive leak — water coming in right now
  • tags: urgent, leak
missing_shinglesMissing or damaged shingles
  • tags: shingles
flashingFlashing — around chimney, vent, or skylight
  • tags: flashing
saggingSagging or soft spots — structural concern
  • tags: sagging, structural
storm_damageStorm or hail damage (insurance claim possible)
  • tags: storm, insurance
granule_lossGranule loss or aging — not sure if it leaks yet
  • tags: aging
ice_damIce dam or winter damage (cold climate)
  • tags: ice_dam
unknownNot sure — something is off and I want a pro to look
  • tags: unknown
Q2leak_locationsingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
single_spotOne specific spot or area
  • tags: spot
around_penetrationAround a chimney, vent, or skylight
  • tags: penetration
valley_or_edgeRoof valley, edge, or eave
  • tags: valley
multiple_areasMultiple areas — spread across the roof
  • tags: multiple
unknownNot sure — I just see the symptom insideno direct price effect
Q3repair_areasingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
spotSmall spot — under 10 sq ft (a few shingles)
  • tags: spot_repair
sectionSection — 10–100 sq ft (a roof face partially)
  • tags: section_repair
majorMajor — 100+ sq ft or a full roof face
  • tags: major_repair
unknownNot sure — pro to assessno direct price effect
Q4roof_materialsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
asphalt_3tab3-tab asphalt shinglesno direct price effect
asphalt_architecturalArchitectural / dimensional shinglesno direct price effect
metalMetal (standing seam, panels, or shingles)no direct price effect
tileClay or concrete tileno direct price effect
wood_shakeCedar shake or wood shingleno direct price effect
slateSlateno direct price effect
flat_membraneFlat roof — EPDM, TPO, or modified bitumenno direct price effect
unknownI'm not sureno direct price effect
Q5roof_agesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
under_5Under 5 years old (likely still under manufacturer warranty)
  • tags: new
5_155–15 years old (repair is usually right)no direct price effect
15_2015–20 years old (repair OK, but plan for replacement soon)
  • tags: aging_roof
20_plus20+ years old (replacement may be cheaper long-term)
  • tags: old_roof
unknownNot sureno direct price effect
Q6roof_pitchsingle_select

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

valuelabel shown to customereffects on pricing / flow
lowLow pitch — almost flat (2/12–4/12)no direct price effect
moderateModerate pitch — typical ranch or colonial (4/12–7/12)no direct price effect
steepSteep pitch — visible from the street (7/12+)no direct price effect
very_steepVery steep / complex (mansard, multiple valleys)no direct price effect
unknownNot sureno direct price effect
Q7accesssingle_select

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

valuelabel shown to customereffects on pricing / flow
easyEasy — single story, simple ladder accessno direct price effect
moderateModerate — two-story or some obstructionsno direct price effect
hardHard — three-story, tight access, or no ladder reachno direct price effect
Q8interior_damagesingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
noneNo — leak hasn't reached inside yetno direct price effect
stainsMinor — ceiling stains or attic moisture onlyno direct price effect
drywallDrywall, paint, or insulation damageno direct price effect
structuralStructural damage — sagging deck, rotted joists
  • tags: structural
Q9insurancesingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
filedYes — claim filed, need a quote for the adjuster
  • tags: insurance
consideringConsidering filing — want to know cost first
  • tags: insurance
noNo — paying out of pocketno direct price effect
Q10timelinesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
emergencyEmergency — water coming in right now (same-day tarp)
  • tags: emergency
asapASAP — within a few daysno direct price effect
monthWithin the monthno direct price effect
flexibleI'm flexible — planning aheadno direct price effect

Tiers (3)

tier:goodSpot repairBest Value

A few shingles, sealant, or flashing patch

Brand: Local licensed roofer

basePrice (declared)

$600

Σ(lineItems) (computed)

$600

Line items (base price breakdown)

labelcategoryamount
Diagnostic & Site Visit (30–60 min)labor$120
Spot Repair Labor (2–3 hrs)labor$320
Shingles, Sealant & Flashing Materialsequipment$100
Safety Setup & Cleanuplabor$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

tier:betterSection repairMost Popularhighlighted (default recommended)

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)

labelcategoryamount
Diagnostic, Documentation & Insurance Quotelabor$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 Shieldequipment$280
Flashing, Drip Edge & Fastenersequipment$80
Debris Haul & Cleanuplabor$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-onprice
gutter_checkGutter inspection & re-secureInspect and re-secure gutters disturbed during the repair$120
attic_inspectionAttic 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

tier:bestMajor repair

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)

labelcategoryamount
Diagnostic, Documentation & Insurance Quotelabor$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 Shieldequipment$750
Flashing, Drip Edge, Ridge Cap & Fastenersequipment$220
Decking Patch Materials (if needed)equipment$180
Dumpster Rental & Disposallabor$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-onprice
deck_replaceDecking replacement (per 4x8 sheet)Replace rotted plywood/OSB found during tear-off$95
ridge_ventRidge vent installAdd ridge vent during the repair for better attic ventilation$350
guttersGutter 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+scorewhen ALL conditions hold
good3repair_area{ "spot" }
good2issue_type{ "missing_shingles", "flashing" }
good2leak_location{ "single_spot" }
better3repair_area{ "section" }
better2issue_type{ "storm_damage", "ice_dam" }
better2insurance{ "filed", "considering" }
better1leak_location{ "around_penetration", "valley_or_edge" }
better1timeline{ "emergency" }
best4repair_area{ "major" }
best3issue_type{ "sagging" }
best2leak_location{ "multiple_areas" }
best2interior_damage{ "structural" }
best1roof_age{ "20_plus" }
best1roof_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

Source file: src/lib/flow-engine/verticals/roof-repair.ts · run the live flow →

🛣️Concrete & Driveway slug:concrete-driveway

ORDER FEEcomplexity: mediumprovider label: contractorphotos: optionalquestions: 4tiers: 3has dynamic branching

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

  1. 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.

Q1project_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
driveway_replaceReplace existing driveway
  • tags: driveway
driveway_extendExtend or widen existing driveway
  • tags: driveway_ext
sidewalkSidewalk or walkway
  • tags: sidewalk
patioConcrete patio
  • tags: patio
garage_floorGarage floor
  • tags: garage_floor
repairCrack repair or resurfacing
  • tags: repair
Q2square_footagesingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
smallUnder 400 sq ft (single-car driveway or patio)
  • tags: small
medium400–800 sq ft (standard 2-car driveway)
  • tags: medium
large800–1,500 sq ft (long driveway or large area)
  • price +$2,000 → line item "Large Driveway Area (800–1,500 sq ft)"
  • tags: large
xlOver 1,500 sq ft
  • price +$4,000 → line item "Extra-Large Driveway (1,500+ sq ft)"
  • tags: xl
Q3finishsingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
broomBrushed broom finish (standard — good traction)
  • tags: standard_finish
exposed_aggregateExposed aggregate (gravel texture — classic)
  • tags: aggregate
stampedStamped concrete (looks like stone or brick)
  • price +$2,000 → line item "Stamped Concrete Finish Upcharge"
  • tags: stamped
coloredIntegral color (tinted throughout)
  • price +$800 → line item "Integral Color Upcharge"
  • tags: colored
epoxy_coatedEpoxy or polyurea coated (garage floors)
  • tags: epoxy
Q4existingsingle_selectprice delta

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

valuelabel shown to customereffects on pricing / flow
noNo — new concrete on dirt/baseno direct price effect
yesYes — needs demo and haul away
  • price +$500 → line item "Existing Concrete Demolition & Haul Away"
  • tags: demo
asphaltYes — asphalt driveway to remove
  • price +$700 → line item "Asphalt Removal & Disposal"
  • tags: asphalt_remove

Tiers (3)

tier:goodGoodBest Value

Standard concrete — durable and practical

Brand: 4" Broom-Finish Concrete

basePrice (declared)

$4,000

Σ(lineItems) (computed)

$4,000

Line items (base price breakdown)

labelcategoryamount
Concrete — 600 sq ft, 4" slabequipment$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

tier:betterBetterMost Popularhighlighted (default recommended)

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)

labelcategoryamount
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-onprice
decorative_borderDecorative Exposed Aggregate BorderContrast border using different aggregate$800
heated_drivewayRadiant 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

tier:bestBest

Stamped concrete — premium stone or brick look

Brand: Stamped & Stained Concrete

basePrice (declared)

$9,600

Σ(lineItems) (computed)

$9,600

Line items (base price breakdown)

labelcategoryamount
Concrete — stamped, 5–6", 600 sq ftequipment$4,800
Stamp Pattern + Color Hardenerequipment$1,500
Acid Stain or Dyeequipment$800
Polyurethane Sealer — 2 coatsequipment$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+scorewhen ALL conditions hold
good3finish{ "broom" }
good2project_type{ "sidewalk", "repair" }
good1square_footage{ "small" }
better3finish{ "exposed_aggregate", "colored" }
better2project_type{ "driveway_replace" }
better1square_footage{ "medium", "large" }
best4finish{ "stamped" }
best2project_type{ "patio" }
best1square_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

Source file: src/lib/flow-engine/verticals/concrete-driveway.ts · run the live flow →

💡Outdoor Lighting slug:outdoor-lighting

DIRECT PAYcomplexity: simpleprovider label: electricianphotos: optionalquestions: 4tiers: 3

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

  1. 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.

Q1lighting_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
low_voltageLow-voltage landscape lighting (path lights, uplights)
  • tags: low_voltage
securitySecurity lighting (motion sensors, floodlights)
  • tags: security
string_lightsString lights / bistro lights for entertaining
  • tags: string
full_systemFull design — landscape + security + accents
  • tags: full_system
Q2property_sizesingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
smallSmall — front walk or one area
  • tags: small
mediumMedium — front and back yard
  • tags: medium
largeLarge — full property or large lot
  • price +$1,000 → line item "Full property upcharge"
  • tags: large
Q3smart_controlsingle_selectprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
timerSimple timer — on at dusk, off at dawnno direct price effect
smart_appApp-controlled — schedule and customize from phone
  • tags: smart
full_smartFully integrated with smart home / voice control
  • price +$1,000 → line item "Smart home integration upgrade"
  • tags: full_smart
Q4fixturessingle_selectprice delta

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

valuelabel shown to customereffects on pricing / flow
standardStandard — functional and durable
  • tags: standard_fixtures
premiumPremium — designer-grade fixtures (Kichler, Hadco, FX Luminaire)
  • price +$1,500 → line item "Premium fixture upgrade"
  • tags: premium_fixtures

Tiers (3)

tier:goodGoodBest Value

Low-voltage path and garden lighting

Brand: VOLT Lighting / Hampton Bay

basePrice (declared)

$1,150

Σ(lineItems) (computed)

$1,150

Line items (base price breakdown)

labelcategoryamount
10× LED Path/Spot Lights (supply)source: https://www.voltlighting.com/collections/path-lightsequipment$350
120W Transformer with Timersource: https://www.voltlighting.com/collections/transformersequipment$150
12-Gauge Cable & Connectorsequipment$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

tier:betterBetterMost Popularhighlighted (default recommended)

Smart landscape + security lighting system

Brand: Kichler / FX Luminaire + Ring Floodlight

basePrice (declared)

$4,000

Σ(lineItems) (computed)

$4,000

Line items (base price breakdown)

labelcategoryamount
20× Kichler LED Landscape Fixturessource: https://www.kichler.com/landscape-lighting/equipment$1,500
FX SmartConnect WiFi Transformersource: https://www.fxl.com/products/transformersequipment$350
2× Ring Floodlight Cam Wired Plus (installed)source: https://ring.com/products/floodlight-cam-wired-plusequipment$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-onprice
deck_lightsDeck/Patio String LightingCommercial-grade bistro lights with timer$800
driveway_lightsIn-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

tier:bestBest

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)

labelcategoryamount
Lighting Design Consultation & Plan (4 hrs)labor$1,000
40+ Architectural LED Fixturessource: https://www.cast-lighting.com/productsequipment$6,000
FX Maestro Controller (zone/color programming)source: https://www.fxl.com/products/controllersequipment$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+scorewhen ALL conditions hold
good3lighting_type{ "low_voltage", "security" }
good2property_size{ "small" }
better2smart_control{ "smart_app" }
better2property_size{ "medium" }
best3lighting_type{ "full_system" }
best2smart_control{ "full_smart" }
best1property_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

Source file: src/lib/flow-engine/verticals/outdoor-lighting.ts · run the live flow →

🪞Bathroom Vanity slug:bathroom-vanity

ORDER FEEcomplexity: mediumprovider label: installerphotos: optionalquestions: 5tiers: 3

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

  1. 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.

Q1vanity_sizesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
small_24_30Small — 24" to 30" (single sink, smaller bath)
  • tags: small
medium_36_48Medium — 36" to 48" (standard single)
  • tags: medium
double_60_72Double — 60" to 72" (double sink)
  • tags: double
customCustom size or floating
  • tags: custom
Q2stylesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
traditionalTraditional (raised panel doors, furniture-style)
  • tags: traditional
transitionalTransitional (shaker doors, timeless)
  • tags: transitional
modern_floatingModern floating (wall-mount, clean lines)
  • tags: modern
farmhouseFarmhouse (open shelf, apron-style)
  • tags: farmhouse
Q3countertopsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
integrated_ceramicIntegrated ceramic (molded top + sink — easy clean)
  • tags: ceramic
quartzQuartz top with undermount sink
  • tags: quartz
marbleMarble or stone top
  • tags: stone
vessel_sinkVessel sink (above-counter, statement look)
  • tags: vessel
Q4plumbing_changesingle_select

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

valuelabel shown to customereffects on pricing / flow
same_sizeSame size — just swapping the vanityno direct price effect
different_sizeDifferent size — may need plumbing adjustmentsno direct price effect
moving_plumbingMoving plumbing to a new locationno direct price effect
Q5faucetsingle_select

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

valuelabel shown to customereffects on pricing / flow
chromeChrome (classic, easy to maintain)no direct price effect
brushed_nickelBrushed nickel (most popular)
  • tags: brushed_nickel
matte_blackMatte black (trending)
  • tags: matte_black
gold_brassBrushed gold or unlacquered brass
  • tags: gold

Tiers (3)

tier:goodGoodBest Value

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)

labelcategoryamount
Vanity Cabinet + Top (supply)source: https://www.us.kohler.com/us/bathroom/vanitiesequipment$500
Faucet (Moen or Delta)source: https://www.moen.com/bath/faucetsequipment$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

tier:betterBetterMost Popularhighlighted (default recommended)

Semi-custom with quartz top

Brand: Strasser Woodenworks / James Martin

basePrice (declared)

$4,500

Σ(lineItems) (computed)

$4,500

Line items (base price breakdown)

labelcategoryamount
All-Wood Vanity (supply)source: https://www.jamesmartinfurniture.comequipment$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/trinsicequipment$250
LED Mirrorsource: https://www.homedepot.com/s/led%20vanity%20mirrorequipment$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-onprice
electrical_outletHidden 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

tier:bestBest

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)

labelcategoryamount
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/faucetsequipment$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+scorewhen ALL conditions hold
good3vanity_size{ "small_24_30" }
good2countertop{ "integrated_ceramic" }
better3countertop{ "quartz" }
better2vanity_size{ "medium_36_48", "double_60_72" }
best4style{ "modern_floating" }
best3countertop{ "marble" }
best2vanity_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

Source file: src/lib/flow-engine/verticals/bathroom-vanity.ts · run the live flow →

🚰Septic System slug:septic-system

ORDER FEEcomplexity: mediumprovider label: septic specialistphotos: nonequestions: 4tiers: 3

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.

Q1service_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
pumpingRoutine pumping (every 3–5 years)
  • tags: pumping
inspectionInspection + pumping (real estate or concern)
  • tags: inspection
repairRepair — system isn't draining or has odor
  • tags: repair
replacementFull system replacement
  • tags: replacement
Q2household_sizesingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
1_2br1–2 bedrooms (1–3 people)
  • tags: small_system
3br3 bedrooms (3–5 people)
  • tags: medium_system
4_5br4–5 bedrooms (5+ people)
  • tags: large_system
Q3symptomssingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
noneNone — routine service
  • tags: routine
slow_drainsSlow drains throughout home
  • tags: slow_drains
odorSewage smell in yard or home
  • tags: odor
wet_spotsWet or soggy spots over drain field
  • tags: drain_field_fail
backupSewage backup into home
  • tags: backup
Q4last_servicesingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
recentWithin 3 years
  • tags: maintained
overdue3–7 years ago
  • tags: overdue
unknownUnknown / never (home purchase)
  • tags: unknown

Tiers (3)

tier:goodGoodBest Value

Routine pumping — keep it healthy

Brand: Licensed Septic Service

basePrice (declared)

$450

Σ(lineItems) (computed)

$450

Line items (base price breakdown)

labelcategoryamount
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

tier:betterBetterMost Popularhighlighted (default recommended)

Full inspection + pumping + minor repairs

Brand: Licensed Septic Inspector

basePrice (declared)

$1,200

Σ(lineItems) (computed)

$1,200

Line items (base price breakdown)

labelcategoryamount
Tank Pump-Outlabor$450
Camera Inspection + Written Reportlabor$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-onprice
riser_installConcrete to PVC Riser ConversionAdd access risers to both lids — easier future service$800
effluent_filterOutlet 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

tier:bestBest

Drain field repair or full system replacement

Brand: Licensed Septic Contractor

basePrice (declared)

$15,000

Σ(lineItems) (computed)

$15,000

Line items (base price breakdown)

labelcategoryamount
Site Assessment & Perc Testlabor$1,000
Excavation & Old System Demolabor$3,000
New Septic Tank (1,000-gal concrete)equipment$2,500
New Drain Field (gravel + pipe + fabric)equipment$7,000
Permits, Backfill & Restorationlabor$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+scorewhen ALL conditions hold
good3service_type{ "pumping" }
good2symptoms{ "none" }
better3service_type{ "inspection", "repair" }
better2symptoms{ "slow_drains", "odor" }
better1last_service{ "unknown" }
best4service_type{ "replacement" }
best3symptoms{ "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

Source file: src/lib/flow-engine/verticals/septic-system.ts · run the live flow →

🏊Pool Service slug:pool-service

DIRECT PAYcomplexity: simpleprovider label: pool technicianphotos: nonequestions: 4tiers: 3

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.

Q1service_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
weeklyWeekly maintenance (chemical balance, clean, vacuum)
  • tags: weekly
openingSeasonal opening (spring)
  • tags: opening
closingSeasonal closing (winterization)
  • tags: closing
repairEquipment repair (pump, filter, heater, lights)
  • tags: repair
Q2pool_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
inground_vinylIn-ground vinyl liner
  • tags: vinyl
inground_fiberglassIn-ground fiberglass
  • tags: fiberglass
inground_concreteIn-ground concrete / gunite
  • tags: concrete
above_groundAbove-ground
  • tags: above_ground
Q3pool_sizesingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
smallSmall — under 15,000 gallons
  • tags: small
mediumMedium — 15,000–30,000 gallons
  • tags: medium
largeLarge — over 30,000 gallons + spa
  • price +$100 → line item "Large pool / spa upcharge"
  • tags: large
Q4sanitizationsingle_select

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

valuelabel shown to customereffects on pricing / flow
chlorineTraditional chlorine
  • tags: chlorine
saltSalt water chlorine generator
  • tags: salt
mineralMineral (Nature2, Frog)
  • tags: mineral
unknownNot sureno direct price effect

Tiers (3)

tier:goodGoodBest Value

Reliable weekly maintenance service

Brand: Local Pool Pro

basePrice (declared)

$200

Σ(lineItems) (computed)

$200

Line items (base price breakdown)

labelcategoryamount
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

tier:betterBetterMost Popularhighlighted (default recommended)

Full-service weekly care + opening or closing

Brand: Certified Pool Operator (CPO)

basePrice (declared)

$350

Σ(lineItems) (computed)

$350

Line items (base price breakdown)

labelcategoryamount
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-onprice
algae_treatmentAlgae Treatment (if needed)Shock + algaecide for green pool recovery$250
salt_cell_cleanSalt 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

tier:bestBest

Full service + equipment repair coverage

Brand: CPO + Equipment Service Plan

basePrice (declared)

$650

Σ(lineItems) (computed)

$650

Line items (base price breakdown)

labelcategoryamount
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+scorewhen ALL conditions hold
good3service_type{ "opening", "closing" }
good2pool_size{ "small" }
better3service_type{ "weekly" }
better2pool_size{ "medium" }
best3service_type{ "repair" }
best2pool_size{ "large" }
best1pool_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

Source file: src/lib/flow-engine/verticals/pool-service.ts · run the live flow →

🌫️Radon Mitigation slug:radon-mitigation

ORDER FEEcomplexity: mediumprovider label: radon specialistphotos: nonequestions: 4tiers: 3

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.

Q1radon_levelsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
under_2Under 2 pCi/L (low — but want peace of mind)
  • tags: low
2_42–4 pCi/L (elevated — mitigation recommended)
  • tags: moderate
4_104–10 pCi/L (high — EPA action level)
  • tags: high
over_10Over 10 pCi/L (very high — priority)
  • tags: very_high
not_testedHaven't tested yet — need test + mitigation
  • tags: untested
Q2foundation_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
basement_slabBasement with poured concrete slab floor
  • tags: basement_slab
crawlspaceCrawl space foundation
  • tags: crawlspace
slab_on_gradeSlab-on-grade (no basement)
  • tags: slab
combinationCombination — partial basement + crawlspace
  • tags: combo
Q3home_sqftsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
smallUnder 1,000 sq ft
  • tags: small
medium1,000–2,000 sq ft
  • tags: medium
largeOver 2,000 sq ft
  • tags: large
Q4post_testsingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
yesYes — I want confirmation it worked
  • tags: post_test
noI'll test separatelyno direct price effect

Tiers (3)

tier:goodGoodBest Value

Standard sub-slab depressurization

Brand: RadonAway RP145 / Festa Radon

basePrice (declared)

$1,000

Σ(lineItems) (computed)

$1,000

Line items (base price breakdown)

labelcategoryamount
SSD System Installation (1 suction point)labor$750
RadonAway RP145 Fansource: https://www.radonaway.comequipment$150
PVC Pipe, Fittings & Electricalequipment$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

tier:betterBetterMost Popularhighlighted (default recommended)

Multi-point system + post-mitigation test

Brand: RadonAway GP401 + NRPP Certified

basePrice (declared)

$1,750

Σ(lineItems) (computed)

$1,750

Line items (base price breakdown)

labelcategoryamount
SSD System Installation (2 suction points)labor$1,200
RadonAway GP401 Fanequipment$250
Manometer + Electricallabor$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-onprice
crawl_sealCrawlspace 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

tier:bestBest

Complete radon system with crawlspace encapsulation

Brand: Festa Radon + CleanSpace

basePrice (declared)

$3,500

Σ(lineItems) (computed)

$3,500

Line items (base price breakdown)

labelcategoryamount
SSD System (basement, 2 points)equipment$1,200
Sub-Membrane Depressurization (crawlspace)labor$800
20-mil CleanSpace Vapor Barrierequipment$800
RadonAway RP265 High-Capacity Fanequipment$350
Airthings Wave Plus Smart Monitorequipment$200
Post-Test + Documentationlabor$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+scorewhen ALL conditions hold
good3radon_level{ "2_4", "4_10" }
good2foundation_type{ "basement_slab" }
better3post_test{ "yes" }
better2radon_level{ "4_10", "over_10" }
best3radon_level{ "over_10" }
best3foundation_type{ "combination", "crawlspace" }
best1home_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

Source file: src/lib/flow-engine/verticals/radon-mitigation.ts · run the live flow →

💧Water Softener slug:water-softener

ORDER FEEcomplexity: mediumprovider label: plumberphotos: optionalquestions: 4tiers: 3

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

  1. 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.

Q1water_issuesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
hard_waterHard water — mineral buildup on fixtures, soap scum
  • tags: hard
taste_odorBad taste or smell (sulfur, chlorine)
  • tags: taste
ironIron — orange staining in sinks and toilets
  • tags: iron
allMultiple issues — softening + filtration
  • tags: all
Q2household_sizesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
1_21–2 people
  • tags: small_hh
3_43–4 people
  • tags: medium_hh
5_plus5 or more
  • tags: large_hh
Q3water_sourcesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
cityCity / municipal water
  • tags: city_water
wellPrivate well
  • tags: well_water
Q4salt_freesingle_select

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

valuelabel shown to customereffects on pricing / flow
salt_basedSalt-based — most effective at softening
  • tags: salt
salt_freeSalt-free — no sodium in water, less maintenance
  • tags: salt_free
no_preferenceNo preference — recommend what works bestno direct price effect

Tiers (3)

tier:goodGoodBest Value

Reliable salt-based water softener

Brand: Whirlpool WHES40E / Fleck 5600SXT

basePrice (declared)

$1,000

Σ(lineItems) (computed)

$1,000

Line items (base price breakdown)

labelcategoryamount
Fleck 5600SXT or Whirlpool WHES40E Unitsource: https://www.pentairwatersolutions.comequipment$500
Installation Labor & Bypass Valve (2 hrs)labor$400
Brine Tank + Initial Saltequipment$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

tier:betterBetterMost Popularhighlighted (default recommended)

Softener + whole-home carbon filter

Brand: Pelican or Springwell Combo System

basePrice (declared)

$2,200

Σ(lineItems) (computed)

$2,200

Line items (base price breakdown)

labelcategoryamount
Springwell SS + CF1 Systemsource: https://www.springwellwater.comequipment$1,300
Installation Labor — softener + filter (3 hrs)labor$700
Sediment Pre-Filterequipment$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-onprice
reverse_osmosisUnder-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

tier:bestBest

Iron filtration + softener + RO drinking system

Brand: Springwell WS + CF + SSRO

basePrice (declared)

$5,000

Σ(lineItems) (computed)

$5,000

Line items (base price breakdown)

labelcategoryamount
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+scorewhen ALL conditions hold
good3water_issue{ "hard_water" }
good2water_source{ "city" }
better3water_issue{ "taste_odor", "all" }
better2household_size{ "3_4" }
best4water_issue{ "iron" }
best2water_source{ "well" }
best1household_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

Source file: src/lib/flow-engine/verticals/water-softener.ts · run the live flow →

❄️HVAC Maintenance slug:hvac-maintenance

DIRECT PAYcomplexity: simpleprovider label: HVAC technicianphotos: nonequestions: 4tiers: 3

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.

Q1service_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
tune_upSeasonal tune-up (AC or furnace)
  • tags: tune_up
maintenance_planMaintenance plan (2x per year)
  • tags: plan
service_contractFull service contract with repair coverage
  • tags: contract
filter_changeFilter change / air quality check
  • tags: filter
Q2system_typesingle_selectrequired

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

valuelabel shown to customereffects on pricing / flow
central_ac_furnaceCentral AC + furnace
  • tags: central
heat_pumpHeat pump (heating & cooling)
  • tags: heat_pump
mini_splitDuctless mini-split
  • tags: mini_split
boilerBoiler / radiant heat
  • tags: boiler
unknownNot sureno direct price effect
Q3system_agesingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
newLess than 5 years
  • tags: newer
mid5–15 years
  • tags: mid_age
oldOver 15 years
  • tags: older
unknownNot sureno direct price effect
Q4home_sizesingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
smallUnder 1,500 sq ft
  • tags: small_home
medium1,500–3,000 sq ft
  • tags: medium_home
largeOver 3,000 sq ft
  • tags: large_home

Tiers (3)

tier:goodGoodBest Value

One-time seasonal tune-up

Brand: Local HVAC Pro

basePrice (declared)

$129

Σ(lineItems) (computed)

$129

Line items (base price breakdown)

labelcategoryamount
Seasonal Tune-Up — AC or Furnace (1–1.5 hrs)labor$109
Standard Filter Replacementequipment$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

tier:betterBetterMost Popularhighlighted (default recommended)

Twice-yearly maintenance plan

Brand: Certified HVAC Technician

basePrice (declared)

$199

Σ(lineItems) (computed)

$199

Line items (base price breakdown)

labelcategoryamount
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-onprice
duct_inspectionDuct Inspection & Sealing CheckVisual inspection of accessible ductwork for leaks$75
indoor_air_qualityIndoor 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

tier:bestBest

Full service contract with priority repair coverage

Brand: Premium HVAC Service Plan

basePrice (declared)

$420

Σ(lineItems) (computed)

$420

Line items (base price breakdown)

labelcategoryamount
2x Annual Tune-Ups (2 × 1–1.5 hrs)labor$190
Repair Coverage (annual)labor$180
Priority Service & Filtersequipment$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+scorewhen ALL conditions hold
good3service_type{ "tune_up", "filter_change" }
good2system_age{ "new" }
good1home_size{ "small" }
better3service_type{ "maintenance_plan" }
better2system_age{ "mid" }
better1home_size{ "medium" }
best3service_type{ "service_contract" }
best2system_age{ "old" }
best2home_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

Source file: src/lib/flow-engine/verticals/hvac-maintenance.ts · run the live flow →

🧹House Cleaning slug:house-cleaning

DIRECT PAYcomplexity: simpleprovider label: cleaning professionalphotos: nonequestions: 6tiers: 3

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.

Q1cleaning_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
standardStandard recurring clean
  • tags: standard
deepDeep clean
  • tags: deep
move_in_outMove-in / move-out clean
  • tags: move
premiumPremium service (cleaning + laundry + organizing)
  • tags: premium
Q2home_sizesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
small1–2 bedrooms
  • tags: small
medium3 bedrooms
  • tags: medium
large4–5 bedrooms
  • tags: large
xl6+ bedrooms
  • tags: xl
Q3bathroomssingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
one1 bathroomno direct price effect
two2 bathroomsno direct price effect
three3 bathroomsno direct price effect
four_plus4+ bathrooms
  • tags: many_baths
Q4frequencysingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
weeklyWeekly
  • tags: weekly
biweeklyEvery 2 weeks
  • tags: biweekly
monthlyMonthly
  • tags: monthly
one_timeOne-time
  • tags: one_time
Q5petssingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
noNo petsno direct price effect
yesYes — dogs, cats, or both
  • tags: pets
Q6extrasmulti_select

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

valuelabel shown to customereffects on pricing / flow
inside_fridgeInside fridgeno direct price effect
inside_ovenInside ovenno direct price effect
laundryLaundry (wash, dry, fold)no direct price effect
windows_interiorInterior windowsno direct price effect
organizingLight organizing / declutteringno direct price effect

Tiers (3)

tier:goodGoodBest Value

Standard recurring clean — kitchen, baths, floors, dusting

Brand: Local Cleaning Pro

basePrice (declared)

$150

Σ(lineItems) (computed)

$150

Line items (base price breakdown)

labelcategoryamount
Standard Clean — 3BR home (2–3 hrs)labor$130
Supplies & Materialsequipment$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

tier:betterBetterMost Popularhighlighted (default recommended)

Deep clean — baseboards, inside appliances, detailed work

Brand: Professional Cleaning Service

basePrice (declared)

$275

Σ(lineItems) (computed)

$275

Line items (base price breakdown)

labelcategoryamount
Deep Clean Service — 3BR home (3–5 hrs)labor$240
Eco-Friendly Suppliesequipment$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-onprice
inside_cabinetsInside Cabinets & DrawersWipe down and organize all kitchen/bathroom cabinets$75
garage_sweepGarage 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

tier:bestBest

Premium service — cleaning + laundry + organizing

Brand: Premium Home Care

basePrice (declared)

$450

Σ(lineItems) (computed)

$450

Line items (base price breakdown)

labelcategoryamount
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 Suppliesequipment$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+scorewhen ALL conditions hold
good3cleaning_type{ "standard" }
good2frequency{ "weekly", "biweekly" }
good1home_size{ "small" }
better3cleaning_type{ "deep", "move_in_out" }
better2frequency{ "monthly" }
better1home_size{ "medium" }
better1bathrooms{ "three", "four_plus" }
best3cleaning_type{ "premium" }
best2home_size{ "large", "xl" }
best1pets{ "yes" }
best1bathrooms{ "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

Source file: src/lib/flow-engine/verticals/house-cleaning.ts · run the live flow →

💦Pressure Washing slug:pressure-washing

DIRECT PAYcomplexity: simpleprovider label: pressure washing prophotos: nonequestions: 4tiers: 3

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.

Q1areasmulti_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
drivewayDriveway / walkways
  • tags: driveway
sidingHouse siding / exterior walls
  • tags: siding
deckDeck / patio
  • tags: deck
fenceFence
  • price +$80 → line item "Fence cleaning add-on"
  • tags: fence
roofRoof (soft wash)
  • price +$150 → line item "Roof soft wash add-on"
  • tags: roof
Q2home_sizesingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
smallSmall — under 1,500 sq ft
  • tags: small
mediumMedium — 1,500–2,500 sq ft
  • tags: medium
largeLarge — over 2,500 sq ft
  • price +$100 → line item "Large home upcharge"
  • tags: large
Q3surface_conditionsingle_selectprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
lightLight dirt and dust
  • tags: light
moderateModerate buildup — mold, mildew, or algae
  • tags: moderate
heavyHeavy staining — oil, rust, or years of neglect
  • price +$100 → line item "Heavy staining surcharge"
  • tags: heavy
Q4frequencysingle_select

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

valuelabel shown to customereffects on pricing / flow
one_timeOne-time cleaning
  • tags: one_time
annualAnnual (once a year)
  • tags: annual
biannualTwice a year
  • tags: biannual

Tiers (3)

tier:goodGoodBest Value

Driveway and walkway cleaning

Brand: Local Pressure Wash Pro

basePrice (declared)

$180

Σ(lineItems) (computed)

$180

Line items (base price breakdown)

labelcategoryamount
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

tier:betterBetterMost Popularhighlighted (default recommended)

House exterior + driveway package

Brand: Professional Wash Service

basePrice (declared)

$400

Σ(lineItems) (computed)

$400

Line items (base price breakdown)

labelcategoryamount
House Siding Soft Wash (2–3 hrs)labor$250
Driveway & Walkway Pressure Wash (1–1.5 hrs)labor$120
Cleaning Solutions & Plant Protectionequipment$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-onprice
gutter_brighteningGutter BrighteningClean exterior gutter faces — remove black streaks$100
concrete_sealingDriveway 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

tier:bestBest

Whole property wash — siding, driveway, deck, fence, roof

Brand: Full-Service Exterior Cleaning

basePrice (declared)

$800

Σ(lineItems) (computed)

$800

Line items (base price breakdown)

labelcategoryamount
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-Treatmentequipment$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+scorewhen ALL conditions hold
good3areas{ "driveway" }
good2home_size{ "small" }
good1surface_condition{ "light" }
better3areas{ "siding" }
better2home_size{ "medium" }
better1surface_condition{ "moderate" }
best3areas{ "roof" }
best2home_size{ "large" }
best2surface_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

Source file: src/lib/flow-engine/verticals/pressure-washing.ts · run the live flow →

🪟Window Cleaning slug:window-cleaning

DIRECT PAYcomplexity: simpleprovider label: window cleaning prophotos: nonequestions: 4tiers: 3

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.

Q1service_scopesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
exteriorExterior only
  • tags: exterior
bothInterior + exterior
  • tags: both
fullInterior + exterior + screens + tracks
  • tags: full
Q2window_countsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
small10–15 windows
  • tags: small
medium16–25 windows
  • tags: medium
large26–40 windows
  • tags: large
xl40+ windows
  • tags: xl
Q3storiessingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
oneSingle story
  • tags: single_story
twoTwo stories
  • tags: two_story
three_plusThree+ stories
  • tags: multi_story
Q4frequencysingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
one_timeOne-time
  • tags: one_time
quarterlyQuarterly (4x/year)
  • tags: quarterly
biannualTwice a year
  • tags: biannual
annualOnce a year
  • tags: annual

Tiers (3)

tier:goodGoodBest Value

Exterior window cleaning — streak-free shine

Brand: Local Window Pro

basePrice (declared)

$200

Σ(lineItems) (computed)

$200

Line items (base price breakdown)

labelcategoryamount
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

tier:betterBetterMost Popularhighlighted (default recommended)

Interior + exterior — every pane spotless

Brand: Professional Window Service

basePrice (declared)

$325

Σ(lineItems) (computed)

$325

Line items (base price breakdown)

labelcategoryamount
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-onprice
chandelierChandelier CleaningHand-clean crystal or glass light fixtures$75
skylightSkylight 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

tier:bestBest

Complete service — windows, screens, tracks, and frames

Brand: Premium Window Care

basePrice (declared)

$500

Σ(lineItems) (computed)

$500

Line items (base price breakdown)

labelcategoryamount
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+scorewhen ALL conditions hold
good3service_scope{ "exterior" }
good2window_count{ "small" }
good1stories{ "one" }
better3service_scope{ "both" }
better2window_count{ "medium" }
better1frequency{ "biannual" }
best3service_scope{ "full" }
best2window_count{ "large", "xl" }
best1frequency{ "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

Source file: src/lib/flow-engine/verticals/window-cleaning.ts · run the live flow →

🧼Carpet Cleaning slug:carpet-cleaning

DIRECT PAYcomplexity: simpleprovider label: carpet cleaning technicianphotos: nonequestions: 4tiers: 3

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.

Q1scopesingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
few_rooms2–3 rooms
  • tags: few_rooms
whole_houseWhole house (4–6 rooms)
  • tags: whole_house
large_homeLarge home (7+ rooms)
  • price +$150 → line item "Large Home (7+ rooms) Area Surcharge"
  • tags: large_home
Q2concernsmulti_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
general_dirtGeneral dirt and traffic wear
  • tags: general
pet_stainsPet stains and odors
  • price +$50 → line item "Pet Stain & Odor Treatment"
  • tags: pets
deep_stainsDeep stains (wine, coffee, grease)
  • price +$40 → line item "Deep Stain Pre-Treatment"
  • tags: stains
allergensAllergens and dust mites
  • tags: allergens
Q3carpet_typesingle_selectprice delta

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

valuelabel shown to customereffects on pricing / flow
standardStandard wall-to-wall carpet
  • tags: standard
berberBerber / loop pile
  • tags: berber
plushPlush / frieze
  • tags: plush
area_rugsArea rugs (wool, oriental, etc.)
  • price +$80 → line item "Area Rug Specialty Cleaning Surcharge"
  • tags: rugs
Q4last_cleanedsingle_selectprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
recentWithin the last year
  • tags: recent
while_ago1–3 years ago
  • tags: moderate_wear
never3+ years or never
  • price +$50 → line item "Heavy Buildup Deep Clean Surcharge"
  • tags: heavy_wear

Tiers (3)

tier:goodGoodBest Value

2–3 room carpet cleaning — quick refresh

Brand: Local Carpet Pro

basePrice (declared)

$165

Σ(lineItems) (computed)

$165

Line items (base price breakdown)

labelcategoryamount
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

tier:betterBetterMost Popularhighlighted (default recommended)

Whole house cleaning — deep extraction

Brand: Certified Carpet Technician

basePrice (declared)

$275

Σ(lineItems) (computed)

$275

Line items (base price breakdown)

labelcategoryamount
Whole House Carpet Cleaning — 4–6 rooms (4 hrs)labor$220
Stain Pre-Treatment Solutionequipment$30
Deodorizer Applicationequipment$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-onprice
scotchgardCarpet Protectant (Scotchgard)Stain-resistant coating for all cleaned carpets$75
staircaseStaircase 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

tier:bestBest

Whole house + upholstery + stain treatment

Brand: Premium Carpet & Upholstery Care

basePrice (declared)

$500

Σ(lineItems) (computed)

$500

Line items (base price breakdown)

labelcategoryamount
Whole House Deep Carpet Cleaning (5 hrs)labor$250
Upholstery Cleaning — sofa + 2 chairs (2 hrs)labor$120
Enzyme Pet Treatment Solutionequipment$50
Specialty Stain Removal Productsequipment$40
Carpet Protectant Applicationequipment$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+scorewhen ALL conditions hold
good3scope{ "few_rooms" }
good2last_cleaned{ "recent" }
good1concerns{ "general_dirt" }
better3scope{ "whole_house" }
better2last_cleaned{ "while_ago" }
better1concerns{ "allergens" }
best3concerns{ "pet_stains", "deep_stains" }
best2scope{ "large_home" }
best2last_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

Source file: src/lib/flow-engine/verticals/carpet-cleaning.ts · run the live flow →

🔥Dryer Vent Cleaning slug:dryer-vent-cleaning

DIRECT PAYcomplexity: simpleprovider label: dryer vent technicianphotos: nonequestions: 4tiers: 3

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.

Q1service_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
cleaningBasic dryer vent cleaning
  • tags: cleaning
cleaning_inspectionCleaning + full inspection
  • tags: inspection
full_serviceCleaning + inspection + dryer maintenance
  • tags: full_service
Q2vent_lengthsingle_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
shortShort — wall-mounted dryer, vent exits nearby
  • tags: short
mediumMedium — 10–20 feet to exterior
  • tags: medium
longLong — 20+ feet or through roof
  • price +$50 → line item "Long Vent Run Surcharge (20+ ft or roof exit)"
  • tags: long
Q3last_cleanedsingle_selectprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
recentWithin the last year
  • tags: recent
few_years2–3 years ago
  • tags: overdue
neverNever or can't remember
  • price +$30 → line item "Heavy Lint Buildup Surcharge"
  • tags: neglected
Q4symptomsmulti_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
long_dryClothes taking longer to dry
  • tags: symptoms
hot_dryerDryer getting very hot
  • tags: symptoms
lint_outsideLint visible around exterior vent
  • tags: symptoms
burning_smellBurning smell when dryer runs
  • tags: urgent
noneNo issues — preventive maintenanceno direct price effect

Tiers (3)

tier:goodGoodBest Value

Basic dryer vent cleaning — lint removal and airflow restored

Brand: Local Vent Pro

basePrice (declared)

$150

Σ(lineItems) (computed)

$150

Line items (base price breakdown)

labelcategoryamount
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

tier:betterBetterMost Popularhighlighted (default recommended)

Cleaning + full inspection with before/after photos

Brand: Certified Vent Technician

basePrice (declared)

$210

Σ(lineItems) (computed)

$210

Line items (base price breakdown)

labelcategoryamount
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-onprice
vent_repairVent Line RepairFix disconnected or damaged vent sections$80
bird_guardBird 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

tier:bestBest

Complete service — vent cleaning, inspection, and dryer maintenance

Brand: Full-Service Dryer Care

basePrice (declared)

$300

Σ(lineItems) (computed)

$300

Line items (base price breakdown)

labelcategoryamount
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+scorewhen ALL conditions hold
good3service_type{ "cleaning" }
good2last_cleaned{ "recent" }
good1vent_length{ "short" }
better3service_type{ "cleaning_inspection" }
better2last_cleaned{ "few_years" }
better1vent_length{ "medium" }
best3service_type{ "full_service" }
best3symptoms{ "burning_smell" }
best2last_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

Source file: src/lib/flow-engine/verticals/dryer-vent-cleaning.ts · run the live flow →

🔧Appliance Repair slug:appliance-repair

DIRECT PAYcomplexity: simpleprovider label: appliance repair technicianphotos: nonequestions: 4tiers: 3

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.

Q1appliancesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
washerWashing machine
  • tags: washer
dryerDryer
  • tags: dryer
fridgeRefrigerator / freezer
  • tags: fridge
dishwasherDishwasher
  • tags: dishwasher
ovenOven / range / stove
  • tags: oven
microwaveMicrowave (built-in)
  • tags: microwave
Q2issuesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
not_workingWon't turn on or start
  • tags: electrical
leakingLeaking water
  • tags: leak
noisyMaking unusual noise
  • tags: mechanical
poor_performanceNot heating / cooling / cleaning properly
  • tags: performance
error_codeError code / blinking light
  • tags: diagnostic
otherOther issueno direct price effect
Q3brandsingle_selectprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
standardStandard (GE, Whirlpool, Samsung, LG, Maytag, Frigidaire)
  • tags: standard_brand
premiumPremium (Sub-Zero, Viking, Bosch, Miele, Wolf)
  • price +$50 → line item "Premium Brand Parts Surcharge"
  • tags: premium_brand
unknownOther / not sureno direct price effect
Q4warrantysingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
yesYes — still under manufacturer warrantyno direct price effect
extendedExtended warranty / home warrantyno direct price effect
noNo — out of warranty
  • tags: no_warranty
unsureNot sureno direct price effect

Tiers (3)

tier:goodGoodBest Value

Diagnostic visit + simple fix

Brand: Local Appliance Tech

basePrice (declared)

$190

Σ(lineItems) (computed)

$190

Line items (base price breakdown)

labelcategoryamount
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

tier:betterBetterMost Popularhighlighted (default recommended)

Parts + labor with 90-day warranty

Brand: Certified Appliance Technician

basePrice (declared)

$350

Σ(lineItems) (computed)

$350

Line items (base price breakdown)

labelcategoryamount
Diagnostic & Labor (1.5 hrs)labor$180
OEM Partsequipment$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-onprice
maintenance_checkFull Appliance CheckupInspect and tune all major components while appliance is accessible$50
second_applianceSecond 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

tier:bestBest

Premium repair with 1-year warranty

Brand: Factory-Authorized Service

basePrice (declared)

$600

Σ(lineItems) (computed)

$600

Line items (base price breakdown)

labelcategoryamount
Priority Diagnostic & Expert Labor (2 hrs)labor$250
Genuine OEM Partsequipment$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+scorewhen ALL conditions hold
good3issue{ "not_working", "error_code" }
good2brand{ "standard" }
good1appliance{ "microwave" }
better3issue{ "leaking", "noisy", "poor_performance" }
better2warranty{ "no" }
best3brand{ "premium" }
best2appliance{ "fridge" }
best1issue{ "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

Source file: src/lib/flow-engine/verticals/appliance-repair.ts · run the live flow →

🛠️Handyman slug:handyman

DIRECT PAYcomplexity: simpleprovider label: handymanphotos: nonequestions: 4tiers: 3

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.

Q1job_typemulti_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
mountingTV mounting / shelf hanging / picture frames
  • tags: mounting
assemblyFurniture assembly (IKEA, etc.)
  • tags: assembly
minor_plumbingMinor plumbing (faucet, toilet, garbage disposal)
  • tags: plumbing
minor_electricalMinor electrical (outlets, switches, fixtures)
  • tags: electrical
drywallDrywall repair / patching
  • tags: drywall
doors_windowsDoor/window adjustment or replacement
  • tags: doors
generalGeneral repairs and maintenance
  • tags: general
Q2time_estimatesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
smallSmall — 1–2 tasks (couple hours)
  • tags: small
mediumMedium — 3–5 tasks (half day)
  • tags: medium
largeLarge — full day of tasks
  • tags: large
Q3materialssingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
yesYes — I have everything
  • tags: materials_ready
someSome — may need a few things
  • tags: some_materials
noNo — handyman will need to source materials
  • tags: need_materials
Q4urgencysingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
flexibleFlexible — within 1–2 weeks
  • tags: flexible
soonWithin a few days
  • tags: soon
asapASAP — urgent
  • tags: urgent

Tiers (3)

tier:goodGoodBest Value

2-hour minimum — perfect for quick fixes

Brand: Local Handyman

basePrice (declared)

$175

Σ(lineItems) (computed)

$175

Line items (base price breakdown)

labelcategoryamount
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

tier:betterBetterMost Popularhighlighted (default recommended)

Half-day booking — tackle your task list

Brand: Experienced Handyman

basePrice (declared)

$375

Σ(lineItems) (computed)

$375

Line items (base price breakdown)

labelcategoryamount
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-onprice
extra_hoursAdditional HoursExtend to full day as needed at $75/hr$75
disposalDebris 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

tier:bestBest

Full-day service — your complete to-do list, handled

Brand: Premium Handyman Service

basePrice (declared)

$650

Σ(lineItems) (computed)

$650

Line items (base price breakdown)

labelcategoryamount
Full-Day Handyman Service (8 hrs)labor$550
Materials Sourcing & Pickup (1 hr)labor$50
Workmanship Guaranteelabor$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+scorewhen ALL conditions hold
good3time_estimate{ "small" }
good2job_type{ "mounting", "assembly" }
good1materials{ "yes" }
better3time_estimate{ "medium" }
better2job_type{ "minor_plumbing", "minor_electrical", "drywall" }
better1urgency{ "soon" }
best3time_estimate{ "large" }
best2materials{ "no" }
best1urgency{ "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

Source file: src/lib/flow-engine/verticals/handyman.ts · run the live flow →

🏠Chimney Sweeping slug:chimney-sweeping

DIRECT PAYcomplexity: simpleprovider label: chimney sweepphotos: nonequestions: 4tiers: 3

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.

Q1service_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
sweepBasic chimney sweep (Level 1)
  • tags: sweep
sweep_inspectionSweep + detailed inspection (Level 2)
  • tags: inspection
full_serviceSweep + inspection + cap/damper repair
  • tags: full_service
Q2fireplace_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
woodWood-burning fireplace
  • tags: wood
gasGas fireplace
  • tags: gas
wood_stoveWood stove / insert
  • tags: stove
pelletPellet stove
  • tags: pellet
Q3last_sweptsingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
recentWithin the last year
  • tags: recent
few_years2–3 years ago
  • tags: overdue
long_time4+ years or never
  • tags: neglected
Q4concernsmulti_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
creosoteHeavy creosote buildup
  • tags: creosote
animalAnimal nesting / blockage
  • tags: blockage
smellSmoke smell in the house
  • tags: smell
damaged_capMissing or damaged chimney cap
  • tags: cap_issue
noneNo specific concerns — routine maintenanceno direct price effect

Tiers (3)

tier:goodGoodBest Value

Level 1 sweep — creosote removal and basic visual check

Brand: CSIA Certified Sweep

basePrice (declared)

$200

Σ(lineItems) (computed)

$200

Line items (base price breakdown)

labelcategoryamount
Chimney Sweep (Level 1)labor$170
Level 1 Visual Inspectionlabor$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

tier:betterBetterMost Popularhighlighted (default recommended)

Level 2 sweep + video inspection of flue liner

Brand: CSIA Certified + Video Inspection

basePrice (declared)

$375

Σ(lineItems) (computed)

$375

Line items (base price breakdown)

labelcategoryamount
Chimney Sweeplabor$190
Level 2 Camera Inspectionlabor$150
Written Condition Reportlabor$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-onprice
waterproofingChimney WaterproofingApply breathable sealant to prevent water damage$150
animal_removalAnimal 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

tier:bestBest

Complete service — sweep, inspection, cap + damper repair

Brand: Full-Service Chimney Care

basePrice (declared)

$600

Σ(lineItems) (computed)

$600

Line items (base price breakdown)

labelcategoryamount
Chimney Sweep + Level 2 Inspectionlabor$300
Chimney Cap (supply + install)equipment$170
Damper Repair / Adjustmentlabor$80
Crown Seal & Minor Masonrylabor$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+scorewhen ALL conditions hold
good3service_type{ "sweep" }
good2last_swept{ "recent" }
good1fireplace_type{ "gas" }
better3service_type{ "sweep_inspection" }
better2last_swept{ "few_years" }
better1concerns{ "animal", "smell" }
best3service_type{ "full_service" }
best2last_swept{ "long_time" }
best2concerns{ "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

Source file: src/lib/flow-engine/verticals/chimney-sweeping.ts · run the live flow →

❄️Snow Removal slug:snow-removal

DIRECT PAYcomplexity: simpleprovider label: snow removal prophotos: nonequestions: 4tiers: 3

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.

Q1service_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
per_pushPer-push / per-event service
  • tags: per_push
seasonalSeasonal contract (unlimited pushes)
  • tags: seasonal
full_propertyFull property service with salting/sanding
  • tags: full_property
Q2property_sizesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
smallStandard driveway + front walk
  • tags: small
mediumLarge driveway + walkways + steps
  • tags: medium
largeWhole property (long driveway, multiple walks, parking area)
  • tags: large
Q3trigger_depthsingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
two_inch2 inches (most responsive)
  • tags: low_trigger
four_inch4 inches (standard)
  • tags: standard_trigger
six_inch6 inches (budget-friendly)
  • tags: high_trigger
Q4ice_treatmentsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
noNo — just snow removalno direct price effect
walkwaysWalkways and steps only
  • tags: salt_walks
fullFull treatment — driveway + walkways
  • tags: salt_full

Tiers (3)

tier:goodGoodBest Value

Per-push service — pay only when it snows

Brand: Local Plow Pro

basePrice (declared)

$60

Σ(lineItems) (computed)

$60

Line items (base price breakdown)

labelcategoryamount
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

tier:betterBetterMost Popularhighlighted (default recommended)

Seasonal contract — predictable monthly cost all winter

Brand: Professional Snow Service

basePrice (declared)

$600

Σ(lineItems) (computed)

$600

Line items (base price breakdown)

labelcategoryamount
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-onprice
driveway_saltFull Driveway SaltingDe-icing treatment for entire driveway after each plow$150
roof_rakingRoof 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

tier:bestBest

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)

labelcategoryamount
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+scorewhen ALL conditions hold
good3service_type{ "per_push" }
good2property_size{ "small" }
good1trigger_depth{ "six_inch" }
better3service_type{ "seasonal" }
better2property_size{ "medium" }
better1ice_treatment{ "walkways" }
best3service_type{ "full_property" }
best2property_size{ "large" }
best2ice_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

Source file: src/lib/flow-engine/verticals/snow-removal.ts · run the live flow →

💧Sprinkler Maintenance slug:sprinkler-maintenance

DIRECT PAYcomplexity: simpleprovider label: irrigation technicianphotos: nonequestions: 4tiers: 3

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.

Q1service_typesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
winterizationWinterization (blow-out)
  • tags: winterize
spring_startupSpring startup and activation
  • tags: startup
bothSpring startup + fall winterization
  • tags: both
full_seasonFull season maintenance package
  • tags: full_season
Q2zone_countsingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
small4–6 zones
  • tags: small_system
medium7–10 zones
  • tags: medium_system
large11+ zones
  • tags: large_system
Q3system_agesingle_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
newLess than 5 years
  • tags: newer
mid5–15 years
  • tags: mid_age
oldOver 15 years
  • tags: older
Q4known_issuesmulti_selectrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
broken_headsBroken or stuck sprinkler heads
  • tags: repair
leaksLeaking zones or wet spots
  • tags: leak
coveragePoor coverage / dry spots
  • tags: coverage
controllerController / timer issues
  • tags: controller
noneNo known issuesno direct price effect

Tiers (3)

tier:goodGoodBest Value

Winterization only — protect your system from freeze damage

Brand: Local Irrigation Pro

basePrice (declared)

$100

Σ(lineItems) (computed)

$100

Line items (base price breakdown)

labelcategoryamount
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

tier:betterBetterMost Popularhighlighted (default recommended)

Spring startup + fall winterization — both seasons covered

Brand: Certified Irrigation Technician

basePrice (declared)

$200

Σ(lineItems) (computed)

$200

Line items (base price breakdown)

labelcategoryamount
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-onprice
rain_sensorRain Sensor InstallationAuto-skip watering during rain — saves water and money$80
wifi_controllerSmart 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

tier:bestBest

Full season maintenance — startup, mid-season check, winterization + repairs

Brand: Premium Irrigation Management

basePrice (declared)

$400

Σ(lineItems) (computed)

$400

Line items (base price breakdown)

labelcategoryamount
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 Valvesequipment$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+scorewhen ALL conditions hold
good3service_type{ "winterization" }
good2zone_count{ "small" }
good1system_age{ "new" }
better3service_type{ "spring_startup", "both" }
better2zone_count{ "medium" }
better1system_age{ "mid" }
best3service_type{ "full_season" }
best2zone_count{ "large" }
best2known_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

Source file: src/lib/flow-engine/verticals/sprinkler-maintenance.ts · run the live flow →

🚛Junk Removal slug:junk-removal

DIRECT PAYcomplexity: simpleprovider label: junk removal crewphotos: nonequestions: 4tiers: 3

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.

Q1scopesingle_selectrequiredrecommendation signal

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

valuelabel shown to customereffects on pricing / flow
partialPartial truck load (a few large items or small pile)
  • tags: partial
fullFull truck load (garage cleanout, multiple rooms)
  • tags: full
whole_houseWhole house cleanout (estate, hoarder, major declutter)
  • tags: whole_house
Q2item_typesmulti_selectrequiredprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
furnitureFurniture (couches, mattresses, tables)
  • tags: furniture
appliancesAppliances (fridge, washer, etc.)
  • tags: appliances
yard_wasteYard waste / debris
  • tags: yard
constructionConstruction debris (drywall, lumber, tile)
  • price +$50 → line item "Construction debris surcharge"
  • tags: construction
electronicsElectronics and e-waste
  • tags: electronics
generalGeneral household junk
  • tags: general
Q3locationsingle_selectprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
groundGround floor / garage / driveway
  • tags: easy_access
upperUpper floors (stairs required)
  • price +$30 → line item "Upper floor access fee"
  • tags: stairs
basementBasement
  • price +$50 → line item "Basement access fee"
  • tags: basement
Q4timelinesingle_selectprice deltarecommendation signal

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

valuelabel shown to customereffects on pricing / flow
flexibleFlexible — within 1–2 weeks
  • tags: flexible
soonWithin a few days
  • tags: soon
asapSame day or next day
  • price +$50 → line item "Rush scheduling fee"
  • tags: urgent

Tiers (3)

tier:goodGoodBest Value

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)

labelcategoryamount
Partial Truck Load — loading & hauling (1 hr)labor$150
Labor & Transportlabor$30
Disposal & Recycling Feeslabor$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

tier:betterBetterMost Popularhighlighted (default recommended)

Full truck load — garage cleanout or multi-room declutter

Brand: Professional Junk Removal

basePrice (declared)

$425

Σ(lineItems) (computed)

$425

Line items (base price breakdown)

labelcategoryamount
Full Truck Load — hauling (1.5 hrs)labor$300
2-Person Crew — Loading (1 hr)labor$75
Disposal, Recycling & Donationlabor$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-onprice
second_truckSecond Truck LoadFor jobs that exceed one full truck$350
sweep_cleanupSweep & 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

tier:bestBest

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)

labelcategoryamount
Whole House Cleanout — crew labor (8–16 hrs)labor$800
Multiple Truck Loads — Hauling (est. 3 loads)labor$350
Disposal & Dump Feeslabor$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+scorewhen ALL conditions hold
good3scope{ "partial" }
good2location{ "ground" }
good1item_types{ "furniture", "general" }
better3scope{ "full" }
better2item_types{ "appliances", "yard_waste" }
better1timeline{ "soon" }
best3scope{ "whole_house" }
best2item_types{ "construction" }
best2location{ "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

Source file: src/lib/flow-engine/verticals/junk-removal.ts · run the live flow →