{"case":{"case_id":"demo-001","customer_ref":"synthetic-customer-01","contacts":[{"seq":1,"occurred_at":"2026-09-03T10:12:00","channel":"call","summary":"Customer asks to cancel an add-on they did not authorise, and to be refunded two months of charges.","transcript":{"contact_seq":1,"language":"en","utterances":[{"start_s":2.0,"end_s":9.5,"speaker":"customer","text":"There's a data add-on on my bill I never signed up for. I want it cancelled and I want the last two months refunded."},{"start_s":10.0,"end_s":16.0,"speaker":"agent","text":"I can see the add-on. I've removed it from your plan just now, so you won't be charged again."},{"start_s":16.5,"end_s":20.0,"speaker":"customer","text":"And the two months I've already paid?"},{"start_s":20.5,"end_s":29.0,"speaker":"agent","text":"That needs a billing review. I'll have someone call you back within 24 hours to confirm the refund."},{"start_s":29.5,"end_s":32.0,"speaker":"customer","text":"Alright. Within 24 hours then."}]},"extraction":{"contact_seq":1,"needs":[{"id":"n1","utterance_index":0,"summary":"Cancel the unauthorised data add-on","raised_at":"2026-09-03T10:12:00","status":"resolved","evidence":[{"contact_seq":1,"utterance_index":0,"start_s":2.0,"speaker":"customer","quote":"I want it cancelled","citation_verified":true}],"confidence":"confirmed","service_affected":null,"resolution_note":"Agent removed the add-on during the call.","resolution_evidence":[{"contact_seq":1,"utterance_index":1,"start_s":10.0,"speaker":"agent","quote":"I've removed it from your plan just now","citation_verified":true}]},{"id":"n2","utterance_index":2,"summary":"Refund two months of charges","raised_at":"2026-09-03T10:12:00","status":"unresolved","evidence":[{"contact_seq":1,"utterance_index":2,"start_s":16.5,"speaker":"customer","quote":"And the two months I've already paid?","citation_verified":true}],"confidence":"confirmed","service_affected":null,"resolution_note":null,"resolution_evidence":[]}],"promises":[{"id":"p1","utterance_index":3,"summary":"Call back within 24 hours to confirm the refund","made_at":"2026-09-03T10:12:00","due_at":"2026-09-04T10:12:00","fulfilled":false,"evidence":[{"contact_seq":1,"utterance_index":3,"start_s":20.5,"speaker":"agent","quote":"I'll have someone call you back within 24 hours to confirm the refund.","citation_verified":true}],"confidence":"confirmed","overdue_by_hours":145.8}],"actions":[{"id":"a1","utterance_index":1,"summary":"Removed the add-on from the plan","taken_at":"2026-09-03T10:14:00","evidence":[{"contact_seq":1,"utterance_index":1,"start_s":10.0,"speaker":"agent","quote":"I've removed it from your plan just now","citation_verified":true}],"assigns_owner":true,"contradicts":null}]}},{"seq":2,"occurred_at":"2026-09-05T09:40:00","channel":"call","summary":"Customer chases the refund. No callback was ever made.","transcript":{"contact_seq":2,"language":"en","utterances":[{"start_s":1.0,"end_s":8.0,"speaker":"customer","text":"Nobody called me back. I was told twenty-four hours and it's been two days."},{"start_s":8.5,"end_s":15.0,"speaker":"agent","text":"I'm sorry about that. I can see the note. I'll chase billing and get back to you."},{"start_s":15.5,"end_s":19.0,"speaker":"customer","text":"That's what the last person said."}]},"extraction":{"contact_seq":2,"needs":[],"promises":[{"id":"p2","utterance_index":1,"summary":"Chase billing and get back to the customer","made_at":"2026-09-05T09:40:00","due_at":null,"fulfilled":false,"evidence":[{"contact_seq":2,"utterance_index":1,"start_s":8.5,"speaker":"agent","quote":"I'll chase billing and get back to you.","citation_verified":true}],"confidence":"confirmed","overdue_by_hours":null}],"actions":[]}},{"seq":3,"occurred_at":"2026-09-07T14:05:00","channel":"call","summary":"Third contact. Customer is calm but mentions the ombudsman and switching providers.","transcript":{"contact_seq":3,"language":"en","utterances":[{"start_s":1.0,"end_s":11.0,"speaker":"customer","text":"I'm not going to argue about it. I'll take it to the Telecommunications Industry Ombudsman, and I'll port out to another provider."},{"start_s":11.5,"end_s":17.0,"speaker":"agent","text":"Let me see what I can do before it comes to that."},{"start_s":17.5,"end_s":22.0,"speaker":"customer","text":"Three calls. Nobody has actually done anything about the refund."}]},"extraction":{"contact_seq":3,"needs":[],"promises":[],"actions":[]}}]},"risk":{"score":100,"prior_score":89,"signals":[{"kind":"regulator_mention","weight":25,"detail":"Customer referred to an external regulator.","evidence":[{"contact_seq":3,"utterance_index":0,"start_s":1.0,"speaker":"customer","quote":"I'm not going to argue about it. I'll take it to the Telecommunications Industry Ombudsman, and I'll port out to another provider.","citation_verified":null}]},{"kind":"repeat_contact","weight":24,"detail":"3 contacts and \"Refund two months of charges\" is still outstanding.","evidence":[{"contact_seq":1,"utterance_index":2,"start_s":16.5,"speaker":"customer","quote":"And the two months I've already paid?","citation_verified":true}]},{"kind":"broken_promise","weight":22,"detail":"Agent promised \"Call back within 24 hours to confirm the refund\" and it did not happen.","evidence":[{"contact_seq":1,"utterance_index":3,"start_s":20.5,"speaker":"agent","quote":"I'll have someone call you back within 24 hours to confirm the refund.","citation_verified":true}]},{"kind":"broken_promise","weight":22,"detail":"Agent promised \"Chase billing and get back to the customer\" and it did not happen.","evidence":[{"contact_seq":2,"utterance_index":1,"start_s":8.5,"speaker":"agent","quote":"I'll chase billing and get back to you.","citation_verified":true}]},{"kind":"churn_intent","weight":20,"detail":"Customer signalled intent to leave.","evidence":[{"contact_seq":3,"utterance_index":0,"start_s":1.0,"speaker":"customer","quote":"I'm not going to argue about it. I'll take it to the Telecommunications Industry Ombudsman, and I'll port out to another provider.","citation_verified":null}]},{"kind":"missed_deadline","weight":18,"detail":"Promise \"Call back within 24 hours to confirm the refund\" was due 04 Sep 10:12 and is 146h overdue.","evidence":[{"contact_seq":1,"utterance_index":3,"start_s":20.5,"speaker":"agent","quote":"I'll have someone call you back within 24 hours to confirm the refund.","citation_verified":true}]},{"kind":"unresolved_need","weight":15,"detail":"Customer need \"Refund two months of charges\" is still unresolved.","evidence":[{"contact_seq":1,"utterance_index":2,"start_s":16.5,"speaker":"customer","quote":"And the two months I've already paid?","citation_verified":true}]}],"band":"high"},"earliest_intervention":{"contact_seq":1,"at":"2026-09-03T10:12:00","what_should_have_happened":"Deliver \"Call back within 24 hours to confirm the refund\" by 04 Sep 10:12.","why_it_was_missed":"The commitment was made on the call but no follow-through was recorded against the case before the customer made contact again.","evidence":[{"contact_seq":1,"utterance_index":3,"start_s":20.5,"speaker":"agent","quote":"I'll have someone call you back within 24 hours to confirm the refund.","citation_verified":true}]},"recommended_actions":[{"label":"Call the customer back within 2 hours","rationale":"Owed since 03 Sep 10:12 and still outstanding.","urgency":"high"},{"label":"Raise and assign a case for the outstanding request","rationale":"An unresolved need with no owner is what produced the repeat contact.","urgency":"high"},{"label":"Route to a supervisor rather than the general queue","rationale":"Third contact on the same matter.","urgency":"normal"}],"synthetic":true,"telemetry":{"llm_calls":0,"elapsed_ms":0,"claims_extracted":5,"claims_rejected_by_citation_check":0,"claims_marked_uncertain":0,"extractor":"labelled-stub"}}