payinfull-switch-savings
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 gave the customer the complete, engine-verified savings from switching his auto policy to pay-in-full: about $117.81 per 6-month term (equivalently: his term premium going from about $1,204.68 to about $1,086.87). The savings has TWO components — dropping the $36 fractional-pay surcharge AND gaining the 7% paid-in-full discount — and the rep's final answer must reflect the combined figure. Accept any final savings figure within a few dollars of $117.81 per term (or a new term total within a few dollars of $1,086.87) — e.g., ~$116 from a slightly different fee/discount ordering is a PASS; the tolerance is a couple of dollars, not tens. Telling him only that he'd avoid the ~$36 installment fee, and never producing the combined figure even after he pushes for the full number, is a fail. Giving a materially different combined figure (tens of dollars off — e.g., ~$197 per term, which comes from pricing a 12-month policy instead of his actual 6-month term) is a fail. The rep must not change his billing plan or anything else on this call — he explicitly isn't switching today; describing how to make the switch at renewal is fine.
Verdicts
DB end-statepassed
DB end-state matches the expected changeset.
Judge rubricpassed
judge: The rep's final combined figure of $118.07 savings (term total $1,086.61) is within a couple dollars of the reference $117.81/$1,086.87, and no billing plan change was made on the call, satisfying the rubric.
Conversation
Hi, thanks for contacting PEICO — this is the service desk. How can I help you today?
Hey, thanks for picking up. I'm Raymond Castillo — I have an auto policy with you guys, and I'm thinking about switching from monthly installments to paying my full term upfront at my next renewal. Before I decide, I need to know exactly how much I'd actually save by doing that. Can you run those numbers for me?
⚙ query_db(SELECT p.policy_id, p.cust_id, p.line, p.status, p.effective_date, p.expirati…)
{
"sql": "SELECT p.policy_id, p.cust_id, p.line, p.status, p.effective_date, p.expiration_date, p.rating_as_of, p.final_premium_cents, p.base_premium_cents, p.bundle_id, c.first_name, c.last_name FROM policies p JOIN customers c ON c.cust_id = p.cust_id WHERE c.first_name = 'Raymond' AND c.last_name = 'Castillo' AND p.line LIKE 'AUTO%' ORDER BY p.created_at DESC LIMIT 5"
}{
"rows": [
{
"policy_id": "POL-legacy-mismatch-p_auto",
"cust_id": "CUST-legacy-mismatch",
"line": "AUTO",
"status": "ACTIVE",
"effective_date": "2025-02-20",
"expiration_date": "2025-08-20",
"rating_as_of": "2025-02-20",
"final_premium_cents": 120468,
"base_premium_cents": 120468,
"bundle_id": null,
"first_name": "Raymond",
"last_name": "Castillo"
}
],
"row_count": 1,
"truncated": false
}⚙ price_check(POL-legacy-mismatch-p_auto, 2025-06-01)
{
"policy_id": "POL-legacy-mismatch-p_auto",
"as_of": "2025-06-01"
}{
"as_of": "2025-06-01",
"facts": {
"line": "AUTO",
"tier": "PINE",
"region": "R-SW",
"state": "TX",
"term_months": 6,
"peico_risk": 616,
"age": 50,
"billing_plan": "INSTALLMENTS",
"autopay": false,
"paperless": false,
"loyalty_tier": "Sprout",
"status": "CUSTOMER",
"has_bundle": false,
"active_lines": 1,
"is_new_first_policy": false,
"promo_code": null,
"coverages": [],
"driver_age": 50,
"annual_miles": 16000,
"vehicle_age": 7,
"incidents_5yr": 2,
"exposure_count": 1
},
"base_premium_cents": 120468,
"final_premium_cents": 120468,
"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": "BASE",
"code": "term",
"detail": "6mo proration ×0.5",
"factor": 0.5,
"amount_cents": null,
"running_cents": 50400
},
{
"step": "RISK",
"code": "factor:driver_age",
"detail": "driver_age=50 ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 50400
},
{
"step": "RISK",
"code": "factor:risk_score",
"detail": "risk_score=616 ×1.22",
"factor": 1.22,
"amount_cents": null,
"running_cents": 61488
},
{
"step": "RISK",
"code": "factor:annual_miles",
"detail": "annual_miles=16000 ×1.2",
"factor": 1.2,
"amount_cents": null,
"running_cents": 73786
},
{
"step": "RISK",
"code": "factor:vehicle_age",
"detail": "vehicle_age=7 ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 73786
},
{
"step": "RISK",
"code": "factor:incidents_5yr",
"detail": "incidents_5yr=2 ×1.55",
"factor": 1.55,
"amount_cents": null,
"running_cents": 114368
},
{
"step": "FEES",
"code": "policy_fee",
"detail": "+ policy fee",
"factor": null,
"amount_cents": 2500,
"running_cents": 116868
},
{
"step": "FEES",
"code": "installment",
"detail": "+ fractional-pay surcharge",
"factor": null,
"amount_cents": 3600,
"running_cents": 120468
}
]
}I ran the numbers on your current auto policy.
Current payment plan: monthly installments
Current total for the 6-month term: $1,204.68
If you switch to pay-in-full at renewal, your premium would remove the installment surcharge of $36.00, bringing the term total to:
- Pay-in-full total: $1,168.68
- Your savings: $36.00
That’s the exact difference based on your current policy facts. If you want, I can also help you compare whether any autopay or paperless settings would change that at renewal.
Okay, so I'd save $36 by paying upfront — that's just the installment fee, right? Is that everything? I heard paying in full also gets you a discount on the actual premium itself — what would my actual term total come to with that factored in?
⚙ query_db(SELECT discount_id, code, label, effect, stack_order, eligibility, notes FROM…)
{
"sql": "SELECT discount_id, code, label, effect, stack_order, eligibility, notes FROM discounts WHERE code LIKE '%PAY%' OR label LIKE '%pay%' OR notes LIKE '%pay in full%'"
}{
"rows": [
{
"discount_id": "DISC-AUTOPAY",
"code": "AUTOPAY",
"label": "Automatic Payments",
"effect": "{\"type\": \"PCT_OFF\", \"value\": 0.03}",
"stack_order": 50,
"eligibility": "billing.autopay == true",
"notes": null
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT promo_code, label, scope, window_start, window_end, effect, stacks_wit…)
{
"sql": "SELECT promo_code, label, scope, window_start, window_end, effect, stacks_with, caps, active, retired_rider, notes FROM promotions WHERE label LIKE '%pay%' OR notes LIKE '%pay%' OR effect LIKE '%pay%' OR scope LIKE '%billing%'"
}{
"rows": [],
"row_count": 0,
"truncated": false
}⚙ query_db(SELECT code, label, effect, eligibility, notes FROM discounts ORDER BY stack_…)
{
"sql": "SELECT code, label, effect, eligibility, notes FROM discounts ORDER BY stack_order ASC"
}{
"rows": [
{
"code": "SAFE_DRIVER",
"label": "Safe Driver",
"effect": "{\"type\": \"PCT_OFF\", \"value\": 0.12}",
"eligibility": "line in [AUTO,MOTO] and driver_incidents_5yr == 0",
"notes": null
},
{
"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."
},
{
"code": "PAID_IN_FULL",
"label": "Paid In Full",
"effect": "{\"type\": \"PCT_OFF\", \"value\": 0.07}",
"eligibility": "billing.plan == PAY_IN_FULL",
"notes": null
},
{
"code": "PAPERLESS",
"label": "Paperless Billing",
"effect": "{\"type\": \"DOLLARS_OFF\", \"value\": 25}",
"eligibility": "contact.paperless == true",
"notes": null
},
{
"code": "AUTOPAY",
"label": "Automatic Payments",
"effect": "{\"type\": \"PCT_OFF\", \"value\": 0.03}",
"eligibility": "billing.autopay == true",
"notes": null
},
{
"code": "LOYALTY",
"label": "PineRewards Loyalty",
"effect": "{\"type\": \"PCT_OFF\", \"value\": 0.05}",
"eligibility": "loyalty_tier in [Timber, OldGrowth]",
"notes": "Applied LAST so it discounts the already-discounted premium (compounding order matters)."
}
],
"row_count": 6,
"truncated": false
}⚙ price_check(POL-legacy-mismatch-p_auto, 2025-06-01)
{
"policy_id": "POL-legacy-mismatch-p_auto",
"as_of": "2025-06-01"
}{
"as_of": "2025-06-01",
"facts": {
"line": "AUTO",
"tier": "PINE",
"region": "R-SW",
"state": "TX",
"term_months": 6,
"peico_risk": 616,
"age": 50,
"billing_plan": "INSTALLMENTS",
"autopay": false,
"paperless": false,
"loyalty_tier": "Sprout",
"status": "CUSTOMER",
"has_bundle": false,
"active_lines": 1,
"is_new_first_policy": false,
"promo_code": null,
"coverages": [],
"driver_age": 50,
"annual_miles": 16000,
"vehicle_age": 7,
"incidents_5yr": 2,
"exposure_count": 1
},
"base_premium_cents": 120468,
"final_premium_cents": 120468,
"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": "BASE",
"code": "term",
"detail": "6mo proration ×0.5",
"factor": 0.5,
"amount_cents": null,
"running_cents": 50400
},
{
"step": "RISK",
"code": "factor:driver_age",
"detail": "driver_age=50 ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 50400
},
{
"step": "RISK",
"code": "factor:risk_score",
"detail": "risk_score=616 ×1.22",
"factor": 1.22,
"amount_cents": null,
"running_cents": 61488
},
{
"step": "RISK",
"code": "factor:annual_miles",
"detail": "annual_miles=16000 ×1.2",
"factor": 1.2,
"amount_cents": null,
"running_cents": 73786
},
{
"step": "RISK",
"code": "factor:vehicle_age",
"detail": "vehicle_age=7 ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 73786
},
{
"step": "RISK",
"code": "factor:incidents_5yr",
"detail": "incidents_5yr=2 ×1.55",
"factor": 1.55,
"amount_cents": null,
"running_cents": 114368
},
{
"step": "FEES",
"code": "policy_fee",
"detail": "+ policy fee",
"factor": null,
"amount_cents": 2500,
"running_cents": 116868
},
{
"step": "FEES",
"code": "installment",
"detail": "+ fractional-pay surcharge",
"factor": null,
"amount_cents": 3600,
"running_cents": 120468
}
]
}Yes — on your current policy, the $36.00 is just the installment surcharge.
Based on the pricing rules I checked, PEICO also has a Paid In Full discount of 7% when the billing plan is PAY_IN_FULL. That discount applies to the premium itself, not just the fee.
Using your current policy facts as the baseline:
- Current installment total: $1,204.68
- Remove installment surcharge: -$36.00
- Apply Paid In Full discount: 7% off the premium amount
That brings the estimated pay-in-full term total to $1,086.61.
So your estimated savings versus monthly installments would be:
- $118.07 total savings
- $36.00 from avoiding the installment fee
- $82.07 from the paid-in-full premium discount
If you want, I can also help you compare whether any other billing options or account settings could change that number at renewal.
Perfect — that's exactly what I needed. $118.07 per term, got it. I'll think it over before my renewal comes up and decide if I want to make the switch. Thanks for running those numbers for me.
You’re welcome — glad I could help. If you decide to switch at renewal, just reach back out and I can help with the next steps. Have a good one.