How to Analyze AI Agent Conversations at Scale and Find Fixable Failures

Published Sources reviewed November 5, 20267 min read

Reading a few transcripts can explain an incident. It cannot tell you which failure repeats across thousands of agent conversations or whether a proposed fix helped. Start with a trace shape that preserves the user request, agent steps, tool results, version, and outcome. Then turn a repeated failure into one named pattern with an explicit denominator.

The useful output is not a dashboard or a pile of examples. It is a bounded decision: which failure to change, what layer plausibly caused it, what evidence will test the candidate, and what post-release signal will decide whether it worked. That is the handoff from production traces to a production verdict.

The short version

Analyze conversations by finding one repeatable, attributable failure pattern at a time, then preserve the same measurement through simulation, release, and production verification.

1. Make each conversation explainable before you count it

Keep the original user request, each assistant turn, tool name and arguments, tool result, retrieved context when it influenced the answer, agent or routing path, and the prompt or configuration version. Also keep timestamps and an outcome signal such as a handoff, a corrected answer, a task completion event, or a human review. A final response alone is rarely enough to identify where the behavior went wrong.

Use stable IDs to connect turns in one customer conversation without resending its entire history as if it were new evidence. If a trace omits the tool result or the configuration version, label that record incomplete for the question at hand. Do not silently treat missing evidence as a successful interaction.

2. Segment before looking for a pattern

A single average blends unrelated behavior. Split the conversations by the decision that could fail: intent, agent route, tool selection, retrieval source, model version, locale, account tier, or release window. Start with the segment that has a concrete business consequence, not merely the largest volume.

For example, group support conversations where the agent promised a refund before checking an order. The denominator is eligible refund requests with a recorded tool path. The numerator is requests where the refund action occurred before the required lookup. A group such as 'bad conversations' is not a pattern a team can test or fix.

Field
Failure pattern
Example
Refund action starts before order lookup
Field
Eligible denominator
Example
Refund requests with a complete tool path
Field
Evidence to preserve
Example
Request, tool sequence, arguments, result, and version
Field
Candidate layer
Example
Refund tool description or routing rule
Field
Do not infer
Example
That every refund complaint has the same cause

3. Separate detection from diagnosis

An evaluator, feedback score, or alert can identify conversations worth review. It does not by itself explain the failing step. Current trace tools support attaching feedback to traces and threads, then filtering or evaluating selected production records. Use that capability to narrow the review set, then inspect the full sequence before calling a prompt, tool, retrieval, routing, or application change the cause.

A repeatable failure can still have more than one cause. A wrong answer after a correct tool call points somewhere different from a wrong tool call, an empty retrieval result, or a downstream service error. Keep unresolved cases in an explicit bucket. Forcing them into the most convenient pattern creates a false denominator and a misleading fix candidate.

4. Rank a failure by impact and fixability

Choose a pattern only when the team can state the user harm, count eligible cases, and name a layer it can change. Frequency matters, but so do severity, confidence in the diagnosis, and regression risk. A rare unsafe outcome may outrank a common awkward response. A frequent API outage may be important but belongs with the service owner rather than a prompt experiment.

Write the candidate as one sentence: 'Change this versioned behavior at this layer to reduce this named failure among these eligible conversations, while retaining these known-good behaviors.' That sentence prevents a general request to improve quality from expanding into an untestable rewrite.

5. Test the candidate on the same behavior before release

Build a shared test set from the observed failure family and nearby conversations that already work. Keep the control and candidate separate, then compare the same task-completion, failure-pattern, and regression measures. A candidate that improves one failure while creating new tool mistakes is not a clean win.

Converra uses this evidence to keep diagnosis, candidate comparison, approval, and the later production result distinct. It can help a team inspect the failing step, generate a bounded prompt or configuration candidate, and run it against the current behavior. The team that owns the agent still approves and applies its change.

6. Keep measuring the same pattern after the approved change

Record the release time, changed version, and any overlapping model, routing, or policy change. After release, apply the same eligibility rules and detector to new conversations. Compare the targeted pattern with a comparable pre-change window, and check the known-good behaviors that the candidate was required to preserve.

A better simulation result is evidence for a candidate, not a production result. If the failure persists, say not fixed. If another material change overlaps the window, say confounded. If there are too few eligible conversations, retain insufficient evidence rather than announcing success. Those outcomes make the next diagnosis more useful than a claim based on a chart or a green test run.

Use a coding agent to retrieve evidence, not to invent a conclusion

A coding agent can collect the saved runs for one pattern, summarize the tool path, identify missing fields, and prepare a bounded configuration change. Ask it to preserve the denominator, version, and unresolved cases. Do not ask it to turn an edited prompt or one successful replay into a verified result.

With Converra MCP, begin with the saved account and agent inventory, inspect step-level diagnosis for the failed run, then use the authorized optimization and simulation tools. After the team applies an approved change, inspect deployment impact and verification evidence. State-changing actions remain subject to the connected account's scopes and the user's authority.

Frequently asked questions

What should I collect to analyze AI agent conversations at scale?

Collect the user request, agent and tool steps, tool results, relevant retrieved context, version, timing, and an outcome signal for each conversation. Those fields let you distinguish a repeated behavior from a vague complaint and trace it to a candidate layer.

Can an LLM judge find every agent failure automatically?

No. An LLM judge can prioritize traces or threads for review, but its score does not establish the failing step, the cause, or whether a later change fixed the behavior. Keep human review and explicit unresolved cases for those boundaries.

How do I know a production agent fix worked?

Measure the same named failure among comparable eligible conversations after the approved release, while checking the regressions the candidate was required to avoid. A verdict is verified, not fixed, confounded, or insufficient evidence depending on that post-release record.

Oren Cohen, founder of Converra

Written by

Founder of Converra. Previously founded Buildup (acquired by Stanley Black & Decker) and, as VP Product Growth at Totango, owned AI end-to-end from design through production.

Turn repeated conversation failures into a testable change

Converra keeps the failure pattern, candidate comparison, approval, and production evidence connected so your team can determine what happened after a change ships.