Turn a raw export of 60 support tickets into an operations upgrade: a triage taxonomy, macros for the top five ticket types, three knowledge-base articles, and a voice-of-customer report with the month's top complaints quantified — where every count in the VoC report reconciles to the raw export, or the report doesn't ship.
You have just inherited support operations at Nimbra Home Store, a fictional D2C kitchen-appliances retailer. The support queue runs on goodwill and memory: no taxonomy, agents tag tickets however they feel, replies are typed fresh every time, and leadership's picture of "what customers complain about" is whoever shouted loudest in the last review. Your brief from the COO: one month of tickets, one afternoon, four deliverables — and a warning shot from the last analyst's exit: "the ticket counts in the June report didn't match the export, and finance noticed." That is the discipline this capstone grades. AI will cluster, draft, and summarize at speed; the counts that reach leadership must reconcile to the raw rows, through every recategorization you make, with the anomalies you found documented — not smoothed away.
July's tickets, two weekly files as the helpdesk exports them. Fields: id, date, channel, agent_tag (the tag the agent picked — treat with suspicion), priority, subject.
id,date,channel,agent_tag,priority,subject
T-1001,2026-07-01,email,Delivery,High,Order 3 days late - no tracking update
T-1002,2026-07-01,chat,Billing,High,Charged twice for order 8812
T-1003,2026-07-01,email,Account,Med,Cannot log in after password reset
T-1004,2026-07-02,phone,Refund,High,Refund promised 10 days ago not received
T-1005,2026-07-02,email,Other,Low,Need GST invoice copy for June order
T-1006,2026-07-02,chat,Delivery,High,Package stuck at hub for 5 days
T-1007,2026-07-03,email,Damage,High,Mixer arrived with cracked jar
T-1008,2026-07-03,chat,Other,Med,Where is my order - shows shipped for a week
T-1009,2026-07-03,app,Bug,Med,App crashes on checkout screen
T-1010,2026-07-04,email,Billing,High,EMI charged but order shows unpaid
T-1011,2026-07-04,chat,Account,Med,OTP never arrives on new number
T-1012,2026-07-05,email,Refund,Med,Return picked up 12 days ago - refund pending
T-1013,2026-07-05,phone,Delivery,High,Marked delivered but nothing received
T-1014,2026-07-05,email,Feature,Low,Please add UPI autopay option
T-1015,2026-07-06,chat,Billing,Med,Coupon not applied but charged full price
T-1016,2026-07-06,email,Delivery,Med,Wrong pincode on label - parcel returned
T-1017,2026-07-07,app,Bug,Low,Dark mode resets on restart
T-1018,2026-07-07,email,Refund,High,Refund of Rs 2499 shows processed - not in bank
T-1019,2026-07-08,chat,Account,High,Account locked after 3 attempts
T-1020,2026-07-08,email,Damage,Med,Kettle dented though box intact
T-1021,2026-07-09,phone,Delivery,High,COD order cancelled by courier without asking
T-1022,2026-07-09,email,Refund,Med,Partial refund received - balance missing
T-1023,2026-07-10,chat,Billing,High,Subscription renewed despite cancellation
T-1024,2026-07-10,email,Other,Low,Change delivery address for future orders
T-1025,2026-07-11,app,Bug,Med,Search returns no results for valid items
T-1026,2026-07-11,email,Delivery,High,Split shipment - second half missing 8 days
T-1027,2026-07-12,chat,Refund,High,Double debit for single order 9034
T-1028,2026-07-12,email,Account,Med,Email change request not reflecting
T-1029,2026-07-13,phone,Delivery,High,Perishables delayed 4 days - items spoiled
T-1030,2026-07-14,email,Damage,High,Screen guard shattered on arrival
id,date,channel,agent_tag,priority,subject
T-1031,2026-07-15,email,Delivery,High,No movement on tracking for 6 days
T-1032,2026-07-15,chat,Billing,High,Charged Rs 3198 for a Rs 1599 order
T-1033,2026-07-16,email,Refund,High,Refund rejected despite original packaging
T-1034,2026-07-16,app,Bug,Med,App freezes on order history screen
T-1035,2026-07-17,email,Account,Med,Two accounts merged wrongly - orders missing
T-1036,2026-07-17,chat,Other,Med,Courier left parcel with neighbour without consent
T-1037,2026-07-18,email,Damage,High,Bottle leaked and carton soaked
T-1038,2026-07-18,phone,Delivery,High,Promised express delivery - took 6 days
T-1039,2026-07-19,email,Billing,Med,Wallet balance deducted without any order
T-1040,2026-07-19,chat,Refund,Med,Cancelled within 5 minutes - no refund in 9 days
T-1041,2026-07-20,email,Feature,Low,Add Marathi language in the app
T-1017,2026-07-20,chat,Account,High,Logged out on all devices - cannot re-login
T-1042,2026-07-21,email,Delivery,Med,Package delivered to wrong flat
T-1043,2026-07-21,app,Bug,Low,Notification badge count is wrong
T-1044,2026-07-22,email,Refund,High,Exchange approved but refund initiated instead
T-1045,2026-07-22,chat,Billing,High,GST charged twice on invoice 7741
T-1046,2026-07-23,email,Delivery,High,Third delayed order this month - cancelling membership
T-1047,2026-07-23,phone,Account,Med,Number update needs OTP to old lost number
T-1048,2026-07-24,email,Damage,Med,Wrong item and scratched - want replacement
T-1049,2026-07-24,chat,Refund,Med,Refund went to closed card - need bank transfer
T-1050,2026-07-25,email,Billing,Med,Refund status for order 8890 unknown
T-1051,2026-07-25,app,Feature,Low,Want order sharing with family account
T-1052,2026-07-26,email,Delivery,High,Courier demanded extra cash for COD delivery
T-1053,2026-07-26,chat,Other,Low,How to download past invoices
T-1054,2026-07-27,email,Refund,High,Refund completed per app - bank shows nothing for 15 days
T-1055,2026-07-27,phone,Billing,High,Auto-debit attempted 4 times - 4 holds on card
T-1056,2026-08-30,email,Delivery,Low,Feedback - delivery person was rude
T-1057,2026-07-28,email,Account,Med,Deactivate my account and delete my data
T-1058,2026-07-28,chat,Other,Med,Received someone else's order
T-1059,2026-07-28,email,Damage,High,Induction top cracked at the corner
Load, count, and profile — before any clustering. Paste both files into your spreadsheet, stack them, and establish the ground truth: total rows, unique ticket IDs, date range, and count per agent_tag. Then ask the AI to profile the same data and compare its counts to yours cell by cell. Three facts about this export will surface in a careful profile — an ID that should not repeat, a date that should not exist in a July export, and a tag column that disagrees with the subjects it labels. Log each with your ruling (this month's convention: rows are tickets; an ID collision is a system defect to flag, not a row to silently delete). Your rulings become the reconciliation rules for everything downstream.
Build the triage taxonomy from subjects, not tags. Prompt: "Cluster these 60 subjects into a support taxonomy: 6-9 categories with clear definitions and inclusion rules, based on the subject text ONLY - ignore the agent_tag column. For each category list the ticket IDs. Every ticket must appear exactly once." Audit the output: sum the category counts (must equal your row total), spot-check ten assignments, and rule on the genuinely ambiguous ones yourself (a "payment success but no refund" ticket can defensibly live in Billing or Refunds — what matters is that your definition decides, and is written down). Then produce the two-column comparison: tickets per category by content vs by agent_tag — the delta table is your first finding about the operation.
Add severity and routing to the taxonomy. For each category: default priority, first-response target, routing (support can resolve / needs finance / needs logistics partner / needs engineering), and an escalation trigger. One subject in this export describes conduct serious enough to warrant its own escalation path rather than a category bucket — find it and give it one. This turns a clustering exercise into a triage system an agent can actually follow.
Draft macros for the top five ticket types. Identify the five highest-volume categories from your content-based counts. For each: "Draft a support macro: empathetic opening, what we will do with a realistic timeline placeholder, what we need from the customer, and closing. Placeholders in [BRACKETS] for name, order ID, amounts, dates. Do not promise refund timelines faster than [X] days or compensation of any kind. Under 120 words." Review each against the actual tickets in that category — a refund macro that fits T-1018 (processed-but-not-credited) must not assume the T-1040 case (never processed). Where one macro cannot honestly cover its category, split it into two variants and say why.
Write the three KB articles. Pick the three categories where self-service would deflect the most tickets (volume × how answerable-without-an-agent). Structure per article: symptom, cause in plain language, steps to resolve, when to contact support, prevention. Ground each in the real tickets: "Using these ticket subjects as the symptom list, draft a KB article for [category]." Then verify the article promises nothing the macros don't ("refunds take 5-7 business days after pickup" is a claim — mark it [CONFIRM WITH FINANCE] rather than letting the AI invent policy).
Build the VoC numbers — in the spreadsheet, not the chat. Compute in your sheet: tickets per content category (count and % of total), week-1 vs week-2 movement, priority mix per category, channel mix, and the top three complaint themes with their exact counts. Every figure the report will cite gets a formula here — COUNTIFs over your categorized sheet — so the audit trail is one click deep. Ask the AI for the same aggregates and note any disagreement; the sheet wins, and the disagreement goes in your methodology note.
Write the VoC report. One page, for the COO and product: the month in three sentences; the top three themes quantified (counts, % of volume, week-over-week direction, one verbatim subject line each as evidence); the operational findings (the tag-vs-content mislabel rate and what it means for current dashboards; the data anomalies and how you handled them); and three recommendations with owners (e.g., courier-partner review with the delivery numbers attached; refund-pipeline audit with finance; taxonomy + macro rollout with training). Close with the methodology note: total tickets, anomaly rulings, and the sentence that rebuilds trust after June — "all counts reconcile to the raw export under the rulings above; workings available."
The reconciliation gate — run it before anything ships. Final audit, in order: report total = raw row count under your stated rulings; sum of category counts = report total; every percentage recomputes from its count; the three theme counts match the sheet formulas; the anomalies appear in the methodology note, not silently patched. Have the AI double-check your report against your category table as a last sweep — "find any number in this report that does not match this table" — then ship the four deliverables as one pack.
Leadership never checks your clustering — they check one count against one export the day it matters, and every count you ever shipped is judged by that one.
Support data tells the truth twice — once in the subjects and once in the counts — and both need auditing before either reaches leadership. Cluster from content, rule on every anomaly in writing, compute in a spreadsheet with the workings one click away, and make "all counts reconcile to the raw export" the sentence your reports are known by.