Skip to content
MrJev

jeval

Measures how well a classifier's confidence matches reality and turns the cost of a mistake into the threshold where a human should take over.

View on GitHub →

Checked, not fully reviewed

Calibration reports and cost-based thresholds from labelled decision logs, offline. Checked, not fully reviewed: careful maths, on a scale Jev does not use.

Good for

  • Deciding where the machine should stop and a human should start, from what a mistake costs you
  • Catching a model change in CI: it keeps the model string the API actually answered with

Watch out for

  • Its choice thresholds are on the chosen option's probability, not on Jev's `confidence` field; since 31ebc7d the exported file says so
  • Useful only once you have labelled records; it says how many more each question needs

Tested Oct 10, 2026 at 61bdcccf9038 · Python 3.12 in Docker with no network; its 647 tests (2 skipped), its demo, and a Jev-shaped response log through `ingest --preset jev-native`; the threshold export re-checked at 31ebc7d on 2026-10-18

Checked, not fully reviewed. We ran its 647 tests (all pass, two skipped) and its demo inside a container with no network, and ingested a Jev-shaped response log. jeval makes no model calls at all, so neither did we.

You give it labelled decision records — one per question, with the model’s prediction, probabilities and the right answer. You get back one offline HTML report and a thresholds.yaml your app reads: how often a 0.9 is actually right, where confidence stops separating right answers from wrong ones, and, given a cost matrix, the threshold that minimises expected cost per action, with a 95% interval and the share it automates. It keeps the model string from each response, so jev-latest quietly becoming a new version shows up as drift. With too few labels it says so and plans how many more it needs. The demo’s report flagged wide intervals and said “more labels, not more analysis” would fix them.

One thing to know before you wire its output into a Jev app. jeval’s confidence for a choice is the top probability, and its thresholds are computed on that. Jev’s response field called confidence is a different number: (pmax − 1/n)/(1 − 1/n), as TypeSafe publishes. The jev-native ingest preset gets this right on the way in. A choice at 0.6/0.3/0.1, which Jev reports with confidence: 0.4, was stored as 0.6. But thresholds.yaml says only threshold: 0.84, and the natural line of app code is answer.confidence >= 0.84. On a four-option question that means a top probability of at least 0.88, so the app automates less than the report predicts. Compare the threshold with the largest value in probabilities instead. We reported it.

Fixed on 13 October (#12, 31ebc7d). We re-ran the demo and jeval threshold at that commit. Every action in thresholds.yaml now carries a comparison block naming the value to compare for each question type: the chosen option’s probability for a choice, max(p, 1 − p) for a noul, and the reported confidence for a score. The CLI prints the same rule when it writes the file. The numbers are unchanged. The README now explains why Jev’s choice confidence is a different scale, and that it has no single equivalent threshold when option counts vary. The fix is on GitHub. The PyPI package is still 0.1.0 from 20 September, so install from the repository to get it.

Apache-2.0, 22 stars, Python 3.10+.

See how it compares with other tools in Best Jev tools, tested hands-on.

Review updated Oct 18, 2026. Numbers quoted from the project are its author's own; we don't publish our own measurements of Jev.

More in Evaluation & Benchmarks

JevBench

★ 327▲ 16

fstandhartinger/jevbench

Benchmark for typed decision models across several suites, with confidence cascades and committees reported separately.

PythonReviewed

jev-align

★ 313▲ 2

sutro-sh/jev-align

CLI from Sutro that finds the examples a Jev function is least sure about, asks you to label them, and uses GEPA to improve the question.

PythonReviewed

PZ_Optimization

★ 157▲ 18

xD3I/PZ_Optimization

Performance work on a game, notable here for the harness: the arithmetic and the noise floors are computed in code, and Jev is asked only for the verdict on what the numbers mean. No licence file.

Java

Get new Jev projects every week

New Jev releases, pricing changes, and the best new projects, once a week. No spam; unsubscribe anytime.

Powered by Buttondown. See our privacy policy.