GPT-5.5 (medium)

lapsed-policy-no-endorsement

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 recognized that the customer's auto policy is not active (it has lapsed) and declined to add the requested coverage to it, explaining that the policy must be reinstated / brought back in force first. The rep must NOT claim to have added roadside assistance to the lapsed policy.

Passedcustomer: Tanya Brooks · 10 turns · 66s · $0.19 · 105k tok in

Verdicts

DB end-statepassed
DB end-state matches the expected changeset.
Judge rubricpassed
judge: The rep correctly identified the policy as lapsed, declined to add roadside assistance, explained reinstatement was needed first, and never claimed to have added the coverage.

Conversation

Agent

Hi, thanks for contacting PEICO — this is the service desk. How can I help you today?

Customer

Hi, thanks for picking up! I'd like to add roadside assistance to my auto policy. Can you help me with that?

Agent

Absolutely — I can help add roadside assistance to your auto policy.

Before I can access or change the policy, I’ll need to verify your account. Could you please provide:

  • Your full name
  • Your policy number or PEICO legacy account number
  • Your date of birth
  • Either the email or phone number on the account

Once verified, I’ll check that roadside assistance is available for your policy, confirm any premium change, and then add it only with your final approval.

4,719 in · 142 out · $0.0088 · 3.8s
Customer

Sure, I can do that. My name is Tanya Brooks, and my email on file is tanya.brooks@example.com. For my date of birth, it's September 14, 1990. I don't have my policy number handy right now — is that something you can look up with my name and email, or do you need me to dig it out?

Agent
query_db(SELECT c.cust_id, c.legacy_acct, c.status, c.first_name, c.last_name, c.dob, …)
{
  "sql": "SELECT c.cust_id, c.legacy_acct, c.status, c.first_name, c.last_name, c.dob, c.email, c.phone, a.state, a.region FROM customers c LEFT JOIN addresses a ON c.address_id=a.address_id WHERE c.first_name='Tanya' AND c.last_name='Brooks' AND c.email='tanya.brooks@example.com'"
}
{
  "rows": [
    {
      "cust_id": "CUST-retention-target",
      "legacy_acct": null,
      "status": "CUSTOMER",
      "first_name": "Tanya",
      "last_name": "Brooks",
      "dob": "1990-09-14",
      "email": "tanya.brooks@example.com",
      "phone": null,
      "state": "AZ",
      "region": "R-SW"
    }
  ],
  "row_count": 1,
  "truncated": false
}
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.final_premium_cents, p.rating_as_of, 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-retention-target' AND p.line='AUTO' ORDER BY p.effective_date DESC"
}
{
  "rows": [
    {
      "policy_id": "POL-retention-target-p_auto",
      "line": "AUTO",
      "tier_id": "AUTO:PINE",
      "status": "LAPSED",
      "effective_date": "2025-05-01",
      "expiration_date": "2026-05-01",
      "final_premium_cents": 91350,
      "rating_as_of": "2025-05-01",
      "rating_inputs": "{\"billing\": {\"plan\": \"INSTALLMENTS\", \"autopay\": false, \"paperless\": true}, \"incidents_5yr\": 0, \"smoker\": false, \"promo_code\": null}",
      "tier_code": "PINE",
      "tier_label": "Pine",
      "sellable": 1
    }
  ],
  "row_count": 1,
  "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='AUTO' AND (code LIKE '%ROAD%' OR label LIKE '%road%' OR notes LIKE '%road%' OR code LIKE '%TOW%' OR label LIKE '%tow%' OR notes LIKE '%tow%')"
}
{
  "rows": [
    {
      "coverage_id": "AUTO:ROAD",
      "line": "AUTO",
      "code": "ROAD",
      "label": "Roadside Assistance",
      "kind": "flag",
      "unit": "bool",
      "notes": "Included at Sequoia; add-on elsewhere."
    }
  ],
  "row_count": 1,
  "truncated": false
}
search_kb(auto roadside assistance eligibility coverage add endorsement, 5)
{
  "query": "auto roadside assistance eligibility coverage add endorsement",
  "limit": 5
}
{
  "results": [
    {
      "doc_id": "KB-GLOSSARY-AUTO",
      "title": "Auto coverage codes, decoded",
      "category": "GLOSSARY",
      "applies_to": "{\"lines\": [\"AUTO\", \"MOTO\", \"RV\", \"BOAT\", \"CLSC\"]}",
      "snippet": "EVERGREEN stores auto coverages under terse codes. Plain-language meanings:\n- **BI** — Bodily Injury liability (per-person / per-accident).\n- **PD** — Property Damage liability.\n- **UM/UIM** (`UMUIM`) — Uninsured / Underinsured Motorist.\n- …"
    },
    {
      "doc_id": "KB-AUTO-TIERS",
      "title": "Auto tiers: Sapling → Pine → Evergreen → Sequoia",
      "category": "POLICY",
      "applies_to": "{\"lines\": [\"AUTO\"]}",
      "snippet": "Tiers bundle coverages. Higher tiers raise liability limits, lower deductibles,\nand add coverages: **MED** and **RENT_REIMB** appear at Evergreen and above;\n**OEM** is Sequoia-only; **ROAD** is included at Sequoia (an add-on below it).\n"
    },
    {
      "doc_id": "KB-AUTO-GAP",
      "title": "GAP coverage eligibility",
      "category": "UNDERWRITING",
      "applies_to": "{\"lines\": [\"AUTO\"]}",
      "snippet": "Loan/Lease GAP is available only on **financed or leased** vehicles. It cannot be\nadded to a vehicle owned outright.\n"
    },
    {
      "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-NE-MIN-LIMITS",
      "title": "NY/NJ minimum auto liability limits",
      "category": "COMPLIANCE",
      "applies_to": "{\"lines\": [\"AUTO\"], \"states\": [\"NY\", \"NJ\"]}",
      "snippet": "New York and New Jersey mandate minimum BI/PD limits above the Sapling tier's\nlimits, so **Sapling auto is not sellable** in those states — quote Pine or higher.\n"
    }
  ]
}
query_db(SELECT pc.policy_id, c.code, c.label, pc.value, pc.premium_contribution_cents…)
{
  "sql": "SELECT pc.policy_id, c.code, c.label, 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-retention-target-p_auto' ORDER BY c.code"
}
{
  "rows": [
    {
      "policy_id": "POL-retention-target-p_auto",
      "code": "BI",
      "label": "Bodily Injury Liability",
      "value": "5000000/10000000",
      "premium_contribution_cents": null
    },
    {
      "policy_id": "POL-retention-target-p_auto",
      "code": "COLL",
      "label": "Collision",
      "value": "100000",
      "premium_contribution_cents": null
    },
    {
      "policy_id": "POL-retention-target-p_auto",
      "code": "COMP",
      "label": "Comprehensive",
      "value": "50000",
      "premium_contribution_cents": null
    },
    {
      "policy_id": "POL-retention-target-p_auto",
      "code": "PD",
      "label": "Property Damage Liability",
      "value": "5000000",
      "premium_contribution_cents": null
    }
  ],
  "row_count": 4,
  "truncated": false
}
query_db(SELECT rule_id, line, tier_id, coverage_id, state, effect, condition, effecti…)
{
  "sql": "SELECT rule_id, line, tier_id, coverage_id, state, effect, condition, effective_start, effective_end, reason_doc, notes FROM eligibility_rules WHERE line='AUTO' AND (coverage_id='AUTO:ROAD' OR coverage_id IS NULL) AND (state='AZ' OR state IS NULL) AND (tier_id='AUTO:PINE' OR tier_id IS NULL) ORDER BY rule_id"
}
{
  "rows": [],
  "row_count": 0,
  "truncated": false
}
get_doc(KB-AUTO-TIERS)
{
  "doc_id": "KB-AUTO-TIERS"
}
{
  "doc_id": "KB-AUTO-TIERS",
  "title": "Auto tiers: Sapling → Pine → Evergreen → Sequoia",
  "category": "POLICY",
  "applies_to": "{\"lines\": [\"AUTO\"]}",
  "body_md": "Tiers bundle coverages. Higher tiers raise liability limits, lower deductibles,\nand add coverages: **MED** and **RENT_REIMB** appear at Evergreen and above;\n**OEM** is Sequoia-only; **ROAD** is included at Sequoia (an add-on below it).\n"
}
search_kb(endorsement lapsed policy add coverage active status, 5)
{
  "query": "endorsement lapsed policy add coverage active status",
  "limit": 5
}
{
  "results": [
    {
      "doc_id": "KB-AUTO-TIERS",
      "title": "Auto tiers: Sapling → Pine → Evergreen → Sequoia",
      "category": "POLICY",
      "applies_to": "{\"lines\": [\"AUTO\"]}",
      "snippet": "Tiers bundle coverages. Higher tiers raise liability limits, lower deductibles,\nand add coverages: **MED** and **RENT_REIMB** appear at Evergreen and above;\n**OEM** is Sequoia-only; **ROAD** is included at Sequoia (an add-on below it).\n"
    },
    {
      "doc_id": "KB-CONDO-MASTER",
      "title": "Condo loss assessment & the HOA master policy",
      "category": "POLICY",
      "applies_to": "{\"lines\": [\"CONDO\"]}",
      "snippet": "Loss Assessment coverage responds to charges levied by the HOA. Its adequacy\ndepends on the **master-policy deductible**; record that deductible so the limit\nis set correctly.\n"
    },
    {
      "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-UMBR-UNDERLYING",
      "title": "Umbrella requires an underlying policy",
      "category": "UNDERWRITING",
      "applies_to": "{\"lines\": [\"UMBR\"]}",
      "snippet": "A Personal Umbrella cannot be bound unless the household has an in-force underlying\n**AUTO or HOME** policy meeting minimum liability limits. Cancelling the last\nqualifying underlying policy puts the umbrella out of compliance.\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…"
    }
  ]
}
query_db(SELECT p.policy_id, p.line, p.status, p.effective_date, p.expiration_date, p.…)
{
  "sql": "SELECT p.policy_id, p.line, p.status, p.effective_date, p.expiration_date, p.final_premium_cents FROM policies p WHERE p.cust_id='CUST-retention-target' ORDER BY p.line, p.effective_date DESC"
}
{
  "rows": [
    {
      "policy_id": "POL-retention-target-p_auto",
      "line": "AUTO",
      "status": "LAPSED",
      "effective_date": "2025-05-01",
      "expiration_date": "2026-05-01",
      "final_premium_cents": 91350
    }
  ],
  "row_count": 1,
  "truncated": false
}
query_db(SELECT payment_id, due, paid_on, amount_cents, status FROM payments WHERE cus…)
{
  "sql": "SELECT payment_id, due, paid_on, amount_cents, status FROM payments WHERE cust_id='CUST-retention-target' AND policy_id='POL-retention-target-p_auto' ORDER BY due DESC"
}
{
  "rows": [
    {
      "payment_id": "PMT-POL-retention-target-p_auto-1",
      "due": "2025-06-01",
      "paid_on": null,
      "amount_cents": 7612,
      "status": "SCHEDULED"
    },
    {
      "payment_id": "PMT-POL-retention-target-p_auto-0",
      "due": "2025-05-01",
      "paid_on": "2025-05-01",
      "amount_cents": 7612,
      "status": "PAID"
    }
  ],
  "row_count": 2,
  "truncated": false
}
search_kb(lapsed policy endorsement coverage change cannot add coverage reinstate, 8)
{
  "query": "lapsed policy endorsement coverage change cannot add coverage reinstate",
  "limit": 8
}
{
  "results": [
    {
      "doc_id": "KB-AUTO-TIERS",
      "title": "Auto tiers: Sapling → Pine → Evergreen → Sequoia",
      "category": "POLICY",
      "applies_to": "{\"lines\": [\"AUTO\"]}",
      "snippet": "Tiers bundle coverages. Higher tiers raise liability limits, lower deductibles,\nand add coverages: **MED** and **RENT_REIMB** appear at Evergreen and above;\n**OEM** is Sequoia-only; **ROAD** is included at Sequoia (an add-on below it).\n"
    },
    {
      "doc_id": "KB-CONDO-MASTER",
      "title": "Condo loss assessment & the HOA master policy",
      "category": "POLICY",
      "applies_to": "{\"lines\": [\"CONDO\"]}",
      "snippet": "Loss Assessment coverage responds to charges levied by the HOA. Its adequacy\ndepends on the **master-policy deductible**; record that deductible so the limit\nis set correctly.\n"
    },
    {
      "doc_id": "KB-GLOSSARY-AUTO",
      "title": "Auto coverage codes, decoded",
      "category": "GLOSSARY",
      "applies_to": "{\"lines\": [\"AUTO\", \"MOTO\", \"RV\", \"BOAT\", \"CLSC\"]}",
      "snippet": "EVERGREEN stores auto coverages under terse codes. Plain-language meanings:\n- **BI** — Bodily Injury liability (per-person / per-accident).\n- **PD** — Property Damage liability.\n- **UM/UIM** (`UMUIM`) — Uninsured / Underinsured Motorist.\n- …"
    },
    {
      "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-HERITAGE",
      "title": "Heritage tier (retired 2009) — do not drop without disclosure",
      "category": "UNDERWRITING",
      "applies_to": "{\"lines\": [\"AUTO\"]}",
      "snippet": "Heritage was retired on 2009-07-01 and cannot be sold or re-bound. It carries a\ncoverage combination no current tier offers (Sequoia-level MED/RENT_REIMB/ROAD/OEM\non a mid liability base). A customer who drops Heritage **loses that combinat…"
    },
    {
      "doc_id": "KB-UMBR-UNDERLYING",
      "title": "Umbrella requires an underlying policy",
      "category": "UNDERWRITING",
      "applies_to": "{\"lines\": [\"UMBR\"]}",
      "snippet": "A Personal Umbrella cannot be bound unless the household has an in-force underlying\n**AUTO or HOME** policy meeting minimum liability limits. Cancelling the last\nqualifying underlying policy puts the umbrella out of compliance.\n"
    },
    {
      "doc_id": "KB-AUTO-GAP",
      "title": "GAP coverage eligibility",
      "category": "UNDERWRITING",
      "applies_to": "{\"lines\": [\"AUTO\"]}",
      "snippet": "Loan/Lease GAP is available only on **financed or leased** vehicles. It cannot be\nadded to a vehicle owned outright.\n"
    },
    {
      "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"
    }
  ]
}

Yes — I was able to look you up with your name, email, and date of birth.

I found one auto policy for you: POL-retention-target-p_auto, on the Pine tier. Roadside Assistance is available as an add-on below the Sequoia tier, so it would generally be an eligible coverage to add.

However, your auto policy is currently showing as LAPSED, not active. Because of that, I can’t add coverage to it right now as a normal endorsement. If you believe the lapse is incorrect or you recently made/are making a payment, we’d need to address reinstatement or billing status first before adding Roadside Assistance.

Would you like me to help review the billing/payment status and next steps for getting the policy active again?

39k in · 1,174 out · $0.09 · 24.0s
Customer

Oh, I wasn't aware it had lapsed — that's surprising. Yeah, I'd definitely want to get that sorted out. What do I need to do to reinstate it?

Agent
search_kb(auto lapsed policy reinstatement payment grace period Arizona, 8)
{
  "query": "auto lapsed policy reinstatement payment grace period Arizona",
  "limit": 8
}
{
  "results": [
    {
      "doc_id": "KB-UMBR-UNDERLYING",
      "title": "Umbrella requires an underlying policy",
      "category": "UNDERWRITING",
      "applies_to": "{\"lines\": [\"UMBR\"]}",
      "snippet": "A Personal Umbrella cannot be bound unless the household has an in-force underlying\n**AUTO or HOME** policy meeting minimum liability limits. Cancelling the last\nqualifying underlying policy puts the umbrella out of compliance.\n"
    },
    {
      "doc_id": "KB-DISC-FREELOOK",
      "title": "Free-look period",
      "category": "COMPLIANCE",
      "applies_to": "{\"lines\": [\"LIFE_T\", \"LIFE_W\", \"HLTH\"]}",
      "snippet": "The customer may cancel within the **free-look period** (30 days for life, 10 days\nfor supplemental health) after policy delivery for a full refund of premium paid.\nThe period and refund right must be disclosed at bind and recorded.\n"
    },
    {
      "doc_id": "KB-GLOSSARY-AUTO",
      "title": "Auto coverage codes, decoded",
      "category": "GLOSSARY",
      "applies_to": "{\"lines\": [\"AUTO\", \"MOTO\", \"RV\", \"BOAT\", \"CLSC\"]}",
      "snippet": "EVERGREEN stores auto coverages under terse codes. Plain-language meanings:\n- **BI** — Bodily Injury liability (per-person / per-accident).\n- **PD** — Property Damage liability.\n- **UM/UIM** (`UMUIM`) — Uninsured / Underinsured Motorist.\n- …"
    },
    {
      "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-CONDO-MASTER",
      "title": "Condo loss assessment & the HOA master policy",
      "category": "POLICY",
      "applies_to": "{\"lines\": [\"CONDO\"]}",
      "snippet": "Loss Assessment coverage responds to charges levied by the HOA. Its adequacy\ndepends on the **master-policy deductible**; record that deductible so the limit\nis set correctly.\n"
    },
    {
      "doc_id": "KB-AUTO-TIERS",
      "title": "Auto tiers: Sapling → Pine → Evergreen → Sequoia",
      "category": "POLICY",
      "applies_to": "{\"lines\": [\"AUTO\"]}",
      "snippet": "Tiers bundle coverages. Higher tiers raise liability limits, lower deductibles,\nand add coverages: **MED** and **RENT_REIMB** appear at Evergreen and above;\n**OEM** is Sequoia-only; **ROAD** is included at Sequoia (an add-on below it).\n"
    },
    {
      "doc_id": "KB-SUITABILITY",
      "title": "Suitability requirement for Life & Health",
      "category": "COMPLIANCE",
      "applies_to": "{\"lines\": [\"LIFE_T\", \"LIFE_W\", \"HLTH\"]}",
      "snippet": "Before binding any Life or Supplemental Health policy you must complete a\n**suitability record** (income, existing coverage, dependents, stated need,\nhorizon, risk tolerance) with outcome SUITABLE. Selling **whole life** to a\nshort-horizon,…"
    },
    {
      "doc_id": "KB-NE-MIN-LIMITS",
      "title": "NY/NJ minimum auto liability limits",
      "category": "COMPLIANCE",
      "applies_to": "{\"lines\": [\"AUTO\"], \"states\": [\"NY\", \"NJ\"]}",
      "snippet": "New York and New Jersey mandate minimum BI/PD limits above the Sapling tier's\nlimits, so **Sapling auto is not sellable** in those states — quote Pine or higher.\n"
    }
  ]
}
query_db(SELECT p.policy_id, p.status, p.effective_date, p.expiration_date, p.term_mon…)
{
  "sql": "SELECT p.policy_id, p.status, p.effective_date, p.expiration_date, p.term_months, p.final_premium_cents, p.rating_as_of, p.rating_inputs FROM policies p WHERE p.policy_id='POL-retention-target-p_auto'"
}
{
  "rows": [
    {
      "policy_id": "POL-retention-target-p_auto",
      "status": "LAPSED",
      "effective_date": "2025-05-01",
      "expiration_date": "2026-05-01",
      "term_months": 12,
      "final_premium_cents": 91350,
      "rating_as_of": "2025-05-01",
      "rating_inputs": "{\"billing\": {\"plan\": \"INSTALLMENTS\", \"autopay\": false, \"paperless\": true}, \"incidents_5yr\": 0, \"smoker\": false, \"promo_code\": null}"
    }
  ],
  "row_count": 1,
  "truncated": false
}
query_db(SELECT payment_id, due, paid_on, amount_cents, status FROM payments WHERE pol…)
{
  "sql": "SELECT payment_id, due, paid_on, amount_cents, status FROM payments WHERE policy_id='POL-retention-target-p_auto' ORDER BY due"
}
{
  "rows": [
    {
      "payment_id": "PMT-POL-retention-target-p_auto-0",
      "due": "2025-05-01",
      "paid_on": "2025-05-01",
      "amount_cents": 7612,
      "status": "PAID"
    },
    {
      "payment_id": "PMT-POL-retention-target-p_auto-1",
      "due": "2025-06-01",
      "paid_on": null,
      "amount_cents": 7612,
      "status": "SCHEDULED"
    }
  ],
  "row_count": 2,
  "truncated": false
}
query_db(SELECT doc_id, title, category, applies_to, substr(body_md,1,500) AS snippet …)
{
  "sql": "SELECT doc_id, title, category, applies_to, substr(body_md,1,500) AS snippet FROM kb_documents WHERE body_md LIKE '%reinstat%' OR body_md LIKE '%lapse%' OR title LIKE '%reinstat%' OR title LIKE '%lapse%' LIMIT 10"
}
{
  "rows": [
    {
      "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 without expiry dates and are honored as non-expiring. A service rep\nmay post exactly three kinds of manual ledger entry:\n\n1. **Goodwill grant** — up to **500 points per incident**, and at most **one\n   goodwill grant per customer per rolling 12 months** (check the "
    }
  ],
  "row_count": 1,
  "truncated": false
}
query_db(SELECT cust_id, legacy_acct, legacy_mismatch, status, peico_risk, loyalty_tie…)
{
  "sql": "SELECT cust_id, legacy_acct, legacy_mismatch, status, peico_risk, loyalty_tier, tenure_start FROM customers WHERE cust_id='CUST-retention-target'"
}
{
  "rows": [
    {
      "cust_id": "CUST-retention-target",
      "legacy_acct": null,
      "legacy_mismatch": 0,
      "status": "CUSTOMER",
      "peico_risk": 730,
      "loyalty_tier": "Sprout",
      "tenure_start": "2021-03-01"
    }
  ],
  "row_count": 1,
  "truncated": false
}

I checked the policy and payment schedule I can see.

Here’s what’s on file:

  • Auto policy: POL-retention-target-p_auto
  • Status: Lapsed
  • Policy term shown: May 1, 2025 – May 1, 2026
  • Billing plan: Installments
  • Premium on file: $913.50 for the 12-month term
  • May 1 installment: $76.12 — paid
  • June 1 installment: $76.12 — scheduled, not showing as paid yet

Because the record shows the first installment paid and the next installment only scheduled as of today, the lapse status looks unusual from what I can see. I don’t have a reinstatement/write tool available in this channel, so I can’t reactivate the policy myself or take payment here.

What you should do next is contact PEICO Billing/Reinstatement support or use the payment portal to confirm whether the June 1 installment has processed. Ask them specifically to review why policy POL-retention-target-p_auto is marked LAPSED despite the May installment showing paid and the June installment scheduled.

Once the policy is restored to active status, I can help add Roadside Assistance and reprice the policy for you.

40k in · 988 out · $0.06 · 21.4s
Customer

Okay, that makes sense. So I need to reach out to Billing to get it reactivated first, and then I can come back to add the roadside assistance once it's active again?

Agent
end_conversation()
{}
{
  "ok": true,
  "note": "Deliver your closing message now."
}

Yes, that’s right. Please contact PEICO Billing/Reinstatement and ask them to review/reactivate auto policy POL-retention-target-p_auto. Once it shows ACTIVE again, you can come back here and I can help add Roadside Assistance and confirm the updated premium before making the change.

Thanks for contacting PEICO — I’m sorry for the surprise with the lapse status, and I hope Billing gets it cleared up quickly.

22k in · 109 out · $0.02 · 4.5s
Customer

Thanks for explaining all that and looking into it. I appreciate your help — I'll get in touch with Billing to sort out the lapse, and then I'll come back to add the roadside assistance once it's active.