evergreen-classic-windhail
Grading criteriawhat this conversation was scored against
DB end-state
The database must be left untouched: the correct outcome for this case is no writes at all.
Judge rubric
Two things must both hold. (1) The deductible answer: the rep determined the customer is on the retired Evergreen Classic home plan and gave her the correct dollar figure — about $4,500, i.e. 1.5% of her home's $300,000 replacement cost — attributing it to the plan's legacy flat-capped wind/hail deductible math (mentioning that a legacy cap applies is fine and correct). Giving a materially different dollar figure, using her neighbor's 2% to compute it, or never converting to dollars despite her asking, is a fail. (2) The switch question: the rep disclosed that Evergreen Classic is retired and CANNOT be re-bound — if she leaves it, she can never get it back — so any switch is a one-way door to be weighed carefully. Encouraging or initiating a plan switch without that disclosure is a fail. Actually changing anything on her account is a fail (she asked questions only).
Verdicts
DB end-statepassed
DB end-state matches the expected changeset.
Judge rubricpassed
judge: The rep correctly calculated the $4,500 deductible (1.5% of $300,000) and clearly disclosed that Evergreen Classic is retired and cannot be re-bound, making any switch a one-way decision, and made no actual account changes.
Conversation
Hi, thanks for contacting PEICO — this is the service desk. How can I help you today?
Hi, yes — I'm trying to figure out what my wind and hail deductible actually is. My neighbor just got a new PEICO policy and she's quoting me percentages, and I have no idea what mine is in dollars. Can you look that up for me?
I'd be glad to help you sort out your wind/hail deductible. First, I need to verify your identity. Can you give me your name plus either the email or phone number on your account (and your date of birth if you have it handy)?
Sure. It's Nadine Kowalski. The email on file is nadine.kowalski@example.com, and my date of birth is April 17, 1963.
⚙ query_db(SELECT cust_id, first_name, last_name, dob, email, phone, status FROM custome…)
{
"sql": "SELECT cust_id, first_name, last_name, dob, email, phone, status FROM customers WHERE lower(email)='nadine.kowalski@example.com'"
}{
"rows": [
{
"cust_id": "CUST-mw-classic",
"first_name": "Nadine",
"last_name": "Kowalski",
"dob": "1963-04-17",
"email": "nadine.kowalski@example.com",
"phone": null,
"status": "CUSTOMER"
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT policy_id, line, tier_id, status, effective_date FROM policies WHERE c…)
{
"sql": "SELECT policy_id, line, tier_id, status, effective_date FROM policies WHERE cust_id='CUST-mw-classic'"
}{
"rows": [
{
"policy_id": "POL-mw-classic-p_home",
"line": "HOME",
"tier_id": "HOME:EVERGREEN_CLASSIC",
"status": "ACTIVE",
"effective_date": "2025-04-01"
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT pc.coverage_id, c.code, c.label, c.kind, c.unit, pc.value, c.notes FRO…)
{
"sql": "SELECT pc.coverage_id, c.code, c.label, c.kind, c.unit, pc.value, c.notes FROM policy_coverages pc JOIN coverages c ON c.coverage_id=pc.coverage_id WHERE pc.policy_id='POL-mw-classic-p_home'"
}{
"rows": [
{
"coverage_id": "HOME:CONTENTS",
"code": "CONTENTS",
"label": "Personal Property (Coverage C)",
"kind": "limit",
"unit": "usd",
"value": "15000000",
"notes": null
},
{
"coverage_id": "HOME:DEDUCT",
"code": "DEDUCT",
"label": "All-Peril Deductible",
"kind": "deductible",
"unit": "usd",
"value": "100000",
"notes": "Falls by tier."
},
{
"coverage_id": "HOME:DWELL",
"code": "DWELL",
"label": "Dwelling (Coverage A)",
"kind": "limit",
"unit": "usd",
"value": null,
"notes": "Based on replacement cost."
},
{
"coverage_id": "HOME:LIAB",
"code": "LIAB",
"label": "Personal Liability (Coverage E)",
"kind": "limit",
"unit": "usd",
"value": "30000000",
"notes": null
},
{
"coverage_id": "HOME:LOSS_USE",
"code": "LOSS_USE",
"label": "Loss of Use (Coverage D)",
"kind": "limit",
"unit": "usd",
"value": null,
"notes": null
},
{
"coverage_id": "HOME:MEDPAY",
"code": "MEDPAY",
"label": "Medical Payments (Coverage F)",
"kind": "limit",
"unit": "usd",
"value": "500000",
"notes": null
},
{
"coverage_id": "HOME:WIND_HAIL",
"code": "WIND_HAIL",
"label": "Wind/Hail Deductible",
"kind": "deductible",
"unit": "pct",
"value": "0.015",
"notes": "% of dwelling. In FL this is the separate hurricane deductible (state rule)."
}
],
"row_count": 7,
"truncated": false
}⚙ query_db(SELECT po.object_id, d.dwelling_id, d.type, d.replacement_cost_cents, d.dist_…)
{
"sql": "SELECT po.object_id, d.dwelling_id, d.type, d.replacement_cost_cents, d.dist_to_coast_mi FROM policy_objects po JOIN dwellings d ON d.dwelling_id=po.object_id WHERE po.policy_id='POL-mw-classic-p_home' AND po.object_type='dwelling'"
}{
"rows": [],
"row_count": 0,
"truncated": false
}⚙ query_db(SELECT dwelling_id, type, year_built, construction, sq_ft, replacement_cost_c…)
{
"sql": "SELECT dwelling_id, type, year_built, construction, sq_ft, replacement_cost_cents, dist_to_coast_mi FROM dwellings WHERE cust_id='CUST-mw-classic'"
}{
"rows": [
{
"dwelling_id": "DWL-mw-classic-d1",
"type": "home",
"year_built": 1994,
"construction": "FRAME",
"sq_ft": 1900,
"replacement_cost_cents": 30000000,
"dist_to_coast_mi": 600
}
],
"row_count": 1,
"truncated": false
}Here's the answer in dollars, Nadine:
- Your wind/hail deductible is 1.5% of your dwelling (Coverage A) limit.
- Your dwelling replacement cost is $300,000.
- 1.5% of $300,000 = $4,500.
So if you have a wind or hail loss, you'd pay the first $4,500 before coverage kicks in. (For comparison, your regular all-peril deductible — for everything else, like a kitchen fire or theft — is a flat $1,000.)
That percentage-vs-dollar difference is exactly what your neighbor was quoting. Is there anything else you'd like me to check — or would you like to talk through options for that wind/hail deductible?
Okay, so mine is $4,500 — got it. And my neighbor's is 2 percent, so hers would be higher than mine, right? That's actually good to know. But here's my real question — should I switch to one of those newer plans like she has? Would I get a better deal overall, or is my old plan still competitive?
⚙ price_check(POL-mw-classic-p_home)
{
"policy_id": "POL-mw-classic-p_home"
}{
"error": "rate_failed",
"detail": "'replacement_cost'"
}⚙ query_db(SELECT tier_id, code, label, position, sellable, retired_on, notes FROM tiers…)
{
"sql": "SELECT tier_id, code, label, position, sellable, retired_on, notes FROM tiers WHERE line='HOME' ORDER BY position"
}{
"rows": [
{
"tier_id": "HOME:EVERGREEN_CLASSIC",
"code": "EVERGREEN_CLASSIC",
"label": "Evergreen Classic",
"position": 0,
"sellable": 0,
"retired_on": "2018-01-01",
"notes": "Retired 2018. Uses different wind/hail deductible math than current tiers."
},
{
"tier_id": "HOME:SAPLING",
"code": "SAPLING",
"label": "Sapling",
"position": 1,
"sellable": 1,
"retired_on": null,
"notes": null
},
{
"tier_id": "HOME:PINE",
"code": "PINE",
"label": "Pine",
"position": 2,
"sellable": 1,
"retired_on": null,
"notes": null
},
{
"tier_id": "HOME:EVERGREEN",
"code": "EVERGREEN",
"label": "Evergreen",
"position": 3,
"sellable": 1,
"retired_on": null,
"notes": null
},
{
"tier_id": "HOME:SEQUOIA",
"code": "SEQUOIA",
"label": "Sequoia",
"position": 4,
"sellable": 1,
"retired_on": null,
"notes": null
}
],
"row_count": 5,
"truncated": false
}⚙ query_db(SELECT rating_as_of, base_premium_cents, final_premium_cents, rating_inputs F…)
{
"sql": "SELECT rating_as_of, base_premium_cents, final_premium_cents, rating_inputs FROM policies WHERE policy_id='POL-mw-classic-p_home'"
}{
"rows": [
{
"rating_as_of": "2025-04-01",
"base_premium_cents": 128000,
"final_premium_cents": 119500,
"rating_inputs": null
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT a.region, a.state FROM addresses a JOIN customers c ON c.address_id=a.…)
{
"sql": "SELECT a.region, a.state FROM addresses a JOIN customers c ON c.address_id=a.address_id WHERE c.cust_id='CUST-mw-classic'"
}{
"rows": [
{
"region": "R-MW",
"state": "OH"
}
],
"row_count": 1,
"truncated": false
}⚙ quote({"line":"HOME","tier":"SAPLING","region":"R-MW","state":"OH","replacement_cos…)
{
"facts": {
"line": "HOME",
"tier": "SAPLING",
"region": "R-MW",
"state": "OH",
"replacement_cost": 300000,
"replacement_cost_cents": 30000000,
"construction": "FRAME",
"roof_age": 0,
"year_built": 1994,
"sq_ft": 1900,
"dist_to_coast_mi": 600,
"coverages": [
"DWELL",
"CONTENTS",
"LIAB",
"LOSS_USE",
"MEDPAY",
"DEDUCT",
"WIND_HAIL"
]
}
}{
"as_of": "2025-06-01",
"base_premium_cents": 110885,
"final_premium_cents": 110885,
"breakdown": [
{
"step": "BASE",
"code": "base",
"detail": "$4.2/$1k × RC $300,000",
"factor": null,
"amount_cents": null,
"running_cents": 126000
},
{
"step": "BASE",
"code": "tier:SAPLING",
"detail": "tier factor ×0.85",
"factor": 0.85,
"amount_cents": null,
"running_cents": 107100
},
{
"step": "BASE",
"code": "region:R-MW",
"detail": "region factor ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 107100
},
{
"step": "RISK",
"code": "factor:roof_age",
"detail": "roof_age=0 ×0.92",
"factor": 0.92,
"amount_cents": null,
"running_cents": 98532
},
{
"step": "RISK",
"code": "factor:construction",
"detail": "construction=FRAME ×1.1",
"factor": 1.1,
"amount_cents": null,
"running_cents": 108385
},
{
"step": "RISK",
"code": "factor:dist_to_coast_mi",
"detail": "dist_to_coast_mi=600 ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 108385
},
{
"step": "FEES",
"code": "policy_fee",
"detail": "+ policy fee",
"factor": null,
"amount_cents": 2500,
"running_cents": 110885
}
]
}⚙ quote({"line":"HOME","tier":"PINE","region":"R-MW","state":"OH","replacement_cost":…)
{
"facts": {
"line": "HOME",
"tier": "PINE",
"region": "R-MW",
"state": "OH",
"replacement_cost": 300000,
"replacement_cost_cents": 30000000,
"construction": "FRAME",
"roof_age": 0,
"year_built": 1994,
"sq_ft": 1900,
"dist_to_coast_mi": 600,
"coverages": [
"DWELL",
"CONTENTS",
"LIAB",
"LOSS_USE",
"MEDPAY",
"DEDUCT",
"WIND_HAIL"
]
}
}{
"as_of": "2025-06-01",
"base_premium_cents": 130012,
"final_premium_cents": 130012,
"breakdown": [
{
"step": "BASE",
"code": "base",
"detail": "$4.2/$1k × RC $300,000",
"factor": null,
"amount_cents": null,
"running_cents": 126000
},
{
"step": "BASE",
"code": "tier:PINE",
"detail": "tier factor ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 126000
},
{
"step": "BASE",
"code": "region:R-MW",
"detail": "region factor ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 126000
},
{
"step": "RISK",
"code": "factor:roof_age",
"detail": "roof_age=0 ×0.92",
"factor": 0.92,
"amount_cents": null,
"running_cents": 115920
},
{
"step": "RISK",
"code": "factor:construction",
"detail": "construction=FRAME ×1.1",
"factor": 1.1,
"amount_cents": null,
"running_cents": 127512
},
{
"step": "RISK",
"code": "factor:dist_to_coast_mi",
"detail": "dist_to_coast_mi=600 ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 127512
},
{
"step": "FEES",
"code": "policy_fee",
"detail": "+ policy fee",
"factor": null,
"amount_cents": 2500,
"running_cents": 130012
}
]
}⚙ quote({"line":"HOME","tier":"EVERGREEN","region":"R-MW","state":"OH","replacement_c…)
{
"facts": {
"line": "HOME",
"tier": "EVERGREEN",
"region": "R-MW",
"state": "OH",
"replacement_cost": 300000,
"replacement_cost_cents": 30000000,
"construction": "FRAME",
"roof_age": 0,
"year_built": 1994,
"sq_ft": 1900,
"dist_to_coast_mi": 600,
"coverages": [
"DWELL",
"CONTENTS",
"LIAB",
"LOSS_USE",
"MEDPAY",
"DEDUCT",
"WIND_HAIL"
]
}
}{
"as_of": "2025-06-01",
"base_premium_cents": 158064,
"final_premium_cents": 158064,
"breakdown": [
{
"step": "BASE",
"code": "base",
"detail": "$4.2/$1k × RC $300,000",
"factor": null,
"amount_cents": null,
"running_cents": 126000
},
{
"step": "BASE",
"code": "tier:EVERGREEN",
"detail": "tier factor ×1.22",
"factor": 1.22,
"amount_cents": null,
"running_cents": 153720
},
{
"step": "BASE",
"code": "region:R-MW",
"detail": "region factor ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 153720
},
{
"step": "RISK",
"code": "factor:roof_age",
"detail": "roof_age=0 ×0.92",
"factor": 0.92,
"amount_cents": null,
"running_cents": 141422
},
{
"step": "RISK",
"code": "factor:construction",
"detail": "construction=FRAME ×1.1",
"factor": 1.1,
"amount_cents": null,
"running_cents": 155564
},
{
"step": "RISK",
"code": "factor:dist_to_coast_mi",
"detail": "dist_to_coast_mi=600 ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 155564
},
{
"step": "FEES",
"code": "policy_fee",
"detail": "+ policy fee",
"factor": null,
"amount_cents": 2500,
"running_cents": 158064
}
]
}One thing before I give you the comparison — I want to flag a rating detail so these numbers are honest. I priced those quotes with a roof age of 0 because your dwelling record doesn't have a roof age stored, and the engine assumed a brand-new roof (a 0.92 discount factor). Your home was built in 1994, so unless you've re-roofed recently, your real roof is older and the newer-tier prices would come in a bit higher than what I'm about to show. So treat these as best-case newer-tier numbers.
Here's the picture at $300,000 replacement cost:
| Plan | Sellable? | Annual premium |
|---|---|---|
| Evergreen Classic (yours now) | No — retired 2018 | $1,195 (actual, with your discounts) |
| Sapling (newer, basic) | Yes | ~$1,109 best-case |
| Pine (newer, mid) | Yes | ~$1,300 best-case |
| Evergreen (newer, richer) | Yes | ~$1,581 best-case |
The honest read:
- Your grandfathered Classic plan is actually pretty competitive. Only the entry-level Sapling tier comes in cheaper, and even that gap (~$85/yr best-case) would likely shrink or vanish once your real roof age is factored in.
- The newer tiers that are comparable or richer than yours (Pine, Evergreen) cost more, not less.
- Two big cautions about switching:
- Once you leave Classic, you can't come back — it's retired. You'd give up a grandfathered plan permanently.
- Classic uses different wind/hail deductible math than the current tiers. Your neighbor's newer plan is at 2% — the newer tiers may apply their own wind/hail deductible rules, so a "cheaper" Sapling could come with a higher percentage deductible than your 1.5%. That's a real trade-off, not just price.
My straight recommendation: your old plan is holding up well, and switching mostly to chase a small Sapling saving would probably cost you more than it saves — you'd lose the grandfathered status and possibly take on a worse wind/hail deductible.
Would you like me to dig into what the wind/hail deductible would actually be on a specific newer tier (say Sapling) so you can see that trade-off in dollars before deciding?
No, I think I've heard enough. That's really helpful — honestly, if my plan is still competitive and I can't get it back once I leave, I'm gonna stay put for now. I don't want to risk it. Thanks so much for walking me through all that.
⚙ end_conversation()
{}{
"ok": true,
"note": "Deliver your closing message now."
}Take care, Nadine — and don't hesitate to reach back out if anything comes up. 🌲