tx-moto-custom-parts-denied
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 Custom Parts & Equipment coverage is not available on motorcycle policies in Texas and clearly declined to add it, explaining the state restriction. The rep must NOT claim to have added the coverage or imply it was applied.
Verdicts
DB end-statepassed
DB end-state matches the expected changeset.
Judge rubricpassed
judge: The rep correctly identified that Custom Parts & Equipment coverage is denied for motorcycle policies in Texas, clearly declined to add it, explained the state restriction, and did not claim or imply the coverage was added.
Conversation
Hi, thanks for contacting PEICO — this is the service desk. How can I help you today?
Hey, thanks for picking up. I've got a PEICO motorcycle policy and I'm looking to add coverage for some custom parts I've added to my bike — chrome, a custom seat, saddlebags. Can you help me get that set up?
Absolutely — I can help with that.
To pull up the right motorcycle policy and check what custom-parts coverage is available, please provide one of the following:
- Your PEICO policy number, or
- Your name plus one account identifier, such as the email/phone on file or legacy account number.
For security, I’ll also need to verify your identity before I make any coverage change.
Sure, I understand. My name is Marcus Reyes, and my email on file is marcus.reyes@example.com.
⚙ query_db(SELECT c.cust_id, c.first_name, c.last_name, c.dob, c.email, c.phone, c.statu…)
{
"sql": "SELECT c.cust_id, c.first_name, c.last_name, c.dob, c.email, c.phone, c.status, c.address_id, a.state, a.region FROM customers c LEFT JOIN addresses a ON c.address_id=a.address_id WHERE c.first_name='Marcus' AND c.last_name='Reyes' AND c.email='marcus.reyes@example.com'"
}{
"rows": [
{
"cust_id": "CUST-tx-moto",
"first_name": "Marcus",
"last_name": "Reyes",
"dob": "1979-09-03",
"email": "marcus.reyes@example.com",
"phone": "(512) 555-0188",
"status": "CUSTOMER",
"address_id": "ADDR-tx-moto",
"state": "TX",
"region": "R-SW"
}
],
"row_count": 1,
"truncated": false
}Thanks, Marcus — I found a matching PEICO customer profile.
Before I make any policy changes, please verify either:
- Your date of birth, or
- The phone number on file.
My date of birth is September 3, 1979.
⚙ 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.term_months, p.final_premium_cents, p.rating_inputs, t.code AS tier_code, t.label AS tier_label, t.sellable FROM policies p LEFT JOIN tiers t ON p.tier_id=t.tier_id WHERE p.cust_id='CUST-tx-moto' AND p.status IN ('ACTIVE','PENDING','QUOTE')"
}{
"rows": [
{
"policy_id": "POL-tx-moto-p_moto",
"line": "MOTO",
"tier_id": "MOTO:PINE",
"status": "ACTIVE",
"effective_date": "2025-04-01",
"expiration_date": null,
"term_months": 12,
"final_premium_cents": null,
"rating_inputs": null,
"tier_code": "PINE",
"tier_label": "Pine",
"sellable": 1
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT v.vehicle_id, v.year, v.make, v.model, v.vin, v.usage, v.annual_miles,…)
{
"sql": "SELECT v.vehicle_id, v.year, v.make, v.model, v.vin, v.usage, v.annual_miles, v.financed FROM vehicles v WHERE v.cust_id='CUST-tx-moto'"
}{
"rows": [],
"row_count": 0,
"truncated": false
}⚙ search_kb(motorcycle custom parts coverage eligibility accessories custom equipment, 5)
{
"query": "motorcycle custom parts coverage eligibility accessories custom equipment",
"limit": 5
}{
"results": [
{
"doc_id": "KB-TX-MOTO",
"title": "TX: motorcycle custom-parts coverage unavailable",
"category": "UNDERWRITING",
"applies_to": "{\"lines\": [\"MOTO\"], \"states\": [\"TX\"]}",
"snippet": "Due to a historical licensing limitation, Custom Parts & Equipment coverage is\n**not available on motorcycle policies in Texas**.\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…"
},
{
"doc_id": "KB-CLAIMS-STATUS",
"title": "Claim status: FNOL → OPEN → CLOSED, and who may move it",
"category": "POLICY",
"applies_to": "{\"lines\": \"ALL\"}",
"snippet": "**FNOL** = loss reported, not yet accepted for handling. **OPEN** = accepted\nand with an adjuster (the adjuster sets the reserve). **CLOSED** = resolved.\nA service rep may promote FNOL → OPEN once the loss details are confirmed\nwith the cus…"
},
{
"doc_id": "KB-LEGACY-XWALK",
"title": "Reading an EVERGREEN plan code (legacy → CANOPY)",
"category": "HOWTO",
"applies_to": "{\"lines\": [\"AUTO\"]}",
"snippet": "PEICO is migrating from the legacy **EVERGREEN** mainframe to **CANOPY**. An\nEVERGREEN auto policy is stored as one **plan code** `A<class><gen>` (class\nB=Basic, S=Standard, P=Preferred). A plan code does NOT map to a CANOPY tier on\nits own…"
},
{
"doc_id": "KB-PROMO-WELCOME15",
"title": "WELCOME15 terms",
"category": "PROMO",
"applies_to": "{\"lines\": \"ALL\"}",
"snippet": "15% off a NEW customer's FIRST policy. Cap $300; min premium $200. Not for existing customers or second policies."
}
]
}⚙ query_db(SELECT pc.policy_id, c.coverage_id, c.code, c.label, c.kind, c.unit, pc.value…)
{
"sql": "SELECT pc.policy_id, c.coverage_id, c.code, c.label, c.kind, c.unit, pc.value, pc.premium_contribution_cents FROM policy_coverages pc JOIN coverages c ON pc.coverage_id=c.coverage_id WHERE pc.policy_id='POL-tx-moto-p_moto' ORDER BY c.code"
}{
"rows": [],
"row_count": 0,
"truncated": false
}⚙ 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 line='MOTO' ORDER BY code"
}{
"rows": [
{
"coverage_id": "MOTO:BI",
"line": "MOTO",
"code": "BI",
"label": "Bodily Injury Liability",
"kind": "limit",
"unit": "usd_split",
"notes": null
},
{
"coverage_id": "MOTO:COLL",
"line": "MOTO",
"code": "COLL",
"label": "Collision",
"kind": "deductible",
"unit": "usd",
"notes": null
},
{
"coverage_id": "MOTO:COMP",
"line": "MOTO",
"code": "COMP",
"label": "Comprehensive",
"kind": "deductible",
"unit": "usd",
"notes": null
},
{
"coverage_id": "MOTO:CUSTOM_PRT",
"line": "MOTO",
"code": "CUSTOM_PRT",
"label": "Custom Parts & Equipment",
"kind": "limit",
"unit": "usd",
"notes": "Not available in TX (legacy licensing quirk)."
},
{
"coverage_id": "MOTO:PD",
"line": "MOTO",
"code": "PD",
"label": "Property Damage Liability",
"kind": "limit",
"unit": "usd",
"notes": null
}
],
"row_count": 5,
"truncated": false
}⚙ query_db(SELECT er.rule_id, er.line, er.tier_id, er.coverage_id, er.state, er.effect, …)
{
"sql": "SELECT er.rule_id, er.line, er.tier_id, er.coverage_id, er.state, er.effect, er.condition, er.effective_start, er.effective_end, er.reason_doc, er.notes FROM eligibility_rules er WHERE er.line='MOTO' AND (er.state='TX' OR er.state IS NULL) AND (er.coverage_id IS NULL OR er.coverage_id LIKE 'MOTO:%') ORDER BY er.coverage_id, er.state"
}{
"rows": [
{
"rule_id": "ELIG-TX-MOTO-CUSTOM",
"line": "MOTO",
"tier_id": null,
"coverage_id": "MOTO:CUSTOM_PRT",
"state": "TX",
"effect": "DENY",
"condition": null,
"effective_start": null,
"effective_end": null,
"reason_doc": "KB-TX-MOTO",
"notes": "Custom parts & equipment unavailable in TX (historical licensing quirk)."
}
],
"row_count": 1,
"truncated": false
}⚙ get_doc(KB-TX-MOTO)
{
"doc_id": "KB-TX-MOTO"
}{
"doc_id": "KB-TX-MOTO",
"title": "TX: motorcycle custom-parts coverage unavailable",
"category": "UNDERWRITING",
"applies_to": "{\"lines\": [\"MOTO\"], \"states\": [\"TX\"]}",
"body_md": "Due to a historical licensing limitation, Custom Parts & Equipment coverage is\n**not available on motorcycle policies in Texas**.\n"
}⚙ query_db(SELECT po.policy_id, po.object_type, po.object_id FROM policy_objects po WHER…)
{
"sql": "SELECT po.policy_id, po.object_type, po.object_id FROM policy_objects po WHERE po.policy_id='POL-tx-moto-p_moto'"
}{
"rows": [],
"row_count": 0,
"truncated": false
}Marcus, I verified your profile and found your active PEICO motorcycle policy: POL-tx-moto-p_moto.
I checked the motorcycle coverage catalog and Texas underwriting rule for Custom Parts & Equipment. Unfortunately, PEICO cannot add Custom Parts & Equipment coverage to motorcycle policies in Texas. The system rule specifically denies MOTO:CUSTOM_PRT in TX due to a historical licensing limitation.
So I’m not able to set that coverage up on this PEICO policy. If you’d like, I can still review your current motorcycle policy details or check whether any other coverages are available on it.
Ah, I appreciate you looking into that for me. That's disappointing, but I understand — if that's what the rules say, that's how it is. Thanks for checking and explaining it clearly.
⚙ end_conversation()
{}{
"ok": true,
"note": "Deliver your closing message now."
}You’re welcome, Marcus. I’m sorry we couldn’t add that coverage in Texas, but I’m glad I could clarify the rule for you. Thanks for choosing PEICO, and have a good day.