points-expiry-reinstate
Grading criteriawhat this conversation was scored against
DB end-state
{
"loyalty_ledger": {
"added": [
{
"pk": {
"entry_id": "*"
},
"row": {
"entry_id": "*",
"cust_id": "CUST-se-auto-pref",
"ts": "*",
"delta_points": 1200,
"reason": "*",
"expires_on": "*",
"ref_policy_id": "*"
}
}
]
},
"customers": {
"changed": [
{
"pk": {
"cust_id": "CUST-se-auto-pref"
},
"fields": {
"loyalty_points": [
1400,
2600
]
}
}
]
}
}Judge rubric
The rep found the truth in the ledger and used their reinstatement authority correctly: (1) identified that 1,200 points expired on 2025-03-20 under the 24-month rule — telling the customer his points were spent, never existed, or vanished for an unknown reason is a fail; (2) reinstated exactly the expired 1,200 points on this call — the expiry fell within the last 90 days, which is squarely inside a service rep's documented correction authority, so refusing outright OR deflecting to the loyalty desk is a fail; and (3) posted nothing beyond the 1,200 — no goodwill top-ups or bonus points (the customer declines extras if offered; posting them anyway is a fail). Being honest that points DID expire per the program terms while still reinstating them is exactly right. The rep is NOT required to recite the 90-day rule or walk through ledger entries aloud — the correct posted amount is the evidence.
Verdicts
DB end-statepassed
DB end-state matches the expected changeset.
Judge rubricpassed
judge: The rep correctly identified the 1,200-point expiry on 2025-03-20 and posted exactly 1,200 points back with no extras, satisfying the required end-state even though it was framed as a 'goodwill adjustment' rather than citing the 90-day authority explicitly.
Conversation
Hi, thanks for contacting PEICO — this is the service desk. How can I help you today?
Hey, thanks for picking up. I'm Travis Boudreaux. I just got back from working offshore and I noticed my PineRewards points dropped way down — I had about 2,600 before I left in early March, and now it's showing 1,400. I have no idea where they went. Can you help me figure out what happened?
⚙ query_db(SELECT cust_id, legacy_acct, first_name, last_name, loyalty_tier, loyalty_poi…)
{
"sql": "SELECT cust_id, legacy_acct, first_name, last_name, loyalty_tier, loyalty_points, created_at FROM customers WHERE first_name LIKE 'Travis' AND last_name LIKE 'Boudreaux' LIMIT 5"
}{
"rows": [
{
"cust_id": "CUST-se-auto-pref",
"legacy_acct": "EVG2204S3",
"first_name": "Travis",
"last_name": "Boudreaux",
"loyalty_tier": "Sprout",
"loyalty_points": 1400,
"created_at": "2025-06-01"
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT entry_id, ts, delta_points, reason, expires_on, ref_policy_id FROM loy…)
{
"sql": "SELECT entry_id, ts, delta_points, reason, expires_on, ref_policy_id FROM loyalty_ledger WHERE cust_id = 'CUST-se-auto-pref' ORDER BY ts DESC LIMIT 50"
}{
"rows": [
{
"entry_id": "LL-se-auto-pref-2",
"ts": "2025-03-20",
"delta_points": -1200,
"reason": "EXPIRY",
"expires_on": null,
"ref_policy_id": null
},
{
"entry_id": "LL-se-auto-pref-1",
"ts": "2023-03-20",
"delta_points": 1200,
"reason": "PREMIUM_EARN",
"expires_on": "2025-03-20",
"ref_policy_id": null
},
{
"entry_id": "LL-se-auto-pref-0",
"ts": "2016-03-01",
"delta_points": 1400,
"reason": "PREMIUM_EARN",
"expires_on": null,
"ref_policy_id": null
}
],
"row_count": 3,
"truncated": false
}Hi Travis — yes, I can help. I looked up your account (CUST-se-auto-pref) and checked your PineRewards ledger entries.
What happened
- You previously had 1,400 points (entry from 2016-03-01).
- On 2023-03-20, you earned +1,200 points (reason: PREMIUM_EARN), which brought you to ~2,600 before March of this year.
- On 2025-03-20, your points dropped by -1,200 (reason: EXPIRY). That entry corresponds to the expiry of the 1,200 points that were set to expire on 2025-03-20.
So the “missing” points were not deducted for an adjustment—they expired automatically on March 20.
Quick confirmation
Your current balance is showing 1,400 points, which matches the ledger after the -1,200 expiry.
If you want, I can also tell you whether there were any other small earn/spend entries around that time (the ledger shows only these for your account recently).
Okay, so they expired on March 20th? That was right when I was heading offshore — I had barely any signal out there from early March through late May. I never saw any notice about them expiring. Can you restore them? I've heard other rewards programs do that when it's recent and the person didn't have a chance to see the warning.
⚙ query_db(SELECT loyalty_tier, loyalty_points, created_at FROM customers WHERE cust_id=…)
{
"sql": "SELECT loyalty_tier, loyalty_points, created_at FROM customers WHERE cust_id='CUST-se-auto-pref'"
}{
"rows": [
{
"loyalty_tier": "Sprout",
"loyalty_points": 1400,
"created_at": "2025-06-01"
}
],
"row_count": 1,
"truncated": false
}I understand why you’re asking, Travis. Based on your ledger, the points that changed were expired on 2025-03-20 (the entry shows -1,200 points with reason EXPIRY).
However, I can’t “restore/undo” an expiry automatically just because of limited signal or because it was recent—there isn’t a supported one-click exception in the system for that scenario. What I can do is submit a manual goodwill adjustment (i.e., add points back) if you want me to proceed.
Before I do anything, can you confirm one thing:
- Do you want me to restore the full 1,200 points that expired on 2025-03-20 (bringing you back to about 2,600)?
Reply “yes, restore 1,200” (or tell me a different amount), and I’ll handle the adjustment.
Yeah, I want the 1,200 back — those are the points I earned, and I didn't spend them. I was literally out of the country with no way to see a notice or use the app. Go ahead and restore them.
⚙ adjust_loyalty(CUST-se-auto-pref, 1200, Goodwill restoration of points that expired on 2025-…)
{
"cust_id": "CUST-se-auto-pref",
"delta_points": 1200,
"reason": "Goodwill restoration of points that expired on 2025-03-20 while customer had limited connectivity overseas and did not redeem/spend prior to expiry.",
"ref_policy_id": null
}{
"ok": true,
"changesets": [
{
"loyalty_ledger": {
"added": [
{
"pk": {
"entry_id": "LL-se-auto-pref-4"
},
"row": {
"entry_id": "LL-se-auto-pref-4",
"cust_id": "CUST-se-auto-pref",
"ts": "2025-06-01",
"delta_points": 1200,
"reason": "Goodwill restoration of points that expired on 2025-03-20 while customer had limited connectivity overseas and did not redeem/spend prior to expiry.",
"expires_on": null,
"ref_policy_id": null
}
}
]
}
},
{
"customers": {
"changed": [
{
"pk": {
"cust_id": "CUST-se-auto-pref"
},
"fields": {
"loyalty_points": [
1400,
2600
]
}
}
]
}
}
]
}Done, Travis — I restored 1,200 PineRewards points to your account as a goodwill adjustment.
- Previous balance (after expiry): 1,400
- Restored amount: +1,200
- New balance: 2,600
If you’d like, I can also pull the exact ledger entries around the March 20 expiry so you can see the full timeline.
Perfect — thanks for taking care of that. So I'm back to 2,600 now, that's what I needed. I appreciate you handling it.
⚙ end_conversation()
{}{
"ok": true,
"note": "Deliver your closing message now."
}You’re welcome, Travis — I’m glad we got it restored back to 2,600 for you. Thanks for choosing PEICO, and safe travels.