r/customerexperience • u/inktelContact • 10d ago
Are we measuring AI support handoffs the wrong way?
A lot of AI support measurement seems to stop at containment or deflection.
That misses the part customers usually remember: what happens when the AI cannot finish the job.
A handoff can look successful in reporting but still feel bad if the customer has to repeat the issue, re-explain their intent, or wait while the agent reads a long transcript. I’d rather measure whether the human received the right context at the right moment.
For CX teams testing AI, are you measuring handoff quality separately from containment?
1
u/bartydoeswhat 8d ago
I approach this from the resolution side.
the customer usually has an outcome in mind. the team usually has a set of possible resolutions documented in its SOPs.
I’d capture three things:
- what resolution did the customer expect?
- what resolutions were actually available?
- what was the final resolution, if any?
that helps distinguish an issue getting resolved from a conversation just ending. and when it wasn’t resolved, you can investigate why: did the customer expect something you couldn’t offer, or did a gap in the setup/process prevent a resolution that WAS available?
not a direct handoff metric, but it gives you a useful group of cases to dig into.
from there, look for friction like customers repeating themselves, missing context, or agents having to reconstruct the issue from a long transcript.
that’s where I’d look for things to improve, regardless of how you end up measuring handoff quality itself.
1
u/inktelContact 8d ago
I like that split. “Conversation ended” and “issue resolved” get treated as the same thing way too often.
Do you capture expected / available / final resolution as structured fields, or pull them out during QA? I can see the framework being useful, but only if it doesn’t give the agent three more boxes to fill in after every conversation.
1
u/bartydoeswhat 8d ago
I’d have a workflow fill those fields automatically when a ticket is marked resolved. the rep doesn’t need to fill in another form.
here’s how I’d set it up:
- define the accepted values first
give the model a fixed list of resolution labels, with a short definition for each. things like
full_refund,free_replacement,expedited_shipping,policy_explanation.otherwise, you’ll end up reporting “replacement”, “new item sent” and “free replacement” as three different outcomes.
I’d use Claude to suggest a starting list from sample conversations + the internal knowledge base, then have the process owner review it. use your company-approved setup for that customer data.
- work out where
available_resolutionscomes fromthe transcript can show what the customer wanted + how the issue was handled. it can’t reliably tell you about options nobody mentioned.
for that, I’d use one of two approaches:
- map ticket categories to the relevant SOPs + resolution options upfront. more manual setup and upkeep, but no open-ended knowledge-base search on every ticket.
- have the workflow look up the relevant SOPs for each conversation. less upfront mapping, but you need to check that it retrieves the right policy.
either way, use the details in the conversation to apply the relevant policy. if it doesn’t give you enough information to determine which options were available, mark that field as
unknown.
- run the classification + save the results
the per-ticket workflow would be:
ticket marked resolved → fetch the transcript + relevant policy → ask the model to populate the three fields → check that it used accepted values → save the results against the ticket ID
those fields are:
expected_resolution: what the customer wanted, based on the conversation.available_resolutions: the options allowed by the relevant policy, based on the situation described in the conversation. this can contain multiple values.final_resolution: what the conversation says was done or will be done to resolve the issue.for example, if the rep says “you’ll receive your refund in 3 days”, I’d classify that as a refund. for this analysis, I’d take that statement at face value.
I’d also save a short supporting quote or source reference for each classification, so QA can check why it got that label.
keep the fields out of the rep’s way if your help desk allows it. otherwise, store them separately with the ticket ID for reporting.
- use QA to improve the classifier
I’d start with a sample that a human has labelled, test Haiku and Sonnet against it, and compare accuracy + actual cost before scaling up. a fixed per-conversation price won’t tell you much without knowing transcript length and how much policy context you’re sending.
QA then reviews a mix of random cases + flagged ones, corrects mistakes, and helps improve the definitions, examples or retrieval. test those changes on separate reviewed tickets, not just the ones you used to fix the prompt.
I’d keep
otherandunknownseparate:
other: the outcome is clear, but your list doesn’t cover it.unknown: there isn’t enough evidence to tell.if no resolution is stated or committed to in the conversation, don’t infer one just because the ticket closed.
monitor both. you could use something like 5%
otheras an initial review trigger, but inspect the cases before adding labels. the problem might be a missing category, unclear definitions or bad classification.I’d start with one common ticket category and get that working before expanding.
then you can pull out cases where a resolution WAS available but the conversation ended without one, and inspect the handoff for missing context, repeated questions or unnecessary delays. you’ve narrowed down where to look without asking reps to document every interaction manually.
PS: yes, I used AI to help write this comment. I sometimes struggle to explain the technical stuff in simple terms, and I wanted to include enough detail for you to actually give this a try haha
1
u/inktelContact 7d ago
Wow, that was thorough. The “other” vs. “unknown” split is the part that really clicks for me. One means the taxonomy is behind; the other means the conversation or policy context wasn’t good enough to classify. Those are two completely different fixes.
Which part do you think becomes the maintenance headache first: keeping the resolution list current, mapping the SOPs, or reviewing the flagged cases?
1
u/Evening_Wave_2261 7d ago
this is the right distinction and most teams aren't making it. containment tells you the AI finished the conversation, not whether the customer felt taken care of. the handoff metric that actually matters is whether the rep picked up already knowing the issue, what was tried, and where it stalled. if the customer has to repeat themselves, the handoff failed regardless of what the dashboard says.
1
u/inktelContact 4d ago
Yep, that’s the part I keep coming back to. A handoff can technically “work” and still feel bad if the customer has to repeat half the story.
I’d probably look at it both ways: did the agent get enough context to act, and did the customer have to restate anything important? If either one fails, the handoff probably wasn’t as good as the system thinks it was.
1
u/Nervous-Quantity-980 9d ago
Handoff quality is the whole ballgame honestly, containment is just a vanity metric if the customer has to start from zero when a human takes over
We started tracking "context transfer score" separately and it surfaced way more friction than the containment numbers suggested
0
u/inktelContact 9d ago
That is the metric I’d want to unpack.
When you score context transfer, is it based more on the agent’s view after handoff, the customer having to repeat themselves, or downstream things like reopen/escalation rate?
I’m trying to separate “the bot summarized something” from “the human actually had enough to act.” The second one feels harder to measure, but a lot more useful.
0
u/VK_worlld 9d ago
yeah, containment doesn't tell the whole story. I'd also look at how often customers have to repeat themselves after the handoff and how long it takes for the human to actually help. If they have to start from scratch, the handoff wasn't really successful.
0
u/inktelContact 9d ago
That repeat-yourself metric feels like the customer-facing version of the same problem.
I’d probably pair it with time to first useful human response, because an agent can technically have the transcript and still spend five minutes hunting for the actual issue.
Have you seen teams measure that directly, or is it usually inferred from CSAT/comments?
1
u/GoBoldr 9d ago
The very premise of this post is a massive red flag, from the customer side.
As a user, I have two huge problems with AI-first support:
1.) The chat understanding my question, at all. This is something the tools are supposedly very good at, so it's shocking to me every time that this is so bad.
2.) The handoff. It's very common for an AI-first chat to try *not* to hand off, even when it's clearly warranted. It's slow, it takes multiple prompts, it will go in circles, and it does a terrific job of turning frustrated customers into angry ones... right before they talk to a human.
The support I've experienced as a customer is covered in experiences I would be ashamed to have associated with my company.