Decisions from your agent's state. One call, typed answers, a probability on each.
Send the state and the questions. Get back a choice, a score on your rubric, or a yes/no — each with a calibrated probability, none of it generated. On a model you can tune to your decisions and run where your data lives.
In development — the benchmark below is real; the Decide-1 model is in training and the figures shown for it are targets.
POST /v1/systemone
{
"model": "decide-1-latest",
"state": "Hi — I was charged twice for order A-104 last night.
I need the duplicate refunded today, this is the
second time this has happened.",
"questions": {
"department": { "type": "choice",
"instructions": "Which team should handle this?",
"criteria": { "billing": "Charges, invoices, refunds",
"technical": "The product does not work",
"sales": "Pricing, upgrades" } },
"frustration": { "type": "score",
"instructions": "How frustrated is the customer?",
"criteria": ["Calm", "Frustrated but civil", "Very angry"] },
"refund_requested": { "type": "noul",
"instructions": "The customer explicitly asks for a refund." }
}
}- departmentchoicebilling
- billing0.94
- technical0.04
- sales0.02
- frustrationscore1.3 / 2
- 0 · Calm0.06
- 1 · Frustrated but civil0.58
- 2 · Very angry0.36
- refund_requestednoulp = 0.97
- yes0.97
- no0.03
Every agent makes decisions. Almost none of them are typed.
Routing, triage, guardrails, grading, “is this done?” — today each is a prompt, a parse and a hope. A decision is not a paragraph.
Prompt, parse, retry
A frontier call and a JSON regex to route one ticket. Seconds of latency, cents per decision, and an apology wrapped around the answer.
No probability, no threshold
You cannot automate what you cannot trust. A chat model’s “confidence” is prose; a policy needs a number that means what it says.
Redefined on every request
The same three questions copy-pasted into four services, drifting. Nobody knows which version is authoritative.
Typed questions in. Calibrated answers out. Nothing generated.
Choice
Pick one option from a list you define — up to 255. A probability on every option, summing to 1, so your code can route on a threshold instead of a string.
Score
A position on an ordered rubric you wrote, one sentence per level. The answer is the expected level, so “between frustrated and angry” comes back as 1.4, not a forced rung.
Noul
Is this statement true of the state? A single calibrated probability. Batch twenty of them — a policy, a checklist, a guardrail — in one call.
Extract
The fields the questions referred to — amounts, dates, parties, clause spans — with offsets, from the same request. The one primitive Jev does not have.
We measured Jev against every open alternative. Here is the honest table.
Zero-shot, nothing open matches Jev. Fine-tuned on the workflow, an open encoder does — and it runs on four CPU cores where your data already is. Suite: typed-decisions, a public dataset of 4 workflows, 400 JSON states and 5 questions each.
| Model | Accuracy | Beats baseline | ECE untuned → after 1 temperature / type |
|---|---|---|---|
Decide-1target Metatext, tuned on the workflow — target | 0.730 | 18/20 | ≤ 0.02 |
Jev (TypeSafe) hosted, zero-shot — card publishes 0.727 | 0.726 | 18/20 | 0.079 → 0.020 |
Open encoder, fine-tuned in-domain laya-typed-decisions; 0.762 held-out after calibration | 0.714 | 18/20 | 0.161 → 0.016 |
Best open zero-shot gliner2-large-v1, one call per case | 0.486 | 9/20 | 0.300 → 0.029 |
NLI-head System One wfzyx/von-1.0 | 0.461 | 5/20 | 0.249 → 0.027 |
Open encoder, zero-shot convaiinnovations/laya — card publishes 0.362 | 0.343 | 2/20 | 0.196 → 0.020 |
Measured rows: same harness, same 2,000 decisions, same scoring code, 4 CPU cores, raw JSON public in the benchmark write-up. Decide-1 row: Target — the Metatext model is in training; figures are placeholders for design validation.
Every model, every suite, every question, with the published numbers beside ours: the System One benchmark. Full write-up and raw JSON: benchmark/results/RESULTS.md.
A few hundred of your decisions. A checkpoint that knows your domain, calibrated to it.
Zero-shot is the floor. The lever the benchmark found is the fine-tune, then the temperature — and both attach to the decision set you save.
Fine-tune on the target workflow
A few hundred labelled decisions from your traffic. On the public typed-decisions suite that step took an open encoder from 0.343 zero-shot to 0.714 — Jev scores 0.726.
One temperature per question type
Fitted on a held-out slice of your decisions. ECE 0.161 → 0.016 on the same suite, and held-out accuracy 0.712 → 0.762 because Score is an expected level and sharpening moves it.
- accuracy
- 0.343
- ECE
- 0.194
- accuracy
- 0.762
- ECE
- 0.016
Save the decision set. Version it. Call it from any service — or let your agent call it.
The hosted category makes you redefine every question on every request. Here the set lives server-side, versioned, and the fine-tune and the temperatures attach to it.
Define once, version it
ticket-triage@3: department, urgency, refund_requested, frustration. Update it in one place; every caller moves.
Your agent calls it directly
An MCP server, not a doc telling your agent how to write the call. decide(set: "ticket-triage", state: …) from Claude Code, Cursor or Codex, mid-task.
# Saved, versioned, called by name — from code or from an agent via MCP
r = client.decide(set="ticket-triage@3", state=ticket)
r["department"].choice # "billing"
r["department"].probabilities # {"billing": 0.94, "technical": 0.04, "sales": 0.02}
r["refund_requested"].noul # 0.97
r["frustration"].score # 1.3 (expected level on your 0–2 rubric)Where a typed decision replaces a prompt today.
Each one is a page with the questions, the thresholds people use, a code sample and something you can check.
- Jev alternativeA Jev alternative with the same request shape Metatext Decide is a System One decision model with TypeSafe Jev's request shape (state + typed questions → calibrated probabilities), on open weights you can fine-tune and self-host. Benchmarked against Jev on one harness.Read
- Claude Code routingPer-turn model routing for Claude Code and CodexUse Metatext Decide to classify each Claude Code or Codex turn (task kind, complexity, reasoning needed) in ~40 ms and route it to Haiku, Sonnet or Opus automatically — the jev-router pattern, on a model you can run yourself.Read
- Token reductionCut Claude Code token spendFour places a typed decision removes frontier tokens from a Claude Code session: model tier per turn, skill loading, tool-call gating and “is this done?” checks — with Metatext Decide on a model you can run locally.Read
- Agent guardrailsIs this action safe? A PreToolUse decision with a probability, not a prompt.Use Metatext Decide as a Claude Code PreToolUse / PostToolUse hook: batch yes/no checks (destructive, credentials, production, off-task) on every proposed command and block, confirm or allow on thresholds you set.Read
- Ticket triageTriage every ticket in one callThe classic System One workflow — department (choice), urgency and frustration (score), refund requested (noul) — with Metatext Decide, tuned on your own tickets so the routing matches your queues.Read
- LLM guardrailsGuardrails that return a probabilityBatch noul checks (jailbreak attempt, prompt injection, medical or legal advice, self-harm signals) and a 0–3 severity score on every input and output with Metatext Decide; pass, review or block on thresholds — self-hosted.Read
- RAG routingFilter retrieved passages before the generative call Per-passage noul checks (relevant? usable as evidence? contradicts the premise? an injection attempt?) with Metatext Decide, run in priority order before generation, plus a post-generation “is the answer supported?” check.Read
- Skill selectionWhich skill fits this request? Rank up to 255 options in one pass and load only when one clearly applies.Two-stage skill selection for Claude Code, Codex and custom agents with Metatext Decide: a choice over the whole roster, a noul “does anything apply?”, then a re-rank of the top three with full descriptions.Read
- Agent supervisionStop premature “done”A choice over five loop actions evaluated after each agent step with Metatext Decide — the supervisor pattern (Foreman, jev-mcp) that keeps a fast decision model over slower workers.Read
- CI & code reviewIs the migration reversible? Is an error swallowed? Does the PR description match the diff? Ask typed questions in CI.Run team conventions as noul questions over every diff with Metatext Decide: reversibility, swallowed errors, naming vs behaviour, description vs diff — plus CI-failure triage (which of 40 failures are real).Read
- Email triageSort an inbox with three typed questionsInbox triage with Metatext Decide: noul “needs a reply”, choice over topic, score for urgency; auto-file the rest and hand the LLM only what needs it, with topic and urgency pre-attached.Read
- Sales & SDRClassify every reply and score every lead Choice over closed reply categories (interested, not interested, wrong person, out of office, remove me, question) and a composite score across fit, size, pain and buying signal with Metatext Decide.Read
- Document checksAre the payment terms stated? Is there a damages cap? Batch the checklist and list what came back false.Batch 10–20 noul questions against a contract, invoice or policy document with Metatext Decide, and extract the fields (amounts, dates, parties) in the same call.Read
- Self-hostedRun the decision model where the data already is. Same request, same answers, your infrastructure.Metatext Decide as a container in your VPC or on-prem: the /v1/systemone endpoint, Apache-2.0 weights, tuned checkpoints, no data leaving. The option a hosted-only System One cannot offer.Read
Hosted by us, or the same container in your VPC.
Hosted, or the same container in your VPC
Data never has to leave. The image is the one we run; Enterprise ships the registry and the MCP server inside it.
Open weights underneath
Apache-2.0 models. No lock-in on the weights; the request shape is compatible with the category’s hosted API, so nothing is bespoke.
A base-URL change from Jev
POST /v1/systemone with the same state and questions. An existing integration moves in one line and can keep both endpoints.
Free to try. Priced for the sets you save and the model you tune.
Indicative only — nothing is on sale yet. These tiers are here so you can tell us whether the shape is right.
Free
$0/mo
Try the API and the demo presets.
- 5k decisions / month
- 3 saved decision sets
- Hosted only
- Benchmark harness and raw results
Team
$149/mo
For a team that ships decisions in production.
- 250k decisions / month
- Unlimited saved sets, versioned
- Per-member API keys
- MCP server for your agents
Tuned
from $990 one-off + Team
A checkpoint that knows your domain.
- Fine-tune on your labelled decisions
- One fitted temperature per question type
- Your accuracy and ECE, on your page
- Re-tune on request
Enterprise
Custom
Run it where the data lives.
- VPC / on-prem image
- Registry + MCP server in the image
- SSO, audit log
- Support for tuning in your environment
Get early access — and tell us which decision you'd hand over first
We're building Metatext Decide with the first teams that use it. Leave your email, answer as much as you like, and say yes to a short interview if you want a say in what ships.
- Early access to Decide as it opens up
- A 20-minute interview if you want one — research, not a pitch
- The benchmark harness and raw results, today
- No spam — early-access updates only
Questions
- Is Metatext Decide available today?
- No. The benchmark and its raw results are real and public; the Decide-1 model is in training, and the hosted API, registry and tuning are in development. Join the early-access list and we'll reach out as they open up.
- Is this Jev?
- No, and we are not affiliated with TypeSafe. It is the same request shape — state plus typed questions in, calibrated answers out — on a Metatext model, with open weights underneath, tuning on your decisions, and extraction in the same call.
- Does an open model match Jev?
- Not zero-shot, on any suite we have run: Jev leads by 0.24–0.35. Fine-tuned on the target workflow, an open encoder is within 0.012 of Jev on the public typed-decisions suite and ahead of it held-out after calibration. That is the product, and the numbers are on this page.
- What does “calibrated” mean here?
- That a 0.9 is right about nine times in ten. We measure it as expected calibration error (ECE) on held-out decisions; the target for a tuned checkpoint is ≤ 0.02, which is what the benchmark reached after one fitted temperature per question type.
- Can I self-host?
- Yes — that is the point. The same container we host runs in your VPC or on-prem; the models are 150M–450M parameters and run on CPU.
- Which models are underneath?
- Decide-1 is the Metatext model, in training. Today the benchmark runs GLiNER2 and LAYA checkpoints (Apache-2.0); the write-up lists every candidate we surveyed and measured.
- Is the pricing final?
- No. The tiers are indicative so you can tell us whether the shape is right — especially whether tuning is worth paying for. Early-access pricing will be set with the first teams.