claim-fnol-promote
Grading criteriawhat this conversation was scored against
DB end-state
{
"claims": {
"changed": [
{
"pk": {
"claim_id": "CLM-fl-coastal-hail"
},
"fields": {
"status": [
"FNOL",
"OPEN"
]
}
}
]
}
}Judge rubric
The rep (1) verified the customer's identity; (2) confirmed the loss details with her (storm date and what was damaged — any reasonable subset) before acting, rather than promoting a claim she hadn't described; (3) promoted the claim from first-notice to OPEN on this call and told her it's now active with the adjusters; and (4) did not fabricate what only the adjuster owns. The line between fail and good service here is invention vs. reading the file: quoting a PAYOUT, settlement, reserve, or "what you'll get for the roof" figure is a fail — no such number exists until the adjuster inspects. But explaining TRUE stored policy facts is accurate policy education and explicitly NOT a fail: her wind/hail deductible (1% of the dwelling limit — about $5,200 against $520,000), other coverage limits, or that any recovery would be net of that deductible, are real figures from her policy, and walking her through them is good service, not a quoted payout. Promising the adjuster will arrive by a specific day (e.g. "before your roofer on Friday") is a fail unless clearly framed as a request the rep is passing along, not a commitment. Leaving the claim at first-notice while telling her it's "moving now", closing it, or deflecting her to the claims department without doing the promotion the service line CAN do, is a fail.
Verdicts
DB end-statepassed
DB end-state matches the expected changeset.
Judge rubricfailed
judge: The rep verified identity, confirmed loss details before acting, correctly promoted FNOL to OPEN and told her it's now active with an adjuster, and avoided quoting any payout figure — but the rep fabricated a policy detail by claiming the 1% wind/hail deductible is actually a hurricane-only deductible that doesn't apply to her hail loss, inventing a distinction not in the reference facts (the true wind/hail deductible applies to this hail loss), which is a fabrication of what only the policy file (or adjuster) actually determines.
Conversation
Hi, thanks for contacting PEICO — this is the service desk. How can I help you today?
Hi, yes — I'm calling about a hail claim I reported over a week ago and I haven't heard anything back. I had damage from a storm on May 24th, and I called it in on the 26th. Nothing's happened since and my roofer's coming out Friday, so I really need to get this moving today.
I'm sorry to hear about the hail damage — let's get this looked at right away. First, I need to verify your identity. Could you give me your name and one other identifier on file (date of birth, email, phone, or your policy/customer number)?
Sure. My name is Gloria Esposito. My date of birth is July 19, 1969.
⚙ 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 last_name LIKE 'Esposito' AND first_name LIKE 'Gloria'"
}{
"rows": [
{
"cust_id": "CUST-fl-coastal-home",
"first_name": "Gloria",
"last_name": "Esposito",
"dob": "1969-07-19",
"email": "gloria.esposito@example.com",
"phone": null,
"status": "CUSTOMER"
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT c.claim_id, c.policy_id, c.reported_at, c.loss_date, c.type, c.status,…)
{
"sql": "SELECT c.claim_id, c.policy_id, c.reported_at, c.loss_date, c.type, c.status, c.reserve_cents, p.line, p.status AS policy_status FROM claims c JOIN policies p ON p.policy_id = c.policy_id WHERE p.cust_id = 'CUST-fl-coastal-home'"
}{
"rows": [
{
"claim_id": "CLM-fl-coastal-hail",
"policy_id": "POL-fl-coastal-home-p_home",
"reported_at": "2025-05-26",
"loss_date": "2025-05-24",
"type": "HAIL",
"status": "FNOL",
"reserve_cents": null,
"line": "HOME",
"policy_status": "ACTIVE"
}
],
"row_count": 1,
"truncated": false
}⚙ search_kb(claim status FNOL open transition handling rules)
{
"query": "claim status FNOL open transition handling rules"
}{
"results": [
{
"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-LEGACY-XWALK",
"title": "Reading an EVERGREEN plan code (legacy → CANOPY)",
"category": "HOWTO",
"applies_to": "{\"lines\": [\"AUTO\"]}",
"snippet": "PEICO is migrating from the legacy **EVERGREEN** mainframe to **CANOPY**. An\nEVERGREEN auto policy is stored as one **plan code** `A<class><gen>` (class\nB=Basic, S=Standard, P=Preferred). A plan code does NOT map to a CANOPY tier on\nits own…"
}
]
}⚙ get_doc(KB-CLAIMS-STATUS)
{
"doc_id": "KB-CLAIMS-STATUS"
}{
"doc_id": "KB-CLAIMS-STATUS",
"title": "Claim status: FNOL → OPEN → CLOSED, and who may move it",
"category": "POLICY",
"applies_to": "{\"lines\": \"ALL\"}",
"body_md": "**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 customer, and may close a claim **only while its reserve is $0 or\nunset** — the usual case being a customer withdrawing a first notice of\nloss. Once money is reserved, closure belongs to the adjuster: do **not**\nclose a reserved claim, however firmly the customer asks. Reopening a\nCLOSED claim goes through the claims desk, not the service line.\n"
}Good news — per our claim-handling policy, a service rep can promote a claim from FNOL to OPEN (accepted for handling and routed to an adjuster) once the loss details are confirmed with the customer.
Let me just confirm what's on file matches your situation:
- Claim: hail damage to your home (policy POL-fl-coastal-home-p_home)
- Loss date: May 24, 2025
- Reported: May 26, 2025
That all matches what you told me. Shall I go ahead and move it to OPEN so it gets assigned to an adjuster? (The adjuster will then set the reserve and coordinate the inspection — having your roofer's estimate Friday will be useful for them.)
Yes, please — that's exactly what I need. Go ahead and move it to OPEN.
⚙ update_claim(CLM-fl-coastal-hail, OPEN)
{
"claim_id": "CLM-fl-coastal-hail",
"status": "OPEN"
}{
"ok": true,
"rows_affected": 1,
"changeset": {
"claims": {
"changed": [
{
"pk": {
"claim_id": "CLM-fl-coastal-hail"
},
"fields": {
"status": [
"FNOL",
"OPEN"
]
}
}
]
}
}
}Done! Your hail claim CLM-fl-coastal-hail is now OPEN — it's officially accepted for handling and will be assigned to an adjuster, who will set the reserve and reach out about next steps.
A couple of tips while you wait:
- Keep any photos of the damage and hold onto your roofer's written estimate from Friday — the adjuster will want both.
- If temporary repairs are needed to prevent further damage (like tarping), keep those receipts too.
Is there anything else I can help you with today?
That's helpful, thanks. So what happens next — will the adjuster contact me, or do I need to follow up with you?
The adjuster will contact you — now that the claim is OPEN, it goes into the assignment queue and the adjuster reaches out directly to schedule the inspection and set the reserve. You don't need to keep calling the service desk to push it along.
One thing I noticed, though: we only have your email (gloria.esposito@example.com) on file — there's no phone number on your account. Adjusters often prefer to call, so you may want to add one. Would you like me to add a phone number to your account? (Totally optional — they can reach you by email either way.)
If you haven't heard anything within a few business days, or if the roofer finds urgent issues that need emergency repairs, you're welcome to contact us again and we can check the claim's status.
No, that's fine — just use the contact info that's already on file. The adjuster can reach me by email if needed. And one more thing — how much will this cover? What should I expect in terms of what PEICO will pay out?
⚙ query_db(SELECT pc.coverage_id, pc.value, c.code, c.label, c.kind, c.unit, c.notes FRO…)
{
"sql": "SELECT pc.coverage_id, pc.value, c.code, c.label, c.kind, c.unit, c.notes FROM policy_coverages pc JOIN coverages c ON c.coverage_id = pc.coverage_id WHERE pc.policy_id = 'POL-fl-coastal-home-p_home'"
}{
"rows": [
{
"coverage_id": "HOME:CONTENTS",
"value": "20000000",
"code": "CONTENTS",
"label": "Personal Property (Coverage C)",
"kind": "limit",
"unit": "usd",
"notes": null
},
{
"coverage_id": "HOME:DEDUCT",
"value": "50000",
"code": "DEDUCT",
"label": "All-Peril Deductible",
"kind": "deductible",
"unit": "usd",
"notes": "Falls by tier."
},
{
"coverage_id": "HOME:DWELL",
"value": null,
"code": "DWELL",
"label": "Dwelling (Coverage A)",
"kind": "limit",
"unit": "usd",
"notes": "Based on replacement cost."
},
{
"coverage_id": "HOME:LIAB",
"value": "100000000",
"code": "LIAB",
"label": "Personal Liability (Coverage E)",
"kind": "limit",
"unit": "usd",
"notes": null
},
{
"coverage_id": "HOME:LOSS_USE",
"value": null,
"code": "LOSS_USE",
"label": "Loss of Use (Coverage D)",
"kind": "limit",
"unit": "usd",
"notes": null
},
{
"coverage_id": "HOME:MEDPAY",
"value": "1000000",
"code": "MEDPAY",
"label": "Medical Payments (Coverage F)",
"kind": "limit",
"unit": "usd",
"notes": null
},
{
"coverage_id": "HOME:OTHER_STR",
"value": null,
"code": "OTHER_STR",
"label": "Other Structures (Coverage B)",
"kind": "limit",
"unit": "usd",
"notes": "Typically a % of dwelling."
},
{
"coverage_id": "HOME:SERVICE_LN",
"value": "true",
"code": "SERVICE_LN",
"label": "Service Line",
"kind": "flag",
"unit": "bool",
"notes": null
},
{
"coverage_id": "HOME:WATER_BACK",
"value": "2500000",
"code": "WATER_BACK",
"label": "Water Backup",
"kind": "limit",
"unit": "usd",
"notes": "Sewer/sump backup endorsement."
},
{
"coverage_id": "HOME:WIND_HAIL",
"value": "0.01",
"code": "WIND_HAIL",
"label": "Wind/Hail Deductible",
"kind": "deductible",
"unit": "pct",
"notes": "% of dwelling. In FL this is the separate hurricane deductible (state rule)."
}
],
"row_count": 10,
"truncated": false
}⚙ query_db(SELECT p.policy_id, p.tier_id, p.status, p.effective_date, p.expiration_date,…)
{
"sql": "SELECT p.policy_id, p.tier_id, p.status, p.effective_date, p.expiration_date, p.final_premium_cents, po.object_type, po.object_id FROM policies p LEFT JOIN policy_objects po ON po.policy_id = p.policy_id WHERE p.policy_id = 'POL-fl-coastal-home-p_home'"
}{
"rows": [
{
"policy_id": "POL-fl-coastal-home-p_home",
"tier_id": "HOME:SEQUOIA",
"status": "ACTIVE",
"effective_date": "2025-04-01",
"expiration_date": "2026-04-01",
"final_premium_cents": 526797,
"object_type": "dwelling",
"object_id": "DWL-fl-coastal-home-d1"
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT dwelling_id, type, year_built, roof_age, sq_ft, replacement_cost_cents…)
{
"sql": "SELECT dwelling_id, type, year_built, roof_age, sq_ft, replacement_cost_cents, dist_to_coast_mi FROM dwellings WHERE dwelling_id = 'DWL-fl-coastal-home-d1'"
}{
"rows": [
{
"dwelling_id": "DWL-fl-coastal-home-d1",
"type": "home",
"year_built": 1998,
"roof_age": 6,
"sq_ft": 2800,
"replacement_cost_cents": 52000000,
"dist_to_coast_mi": 2
}
],
"row_count": 1,
"truncated": false
}⚙ search_kb(wind hail deductible Florida hurricane percent dwelling)
{
"query": "wind hail deductible Florida hurricane percent dwelling"
}{
"results": [
{
"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-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-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-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-PROMO-SPRINGSAVE25",
"title": "SPRINGSAVE25 terms",
"category": "PROMO",
"applies_to": "{\"lines\": [\"AUTO\"]}",
"snippet": "$75 off auto in the Midwest/Southwest, spring 2025 only. Offer window 2025-03-20 through 2025-06-21; does not apply after 2025-06-21. Applicability is determined by the offer window as of the quote date."
},
{
"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-PROMO-COASTALSHIELD",
"title": "COASTALSHIELD terms",
"category": "PROMO",
"applies_to": "{\"lines\": [\"HOME\", \"CONDO\"], \"states\": [\"FL\", \"GA\", \"NC\"]}",
"snippet": "$120 wind-resilience credit for Southeast home/condo policies. Cap $120; min premium $600."
}
]
}⚙ get_doc(KB-FL-HURRICANE)
{
"doc_id": "KB-FL-HURRICANE"
}{
"doc_id": "KB-FL-HURRICANE",
"title": "FL: separate hurricane deductible",
"category": "COMPLIANCE",
"applies_to": "{\"lines\": [\"HOME\"], \"states\": [\"FL\"]}",
"body_md": "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"
}Here's what your home policy (Sequoia tier) provides that's relevant to a hail loss:
Coverage available:
- Dwelling (Coverage A): based on your home's replacement cost of $520,000 — this is what covers the roof and structure damage.
- Personal Property (Coverage C): $200,000, if any belongings were damaged.
- Loss of Use (Coverage D): covers additional living expenses if the home became uninhabitable during repairs (unlikely for roof hail damage, but it's there).
What comes out of your pocket — the deductible:
- Your policy has a flat all-peril deductible of $500.
- It also has a 1% wind/hail deductible (1% of the dwelling limit ≈ $5,200) — but under Florida rules, that percentage deductible is the separate hurricane deductible, which applies only to losses from a named hurricane.
- Since your May 24 loss was hail from a regular storm — not a hurricane — the flat $500 deductible should apply.
What to expect: PEICO would pay the covered cost of repairing or replacing the damaged roof (as determined by the adjuster's inspection and your roofer's estimate), minus your $500 deductible, up to the dwelling limit. The exact payout is the adjuster's call once they've assessed the damage — I can't quote you a dollar figure before that — but with a replacement cost basis and a $500 deductible, you're well positioned.
Anything else I can help with?
No, that's clear — thank you. I appreciate you getting the claim moving today. I'll wait for the adjuster to reach out.
⚙ end_conversation()
{}{
"ok": true,
"note": "Deliver your closing message now."
}Thanks again for calling PEICO, Gloria — have a great day!