Definition
Intent classification in conversational AI is the process of identifying what the user wants to accomplish from their message, then mapping that to a specific action or response the agent can take. Rather than handling infinite variations of user input, the agent defines a finite set of intents that capture the core actions it can perform. Intents emerge from behavioral definitions, not the other way around.
Key Points
- Vague prompts (“be empathetic and professional”) are less effective than specific behavioral rules
- Example: “empathetic” becomes the behavior “always acknowledge the customer’s emotion before providing solutions”
- This behavior naturally produces intents like
AcknowledgeEmotionandRequestClarification - Intents can be conditionally available based on context:
RedirectToHumanfor paid users,CannotRedirectToHumanfor free users - Useful universal intents:
RedirectOffTopic(with strategies: gentle_reminder, humor, firm_boundary),RequestClarification,AdmitUncertainty(reduces hallucinations better than prompt-level instructions) - Intent classification is the decision mechanism inside the agent loop
Related Concepts
- agent-loop — Intents are determined at each loop iteration; they drive the action selection
- personality-design — Behavioral definitions (which emerge from personality) create the intents
- context-engineering — Available intents can depend on the context provided to the agent
- turn-taking — Intent classification helps determine when the agent has enough information to act
Implications
This matters because intent classification is where conversation design becomes code. The quality of intent definitions directly determines agent behavior quality. Well-defined intents handle edge cases gracefully; poorly-defined intents leave the agent guessing. The approach of defining behaviors first and deriving intents from them is more robust than trying to enumerate intents from scratch.
Open Questions
- How many intents can a single agent handle before classification degrades?
- Should intents be defined statically (code) or dynamically (LLM-determined)?
- How do you handle intents that span multiple categories or don’t fit cleanly?