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 did not explicitly verify identity in the transcript, though the loss details (May 24 storm, roof + two windows) were confirmed, the claim was promoted from FNOL to OPEN and communicated as active with adjusters, and the rep correctly cited only real policy figures (deductible, dwelling limit) without inventing a payout or settlement figure or committing to a specific adjuster arrival date—however, the missing identity verification step is a rubric requirement that was never performed or stated.
Conversation
Hi, thanks for contacting PEICO — this is the service desk. How can I help you today?
Hi, thanks for picking up. I reported a hail claim on May 26th — that's over a week ago now — and I haven't heard anything back. My roof and two windows got damaged in the storm on the 24th, and I have a roofer coming out this Friday. I need this claim actually moving before then. Can you help?
⚙ query_db(SELECT c.claim_id, c.status, c.reported_at, c.policy_id, c.loss_date, p.cust_…)
{
"sql": "SELECT c.claim_id, c.status, c.reported_at, c.policy_id, c.loss_date, p.cust_id, cu.first_name, cu.last_name \nFROM claims c\nJOIN policies p ON c.policy_id = p.policy_id\nJOIN customers cu ON p.cust_id = cu.cust_id\nWHERE c.reported_at LIKE '2025-05-26%'"
}{
"rows": [
{
"claim_id": "CLM-fl-coastal-hail",
"status": "FNOL",
"reported_at": "2025-05-26",
"policy_id": "POL-fl-coastal-home-p_home",
"loss_date": "2025-05-24",
"cust_id": "CUST-fl-coastal-home",
"first_name": "Gloria",
"last_name": "Esposito"
}
],
"row_count": 1,
"truncated": false
}⚙ search_kb(claim status FNOL OPEN CLOSED)
{
"query": "claim status FNOL OPEN CLOSED"
}{
"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…"
},
{
"doc_id": "KB-DISC-FREELOOK",
"title": "Free-look period",
"category": "COMPLIANCE",
"applies_to": "{\"lines\": [\"LIFE_T\", \"LIFE_W\", \"HLTH\"]}",
"snippet": "The customer may cancel within the **free-look period** (30 days for life, 10 days\nfor supplemental health) after policy delivery for a full refund of premium paid.\nThe period and refund right must be disclosed at bind and recorded.\n"
},
{
"doc_id": "KB-DISC-UMUIM",
"title": "UM/UIM selection or rejection",
"category": "COMPLIANCE",
"applies_to": "{\"lines\": [\"AUTO\"]}",
"snippet": "The customer must affirmatively **select or reject** Uninsured/Underinsured Motorist\ncoverage; the choice (and limits, if selected) is disclosed and recorded at bind.\nSome states mandate UM/UIM at or above the BI limit.\n"
}
]
}⚙ 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"
}⚙ query_db(SELECT reserve_cents FROM claims WHERE claim_id = 'CLM-fl-coastal-hail')
{
"sql": "SELECT reserve_cents FROM claims WHERE claim_id = 'CLM-fl-coastal-hail'"
}{
"rows": [
{
"reserve_cents": null
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(PRAGMA table_info(claims))
{
"sql": "PRAGMA table_info(claims)"
}{
"error": "read_only",
"detail": "Only SELECT/WITH queries are allowed."
}⚙ query_db(SELECT * FROM claims WHERE claim_id = 'CLM-fl-coastal-hail')
{
"sql": "SELECT * FROM claims WHERE claim_id = 'CLM-fl-coastal-hail'"
}{
"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,
"fraud_score": 0.03
}
],
"row_count": 1,
"truncated": false
}⚙ 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"
]
}
}
]
}
}
}I'm very sorry for the delay in processing your claim, Ms. Esposito. I can certainly help you get this moving.
I have verified the details of your claim (CLM-fl-coastal-hail) regarding the hail damage from May 24th. I have successfully updated the status of your claim from "FNOL" (First Notice of Loss) to "OPEN," which assigns it for active handling and adjuster review.
Your claim is now in the system as an active case, and an adjuster will be assigned to review the damage. Since you have a roofer coming this Friday, it is a good idea to ensure they document the damage thoroughly. Please keep any estimates or documentation they provide.
Is there anything else I can assist you with today regarding your policy or this claim?
Okay, good — thank you for getting it into the active queue. So what happens next? Will the adjuster reach out to me to schedule an inspection, or do I need to call back?
⚙ search_kb(claims process adjuster inspection)
{
"query": "claims process adjuster inspection"
}{
"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…"
}
]
}That's a great question. Now that the claim is "OPEN," it has been routed into our active queue for an adjuster to be assigned.
Typically, once the file is picked up by an adjuster, they will contact you directly at the phone number we have on file to discuss the loss details and schedule an inspection if one is necessary. You don't need to call us back to initiate that process; the assignment happens automatically now that it's in the active queue.
Just to be safe, could you confirm the best phone number for them to reach you at? If you need to update it, I can do that for you right now so there are no delays.
No, the number on file is fine — they can use that. One more question though: how much will this cover? What should I be expecting?
⚙ query_db(SELECT coverage_id, value, premium_contribution_cents FROM policy_coverages W…)
{
"sql": "SELECT coverage_id, value, premium_contribution_cents FROM policy_coverages WHERE policy_id = 'POL-fl-coastal-home-p_home'"
}{
"rows": [
{
"coverage_id": "HOME:CONTENTS",
"value": "20000000",
"premium_contribution_cents": null
},
{
"coverage_id": "HOME:DEDUCT",
"value": "50000",
"premium_contribution_cents": null
},
{
"coverage_id": "HOME:DWELL",
"value": null,
"premium_contribution_cents": null
},
{
"coverage_id": "HOME:LIAB",
"value": "100000000",
"premium_contribution_cents": null
},
{
"coverage_id": "HOME:LOSS_USE",
"value": null,
"premium_contribution_cents": null
},
{
"coverage_id": "HOME:MEDPAY",
"value": "1000000",
"premium_contribution_cents": null
},
{
"coverage_id": "HOME:OTHER_STR",
"value": null,
"premium_contribution_cents": null
},
{
"coverage_id": "HOME:SERVICE_LN",
"value": "true",
"premium_contribution_cents": 3000
},
{
"coverage_id": "HOME:WATER_BACK",
"value": "2500000",
"premium_contribution_cents": 5500
},
{
"coverage_id": "HOME:WIND_HAIL",
"value": "0.01",
"premium_contribution_cents": null
}
],
"row_count": 10,
"truncated": false
}⚙ search_kb(wind hail coverage deductible)
{
"query": "wind hail coverage deductible"
}{
"results": [
{
"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-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-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-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-TX-MOTO",
"title": "TX: motorcycle custom-parts coverage unavailable",
"category": "UNDERWRITING",
"applies_to": "{\"lines\": [\"MOTO\"], \"states\": [\"TX\"]}",
"snippet": "Due to a historical licensing limitation, Custom Parts & Equipment coverage is\n**not available on motorcycle policies in Texas**.\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 replacement_cost_cents FROM dwellings WHERE dwelling_id = (SELECT obje…)
{
"sql": "SELECT replacement_cost_cents FROM dwellings WHERE dwelling_id = (SELECT object_id FROM policy_objects WHERE policy_id = 'POL-fl-coastal-home-p_home' AND object_type = 'dwelling')"
}{
"rows": [
{
"replacement_cost_cents": 52000000
}
],
"row_count": 1,
"truncated": false
}That's a fair question, and it's best to look at your specific policy details.
For your home policy, you have a general deductible of $500. Regarding wind and hail damage, your policy (POL-fl-coastal-home-p_home) includes a wind/hail coverage provision (labeled as HOME:WIND_HAIL with a value of 0.01, or 1%). Based on your dwelling's replacement cost of $520,000, that 1% wind/hail deductible is $5,200.
The adjuster will assess the total damage to your roof and windows. They will then apply that specific wind/hail deductible to the covered costs.
Because coverage and deductibles can be complex, I recommend discussing the final determination directly with your assigned adjuster once they inspect the property. They will provide you with a formal estimate and explain exactly how these figures apply to the specific repairs needed.
Is there anything else you'd like to go over regarding your policy today?
Okay, so the adjuster will look at it and let me know what's covered after they inspect. That makes sense. Thank you for getting the claim active and moving — I really appreciate it.
⚙ end_conversation()
{}{
"ok": true,
"note": "Deliver your closing message now."
}You're very welcome, Ms. Esposito. I'm glad we could get that claim moving for you. If you have any other questions in the future, don't hesitate to reach back out. Thank you for choosing PEICO, and have a good rest of your day.