In-scope request check
Decide whether a message is about something your team supports before trusting a routing choice.
Problem
A Choice question always picks one of its options, even when none applies. A recruiter email or a question about another company's product would still be routed to one of your teams.
Goal
Give routing a way to say "none of these", so off-topic messages reach a general inbox instead of a product team.
Input / state
The message as it arrived, plus the list of products or services your support team covers.
- message
- The customer's message, unedited.
- supported_products
- Names of the products or services your team supports.
Decision question
in_scopeIs this message asking for help with one of the products or services in `supported_products`?
What counts as yes and no
trueThe message asks about, reports a problem with, or requests a change to one of the listed products or services.falseThe message is about something not listed, is marketing or recruiting outreach, or asks for nothing related to the listed products.
Allowed outcomes
Decided in your code from the answer and its confidence. Thresholds are yours to set and test.
- In scopeProbability of yes is above your upper threshold (0.7 is a suggested starting point).
- UnclearProbability falls between your two thresholds.
- Out of scopeProbability of yes is below your lower threshold (0.3 is a suggested starting point).
Example scenarios
Predefined demonstrations. No model is called; the outcome shown is an illustrative judgment.
Example state
{
"message": "I can't log in to the analytics dashboard since this morning. The password reset email never arrived.",
"supported_products": [
"Analytics dashboard",
"Billing portal",
"Mobile app"
]
}Outcome
IllustrativeProbability of yes is above your upper threshold (0.7 is a suggested starting point).
Why
The message names a listed product and asks for help with it.
Using it well
- Ask it in the same request as the routing question. Questions are answered independently, so it adds no hidden context to the routing answer.
- Use the routing answer only when this check is a clear yes.
- Give the unclear band its own handling instead of rounding it to yes or no.
- Tune both thresholds on a labelled sample of your own messages.
Request definition
POST https://api.typesafe.ai/v1/systemone{
"model": "jev-latest",
"state": {
"message": "<message>",
"supported_products": "<supported_products>"
},
"questions": {
"in_scope": {
"type": "noul",
"instructions": "Is this message asking for help with one of the products or services in `supported_products`?",
"criteria": {
"true": "The message asks about, reports a problem with, or requests a change to one of the listed products or services.",
"false": "The message is about something not listed, is marketing or recruiting outreach, or asks for nothing related to the listed products."
}
}
}
}Request shape from the System One API reference; a Kev server accepts the same body. Replace the placeholder state with your data. Requests need your own API key or server.