Datagoat and Jev
Jev, from TypeSafe, is a System One model: send it state and typed questions, and it returns fast, typed answers with probabilities, with no history needed. Datagoat has the same shape (typed questions in, typed answers out, several questions in one call), but it answers from outcomes.
Jev reads what the case says. Datagoat reads what happened to cases like it.
When to use which
| Use Datagoat when | Use Jev when |
|---|---|
| You learn the outcome later (churned, converted, failed) | You have no history yet |
| The inputs are numbers, dates, counts or events | The input is mostly text |
| You must reproduce and explain each decision | The question changes from call to call |
| A wrong action costs real money | You need an answer at once, from day one |
| You need to know whether acting worked | A probability without reasons is enough |
| "Not enough evidence" is an acceptable answer | You don't need a signed record of each decision |
Most systems need both. Jev can turn what a case says into columns, and Datagoat can learn which of them, with your numbers, predicts what happens (Read, then learn).
The same words, mapped
| Jev | Datagoat | |
|---|---|---|
state (the input) |
the record and the cases |
Jev judges the input in front of it. Datagoat learns from a record of past cases, then answers about the cases you name. |
questions, keyed by id |
questions, keyed by id |
the same map; the answer returns under the same id |
instructions, criteria |
outcome_column (plus positive_values, outcome_is_desirable) |
a Datagoat question is defined by the outcome it learns |
Noul, noul (0 to 1) |
yesno, p (0 to 1) |
the chance the answer is yes |
Score: score (a number across the levels) and legend |
score: level (a level name) and p |
a level is cut from the chance, at points you set; there is no numeric score |
Choice: choice and probabilities (summing to 1) |
choice: choice and p per option |
each option's p is its own chance of the outcome, so they don't sum to 1; the pick depends on outcome_is_desirable and can be the least likely option |
| none | rank |
a whole record in order |
confidence (Score and Choice) |
the answer's state and quality |
Datagoat refuses before a weak answer reaches you |
answers, keyed by id |
answers, keyed by id |
plus reasons and a signed Verdict per answer |
usage (tokens) |
fits_run, billable_decisions |
what each call costs |
model (jev-1.13.0) |
core_hash |
the build that answered; Datagoat's numbers are identical for the same core_hash |
| Agent skill | datagoat-ask skill, MCP server |
In Jev, state is the input. In Datagoat, state is the answer's status: answered, refused or
not_yet.
Where they differ
| Jev | Datagoat | |
|---|---|---|
| Learns from | its training | your recorded outcomes |
| Same input twice | may differ slightly | identical numbers |
| Explains an answer | probabilities | up to four reasons per case |
| When unsure | a low confidence |
refused or not_yet, free |
| Proof | none | a signed Verdict anyone can verify |
| Charges | per input token | per answered case and per fit |
Jev facts from TypeSafe's documentation at docs.typesafe.ai, as of September 22, 2026.