Most reason code systems were built for humans filling in a dropdown after the fact. The code is assigned late, by whoever closes the ticket, and the label reflects the closer's memory of the conversation rather than the conversation itself. That produces noisy reporting and slow feedback loops.
When an agent runs in a loop over the actual transcript, it can choose the code at the moment the evidence is fresh. Agent prompt engineering makes the point that an agent prompt is closer to onboarding a new hire than to asking one question: the system prompt sets the role, the latitude and the stop conditions. A reason code is part of that role definition. If you do not say which codes exist and when each applies, the agent will improvise a taxonomy of its own, and you will inherit a long tail of near-duplicate labels you cannot report on.
There is a real risk in moving the decision to the model. Research on whether models actually follow label definitions found that explicit definitions can improve accuracy, but their integration is "neither guaranteed nor consistent," and models often fall back on internal representations, especially on general tasks (Mohammadi et al.). In plain terms: writing a definition is not the same as the agent using it. That is why the second half of this article is entirely about measurement.
The decision rule is simple. If a human reviewer would assign the same code to the same item on two different days, the task is a good fit for agent assignment. If two trained humans disagree regularly, the code list is the problem, and no amount of prompt text will fix it.



