none_of_the_above when none of them fits. That escape option is where a new kind of complaint, a new abuse pattern or a new product question shows up first. Discovery reads what landed there and proposes the options your judgment is missing. It never changes the judgment: you review the proposal, edit it, and create the new version yourself.
Discovery is for choice judgments with fixed options. A bool or score judgment has no escape option; watch its calibration report instead. A choice that chooses among candidates has one, but it means “no candidate matches”, not a missing option, so discovery does not apply to it either.
Know when to look: the escape alert
escape_alert is a setting of a choice judgment: the share of its answers over the last 7 days that were none_of_the_above, above which you want to know. It is off until you set it, and changing it creates no version.
- The judgment gets a warning.
GETon the judgment liststaxonomy_driftinwarnings, with the share and when it rose. The dashboard shows it on the judgment’s page. It clears when the share falls back. - One event. The events feed, and every webhook endpoint that asks for it, gets one
judgment.taxonomy_driftper rise, not one per answer. Staying above sends nothing more. - Nothing changes on its own. Your answers, options and bill stay as they are. You run discovery when you want to.
null turns it off. A namespace that inherits the judgment from a template follows the template’s alert, and gets its own warning and event from its own answers.
Turn on suggestions
Discovery sends a sample of your documents to a third-party LLM provider, the same one that suggests parts. That provider is one of the subprocessors listed in the data processing agreement. So it is off by default: an org admin turns on Suggestions in the organization’s settings in the dashboard. Until then,discover is refused with forbidden.
Run discovery
POST /namespaces/{ns}/judgments/{name}/discover with how far back to look (window, 7 days by default) and the most new options you want (count, 1 to 10, 5 by default):
202 with a discover job, which:
- Samples the escape. It takes a sample of the documents whose answer in the window is
none_of_the_above, or whoseescape_pis at or above the judgment’s threshold onnone_of_the_aboveif you set one. - Asks for options. It sends the sample, compiled with the judgment’s context recipe exactly as it is judged, to a third-party LLM provider with your question and your current options. The provider proposes up to
countnew options, each with a description and the sampled documents it covers. - Checks them. It checks the proposed options against the sample in shadow, beside the current ones, as a shadow report checks a new version. This is free and changes no answer.
rate_limited, with details.limit (10) and when the allowance renews in details.resets_at, the next midnight UTC. The call is taken when the job starts, and a busy model is waited out rather than failing the job. A job that fails before the model has run for it gives the call back.
Read the proposal
When the job isdone, its proposal is a new version’s options, the current ones first:
escape_documentsis how many documents in the window escaped;sampledis how many of them the job read.absorbsis how many sampled documents the proposed version answered with that option;sample_idsare the ones the LLM said the option covers. Open a few of them to see what the option really means.unlabelledis how many sampled documents the proposed version still answerednone_of_the_above. A large number means the escape holds more than one new thing, or things no option should cover.
count, or none when the escaped documents share nothing new. That job is still done: proposed is empty, options are your current ones, and unlabelled counts the sampled documents that escaped.
When a job fails
A job fails, withproposal null, only when it got no options to check. Its error says why:
Review before you create the version
The proposal is a draft. The review is where most of its value is, so don’t accept it unedited:- Some proposals are a narrower case of an option you have. Added as they are, they take documents from their parent option. Fold a proposal like that into the parent option’s description instead of adding it, or delete it.
- A new option next to an old one won’t take all of its documents. The neighbour keeps some of them. Sharpen both descriptions so the line between them is clear, and read the shadow report when you activate.
- A small new kind may not come back as its own option. When it is a small part of what escaped, look for it in
unlabelledand in the sampled documents.