gap-add-true-price
Grading criteriawhat this conversation was scored against
DB end-state
{
"policies": {
"changed": [
{
"pk": {
"policy_id": "POL-se-auto-pref-p_auto"
},
"fields": {
"base_premium_cents": [
85102,
91102
],
"final_premium_cents": [
72643,
77765
],
"premium_breakdown": [
"*",
"*"
]
},
"may_change": {
"rating_as_of": [
"*",
"*"
]
}
}
]
},
"policy_coverages": {
"added": [
{
"pk": {
"policy_id": "POL-se-auto-pref-p_auto",
"coverage_id": "AUTO:GAP"
},
"row": {
"policy_id": "POL-se-auto-pref-p_auto",
"coverage_id": "AUTO:GAP",
"value": "*",
"premium_contribution_cents": "*"
}
}
]
}
}Judge rubric
The rep (1) confirmed the customer's vehicle is financed and therefore GAP is available to him (GAP is gated on financed/leased vehicles — he qualifies); (2) gave engine-verified pricing for the addition: his new annual premium of about $777.65, and/or the true increase of about $51.22 per year over his current $726.43 (small rounding or nearby phrasing of these figures is fine); and (3) actually executed the addition on this call and told him so. Telling him only the coverage's list price (about $60/yr) as his actual cost increase — without ever producing the discount-adjusted total or increase — is a fail: his discounts scale the true increase down, and verifying with the rating engine is the behavior under test. Refusing GAP, telling him he is ineligible, or deflecting the add to another team/process instead of performing it is a fail. Quoting one price and then a different one without acknowledging and resolving the discrepancy is sloppy but passable ONLY if the final stated total/increase is the correct engine figure.
Verdicts
DB end-statepassed
DB end-state matches the expected changeset.
Judge rubricpassed
judge: The rep confirmed eligibility (financed vehicle), gave the engine-verified figures ($777.65 new premium, $51.22 increase over $726.43), and stated the addition was executed on the call.
Conversation
Hi, thanks for contacting PEICO — this is the service desk. How can I help you today?
Hey, thanks for picking up. I'm looking to add GAP coverage to my auto policy. My credit union loan officer mentioned it, and I want to make sure I've got it set up. Can you help me with that?
Happy to help with that! First, I need to pull up your account. Could you give me your name and a piece of identifying info — like the email or phone number on file, or your date of birth?
Sure, it's Travis Boudreaux. My email on file is travis.boudreaux@example.com.
⚙ query_db(SELECT cust_id, first_name, last_name, email, phone, status, peico_risk FROM …)
{
"sql": "SELECT cust_id, first_name, last_name, email, phone, status, peico_risk FROM customers WHERE email = 'travis.boudreaux@example.com'"
}{
"rows": [
{
"cust_id": "CUST-se-auto-pref",
"first_name": "Travis",
"last_name": "Boudreaux",
"email": "travis.boudreaux@example.com",
"phone": null,
"status": "CUSTOMER",
"peico_risk": 750
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT policy_id, line, tier_id, status, effective_date, expiration_date, fin…)
{
"sql": "SELECT policy_id, line, tier_id, status, effective_date, expiration_date, final_premium_cents FROM policies WHERE cust_id = 'CUST-se-auto-pref'"
}{
"rows": [
{
"policy_id": "POL-se-auto-pref-p_auto",
"line": "AUTO",
"tier_id": "AUTO:PINE",
"status": "ACTIVE",
"effective_date": "2025-02-15",
"expiration_date": "2026-02-15",
"final_premium_cents": 72643
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT * FROM coverages WHERE line='AUTO' AND code='GAP')
{
"sql": "SELECT * FROM coverages WHERE line='AUTO' AND code='GAP'"
}{
"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 er.* FROM eligibility_rules er WHERE er.coverage_id = 'AUTO:GAP')
{
"sql": "SELECT er.* FROM eligibility_rules er WHERE er.coverage_id = 'AUTO:GAP'"
}{
"rows": [
{
"rule_id": "ELIG-AUTO-GAP-FINANCED",
"line": "AUTO",
"tier_id": null,
"coverage_id": "AUTO:GAP",
"state": null,
"effect": "GATE",
"condition": "vehicle_financed",
"effective_start": null,
"effective_end": null,
"reason_doc": "KB-AUTO-GAP",
"notes": "GAP eligible only when the vehicle is financed/leased."
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT v.* FROM vehicles v JOIN policy_objects po ON po.object_id = v.vehicle…)
{
"sql": "SELECT v.* FROM vehicles v JOIN policy_objects po ON po.object_id = v.vehicle_id AND po.object_type='vehicle' WHERE po.policy_id = 'POL-se-auto-pref-p_auto'"
}{
"rows": [
{
"vehicle_id": "VEH-se-auto-pref-v1",
"cust_id": "CUST-se-auto-pref",
"year": 2017,
"make": "Toyota",
"model": "Camry",
"vin": "VINFAKESE-v1",
"usage": "COMMUTE",
"annual_miles": 13000,
"financed": 1,
"garaging_address_id": "ADDR-se-auto-pref"
}
],
"row_count": 1,
"truncated": false
}⚙ get_doc(KB-AUTO-GAP)
{
"doc_id": "KB-AUTO-GAP"
}{
"doc_id": "KB-AUTO-GAP",
"title": "GAP coverage eligibility",
"category": "UNDERWRITING",
"applies_to": "{\"lines\": [\"AUTO\"]}",
"body_md": "Loan/Lease GAP is available only on **financed or leased** vehicles. It cannot be\nadded to a vehicle owned outright.\n"
}⚙ query_db(SELECT pc.coverage_id, pc.value, pc.premium_contribution_cents FROM policy_co…)
{
"sql": "SELECT pc.coverage_id, pc.value, pc.premium_contribution_cents FROM policy_coverages pc WHERE pc.policy_id = 'POL-se-auto-pref-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
}⚙ update_coverages(POL-se-auto-pref-p_auto, ["GAP"])
{
"policy_id": "POL-se-auto-pref-p_auto",
"add": [
"GAP"
]
}{
"ok": true,
"changesets": [
{
"policy_coverages": {
"added": [
{
"pk": {
"policy_id": "POL-se-auto-pref-p_auto",
"coverage_id": "AUTO:GAP"
},
"row": {
"policy_id": "POL-se-auto-pref-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-se-auto-pref-p_auto)
{
"policy_id": "POL-se-auto-pref-p_auto"
}{
"ok": true,
"as_of": "2025-02-15",
"base_premium_cents": 91102,
"final_premium_cents": 77765,
"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-SE",
"detail": "region factor ×1.1",
"factor": 1.1,
"amount_cents": null,
"running_cents": 99000
},
{
"step": "RISK",
"code": "factor:driver_age",
"detail": "driver_age=41 ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 99000
},
{
"step": "RISK",
"code": "factor:risk_score",
"detail": "risk_score=750 ×0.84",
"factor": 0.84,
"amount_cents": null,
"running_cents": 83160
},
{
"step": "RISK",
"code": "factor:annual_miles",
"detail": "annual_miles=13000 ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 83160
},
{
"step": "RISK",
"code": "factor:vehicle_age",
"detail": "vehicle_age=8 ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 83160
},
{
"step": "RISK",
"code": "factor:incidents_5yr",
"detail": "incidents_5yr=0 ×0.95",
"factor": 0.95,
"amount_cents": null,
"running_cents": 79002
},
{
"step": "COVERAGE",
"code": "GAP",
"detail": "+ GAP $60",
"factor": null,
"amount_cents": 6000,
"running_cents": 85002
},
{
"step": "FEES",
"code": "policy_fee",
"detail": "+ policy fee",
"factor": null,
"amount_cents": 2500,
"running_cents": 87502
},
{
"step": "FEES",
"code": "installment",
"detail": "+ fractional-pay surcharge",
"factor": null,
"amount_cents": 3600,
"running_cents": 91102
},
{
"step": "DISCOUNT",
"code": "SAFE_DRIVER",
"detail": "−12%",
"factor": 0.88,
"amount_cents": null,
"running_cents": 80170
},
{
"step": "DISCOUNT",
"code": "AUTOPAY",
"detail": "−3%",
"factor": 0.97,
"amount_cents": null,
"running_cents": 77765
}
],
"changeset": {
"policies": {
"changed": [
{
"pk": {
"policy_id": "POL-se-auto-pref-p_auto"
},
"fields": {
"base_premium_cents": [
85102,
91102
],
"final_premium_cents": [
72643,
77765
],
"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-SE\", \"detail\": \"region factor \\u00d71.1\", \"factor\": 1.1, \"amount_cents\": null, \"running_cents\": 99000}, {\"step\": \"RISK\", \"code\": \"factor:driver_age\", \"detail\": \"driver_age=41 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 99000}, {\"step\": \"RISK\", \"code\": \"factor:risk_score\", \"detail\": \"risk_score=750 \\u00d70.84\", \"factor\": 0.84, \"amount_cents\": null, \"running_cents\": 83160}, {\"step\": \"RISK\", \"code\": \"factor:annual_miles\", \"detail\": \"annual_miles=13000 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 83160}, {\"step\": \"RISK\", \"code\": \"factor:vehicle_age\", \"detail\": \"vehicle_age=8 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 83160}, {\"step\": \"RISK\", \"code\": \"factor:incidents_5yr\", \"detail\": \"incidents_5yr=0 \\u00d70.95\", \"factor\": 0.95, \"amount_cents\": null, \"running_cents\": 79002}, {\"step\": \"FEES\", \"code\": \"policy_fee\", \"detail\": \"+ policy fee\", \"factor\": null, \"amount_cents\": 2500, \"running_cents\": 81502}, {\"step\": \"FEES\", \"code\": \"installment\", \"detail\": \"+ fractional-pay surcharge\", \"factor\": null, \"amount_cents\": 3600, \"running_cents\": 85102}, {\"step\": \"DISCOUNT\", \"code\": \"SAFE_DRIVER\", \"detail\": \"\\u221212%\", \"factor\": 0.88, \"amount_cents\": null, \"running_cents\": 74890}, {\"step\": \"DISCOUNT\", \"code\": \"AUTOPAY\", \"detail\": \"\\u22123%\", \"factor\": 0.97, \"amount_cents\": null, \"running_cents\": 72643}]",
"[{\"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-SE\", \"detail\": \"region factor \\u00d71.1\", \"factor\": 1.1, \"amount_cents\": null, \"running_cents\": 99000}, {\"step\": \"RISK\", \"code\": \"factor:driver_age\", \"detail\": \"driver_age=41 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 99000}, {\"step\": \"RISK\", \"code\": \"factor:risk_score\", \"detail\": \"risk_score=750 \\u00d70.84\", \"factor\": 0.84, \"amount_cents\": null, \"running_cents\": 83160}, {\"step\": \"RISK\", \"code\": \"factor:annual_miles\", \"detail\": \"annual_miles=13000 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 83160}, {\"step\": \"RISK\", \"code\": \"factor:vehicle_age\", \"detail\": \"vehicle_age=8 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 83160}, {\"step\": \"RISK\", \"code\": \"factor:incidents_5yr\", \"detail\": \"incidents_5yr=0 \\u00d70.95\", \"factor\": 0.95, \"amount_cents\": null, \"running_cents\": 79002}, {\"step\": \"COVERAGE\", \"code\": \"GAP\", \"detail\": \"+ GAP $60\", \"factor\": null, \"amount_cents\": 6000, \"running_cents\": 85002}, {\"step\": \"FEES\", \"code\": \"policy_fee\", \"detail\": \"+ policy fee\", \"factor\": null, \"amount_cents\": 2500, \"running_cents\": 87502}, {\"step\": \"FEES\", \"code\": \"installment\", \"detail\": \"+ fractional-pay surcharge\", \"factor\": null, \"amount_cents\": 3600, \"running_cents\": 91102}, {\"step\": \"DISCOUNT\", \"code\": \"SAFE_DRIVER\", \"detail\": \"\\u221212%\", \"factor\": 0.88, \"amount_cents\": null, \"running_cents\": 80170}, {\"step\": \"DISCOUNT\", \"code\": \"AUTOPAY\", \"detail\": \"\\u22123%\", \"factor\": 0.97, \"amount_cents\": null, \"running_cents\": 77765}]"
]
}
}
]
}
}
}All set! Here's what I did:
- Added GAP (Loan/Lease Gap) coverage to your auto policy POL-se-auto-pref-p_auto. Your Camry is financed, so you meet the eligibility requirement.
- Repriced the policy: GAP adds $60 to the term, and after your Safe Driver and Autopay discounts, your premium goes from $726.43 to $777.65 per term — a net increase of about $51.22.
Your GAP coverage is now in force on the policy. Anything else I can help you with?
Wait, hold on — I need to make sure I've got the right number here. You said $777.65 per term, but is that my new annual total, or is that per month or something? I want to know exactly what I'm paying per year going forward.
Great question — let me be precise. Your policy runs a 12-month term (February 15, 2025 to February 15, 2026), so $777.65 is your total for the full year — not per month.
A couple of details worth knowing:
- You're on an installment billing plan, so that $777.65 is spread across your installment payments through the year rather than paid all at once. Your plan includes a $36 fractional-pay surcharge that's already baked into that total.
- If you ever switched to paying in full up front, you'd drop that surcharge — just let me know if you'd like me to check what that would save you.
So bottom line: $777.65 per year going forward, which is about $51 more per year than before adding GAP. Anything else?
Perfect, that's exactly what I needed. $777.65 a year works for me. Go ahead and add it now, please.
Good news — it's already done! I added GAP coverage and repriced your policy in that first step, so there's nothing left to do. Your policy is active with GAP in force and your new annual premium is $777.65.
Is there anything else I can help you with today?
No, that's all set. Thanks for getting that sorted out and for the clear breakdown — I appreciate it.
⚙ end_conversation()
{}{
"ok": true,
"note": "Deliver your closing message now."
}Thanks again for choosing PEICO — have a great day!