Zeno: the model that reads the crowd of forecasts
Zeno looks at a group of forecasts for one question and tells you three things: a better answer, how wide the real range probably is, and a warning when the whole group is confident but likely wrong.
One model, one shared encoder, 14 forecasting fields: forecasting benchmarks, prediction markets, crypto, public health, economics, energy, sea and weather. Trained on 524,145 cases on an H200 GPU; this checkpoint (v0.89.4, small, seed 1) was picked out of a 12-fit campaign by a rule written down before the scores were read.

Explain like I'm 5
Ten friends guess tomorrow's temperature. Usually the middle guess is good. But sometimes they all copied the same weather app, and they're all sure, and they're all wrong together. Zeno has watched over half a million of these groups, so it learns what "everyone agrees, but it's a trap" looks like, and nudges the answer or raises a flag.
Try it in 30 seconds
1. No code: open the live demo, scroll to Zeno v0.89, pick an example, press Check with v0.89.
2. Any language (HTTP):
curl -s https://zenodivergent.dev/api/public/v1/check -H 'content-type: application/json' -d '{
"version": "v0.89",
"question": {"source": "forecastbench", "decision_at": "2026-11-02T00:00:00Z",
"inputs": {"panel": [
{"forecaster_id": "a", "available_at": "2026-11-01T00:00:00Z", "probability": 0.2},
{"forecaster_id": "b", "available_at": "2026-11-01T00:00:00Z", "probability": 0.35},
{"forecaster_id": "c", "available_at": "2026-11-01T00:00:00Z", "probability": 0.6}]}}}'
3. AI agents (MCP): add https://zenodivergent.dev/api/public/v1/mcp to Claude, Cursor or any MCP client.
4. Python, no PyTorch (ONNX):
pip install onnxruntime numpy pandas huggingface_hub
python -c "from huggingface_hub import snapshot_download as s; print(s('ZenoDivergent/zeno-divergent-v0894'))"
cd <that folder> && python -m model.serving_v0894.onnx_runner examples/forecastbench.json
5. Python with PyTorch (safetensors or the original checkpoint):
from model.serving_v0894.service import Service
s = Service("model.pt")
s.answer(json.load(open("examples/covid.json"))["request"])
Files
| File | What it is |
|---|---|
model.safetensors + zeno-meta.json | Weights in the safe standard format + vocab, fields and scale contract. Bit-identical to model.pt. |
onnx/zeno-v0894.onnx (+ .onnx.data) | Network for ONNX Runtime, any number of forecasters; matches PyTorch within 4.2e-7. |
model.pt | The exact graded checkpoint (SHA-256 bf105e22…701e93d3). |
examples/*.json | Three ready inputs (ForecastBench, market, COVID-19) with their exact expected answers. |
formats-parity.json | Proof the converted formats give the same answers. |
Where it helps today

- Better than the reference answer on ForecastBench (+4.2%; +6.2% vs the average forecaster), RSV (+2.1%), markets (+0.8%), COVID-19 (+0.02%).
- Fails safe everywhere else: in fields where it hasn't proven itself it hands back the crowd's answer automatically, so it never makes them worse.
- Exactly reproducible: re-running the original training code with these weights reproduces every graded answer.
What we learned since (30 Oct 2026 experiments)
Three matched tests on one H200, each with three paired seeds and the hidden final weeks never opened:
- Learning to warn doesn't hurt forecasts. Training with and without warnings gave the same forecast quality (difference −0.3%, 90% interval −1.7% to +1.1%, 19 weeks, 2,055 paired outcomes).
- The limit is the inputs, not model size. Stronger anti-memorising settings changed nothing; a model half the size memorised far less and did as well on unseen weeks (about 5% better than the reference).
- Forecasters' past misses help a little, unevenly. Adding each forecaster's last 8 misses (only answers known at forecast time) cut error on unseen weeks by 1.0% (interval +0.1% to +2.6%), mostly from one seed.
What's next
- Richer forecast-time information from Offdiagonal, our data layer: how far apart independent forecasters are, how old each forecast is, and how wide the spread is against past swings.
- Multiple choice trained on real outcomes: 629 resolved Manifold questions (snapshot v6.37).
- Zeno30 warnings trained on 65 forecasts with officially checked answers (6 questions).
- Wider ranges for COVID-19 and RSV, where outcomes fell past the edge too often.
- Scheduled re-scoring as unseen weeks arrive: sea from 30 Nov, energy 7 Dec, weather 14 Dec 2026.
Scope
Early-stage research model with limited data. Not yet proven: better than the reference on fresh weeks in every field, linked events, multiple choice and measured warnings. Crypto, the Philadelphia Fed survey and cross-venue markets currently use the reference answer; ECB, energy, sea and weather need more unseen test weeks. Flu, Numinous, rivers and notflat are not trained yet. Full scores: v0894-release-report.json, addenda 1 and 2.