altslate/certo-decision-model
1
certo-decision-model (v1)
A small, calibrated, non-generative decision model: it reads a state and a set of options described in text and returns a calibrated probability for each — in one forward pass, no text generation. Default model for **certo**.
- Backbone: ModernBERT-large + a per-option query/scoring head (options scored independently → order-invariant by construction).
- Trained on: a synthetic world with a known answer, so calibration is learned against the exact posterior (soft/distributional targets). 60k examples, 25 epochs.
Evaluation (held-out; graded against the exact answer)
It generalizes to options, names, wording, and counts it never trained on, with tight calibration.
Scope & honest limits
- In-distribution = synthetic, structured inputs (option "profiles" of the form "typically attribute value, …"). On this distribution it is excellent and well-calibrated.
- It does NOT transfer to arbitrary natural-language prose yet. On real free text it tends to return a near-uniform distribution and abstains — a safe failure, but it can't do a real routing/triage task out of the box. Handling real language is the v2 goal (real data + a paraphrase layer). Treat this as a research preview / reference checkpoint, not a general model.
Usage
from huggingface_hub import snapshot_download
from infer import DecisionModel # from the certo repo
m = DecisionModel.load(snapshot_download("altslate/certo-decision-model"))
r = m.decide(
state="We measured salinity as ember, tempo as gale, density as gale.",
options=[{"id": "A", "description": "typically salinity ember, tempo gale, density gale"},
{"id": "B", "description": "typically salinity dawn, tempo frost, density brine"}],
abstain_below=0.6)
r["probs"] # calibrated probability per optionCode + technical report: https://github.com/AltSlate-Labs/certo · https://altslate-labs.github.io/certo/report.html
Inspired by Jev / System-1 decision models. Independent, not affiliated with TypeSafe. MIT.
