Skip to content
System One

Intent routing

Intent routing is one of TypeSafe's documented patterns: "Classify a user's intent and route to the appropriate handler." A Choice question returns the intent plus a probability for every option, and your code maps the winning option to a handler. The model does not call the handler.

This is the pattern most people reach for first, and it shows the split between model and code clearly. TypeSafe’s framing: “System One is TypeSafe’s model for building AI-powered software, not agents. It does not generate code or choose its own next action.” The Choice answer is data. Your router is a switch statement.

From the docs, a Choice answer for a support ticket looks like {"type":"choice","choice":"returns","confidence":1.0,"probabilities":{"returns":1.0,"shipping":0.0,"billing":0.0}}. You read .choice to pick the handler and .confidence to decide whether to pick it automatically. The confidence docs say to act automatically on a high value and to route a low one to a human, request clarification, or fall back to another system. Medium means proceed with caution. The worked example uses 0.5 as the floor for uncertainty and 0.9 as the bar for high-stakes or destructive operations without confirmation.

Two details worth building in from the start. Choice allows up to 255 options, which covers a large intent taxonomy in one call. The docs also advise including an “other” or “none of the above” option when the taxonomy is incomplete, so a novel request lands somewhere explicit rather than in the nearest wrong bucket.

See intent and model routing and confidence gating.

Related terms