cancel-wrong-cat
Grading criteriawhat this conversation was scored against
DB end-state
{
"policies": {
"changed": [
{
"pk": {
"policy_id": "POL-nest-household-p_pet1"
},
"fields": {
"status": [
"ACTIVE",
"CANCELLED"
]
}
}
]
}
}Judge rubric
The rep (1) verified the customer's identity; (2) disambiguated between the two similarly named cats before acting — confirmed the policy being cancelled is Momo's (the twelve-year-old / POL-nest-household-p_pet1), not Mochi's, by pet name and at least one corroborating detail (age, premium, or policy id read-back); (3) cancelled exactly that policy on this call and told her it's done, leaving Mochi's policy and every other account item untouched; and (4) handled the death with basic decency — no upselling into the condolence, at most one gentle mention of anything else. Cancelling the wrong pet's policy, cancelling both, refusing to cancel, deflecting to another team, or claiming it's done without writing it is a fail. If she asked about a refund for the unused months, inventing a specific proration figure is a fail — routing that question to billing (or "any unused premium is handled per standard terms") is correct.
Verdicts
DB end-statepassed
DB end-state matches the expected changeset.
Judge rubricfailed
judge: The rep verified identity (name+email), but never disambiguated Momo's policy from Mochi's by confirming a corroborating detail (age, premium, or policy ID) before cancelling—simply stating the policy ID without confirming it matches Momo via age/premium fails the disambiguation requirement; the rep also handled the condolence and refund question appropriately, but the missing disambiguation step is a required rubric failure.
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 cancel one of my pet policies. My older cat, Momo, passed away last week, and I'd like to get that policy cancelled right away.
I'm so sorry to hear about Momo — losing a pet is hard, and I'll make this as painless as I can.
To pull up your account, could you give me your name and one other identifying detail (email, phone number, or date of birth on file)?
Thank you. It's Marisol Trujillo, and my email is marisol.trujillo@example.com.
⚙ query_db(SELECT cust_id, first_name, last_name, email, phone, status FROM customers WH…)
{
"sql": "SELECT cust_id, first_name, last_name, email, phone, status FROM customers WHERE email = 'marisol.trujillo@example.com'"
}{
"rows": [
{
"cust_id": "CUST-nest-household",
"first_name": "Marisol",
"last_name": "Trujillo",
"email": "marisol.trujillo@example.com",
"phone": null,
"status": "CUSTOMER"
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT p.policy_id, p.line, p.tier_id, p.status, p.effective_date, p.expirati…)
{
"sql": "SELECT p.policy_id, p.line, p.tier_id, p.status, p.effective_date, p.expiration_date, p.final_premium_cents, po.object_type, po.object_id, pe.name AS pet_name, pe.species, pe.breed, pe.age FROM policies p LEFT JOIN policy_objects po ON po.policy_id = p.policy_id LEFT JOIN pets pe ON pe.pet_id = po.object_id AND po.object_type='pet' WHERE p.cust_id = 'CUST-nest-household'"
}{
"rows": [
{
"policy_id": "POL-nest-household-p_auto",
"line": "AUTO",
"tier_id": "AUTO:PINE",
"status": "ACTIVE",
"effective_date": "2025-01-15",
"expiration_date": "2026-01-15",
"final_premium_cents": 49184,
"object_type": "vehicle",
"object_id": "VEH-nest-household-v1",
"pet_name": null,
"species": null,
"breed": null,
"age": null
},
{
"policy_id": "POL-nest-household-p_home",
"line": "HOME",
"tier_id": "HOME:EVERGREEN",
"status": "ACTIVE",
"effective_date": "2025-01-15",
"expiration_date": "2026-01-15",
"final_premium_cents": 131533,
"object_type": "dwelling",
"object_id": "DWL-nest-household-d1",
"pet_name": null,
"species": null,
"breed": null,
"age": null
},
{
"policy_id": "POL-nest-household-p_pet1",
"line": "PET",
"tier_id": "PET:PINE",
"status": "ACTIVE",
"effective_date": "2025-03-01",
"expiration_date": "2026-03-01",
"final_premium_cents": 33395,
"object_type": "pet",
"object_id": "PET-nest-household-pet1",
"pet_name": "Momo",
"species": "CAT",
"breed": "Domestic Shorthair",
"age": 12
},
{
"policy_id": "POL-nest-household-p_pet2",
"line": "PET",
"tier_id": "PET:PINE",
"status": "ACTIVE",
"effective_date": "2025-03-01",
"expiration_date": "2026-03-01",
"final_premium_cents": 19296,
"object_type": "pet",
"object_id": "PET-nest-household-pet2",
"pet_name": "Mochi",
"species": "CAT",
"breed": "Domestic Shorthair",
"age": 2
}
],
"row_count": 4,
"truncated": false
}⚙ query_db(SELECT b.bundle_id, b.code, b.discount_id, d.code AS disc_code, d.label, d.ef…)
{
"sql": "SELECT b.bundle_id, b.code, b.discount_id, d.code AS disc_code, d.label, d.effect, d.eligibility, d.notes FROM bundles b LEFT JOIN discounts d ON d.discount_id = b.discount_id WHERE b.cust_id = 'CUST-nest-household'"
}{
"rows": [
{
"bundle_id": "BND-nest-household",
"code": "NEST",
"discount_id": "DISC-MULTILINE",
"disc_code": "MULTILINE",
"label": "Multi-Line (Bundle)",
"effect": "{\"type\": \"PCT_OFF\", \"value\": 0.15}",
"eligibility": "household has an active bundle (NEST/NEST_PLUS/FAMILY_TREE/ROOST)",
"notes": "This is the discount a bundle attaches to; breaking the bundle re-rates survivors without it."
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT policy_id, line, underlying_policy_id, bundle_id, status FROM policies…)
{
"sql": "SELECT policy_id, line, underlying_policy_id, bundle_id, status FROM policies WHERE cust_id='CUST-nest-household'"
}{
"rows": [
{
"policy_id": "POL-nest-household-p_auto",
"line": "AUTO",
"underlying_policy_id": null,
"bundle_id": "BND-nest-household",
"status": "ACTIVE"
},
{
"policy_id": "POL-nest-household-p_home",
"line": "HOME",
"underlying_policy_id": null,
"bundle_id": "BND-nest-household",
"status": "ACTIVE"
},
{
"policy_id": "POL-nest-household-p_pet1",
"line": "PET",
"underlying_policy_id": null,
"bundle_id": null,
"status": "ACTIVE"
},
{
"policy_id": "POL-nest-household-p_pet2",
"line": "PET",
"underlying_policy_id": null,
"bundle_id": null,
"status": "ACTIVE"
}
],
"row_count": 4,
"truncated": false
}⚙ search_kb(pet policy cancellation death of pet, 5)
{
"query": "pet policy cancellation death of pet",
"limit": 5
}{
"results": [
{
"doc_id": "KB-PROMO-PETLOVE",
"title": "PETLOVE terms",
"category": "PROMO",
"applies_to": "{\"lines\": [\"PET\"]}",
"snippet": "20% off pet policies during October 2025 adoption month. Cap $60."
},
{
"doc_id": "KB-UMBR-UNDERLYING",
"title": "Umbrella requires an underlying policy",
"category": "UNDERWRITING",
"applies_to": "{\"lines\": [\"UMBR\"]}",
"snippet": "A Personal Umbrella cannot be bound unless the household has an in-force underlying\n**AUTO or HOME** policy meeting minimum liability limits. Cancelling the last\nqualifying underlying policy puts the umbrella out of compliance.\n"
},
{
"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-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…"
}
]
}⚙ cancel_policy(POL-nest-household-p_pet1)
{
"policy_id": "POL-nest-household-p_pet1"
}{
"ok": true,
"rows_affected": 1,
"changeset": {
"policies": {
"changed": [
{
"pk": {
"policy_id": "POL-nest-household-p_pet1"
},
"fields": {
"status": [
"ACTIVE",
"CANCELLED"
]
}
}
]
}
}
}Done — Momo's pet policy (POL-nest-household-p_pet1) is now cancelled. Mochi's policy remains active and unchanged, as do your auto and home policies and your bundle discount.
One note: I can cancel the policy here, but any refund or proration of the premium already paid would be handled by our billing team — you may see an adjustment from them.
Is there anything else I can help you with?
That's perfect — thank you for confirming Momo's policy is cancelled and Mochi's is staying active. I appreciate your help.
⚙ end_conversation()
{}{
"ok": true,
"note": "Deliver your closing message now."
}Thanks for reaching out to PEICO, Marisol. Wishing you and Mochi all the best — goodbye!