How it fits together
- A namespace holds documents, usually one per tenant per environment.
- A document has filterable
attributesand a JSONstatethat judgments are made about. - A judgment is a typed question (
bool,choiceorscore) attached to a namespace, pinned to one engine version. - An answer is the current result of a judgment for a document: a probability distribution with its freshness and provenance. Queries filter and sort on answers.
- An evaluation is the immutable record of one computation. Every one is kept.
When you need it, and when you don’t
The simplest version of this is a trigger in your own database that calls a model whenever a row changes. If you need one label per row, can live with an occasional wrong answer, and never need to explain one later, that is often enough, and you may not need Vainona. It stops being enough when:- You need to know how often an answer is wrong. A trigger stores whatever the model said. Here every answer is a probability, and from 100 labelled outcomes it is calibrated to your data, with an accuracy report per judgment version and thresholds chosen on your own labels.
- The answer depends on more than one record. “Is this account at risk?” changes when any of its tickets changes. On row triggers that becomes fan-out code, and costs that grow with every related write. Here a judgment reads its related documents directly, and debounce, re-judge scope and confirmed estimates keep the cost in check.
- The model changes underneath you. Hosted models change without notice, and a trigger’s answers shift silently. Here every answer records the engine version and the epoch of model behaviour that produced it. When a change is detected, quality is re-checked against the conformance suite.
- You have to explain a decision later. Every computation is kept as an evaluation: the exact context the engine saw, the answer, and the versions that produced it.
- Cost has to be predictable. A document whose relevant content did not change is not judged again, backfills show their cost before you confirm, and budgets cap spend per namespace.
- You serve many tenants. Template judgments define a question once for every tenant’s namespace, with budgets per tenant.