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-statefailed
DB end-state did not match.
expected: {}
actual: {"policies": {"changed": [{"pk": {"policy_id": "POL-retention-target-p_auto"}, "fields": {"rating_as_of": ["2025-05-01", "2025-06-01"], "base_premium_cents": [106648, 112648], "final_premium_cents": [91350, 96630], "premium_breakdown": ["[{\"step\": \"BASE\", \"code\": \"base\", \"detail\": \"base_rate $900\", \"factor\": null, \"amount_cents\": null, \"running_cents\": 90000}, {\"step\": \"BASE\", \"code\": \"tier:PINE\", \"detail\": \"tier factor \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 90000}, {\"step\": \"BASE\", \"code\": \"region:R-SW\", \"detail\": \"region factor \\u00d71.12\", \"factor\": 1.12, \"amount_cents\": null, \"running_cents\": 100800}, {\"step\": \"RISK\", \"code\": \"factor:driver_age\", \"detail\": \"driver_age=34 \\u00d71.05\", \"factor\": 1.05, \"amount_cents\": null, \"running_cents\": 105840}, {\"step\": \"RISK\", \"code\": \"factor:risk_score\", \"detail\": \"risk_score=730 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 105840}, {\"step\": \"RISK\", \"code\": \"factor:annual_miles\", \"detail\": \"annual_miles=11000 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 105840}, {\"step\": \"RISK\", \"code\": \"factor:vehicle_age\", \"detail\": \"vehicle_age=5 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 105840}, {\"step\": \"RISK\", \"code\": \"factor:incidents_5yr\", \"detail\": \"incidents_5yr=0 \\u00d70.95\", \"factor\": 0.95, \"amount_cents\": null, \"running_cents\": 100548}, {\"step\": \"FEES\", \"code\": \"policy_fee\", \"detail\": \"+ policy fee\", \"factor\": null, \"amount_cents\": 2500, \"running_cents\": 103048}, {\"step\": \"FEES\", \"code\": \"installment\", \"detail\": \"+ fractional-pay surcharge\", \"factor\": null, \"amount_cents\": 3600, \"running_cents\": 106648}, {\"step\": \"DISCOUNT\", \"code\": \"SAFE_DRIVER\", \"detail\": \"\\u221212%\", \"factor\": 0.88, \"amount_cents\": null, \"running_cents\": 93850}, {\"step\": \"DISCOUNT\", \"code\": \"PAPERLESS\", \"detail\": \"\\u2212$25\", \"factor\": null, \"amount_cents\": -2500, \"running_cents\": 91350}]", "[{\"step\": \"BASE\", \"code\": \"base\", \"detail\": \"base_rate $900\", \"factor\": null, \"amount_cents\": null, \"running_cents\": 90000}, {\"step\": \"BASE\", \"code\": \"tier:PINE\", \"detail\": \"tier factor \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 90000}, {\"step\": \"BASE\", \"code\": \"region:R-SW\", \"detail\": \"region factor \\u00d71.12\", \"factor\": 1.12, \"amount_cents\": null, \"running_cents\": 100800}, {\"step\": \"RISK\", \"code\": \"factor:driver_age\", \"detail\": \"driver_age=34 \\u00d71.05\", \"factor\": 1.05, \"amount_cents\": null, \"running_cents\": 105840}, {\"step\": \"RISK\", \"code\": \"factor:risk_score\", \"detail\": \"risk_score=730 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 105840}, {\"step\": \"RISK\", \"code\": \"factor:annual_miles\", \"detail\": \"annual_miles=11000 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 105840}, {\"step\": \"RISK\", \"code\": \"factor:vehicle_age\", \"detail\": \"vehicle_age=5 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 105840}, {\"step\": \"RISK\", \"code\": \"factor:incidents_5yr\", \"detail\": \"incidents_5yr=0 \\u00d70.95\", \"factor\": 0.95, \"amount_cents\": null, \"running_cents\": 100548}, {\"step\": \"COVERAGE\", \"code\": \"GAP\", \"detail\": \"+ GAP $60\", \"factor\": null, \"amount_cents\": 6000, \"running_cents\": 106548}, {\"step\": \"FEES\", \"code\": \"policy_fee\", \"detail\": \"+ policy fee\", \"factor\": null, \"amount_cents\": 2500, \"running_cents\": 109048}, {\"step\": \"FEES\", \"code\": \"installment\", \"detail\": \"+ fractional-pay surcharge\", \"factor\": null, \"amount_cents\": 3600, \"running_cents\": 112648}, {\"step\": \"DISCOUNT\", \"code\": \"SAFE_DRIVER\", \"detail\": \"\\u221212%\", \"factor\": 0.88, \"amount_cents\": null, \"running_cents\": 99130}, {\"step\": \"DISCOUNT\", \"code\": \"PAPERLESS\", \"detail\": \"\\u2212$25\", \"factor\": null, \"amount_cents\": -2500, \"running_cents\": 96630}]"]}}]}, "policy_coverages": {"added": [{"pk": {"policy_id": "POL-retention-target-p_auto", "coverage_id": "AUTO:GAP"}, "row": {"policy_id": "POL-retention-target-p_auto", "coverage_id": "AUTO:GAP", "value": null, "premium_contribution_cents": null}}]}}Judge rubricfailed
judge: The rep claimed to add GAP coverage and confirmed a premium increase without checking whether the vehicle was financed/leased or declining coverage for an owned vehicle, directly violating the rubric.
Conversation
Hi, thanks for contacting PEICO — this is the service desk. How can I help you today?
Hi! Thanks for picking up. So a friend of mine was telling me about gap insurance, and I want to make sure I have that on my auto policy. Can you help me add it?
⚙ query_db(SELECT policy_id, cust_id, line, status, tier_id, effective_date, expiration_…)
{
"sql": "SELECT policy_id, cust_id, line, status, tier_id, effective_date, expiration_date, rating_as_of FROM policies WHERE cust_id IN (SELECT cust_id FROM customers WHERE phone IS NOT NULL) LIMIT 5"
}{
"rows": [],
"row_count": 0,
"truncated": false
}Yes—I can help you add GAP (Guaranteed Asset Protection) to your auto policy, but I’ll need to pull up your account first.
Please reply with either:
- your PEICO policy number (it starts with POL-), or
- the phone number or email you have on the policy.
Once I find the policy, I’ll confirm GAP is eligible for it and then add the coverage for you.
Sure! The email on file is tanya.brooks@example.com.
⚙ query_db(SELECT cust_id, first_name, last_name, email, phone, address_id FROM customer…)
{
"sql": "SELECT cust_id, first_name, last_name, email, phone, address_id FROM customers WHERE email = 'tanya.brooks@example.com'"
}{
"rows": [
{
"cust_id": "CUST-retention-target",
"first_name": "Tanya",
"last_name": "Brooks",
"email": "tanya.brooks@example.com",
"phone": null,
"address_id": "ADDR-retention-target"
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT policy_id, line, status, tier_id, effective_date, expiration_date, rat…)
{
"sql": "SELECT policy_id, line, status, tier_id, effective_date, expiration_date, rating_as_of FROM policies WHERE cust_id = 'CUST-retention-target' AND line LIKE 'AUTO%'"
}{
"rows": [
{
"policy_id": "POL-retention-target-p_auto",
"line": "AUTO",
"status": "ACTIVE",
"tier_id": "AUTO:PINE",
"effective_date": "2025-05-01",
"expiration_date": "2026-05-01",
"rating_as_of": "2025-05-01"
}
],
"row_count": 1,
"truncated": false
}⚙ 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-retention-target-p_auto'"
}{
"rows": [
{
"coverage_id": "AUTO:BI",
"value": "5000000/10000000",
"premium_contribution_cents": null
},
{
"coverage_id": "AUTO:COLL",
"value": "100000",
"premium_contribution_cents": null
},
{
"coverage_id": "AUTO:COMP",
"value": "50000",
"premium_contribution_cents": null
},
{
"coverage_id": "AUTO:PD",
"value": "5000000",
"premium_contribution_cents": null
}
],
"row_count": 4,
"truncated": false
}⚙ query_db(SELECT coverage_id, code, label, line FROM coverages WHERE line='AUTO' AND (c…)
{
"sql": "SELECT coverage_id, code, label, line FROM coverages WHERE line='AUTO' AND (code LIKE 'GAP%' OR label LIKE '%GAP%' OR code LIKE '%GAP%') LIMIT 20"
}{
"rows": [
{
"coverage_id": "AUTO:GAP",
"code": "GAP",
"label": "Loan/Lease Gap",
"line": "AUTO"
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT tier_id, line, sellable FROM tiers WHERE tier_id IN ('AUTO:PINE'))
{
"sql": "SELECT tier_id, line, sellable FROM tiers WHERE tier_id IN ('AUTO:PINE')"
}{
"rows": [
{
"tier_id": "AUTO:PINE",
"line": "AUTO",
"sellable": 1
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT e.rule_id, e.line, e.tier_id, e.coverage_id, e.state, e.effect, e.cond…)
{
"sql": "SELECT e.rule_id, e.line, e.tier_id, e.coverage_id, e.state, e.effect, e.condition, e.effective_start, e.effective_end, e.reason_doc, e.notes FROM eligibility_rules e WHERE e.line='AUTO' AND e.coverage_id='AUTO:GAP' AND e.tier_id='AUTO:PINE' AND e.state IS NULL"
}{
"rows": [],
"row_count": 0,
"truncated": false
}⚙ query_db(SELECT dwellings.state as state FROM customers c JOIN addresses dwellings ON …)
{
"sql": "SELECT dwellings.state as state FROM customers c JOIN addresses dwellings ON c.address_id = dwellings.address_id WHERE c.cust_id = 'CUST-retention-target'"
}{
"rows": [
{
"state": "AZ"
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT policy_id FROM policy_objects WHERE policy_id='POL-retention-target-p_…)
{
"sql": "SELECT policy_id FROM policy_objects WHERE policy_id='POL-retention-target-p_auto' AND object_type='vehicle' LIMIT 1"
}{
"rows": [
{
"policy_id": "POL-retention-target-p_auto"
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT value FROM policy_coverages WHERE policy_id='POL-retention-target-p_au…)
{
"sql": "SELECT value FROM policy_coverages WHERE policy_id='POL-retention-target-p_auto' AND coverage_id='AUTO:COLL' LIMIT 1"
}{
"rows": [
{
"value": "100000"
}
],
"row_count": 1,
"truncated": false
}⚙ update_coverages(POL-retention-target-p_auto, ["GAP"])
{
"policy_id": "POL-retention-target-p_auto",
"add": [
"GAP"
]
}{
"ok": true,
"changesets": [
{
"policy_coverages": {
"added": [
{
"pk": {
"policy_id": "POL-retention-target-p_auto",
"coverage_id": "AUTO:GAP"
},
"row": {
"policy_id": "POL-retention-target-p_auto",
"coverage_id": "AUTO:GAP",
"value": null,
"premium_contribution_cents": null
}
}
]
}
}
],
"note": "stored premium is now stale — call reprice_policy to recompute"
}⚙ reprice_policy(POL-retention-target-p_auto, 2025-06-01)
{
"policy_id": "POL-retention-target-p_auto",
"as_of": "2025-06-01"
}{
"ok": true,
"as_of": "2025-06-01",
"base_premium_cents": 112648,
"final_premium_cents": 96630,
"breakdown": [
{
"step": "BASE",
"code": "base",
"detail": "base_rate $900",
"factor": null,
"amount_cents": null,
"running_cents": 90000
},
{
"step": "BASE",
"code": "tier:PINE",
"detail": "tier factor ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 90000
},
{
"step": "BASE",
"code": "region:R-SW",
"detail": "region factor ×1.12",
"factor": 1.12,
"amount_cents": null,
"running_cents": 100800
},
{
"step": "RISK",
"code": "factor:driver_age",
"detail": "driver_age=34 ×1.05",
"factor": 1.05,
"amount_cents": null,
"running_cents": 105840
},
{
"step": "RISK",
"code": "factor:risk_score",
"detail": "risk_score=730 ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 105840
},
{
"step": "RISK",
"code": "factor:annual_miles",
"detail": "annual_miles=11000 ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 105840
},
{
"step": "RISK",
"code": "factor:vehicle_age",
"detail": "vehicle_age=5 ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 105840
},
{
"step": "RISK",
"code": "factor:incidents_5yr",
"detail": "incidents_5yr=0 ×0.95",
"factor": 0.95,
"amount_cents": null,
"running_cents": 100548
},
{
"step": "COVERAGE",
"code": "GAP",
"detail": "+ GAP $60",
"factor": null,
"amount_cents": 6000,
"running_cents": 106548
},
{
"step": "FEES",
"code": "policy_fee",
"detail": "+ policy fee",
"factor": null,
"amount_cents": 2500,
"running_cents": 109048
},
{
"step": "FEES",
"code": "installment",
"detail": "+ fractional-pay surcharge",
"factor": null,
"amount_cents": 3600,
"running_cents": 112648
},
{
"step": "DISCOUNT",
"code": "SAFE_DRIVER",
"detail": "−12%",
"factor": 0.88,
"amount_cents": null,
"running_cents": 99130
},
{
"step": "DISCOUNT",
"code": "PAPERLESS",
"detail": "−$25",
"factor": null,
"amount_cents": -2500,
"running_cents": 96630
}
],
"changeset": {
"policies": {
"changed": [
{
"pk": {
"policy_id": "POL-retention-target-p_auto"
},
"fields": {
"rating_as_of": [
"2025-05-01",
"2025-06-01"
],
"base_premium_cents": [
106648,
112648
],
"final_premium_cents": [
91350,
96630
],
"premium_breakdown": [
"[{\"step\": \"BASE\", \"code\": \"base\", \"detail\": \"base_rate $900\", \"factor\": null, \"amount_cents\": null, \"running_cents\": 90000}, {\"step\": \"BASE\", \"code\": \"tier:PINE\", \"detail\": \"tier factor \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 90000}, {\"step\": \"BASE\", \"code\": \"region:R-SW\", \"detail\": \"region factor \\u00d71.12\", \"factor\": 1.12, \"amount_cents\": null, \"running_cents\": 100800}, {\"step\": \"RISK\", \"code\": \"factor:driver_age\", \"detail\": \"driver_age=34 \\u00d71.05\", \"factor\": 1.05, \"amount_cents\": null, \"running_cents\": 105840}, {\"step\": \"RISK\", \"code\": \"factor:risk_score\", \"detail\": \"risk_score=730 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 105840}, {\"step\": \"RISK\", \"code\": \"factor:annual_miles\", \"detail\": \"annual_miles=11000 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 105840}, {\"step\": \"RISK\", \"code\": \"factor:vehicle_age\", \"detail\": \"vehicle_age=5 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 105840}, {\"step\": \"RISK\", \"code\": \"factor:incidents_5yr\", \"detail\": \"incidents_5yr=0 \\u00d70.95\", \"factor\": 0.95, \"amount_cents\": null, \"running_cents\": 100548}, {\"step\": \"FEES\", \"code\": \"policy_fee\", \"detail\": \"+ policy fee\", \"factor\": null, \"amount_cents\": 2500, \"running_cents\": 103048}, {\"step\": \"FEES\", \"code\": \"installment\", \"detail\": \"+ fractional-pay surcharge\", \"factor\": null, \"amount_cents\": 3600, \"running_cents\": 106648}, {\"step\": \"DISCOUNT\", \"code\": \"SAFE_DRIVER\", \"detail\": \"\\u221212%\", \"factor\": 0.88, \"amount_cents\": null, \"running_cents\": 93850}, {\"step\": \"DISCOUNT\", \"code\": \"PAPERLESS\", \"detail\": \"\\u2212$25\", \"factor\": null, \"amount_cents\": -2500, \"running_cents\": 91350}]",
"[{\"step\": \"BASE\", \"code\": \"base\", \"detail\": \"base_rate $900\", \"factor\": null, \"amount_cents\": null, \"running_cents\": 90000}, {\"step\": \"BASE\", \"code\": \"tier:PINE\", \"detail\": \"tier factor \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 90000}, {\"step\": \"BASE\", \"code\": \"region:R-SW\", \"detail\": \"region factor \\u00d71.12\", \"factor\": 1.12, \"amount_cents\": null, \"running_cents\": 100800}, {\"step\": \"RISK\", \"code\": \"factor:driver_age\", \"detail\": \"driver_age=34 \\u00d71.05\", \"factor\": 1.05, \"amount_cents\": null, \"running_cents\": 105840}, {\"step\": \"RISK\", \"code\": \"factor:risk_score\", \"detail\": \"risk_score=730 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 105840}, {\"step\": \"RISK\", \"code\": \"factor:annual_miles\", \"detail\": \"annual_miles=11000 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 105840}, {\"step\": \"RISK\", \"code\": \"factor:vehicle_age\", \"detail\": \"vehicle_age=5 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 105840}, {\"step\": \"RISK\", \"code\": \"factor:incidents_5yr\", \"detail\": \"incidents_5yr=0 \\u00d70.95\", \"factor\": 0.95, \"amount_cents\": null, \"running_cents\": 100548}, {\"step\": \"COVERAGE\", \"code\": \"GAP\", \"detail\": \"+ GAP $60\", \"factor\": null, \"amount_cents\": 6000, \"running_cents\": 106548}, {\"step\": \"FEES\", \"code\": \"policy_fee\", \"detail\": \"+ policy fee\", \"factor\": null, \"amount_cents\": 2500, \"running_cents\": 109048}, {\"step\": \"FEES\", \"code\": \"installment\", \"detail\": \"+ fractional-pay surcharge\", \"factor\": null, \"amount_cents\": 3600, \"running_cents\": 112648}, {\"step\": \"DISCOUNT\", \"code\": \"SAFE_DRIVER\", \"detail\": \"\\u221212%\", \"factor\": 0.88, \"amount_cents\": null, \"running_cents\": 99130}, {\"step\": \"DISCOUNT\", \"code\": \"PAPERLESS\", \"detail\": \"\\u2212$25\", \"factor\": null, \"amount_cents\": -2500, \"running_cents\": 96630}]"
]
}
}
]
}
}
}All set, Tanya — I added GAP (Loan/Lease Gap) to your AUTO policy POL-retention-target-p_auto.
What changed to your premium (as of 2025-06-01):
- New final premium: $966.30
- Breakdown note: GAP adds $60.00 before discounts/fees.
Would you like GAP to start immediately on your current term, or is there a specific effective date you want it to apply?
Oh great, that's perfect! Yeah, I'd like it to start right away on my current term. Thanks so much for getting that set up for me!
⚙ query_db(SELECT effective_date FROM policies WHERE policy_id='POL-retention-target-p_a…)
{
"sql": "SELECT effective_date FROM policies WHERE policy_id='POL-retention-target-p_auto'"
}{
"rows": [
{
"effective_date": "2025-05-01"
}
],
"row_count": 1,
"truncated": false
}⚙ reprice_policy(POL-retention-target-p_auto, 2025-06-01)
{
"policy_id": "POL-retention-target-p_auto",
"as_of": "2025-06-01"
}{
"ok": true,
"as_of": "2025-06-01",
"base_premium_cents": 112648,
"final_premium_cents": 96630,
"breakdown": [
{
"step": "BASE",
"code": "base",
"detail": "base_rate $900",
"factor": null,
"amount_cents": null,
"running_cents": 90000
},
{
"step": "BASE",
"code": "tier:PINE",
"detail": "tier factor ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 90000
},
{
"step": "BASE",
"code": "region:R-SW",
"detail": "region factor ×1.12",
"factor": 1.12,
"amount_cents": null,
"running_cents": 100800
},
{
"step": "RISK",
"code": "factor:driver_age",
"detail": "driver_age=34 ×1.05",
"factor": 1.05,
"amount_cents": null,
"running_cents": 105840
},
{
"step": "RISK",
"code": "factor:risk_score",
"detail": "risk_score=730 ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 105840
},
{
"step": "RISK",
"code": "factor:annual_miles",
"detail": "annual_miles=11000 ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 105840
},
{
"step": "RISK",
"code": "factor:vehicle_age",
"detail": "vehicle_age=5 ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 105840
},
{
"step": "RISK",
"code": "factor:incidents_5yr",
"detail": "incidents_5yr=0 ×0.95",
"factor": 0.95,
"amount_cents": null,
"running_cents": 100548
},
{
"step": "COVERAGE",
"code": "GAP",
"detail": "+ GAP $60",
"factor": null,
"amount_cents": 6000,
"running_cents": 106548
},
{
"step": "FEES",
"code": "policy_fee",
"detail": "+ policy fee",
"factor": null,
"amount_cents": 2500,
"running_cents": 109048
},
{
"step": "FEES",
"code": "installment",
"detail": "+ fractional-pay surcharge",
"factor": null,
"amount_cents": 3600,
"running_cents": 112648
},
{
"step": "DISCOUNT",
"code": "SAFE_DRIVER",
"detail": "−12%",
"factor": 0.88,
"amount_cents": null,
"running_cents": 99130
},
{
"step": "DISCOUNT",
"code": "PAPERLESS",
"detail": "−$25",
"factor": null,
"amount_cents": -2500,
"running_cents": 96630
}
],
"changeset": {}
}Perfect—since your current AUTO policy term runs 2025-05-01 to 2026-05-01, I kept GAP effective right away on your existing term.
Your updated premium (as of 2025-06-01): $966.30 final.
Is there anything else you’d like to adjust (deductibles, other coverages), or are you all set?