update-contact-both-fields
Grading criteriawhat this conversation was scored against
DB end-state
{
"customers": {
"changed": [
{
"pk": {
"cust_id": "CUST-retention-target"
},
"fields": {
"phone": [
null,
"602-555-0117"
],
"email": [
"tanya.brooks@example.com",
"tbrooks.az@example.com"
]
}
}
]
}
}Judge rubric
The rep applied BOTH contact updates the customer requested — new phone 602-555-0117 and new email tbrooks.az@example.com — and confirmed both values back to her before ending the call. Updating only one of the two (e.g., saving the phone and wrapping up without the email she said she'd provide) is a fail.(advisory)
Verdicts
DB end-statepassed
DB end-state matches the expected changeset.
Judge rubricpassed
judge: The rep confirmed both the new phone number (602-555-0117) and new email (tbrooks.az@example.com) back to the customer before ending the call, satisfying the rubric's requirement.
Conversation
Hi, thanks for contacting PEICO — this is the service desk. How can I help you today?
Hi! Thanks for picking up. So I switched phone carriers last week and I'm also changing my email, and I need to get both of those updated on my account before my old stuff shuts down. My new number is 602-555-0117, and I've also got a new email I'll give you in a second.
Of course! I can certainly help you update your phone number and email address.
To get started, could you please provide your full name and either your current phone number or email address on file (or your account number) so I can locate and verify your account?
Yeah, I'm Tanya Brooks. And my current email on file is tanya.brooks@example.com — that's the one I'm trying to get rid of.
⚙ query_db(SELECT * FROM customers WHERE first_name = 'Tanya' AND last_name = 'Brooks' A…)
{
"sql": "SELECT * FROM customers WHERE first_name = 'Tanya' AND last_name = 'Brooks' AND email = 'tanya.brooks@example.com'"
}{
"rows": [
{
"cust_id": "CUST-retention-target",
"legacy_acct": null,
"legacy_mismatch": 0,
"status": "CUSTOMER",
"first_name": "Tanya",
"last_name": "Brooks",
"dob": "1990-09-14",
"email": "tanya.brooks@example.com",
"phone": null,
"address_id": "ADDR-retention-target",
"peico_risk": 730,
"risk_components": "{\"prior_claims\": {\"value\": 0, \"points\": 0}, \"late_payments\": {\"value\": 0, \"points\": 0}, \"tenure\": {\"value\": 4, \"points\": 16}, \"credit\": {\"value\": 735, \"points\": 14, \"weight\": 1, \"masked\": false, \"note\": null}}",
"tenure_start": "2021-03-01",
"loyalty_tier": "Sprout",
"loyalty_points": 800,
"created_at": "2025-06-01"
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT * FROM policies WHERE cust_id = 'CUST-retention-target')
{
"sql": "SELECT * FROM policies WHERE cust_id = 'CUST-retention-target'"
}{
"rows": [
{
"policy_id": "POL-retention-target-p_auto",
"cust_id": "CUST-retention-target",
"line": "AUTO",
"tier_id": "AUTO:PINE",
"status": "ACTIVE",
"effective_date": "2025-05-01",
"expiration_date": "2026-05-01",
"term_months": 12,
"rating_as_of": "2025-05-01",
"base_premium_cents": 106648,
"final_premium_cents": 91350,
"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-SW\", \"detail\": \"region factor \\u00d71.12\", \"factor\": 1.12, \"amount_cents\": null, \"running_cents\": 100800}, {\"step\": \"RISK\", \"code\": \"factor:driver_age\", \"detail\": \"driver_age=34 \\u00d71.05\", \"factor\": 1.05, \"amount_cents\": null, \"running_cents\": 105840}, {\"step\": \"RISK\", \"code\": \"factor:risk_score\", \"detail\": \"risk_score=730 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 105840}, {\"step\": \"RISK\", \"code\": \"factor:annual_miles\", \"detail\": \"annual_miles=11000 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 105840}, {\"step\": \"RISK\", \"code\": \"factor:vehicle_age\", \"detail\": \"vehicle_age=5 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 105840}, {\"step\": \"RISK\", \"code\": \"factor:incidents_5yr\", \"detail\": \"incidents_5yr=0 \\u00d70.95\", \"factor\": 0.95, \"amount_cents\": null, \"running_cents\": 100548}, {\"step\": \"FEES\", \"code\": \"policy_fee\", \"detail\": \"+ policy fee\", \"factor\": null, \"amount_cents\": 2500, \"running_cents\": 103048}, {\"step\": \"FEES\", \"code\": \"installment\", \"detail\": \"+ fractional-pay surcharge\", \"factor\": null, \"amount_cents\": 3600, \"running_cents\": 106648}, {\"step\": \"DISCOUNT\", \"code\": \"SAFE_DRIVER\", \"detail\": \"\\u221212%\", \"factor\": 0.88, \"amount_cents\": null, \"running_cents\": 93850}, {\"step\": \"DISCOUNT\", \"code\": \"PAPERLESS\", \"detail\": \"\\u2212$25\", \"factor\": null, \"amount_cents\": -2500, \"running_cents\": 91350}]",
"rating_inputs": "{\"billing\": {\"plan\": \"INSTALLMENTS\", \"autopay\": false, \"paperless\": true}, \"incidents_5yr\": 0, \"smoker\": false, \"promo_code\": null}",
"underlying_policy_id": null,
"bundle_id": null,
"rep_id": "REP-1008",
"created_at": "2025-06-01"
}
],
"row_count": 1,
"truncated": false
}Thank you, Tanya! I have successfully located your account under Tanya Brooks with the email tanya.brooks@example.com.
I'm ready to update your phone number to your new one, 602-555-0117. What is the new email address you would like me to set up for you?
Oh wait, before you finalize that — quick question. Is my autopay turned on or off right now?
⚙ query_db(SELECT * FROM payments WHERE cust_id = 'CUST-retention-target')
{
"sql": "SELECT * FROM payments WHERE cust_id = 'CUST-retention-target'"
}{
"rows": [
{
"payment_id": "PMT-POL-retention-target-p_auto-0",
"cust_id": "CUST-retention-target",
"policy_id": "POL-retention-target-p_auto",
"due": "2025-05-01",
"paid_on": "2025-05-01",
"amount_cents": 7612,
"status": "PAID"
},
{
"payment_id": "PMT-POL-retention-target-p_auto-1",
"cust_id": "CUST-retention-target",
"policy_id": "POL-retention-target-p_auto",
"due": "2025-06-01",
"paid_on": null,
"amount_cents": 7612,
"status": "SCHEDULED"
}
],
"row_count": 2,
"truncated": false
}⚙ search_kb(autopay)
{
"query": "autopay"
}{
"results": []
}⚙ search_kb(billing)
{
"query": "billing"
}{
"results": []
}Your autopay is currently turned off (or disabled) on your Auto policy.
Your policy is set up on an installment plan, and your next installment of $76.12 is scheduled for today, June 1, 2025. Since autopay is off, you will need to pay this manually.
Would you like help with turning autopay on, or should we go ahead and update your email and phone first?
Okay, got it — thanks for letting me know. No, I don't need to change the autopay, just curious. So yeah, let's go ahead and get that email updated. My new email is tbrooks.az@example.com — that's t, brooks, dot, a, z, at example dot com.
⚙ update_contact(tbrooks.az@example.com, 602-555-0117, CUST-retention-target)
{
"email": "tbrooks.az@example.com",
"phone": "602-555-0117",
"cust_id": "CUST-retention-target"
}{
"ok": true,
"rows_affected": 1,
"changeset": {
"customers": {
"changed": [
{
"pk": {
"cust_id": "CUST-retention-target"
},
"fields": {
"email": [
"tanya.brooks@example.com",
"tbrooks.az@example.com"
],
"phone": [
null,
"602-555-0117"
]
}
}
]
}
}
}⚙ query_db(SELECT * FROM dwellings WHERE cust_id = 'CUST-retention-target' UNION ALL SEL…)
{
"sql": "SELECT * FROM dwellings WHERE cust_id = 'CUST-retention-target' UNION ALL SELECT * FROM vehicles WHERE cust_id = 'CUST-retention-target' UNION ALL SELECT * FROM pets WHERE cust_id = 'CUST-retention-target'"
}{
"error": "sql_error",
"detail": "SELECTs to the left and right of UNION ALL do not have the same number of result columns"
}⚙ query_db(SELECT * FROM vehicles WHERE cust_id = 'CUST-retention-target')
{
"sql": "SELECT * FROM vehicles WHERE cust_id = 'CUST-retention-target'"
}{
"rows": [
{
"vehicle_id": "VEH-retention-target-v1",
"cust_id": "CUST-retention-target",
"year": 2020,
"make": "Mazda",
"model": "CX-5",
"vin": "VINFAKERETv1",
"usage": "COMMUTE",
"annual_miles": 11000,
"financed": 0,
"garaging_address_id": "ADDR-retention-target"
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT * FROM dwellings WHERE cust_id = 'CUST-retention-target')
{
"sql": "SELECT * FROM dwellings WHERE cust_id = 'CUST-retention-target'"
}{
"rows": [],
"row_count": 0,
"truncated": false
}⚙ query_db(SELECT * FROM pets WHERE cust_id = 'CUST-retention-target')
{
"sql": "SELECT * FROM pets WHERE cust_id = 'CUST-retention-target'"
}{
"rows": [],
"row_count": 0,
"truncated": false
}⚙ query_db(SELECT * FROM claims WHERE policy_id = 'POL-retention-target-p_auto')
{
"sql": "SELECT * FROM claims WHERE policy_id = 'POL-retention-target-p_auto'"
}{
"rows": [],
"row_count": 0,
"truncated": false
}I have successfully updated your contact information on your account!
Here are the details I've saved for you:
- Phone Number: 602-555-0117
- Email Address: tbrooks.az@example.com
Is there anything else I can help you with today?
Perfect! Thanks so much for getting both of those updated. That's all I needed. Thanks again!
⚙ end_conversation()
{}{
"ok": true,
"note": "Deliver your closing message now."
}You're very welcome, Tanya! I'm glad I could get that taken care of for you quickly.
Thank you for choosing PEICO, and I hope you have a wonderful rest of your day! If you ever need anything else, we're always here to help. Goodbye!