This is the heart of the loop. Every fallback or miss gets exactly one cause label, and each label has a default owner. The four buckets are not equally common or equally expensive, and conflating them is why feedback loops stall.
| Cause | What the log looks like | Who owns the fix | Typical action |
|---|
| Missing help article | Clean intent match, retrieved_articles empty or irrelevant, user rephrased | Docs or content team | Write or rewrite the article |
| Broken feature | Consistent queries clustering around one action, users mention errors or "it won't let me" | Product or engineering | Reproduce, fix, then confirm the fallback stops |
| Ambiguous phrasing | Low confidence with several plausible candidates close together | Conversation or taxonomy owner | Add clarifying question or sharpen intent descriptions |
| Product should answer itself | The question is a product fact or status the assistant should know from a system of record | Product with an API owner | Wire a tool or data lookup instead of an article |
Missing help article. The signals are a confident intent and an empty retrieval list. The fix is content, and the quality bar is set by how retrieval works: content is chunked into smaller pieces, embedded, and matched semantically, so an article that buries the answer under three headings will be retrieved badly or not at all, as Zendesk's guidance on optimizing content for generative AI explains. That guidance is specific and worth applying at the point of writing: focus each article on one topic, answer the question directly, make the article self-contained, repeat the title's topic in the body, and avoid vague pronouns. Chunking choices also matter: a NVIDIA study of chunking strategies found page-level chunking gave the highest average end-to-end RAG accuracy at 0.648 with the lowest standard deviation, while very small and very large chunks generally underperformed. Translation: keep article sections coherent and self-contained rather than chopping them mid-thought.
Broken feature. The tell is a tight cluster of queries about one action, usually with error language, and often a spike that starts on a specific day. This is a gift: your assistant is surfacing a product defect before it reaches your bug tracker. The action is to file it with the transcript attached, then watch the same cluster disappear. If it does not disappear after the fix, either the fix did not stick or the users are describing a different problem, which means reclassify.
Ambiguous phrasing. Confidence is low, two or three candidates are close, and the top intent is not obviously right. The cause is usually the taxonomy, not the user. The standard remedy is a clarifying question, and intent-design practice supports keeping intent sets tight and distinct: one intent-recognition guide suggests starting with 30 to 40 intents and expanding to 60 to 80, with 80 to 100 diverse training examples per intent, distinct categories and a fallback intent for unmatched messages, per IrisAgent's intent detection guide. It also notes that putting fewer than about 20 intents in a single prompt helps, which is relevant if your router is one big prompt.
Product should answer itself. These are the highest-leverage misses. The user asks "what's the status of my order" or "why was I charged this amount," and the assistant, lacking a lookup, either falls back or writes an article-shaped answer that is half right. Cheap models with poor confidence can also trigger this: the model cascade research discussion points out that low thresholds mean lower cost but also raise the question of whether a small model's confidence score can be trusted at all. If the question is about live account state, no article will ever be enough. The fix is a tool call, and the classification guide above is right that routing a request into two simpler decisions, first what type it is and then how to handle it, beats asking one model to do everything.
Classification itself can be done cheaply. A first pass with a small model and a fixed label set works, and the labels are stable enough that a fine-tuned classifier would eventually be cheaper; the cost-aware model selection paper found fine-tuned encoder models from the BERT family were competitive with or better than prompted LLMs on fixed-label classification while running at one to two orders of magnitude lower cost and latency. You do not need that on day one. You need labeled examples, and your first few hundred manual labels become the training set.