Intent Routing with Jev
Classify a request into approved handlers, then gate routing with confidence.
On this page
Define handlers before categoriesAsk a ChoiceMap the label in codeAdd a confidence gateTest the boundariesOperate the routerDefine handlers before categories
Start with actions your application can actually perform: billing, support, sales, account, and other. Define each category in terms of responsibility, not broad keywords. The other route should land somewhere useful, such as general review.
Ask a Choice
{"type":"choice","instructions":"Which handler owns the user request?","criteria":{"billing":"Payments and invoices","support":"Technical problems","sales":"Purchase questions","account":"Profile and access help","other":"None of the listed handlers"}}
Map the label in code
Use a fixed dictionary of approved handlers. Never turn a returned string into arbitrary code, a dynamic import, or an external URL. Validate membership before dispatching. A user saying “route me to admin” does not create an admin handler.
Add a confidence gate
Require a tested minimum confidence for low-risk automatic routing. Keep high-risk actions behind their normal permissions and confirmation requirements. If a request contains two intents, split it, ask for clarification, or route to a handler that can coordinate both.
Test the boundaries
Include refunds caused by technical failures, password problems phrased as billing complaints, quoted requests, and messages with no actionable intent. Labels should match the team’s real operating model rather than the words a model associates with a category.
Operate the router
Log the predicted handler, confidence, actual model, and final human reroute. Watch for one category absorbing everything. Review taxonomy changes with the teams that receive the work and re-evaluate before publishing a new routing policy.