Work codes — dispositions, call reasons, wrap-up codes, whatever your platform calls them — are among the most consequential data a contact centre produces. They drive staffing models, feed product roadmaps, justify budgets, and tell the business what customers are calling about.
They are also entered by an agent under time pressure in the two seconds before the next call connects, from a dropdown of forty options, with no consequence for choosing wrong. It is worth being honest about what that data is.
Why codes drift
Agents are not being careless. The incentives and the interface produce this outcome reliably:
- Handle time is measured, accuracy is not. Wrap-up counts toward AHT. Nobody has ever been coached for picking the wrong disposition, and plenty have been coached for slow wrap-up.
- The list is too long. Past about fifteen options, agents stop scanning and reach for a familiar one.
- The list is wrong. If no code fits, the agent picks the nearest. That choice is then indistinguishable from a real one.
- "General enquiry" exists. Any catch-all code becomes the default under pressure, and it absorbs exactly the calls you most wanted to understand.
- Multi-issue calls have one code. A caller with a billing question who also reports a fault gets categorised as one or the other.
A disposition list with a catch-all option does not measure why customers call. It measures how quickly agents can close a form.
What the drift costs
The damage is not in the reporting — it is in the decisions the reporting drives.
| Decision | What it assumes | What goes wrong |
|---|---|---|
| Staffing by call type | Volume per code is accurate | You staff for the codes agents pick, not the calls that arrive |
| Product and roadmap | Complaint categories are real | Recurring issues hide inside a catch-all code |
| Self-service and IVR design | Top codes are the top reasons | You automate the wrong journeys |
| Training priorities | Code mix reflects difficulty | Coaching targets the wrong skills |
| Quality by category | Codes are comparable | Scores per code are noise |
The self-service one is the most expensive in practice. Teams routinely build automation for their top three disposition codes and see little deflection — because those codes were the easiest to click, not the most common reasons for calling.
How to measure the drift
You cannot fix this by asking agents to be more careful. You need a second, independent read on what each call was about.
That is what deriving the code from the conversation gives you. Xperia determines the work code from the content of the call itself — either restricted to your existing list, or generating a short code per call. Because it comes from what was said rather than what was clicked, it is independent of the agent's selection. Detail on how work codes are derived.
If your telephony platform or CRM passes the agent's selected disposition through as metadata, you then hold two independent answers for the same call. The disagreements are the finding.
Reading the disagreements
Some divergence is normal and uninteresting — multi-issue calls will always be arguable. Patterns are what matter:
| Pattern | Likely cause | Action |
|---|---|---|
| One code chosen far more than the content supports | It is first in the list, or the catch-all | Reorder the list; remove or split the catch-all |
| One agent diverging much more than peers | Habit, or misunderstanding the list | Coaching — this one genuinely is individual |
| A whole queue diverging on the same code | The list does not cover that queue's work | Add the missing code |
| Derived codes clustering outside your list | Your list is missing a real category | This is the most valuable finding |
| High divergence on short calls | Wrap-up pressure | A process problem, not a coaching one |
The fourth row is the one worth the exercise. When free-form derived codes repeatedly describe something your list has no option for, you have found a call reason your business has never counted.
Exclude the calls that are not calls
Before any of this is meaningful, strip out recordings that never involved an agent — IVR-only audio, hold music, ring-no-answer, abandoned connections. These otherwise land under whichever code sits first in the list and distort both the disposition mix and quality averages.
Xperia marks these as dead calls and excludes them. It is usually the first change that makes a team's category breakdown match their intuition.
Fixing the list is most of the work
Measuring drift is diagnostic. The remedy is almost always the list itself:
- Cut it to fifteen options or fewer per queue. Long lists guarantee inaccuracy.
- Delete the catch-all, or make it require a note. If it must exist, make choosing it cost something.
- Add the categories the derived codes keep surfacing that your list lacks.
- Split codes that cover too much. "Billing" covering nine distinct problems is not a category.
- Order by real frequency, not alphabetically. The top three should be the top three.
- Stop reporting wrap-up time as a target. It is the direct cause of most of the drift.
Then use quality per category
Once codes are trustworthy, the interesting analysis opens up: which call types score worst, which generate the most fatal incidents, which are growing month over month. Category and parameter drill-downs make that comparison possible — but only once the categories themselves are real.
Disposition data is treated as fact and produced under conditions that guarantee it is approximate. That is not an agent failing — it is what happens when accuracy is unmeasured and speed is.
Get a second independent read on what calls were about, look for patterns rather than individual mismatches, and expect the fix to be your list rather than your people. The most valuable output is usually a call reason you have never counted.
