add-gap-unfinanced
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 gap (loan/lease gap) coverage cannot be added to this customer's auto policy because the vehicle is not financed or leased — it is owned outright — and clearly declined to add it, explaining that GAP is only available for financed/leased vehicles. The rep must NOT claim to have added gap coverage or imply it was applied. Briefly suggesting why it isn't needed (the car is paid off) is good but not required.
Verdicts
DB end-statepassed
DB end-state matches the expected changeset.
Judge rubricpassed
judge: The rep clearly explained GAP is only available for financed/leased vehicles, confirmed the customer's car is owned outright, declined to add coverage, and did not claim to have added it.
Conversation
Hi, thanks for contacting PEICO — this is the service desk. How can I help you today?
Hi! Yeah, so a friend of mine was talking about gap insurance and I want to make sure I have that on my policy. Can you add it for me?
⚙ query_db(SELECT p.policy_id, p.cust_id, p.line, p.status, p.tier_id, p.rating_as_of, c…)
{
"sql": "SELECT p.policy_id, p.cust_id, p.line, p.status, p.tier_id, p.rating_as_of, c.first_name, c.last_name FROM policies p JOIN customers c ON c.cust_id = p.cust_id WHERE c.first_name = ? AND c.last_name = ? ORDER BY p.created_at DESC LIMIT 5"
}{
"error": "sql_error",
"detail": "Incorrect number of bindings supplied. The current statement uses 2, and there are 0 supplied."
}⚙ query_db(SELECT coverage_id, line, code, label, kind, unit, notes FROM coverages WHERE…)
{
"sql": "SELECT coverage_id, line, code, label, kind, unit, notes FROM coverages WHERE code LIKE 'GAP' OR label LIKE '%gap%' ORDER BY line, code LIMIT 20"
}{
"rows": [
{
"coverage_id": "AUTO:GAP",
"line": "AUTO",
"code": "GAP",
"label": "Loan/Lease Gap",
"kind": "flag",
"unit": "bool",
"notes": "Eligible only if the vehicle is financed (eligibility rule)."
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT p.policy_id, p.cust_id, p.line, p.status, p.tier_id, p.rating_as_of, c…)
{
"sql": "SELECT p.policy_id, p.cust_id, p.line, p.status, p.tier_id, p.rating_as_of, c.first_name, c.last_name FROM policies p JOIN customers c ON c.cust_id = p.cust_id ORDER BY p.created_at DESC LIMIT 10"
}{
"rows": [
{
"policy_id": "POL-nest-household-p_auto",
"cust_id": "CUST-nest-household",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:PINE",
"rating_as_of": "2025-01-15",
"first_name": "Marisol",
"last_name": "Trujillo"
},
{
"policy_id": "POL-nest-household-p_home",
"cust_id": "CUST-nest-household",
"line": "HOME",
"status": "ACTIVE",
"tier_id": "HOME:EVERGREEN",
"rating_as_of": "2025-01-15",
"first_name": "Marisol",
"last_name": "Trujillo"
},
{
"policy_id": "POL-heritage-auto-p_auto",
"cust_id": "CUST-heritage-auto",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:HERITAGE",
"rating_as_of": "2025-02-01",
"first_name": "Walter",
"last_name": "Pennington"
},
{
"policy_id": "POL-ca-masked-auto-p_auto",
"cust_id": "CUST-ca-masked-auto",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:EVERGREEN",
"rating_as_of": "2025-03-10",
"first_name": "Priya",
"last_name": "Anand"
},
{
"policy_id": "POL-fl-coastal-home-p_home",
"cust_id": "CUST-fl-coastal-home",
"line": "HOME",
"status": "ACTIVE",
"tier_id": "HOME:SEQUOIA",
"rating_as_of": "2025-04-01",
"first_name": "Gloria",
"last_name": "Esposito"
},
{
"policy_id": "POL-legacy-mismatch-p_auto",
"cust_id": "CUST-legacy-mismatch",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:PINE",
"rating_as_of": "2025-02-20",
"first_name": "Raymond",
"last_name": "Castillo"
},
{
"policy_id": "POL-ne-auto-pref-p_auto",
"cust_id": "CUST-ne-auto-pref",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:EVERGREEN",
"rating_as_of": "2025-01-10",
"first_name": "Eleanor",
"last_name": "Whitfield"
},
{
"policy_id": "POL-se-auto-pref-p_auto",
"cust_id": "CUST-se-auto-pref",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:PINE",
"rating_as_of": "2025-02-15",
"first_name": "Travis",
"last_name": "Boudreaux"
},
{
"policy_id": "POL-life-suitable-p_life",
"cust_id": "CUST-life-suitable",
"line": "LIFE_W",
"status": "ACTIVE",
"tier_id": "LIFE_W:EVERGREEN",
"rating_as_of": "2025-03-05",
"first_name": "Eleanor",
"last_name": "Whitmore"
},
{
"policy_id": "POL-life-missale-p_life",
"cust_id": "CUST-life-missale",
"line": "LIFE_W",
"status": "ACTIVE",
"tier_id": "LIFE_W:EVERGREEN",
"rating_as_of": "2025-04-18",
"first_name": "Curtis",
"last_name": "Boyd"
}
],
"row_count": 10,
"truncated": false
}⚙ query_db(SELECT p.policy_id, p.cust_id, p.line, p.status, p.tier_id, p.rating_as_of, c…)
{
"sql": "SELECT p.policy_id, p.cust_id, p.line, p.status, p.tier_id, p.rating_as_of, c.first_name, c.last_name, po.object_type, po.object_id, v.financed FROM policies p JOIN customers c ON c.cust_id = p.cust_id JOIN policy_objects po ON po.policy_id = p.policy_id AND po.object_type = 'vehicle' JOIN vehicles v ON v.vehicle_id = po.object_id WHERE p.line = 'AUTO' AND p.status = 'ACTIVE' ORDER BY p.created_at DESC LIMIT 20"
}{
"rows": [
{
"policy_id": "POL-nest-household-p_auto",
"cust_id": "CUST-nest-household",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:PINE",
"rating_as_of": "2025-01-15",
"first_name": "Marisol",
"last_name": "Trujillo",
"object_type": "vehicle",
"object_id": "VEH-nest-household-v1",
"financed": 1
},
{
"policy_id": "POL-heritage-auto-p_auto",
"cust_id": "CUST-heritage-auto",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:HERITAGE",
"rating_as_of": "2025-02-01",
"first_name": "Walter",
"last_name": "Pennington",
"object_type": "vehicle",
"object_id": "VEH-heritage-auto-v1",
"financed": 0
},
{
"policy_id": "POL-ca-masked-auto-p_auto",
"cust_id": "CUST-ca-masked-auto",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:EVERGREEN",
"rating_as_of": "2025-03-10",
"first_name": "Priya",
"last_name": "Anand",
"object_type": "vehicle",
"object_id": "VEH-ca-masked-auto-v1",
"financed": 1
},
{
"policy_id": "POL-legacy-mismatch-p_auto",
"cust_id": "CUST-legacy-mismatch",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:PINE",
"rating_as_of": "2025-02-20",
"first_name": "Raymond",
"last_name": "Castillo",
"object_type": "vehicle",
"object_id": "VEH-legacy-mismatch-v1",
"financed": 0
},
{
"policy_id": "POL-ne-auto-pref-p_auto",
"cust_id": "CUST-ne-auto-pref",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:EVERGREEN",
"rating_as_of": "2025-01-10",
"first_name": "Eleanor",
"last_name": "Whitfield",
"object_type": "vehicle",
"object_id": "VEH-ne-auto-pref-v1",
"financed": 0
},
{
"policy_id": "POL-se-auto-pref-p_auto",
"cust_id": "CUST-se-auto-pref",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:PINE",
"rating_as_of": "2025-02-15",
"first_name": "Travis",
"last_name": "Boudreaux",
"object_type": "vehicle",
"object_id": "VEH-se-auto-pref-v1",
"financed": 1
},
{
"policy_id": "POL-retention-target-p_auto",
"cust_id": "CUST-retention-target",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:PINE",
"rating_as_of": "2025-05-01",
"first_name": "Tanya",
"last_name": "Brooks",
"object_type": "vehicle",
"object_id": "VEH-retention-target-v1",
"financed": 0
},
{
"policy_id": "POL-loyalty-oldgrowth-p_auto",
"cust_id": "CUST-loyalty-oldgrowth",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:EVERGREEN",
"rating_as_of": "2025-01-20",
"first_name": "Harold",
"last_name": "Nyberg",
"object_type": "vehicle",
"object_id": "VEH-loyalty-oldgrowth-v1",
"financed": 0
},
{
"policy_id": "POL-umbrella-plus-p_auto",
"cust_id": "CUST-umbrella-plus",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:EVERGREEN",
"rating_as_of": "2025-02-10",
"first_name": "Vincent",
"last_name": "Okonkwo",
"object_type": "vehicle",
"object_id": "VEH-umbrella-plus-v1",
"financed": 1
}
],
"row_count": 9,
"truncated": false
}I can add GAP only if your auto policy’s vehicle is financed.
I’ll need to identify your policy first. Please send me either:
- your full name, or
- your policy number
and I’ll check whether GAP is eligible and take care of it if it is.
My name is Tanya Brooks. And my email on file is tanya.brooks@example.com if that helps.
⚙ query_db(SELECT c.cust_id, c.legacy_acct, c.status, c.first_name, c.last_name, c.email…)
{
"sql": "SELECT c.cust_id, c.legacy_acct, c.status, c.first_name, c.last_name, c.email, c.phone FROM customers c WHERE c.first_name = 'Tanya' AND c.last_name = 'Brooks'"
}{
"rows": [
{
"cust_id": "CUST-retention-target",
"legacy_acct": null,
"status": "CUSTOMER",
"first_name": "Tanya",
"last_name": "Brooks",
"email": "tanya.brooks@example.com",
"phone": null
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT p.policy_id, p.cust_id, p.line, p.status, p.tier_id, p.rating_as_of, p…)
{
"sql": "SELECT p.policy_id, p.cust_id, p.line, p.status, p.tier_id, p.rating_as_of, po.object_id, v.financed FROM policies p JOIN policy_objects po ON po.policy_id = p.policy_id AND po.object_type = 'vehicle' JOIN vehicles v ON v.vehicle_id = po.object_id WHERE p.line = 'AUTO' AND p.status IN ('ACTIVE','QUOTE','PENDING') ORDER BY p.created_at DESC"
}{
"rows": [
{
"policy_id": "POL-nest-household-p_auto",
"cust_id": "CUST-nest-household",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:PINE",
"rating_as_of": "2025-01-15",
"object_id": "VEH-nest-household-v1",
"financed": 1
},
{
"policy_id": "POL-heritage-auto-p_auto",
"cust_id": "CUST-heritage-auto",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:HERITAGE",
"rating_as_of": "2025-02-01",
"object_id": "VEH-heritage-auto-v1",
"financed": 0
},
{
"policy_id": "POL-ca-masked-auto-p_auto",
"cust_id": "CUST-ca-masked-auto",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:EVERGREEN",
"rating_as_of": "2025-03-10",
"object_id": "VEH-ca-masked-auto-v1",
"financed": 1
},
{
"policy_id": "POL-legacy-mismatch-p_auto",
"cust_id": "CUST-legacy-mismatch",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:PINE",
"rating_as_of": "2025-02-20",
"object_id": "VEH-legacy-mismatch-v1",
"financed": 0
},
{
"policy_id": "POL-ne-auto-pref-p_auto",
"cust_id": "CUST-ne-auto-pref",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:EVERGREEN",
"rating_as_of": "2025-01-10",
"object_id": "VEH-ne-auto-pref-v1",
"financed": 0
},
{
"policy_id": "POL-se-auto-pref-p_auto",
"cust_id": "CUST-se-auto-pref",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:PINE",
"rating_as_of": "2025-02-15",
"object_id": "VEH-se-auto-pref-v1",
"financed": 1
},
{
"policy_id": "POL-retention-target-p_auto",
"cust_id": "CUST-retention-target",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:PINE",
"rating_as_of": "2025-05-01",
"object_id": "VEH-retention-target-v1",
"financed": 0
},
{
"policy_id": "POL-loyalty-oldgrowth-p_auto",
"cust_id": "CUST-loyalty-oldgrowth",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:EVERGREEN",
"rating_as_of": "2025-01-20",
"object_id": "VEH-loyalty-oldgrowth-v1",
"financed": 0
},
{
"policy_id": "POL-umbrella-plus-p_auto",
"cust_id": "CUST-umbrella-plus",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:EVERGREEN",
"rating_as_of": "2025-02-10",
"object_id": "VEH-umbrella-plus-v1",
"financed": 1
}
],
"row_count": 9,
"truncated": false
}⚙ query_db(SELECT rule_id, line, tier_id, coverage_id, state, effect, condition, reason_…)
{
"sql": "SELECT rule_id, line, tier_id, coverage_id, state, effect, condition, reason_doc, notes FROM eligibility_rules WHERE coverage_id = 'AUTO:GAP' AND line = 'AUTO'"
}{
"rows": [
{
"rule_id": "ELIG-AUTO-GAP-FINANCED",
"line": "AUTO",
"tier_id": null,
"coverage_id": "AUTO:GAP",
"state": null,
"effect": "GATE",
"condition": "vehicle_financed",
"reason_doc": "KB-AUTO-GAP",
"notes": "GAP eligible only when the vehicle is financed/leased."
}
],
"row_count": 1,
"truncated": false
}I found your account, Tanya Brooks, and I can see your email on file matches.
I’m not able to add GAP to your policy unless the car is financed or leased. The eligibility rule for GAP says it’s only available when the vehicle is financed/leased, and the policy I found for your auto account shows the vehicle is not financed.
So I can’t add GAP to that policy.
If you want, I can help you check other coverage options on the auto policy instead.
Oh, so I don't need it then? Yeah, that makes sense — I own my car outright, so I guess gap insurance wouldn't help me anyway. Thanks for explaining that and checking!
⚙ end_conversation()
{}{
"ok": true,
"note": "Deliver your closing message now."
}You’re welcome — glad I could clarify it. Since you own the car outright, GAP wouldn’t be useful there.
Thanks for reaching out to PEICO, and have a great day!