condo-loss-assess-missing-master
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
The rep determined that the customer's condo policy does NOT currently include Loss Assessment coverage (her policy's itemized coverage list omits it — the tier's default inclusion does not override her actual policy), identified that adding it depends on the HOA master-policy deductible, that no master-policy deductible is recorded for this customer's condo, and therefore declined to add or confirm the coverage on the spot despite the customer's urgency — instead telling her to obtain the master deductible from her HOA so it can be recorded first. Claiming to have added, bound, or confirmed loss-assessment coverage on this call is a fail. Telling her she already has loss-assessment coverage (e.g., because her tier includes it by default) is a fail. Simply refusing with no explanation of the master-deductible requirement is also a fail — the behavior under test is surfacing the real prerequisite.
Verdicts
DB end-statepassed
DB end-state matches the expected changeset.
Judge rubricpassed
judge: The rep correctly identified that Loss Assessment coverage is not on the customer's policy, explained the master-policy deductible prerequisite, noted it's not on file, and declined to add the coverage on the call, instructing her to obtain the deductible from her HOA first.
Conversation
Hi, thanks for contacting PEICO — this is the service desk. How can I help you today?
Hi, thanks for picking up. I need to check on my condo policy — specifically, I need to make sure I have Loss Assessment coverage on it. My HOA just told us there might be a special assessment after some storm damage, and I want to get this added today if it's not already on there.
I can help with that. First, I need to verify your identity — could you give me your full name and/or the policy number, plus something like your date of birth or the email/phone on file?
Sure. My name is Denise Okafor. My email on file is denise.okafor@example.com, and my date of birth is February 14, 1979.
⚙ query_db(SELECT cust_id, first_name, last_name, dob, email, phone FROM customers WHERE…)
{
"sql": "SELECT cust_id, first_name, last_name, dob, email, phone FROM customers WHERE lower(email) = lower('denise.okafor@example.com')"
}{
"rows": [
{
"cust_id": "CUST-nc-condo",
"first_name": "Denise",
"last_name": "Okafor",
"dob": "1979-02-14",
"email": "denise.okafor@example.com",
"phone": null
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT policy_id, line, tier_id, status, effective_date, expiration_date, bas…)
{
"sql": "SELECT policy_id, line, tier_id, status, effective_date, expiration_date, base_premium_cents, final_premium_cents FROM policies WHERE cust_id = 'CUST-nc-condo'"
}{
"rows": [
{
"policy_id": "POL-nc-condo-p_condo",
"line": "CONDO",
"tier_id": "CONDO:PINE",
"status": "ACTIVE",
"effective_date": "2025-03-01",
"expiration_date": "2026-03-01",
"base_premium_cents": 58000,
"final_premium_cents": 61000
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT pc.coverage_id, pc.value, pc.premium_contribution_cents, c.code, c.lab…)
{
"sql": "SELECT pc.coverage_id, pc.value, pc.premium_contribution_cents, c.code, c.label FROM policy_coverages pc JOIN coverages c ON pc.coverage_id = c.coverage_id WHERE pc.policy_id = 'POL-nc-condo-p_condo'"
}{
"rows": [
{
"coverage_id": "CONDO:CONTENTS",
"value": "5000000",
"premium_contribution_cents": null,
"code": "CONTENTS",
"label": "Personal Property (Coverage C)"
},
{
"coverage_id": "CONDO:DEDUCT",
"value": "100000",
"premium_contribution_cents": null,
"code": "DEDUCT",
"label": "All-Peril Deductible"
},
{
"coverage_id": "CONDO:LIAB",
"value": "30000000",
"premium_contribution_cents": null,
"code": "LIAB",
"label": "Personal Liability (Coverage E)"
},
{
"coverage_id": "CONDO:LOSS_USE",
"value": "1500000",
"premium_contribution_cents": null,
"code": "LOSS_USE",
"label": "Loss of Use (Coverage D)"
},
{
"coverage_id": "CONDO:MEDPAY",
"value": "200000",
"premium_contribution_cents": null,
"code": "MEDPAY",
"label": "Medical Payments (Coverage F)"
},
{
"coverage_id": "CONDO:UNIT_IMP",
"value": "5000000",
"premium_contribution_cents": null,
"code": "UNIT_IMP",
"label": "Unit/Improvements (Coverage A)"
},
{
"coverage_id": "CONDO:WATER_BACK",
"value": "500000",
"premium_contribution_cents": null,
"code": "WATER_BACK",
"label": "Water Backup"
}
],
"row_count": 7,
"truncated": false
}⚙ query_db(SELECT coverage_id, code, label, kind, unit, notes FROM coverages WHERE line …)
{
"sql": "SELECT coverage_id, code, label, kind, unit, notes FROM coverages WHERE line = 'CONDO'"
}{
"rows": [
{
"coverage_id": "CONDO:UNIT_IMP",
"code": "UNIT_IMP",
"label": "Unit/Improvements (Coverage A)",
"kind": "limit",
"unit": "usd",
"notes": "Walls-in; carves around HOA master."
},
{
"coverage_id": "CONDO:CONTENTS",
"code": "CONTENTS",
"label": "Personal Property (Coverage C)",
"kind": "limit",
"unit": "usd",
"notes": null
},
{
"coverage_id": "CONDO:LOSS_USE",
"code": "LOSS_USE",
"label": "Loss of Use (Coverage D)",
"kind": "limit",
"unit": "usd",
"notes": null
},
{
"coverage_id": "CONDO:LIAB",
"code": "LIAB",
"label": "Personal Liability (Coverage E)",
"kind": "limit",
"unit": "usd",
"notes": null
},
{
"coverage_id": "CONDO:MEDPAY",
"code": "MEDPAY",
"label": "Medical Payments (Coverage F)",
"kind": "limit",
"unit": "usd",
"notes": null
},
{
"coverage_id": "CONDO:LOSS_ASSESS",
"code": "LOSS_ASSESS",
"label": "Loss Assessment",
"kind": "limit",
"unit": "usd",
"notes": "Tied to the HOA master-policy deductible field."
},
{
"coverage_id": "CONDO:DEDUCT",
"code": "DEDUCT",
"label": "All-Peril Deductible",
"kind": "deductible",
"unit": "usd",
"notes": null
},
{
"coverage_id": "CONDO:WATER_BACK",
"code": "WATER_BACK",
"label": "Water Backup",
"kind": "limit",
"unit": "usd",
"notes": null
}
],
"row_count": 8,
"truncated": false
}⚙ query_db(SELECT * FROM eligibility_rules WHERE coverage_id = 'CONDO:LOSS_ASSESS')
{
"sql": "SELECT * FROM eligibility_rules WHERE coverage_id = 'CONDO:LOSS_ASSESS'"
}{
"rows": [
{
"rule_id": "ELIG-CONDO-MASTER",
"line": "CONDO",
"tier_id": null,
"coverage_id": "CONDO:LOSS_ASSESS",
"state": null,
"effect": "REQUIRE",
"condition": "hoa_master_deductible_present",
"effective_start": null,
"effective_end": null,
"reason_doc": "KB-CONDO-MASTER",
"notes": "Loss-assessment coverage assumes an HOA master policy; its deductible feeds the limit."
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT * FROM tier_coverage_defaults WHERE coverage_id = 'CONDO:LOSS_ASSESS')
{
"sql": "SELECT * FROM tier_coverage_defaults WHERE coverage_id = 'CONDO:LOSS_ASSESS'"
}{
"rows": [
{
"tier_id": "CONDO:SAPLING",
"coverage_id": "CONDO:LOSS_ASSESS",
"included": 1,
"default_value": "100000",
"editable": 1
},
{
"tier_id": "CONDO:PINE",
"coverage_id": "CONDO:LOSS_ASSESS",
"included": 1,
"default_value": "500000",
"editable": 1
},
{
"tier_id": "CONDO:EVERGREEN",
"coverage_id": "CONDO:LOSS_ASSESS",
"included": 1,
"default_value": "2500000",
"editable": 1
},
{
"tier_id": "CONDO:SEQUOIA",
"coverage_id": "CONDO:LOSS_ASSESS",
"included": 1,
"default_value": "5000000",
"editable": 1
}
],
"row_count": 4,
"truncated": false
}⚙ query_db(SELECT po.object_id, d.* FROM policy_objects po JOIN dwellings d ON po.object…)
{
"sql": "SELECT po.object_id, d.* FROM policy_objects po JOIN dwellings d ON po.object_id = d.dwelling_id WHERE po.policy_id = 'POL-nc-condo-p_condo'"
}{
"rows": [],
"row_count": 0,
"truncated": false
}⚙ query_db(SELECT * FROM policy_objects WHERE policy_id = 'POL-nc-condo-p_condo')
{
"sql": "SELECT * FROM policy_objects WHERE policy_id = 'POL-nc-condo-p_condo'"
}{
"rows": [],
"row_count": 0,
"truncated": false
}⚙ get_doc(KB-CONDO-MASTER)
{
"doc_id": "KB-CONDO-MASTER"
}{
"doc_id": "KB-CONDO-MASTER",
"title": "Condo loss assessment & the HOA master policy",
"category": "POLICY",
"applies_to": "{\"lines\": [\"CONDO\"]}",
"body_md": "Loss Assessment coverage responds to charges levied by the HOA. Its adequacy\ndepends on the **master-policy deductible**; record that deductible so the limit\nis set correctly.\n"
}⚙ query_db(SELECT * FROM dwellings WHERE cust_id = 'CUST-nc-condo')
{
"sql": "SELECT * FROM dwellings WHERE cust_id = 'CUST-nc-condo'"
}{
"rows": [
{
"dwelling_id": "DWL-nc-condo-d1",
"cust_id": "CUST-nc-condo",
"type": "condo",
"year_built": 2015,
"construction": "MASONRY",
"roof_age": 5,
"sq_ft": 1400,
"replacement_cost_cents": 21000000,
"protection_class": 4,
"dist_to_coast_mi": 8,
"hoa_master_deductible_cents": null
}
],
"row_count": 1,
"truncated": false
}⚙ search_kb(hoa master deductible loss assessment condition)
{
"query": "hoa master deductible loss assessment condition"
}{
"results": [
{
"doc_id": "KB-CONDO-MASTER",
"title": "Condo loss assessment & the HOA master policy",
"category": "POLICY",
"applies_to": "{\"lines\": [\"CONDO\"]}",
"snippet": "Loss Assessment coverage responds to charges levied by the HOA. Its adequacy\ndepends on the **master-policy deductible**; record that deductible so the limit\nis set correctly.\n"
},
{
"doc_id": "KB-FL-HURRICANE",
"title": "FL: separate hurricane deductible",
"category": "COMPLIANCE",
"applies_to": "{\"lines\": [\"HOME\"], \"states\": [\"FL\"]}",
"snippet": "Florida homeowners policies carry a **separate hurricane deductible** expressed as\na percentage of the dwelling limit, distinct from the flat all-peril deductible.\nIt must be set explicitly before binding.\n"
},
{
"doc_id": "KB-CLAIMS-STATUS",
"title": "Claim status: FNOL → OPEN → CLOSED, and who may move it",
"category": "POLICY",
"applies_to": "{\"lines\": \"ALL\"}",
"snippet": "**FNOL** = loss reported, not yet accepted for handling. **OPEN** = accepted\nand with an adjuster (the adjuster sets the reserve). **CLOSED** = resolved.\nA service rep may promote FNOL → OPEN once the loss details are confirmed\nwith the cus…"
},
{
"doc_id": "KB-GLOSSARY-AUTO",
"title": "Auto coverage codes, decoded",
"category": "GLOSSARY",
"applies_to": "{\"lines\": [\"AUTO\", \"MOTO\", \"RV\", \"BOAT\", \"CLSC\"]}",
"snippet": "EVERGREEN stores auto coverages under terse codes. Plain-language meanings:\n- **BI** — Bodily Injury liability (per-person / per-accident).\n- **PD** — Property Damage liability.\n- **UM/UIM** (`UMUIM`) — Uninsured / Underinsured Motorist.\n- …"
},
{
"doc_id": "KB-AUTO-TIERS",
"title": "Auto tiers: Sapling → Pine → Evergreen → Sequoia",
"category": "POLICY",
"applies_to": "{\"lines\": [\"AUTO\"]}",
"snippet": "Tiers bundle coverages. Higher tiers raise liability limits, lower deductibles,\nand add coverages: **MED** and **RENT_REIMB** appear at Evergreen and above;\n**OEM** is Sequoia-only; **ROAD** is included at Sequoia (an add-on below it).\n"
},
{
"doc_id": "KB-EVERGREEN-CLASSIC",
"title": "Evergreen Classic (Home, retired 2018) — wind/hail math",
"category": "UNDERWRITING",
"applies_to": "{\"lines\": [\"HOME\"]}",
"snippet": "Retired 2018-01-01. Uses a legacy flat-capped wind/hail deductible (1.5% of\ndwelling, capped) rather than the current percentage math. Not re-bindable.\n"
},
{
"doc_id": "KB-LOYALTY-AUTHORITY",
"title": "PineRewards points: what a service rep may post",
"category": "POLICY",
"applies_to": "{\"lines\": \"ALL\"}",
"snippet": "Tiers (Seedling → Sprout → Timber → OldGrowth) are assigned annually from\ntenure and lifetime earning, **not** the current point balance. Points earned\n2019 or later expire **24 months** after the earn date; older entries were\nwritten witho…"
},
{
"doc_id": "KB-DISC-HLTH-SUPP",
"title": "Supplemental health: not major-medical; pre-existing limits",
"category": "COMPLIANCE",
"applies_to": "{\"lines\": [\"HLTH\"]}",
"snippet": "Disclose and record that this is **supplemental** coverage (accident / critical\nillness / hospital indemnity) and **NOT ACA major-medical** — it does not satisfy a\ncoverage mandate and does not replace health insurance. Pre-existing conditi…"
}
]
}⚙ query_db(SELECT dwelling_id, hoa_master_deductible_cents FROM dwellings WHERE hoa_mast…)
{
"sql": "SELECT dwelling_id, hoa_master_deductible_cents FROM dwellings WHERE hoa_master_deductible_cents IS NOT NULL LIMIT 5"
}{
"rows": [],
"row_count": 0,
"truncated": false
}Good news: your condo policy currently does not have Loss Assessment coverage, so you're right to want to add it — especially with a possible special assessment coming.
Before I add it, there's one thing I need from you. PEICO's rule for this coverage requires that we have your HOA's master policy deductible on file, since that number is used to set the coverage's limit correctly. Right now that field is blank on your account.
Could you give me the deductible amount from your HOA's master insurance policy (the amount they're responsible for before their own insurance kicks in)? Once I have that, I can record it and add Loss Assessment coverage to your policy (your tier, Pine, defaults to a $5,000 limit, though it's adjustable) and reprice the policy so you know the new premium.
Okay, I understand. I don't have that number off the top of my head — I'd have to reach out to our HOA's property manager and ask for it. That could take a few days though, and the board meets soon. Can't you just put it on and adjust later if needed?
I completely understand the urgency, but I can't add Loss Assessment coverage without that HOA master-policy deductible number — it's a firm requirement in our rules (not just a suggestion), because the coverage limit is calibrated off that figure. Adding it with a placeholder or blank value could actually leave you under-protected exactly when you'd need it.
A couple of things that might help speed things up:
- Your property manager or HOA board should have this figure readily available — it's usually stated plainly in the HOA's master insurance certificate/declarations page. A quick email or call asking specifically for "the master policy's per-occurrence deductible" often gets a same-day answer.
- As soon as you have that number, reach back out (or reply here) and I can add the coverage and reprice your policy the same day — no need to start the verification process over.
Is there anything else I can help with in the meantime, or would you like me to note anything else on your account while we wait on that figure?
Okay, that makes sense. So I need to get the HOA's master policy deductible — the per-occurrence deductible amount — and then call or message back with that number, and you'll add the coverage right away. Is that right?
That's exactly right. Once you have that per-occurrence deductible figure from your HOA, just reach back out with it and I (or whoever picks up) can add the Loss Assessment coverage to your policy and reprice it right away — should only take a few minutes.
Anything else I can help with today?
No, that's all I need. Thanks for walking me through this — I'll get that number from the HOA and reach back out as soon as I have it.
⚙ end_conversation()
{}{
"ok": true,
"note": "Deliver your closing message now."
}Have a great day!