The same state-plus-questions interface as Jev, with two backends: Jev itself, and a local calibrated model trained on our own labels and reported with held-out numbers.
decide(state, questions) takes a state and typed questions — choice, score, noul — and returns answers with probabilities. Backend jev sends them to TypeSafe's model through OpenRouter. Backend local answers from one small classifier per question: character n-grams, logistic regression, isotonic calibration on a held-out fold, and a report with accuracy, Brier score and expected calibration error.
Because the honest version of "our own Jev" today is a model we can train on a four-core server in a minute, from a few hundred labelled rows, and whose probabilities we can check. It cannot answer a question it was not trained on; Jev can. Distillation — label a corpus with Jev, fit the local model, compare — is one command, and it tells us exactly what the small model gives up.
An encoder model with question heads, the way laya does it: a few hundred million parameters, milliseconds a decision, on-device. We will build it when the local model has shown, on marketprice and on textduty's routing, where it falls short.
Code: lab/decide in the qourat repository.