CoolFace
Modelpublic

altslate/certo-decision-model

sourceHugging Facemitupdated 17h agoView on Hugging Face
1likes
Model Card

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)

evalKL(r‖p) ↓TV ↓accECE ↓
unseen options (new prototypes + names + wording)0.0080.0160.8440.004
more options (8–10 presented; trained on 3–6)0.0150.0260.7600.003
option-order invariance0.00 (exact)

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

python
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 option

Code + 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.