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.