Skip to content
MrJev

Jevlike

Train a small model that scores a changing list of text options in one pass.

View on GitHub →

Hands-on review

A small, readable starter for training a one-pass option scorer on your own data. Trains in seconds on a CPU. A learning tool, not a Jev replacement.

Good for

  • Learning how a model can pick among options in one pass instead of generating text
  • Training a tiny, private classifier for a narrow task where you have labeled data
  • Experimenting on a laptop: the quickstart needs no GPU

Watch out for

  • You need your own labeled data, and real tasks are much harder than the synthetic demo
  • Its checkpoint loader trusts the file it's given, so only load checkpoints you made
  • No commits since the day it launched

Tested Sep 19, 2026 at 94f5fd1b0b11 · v0.1.0 on Python 3.12, CPU-only PyTorch in Docker (4 cores)

What it does

Jevlike is an independent starter for training a model with Jev’s input and output shape: a piece of text and a list of options go in, one probability per option comes out, from a single pass. The README is upfront that TypeSafe hasn’t published Jev’s design and that this is not a reproduction of it, just a small model with the same interface.

The architecture is simple and well explained. Each option becomes a query that attends over the context, a shared dot product turns each option-and-context pair into a score, and a softmax turns the scores into probabilities. By default the text encoder is learned from scratch at the byte level. Optionally you can plug in a frozen pretrained encoder from Hugging Face and train only the small scoring head on top. The same scoring head also drives the repository’s Doom and chess demos from image patches.

Setup

uv pip install -e '.[dev]'
jevlike-data synthetic --output data/synthetic
jevlike-train data/synthetic/train.jsonl --validation data/synthetic/validation.jsonl --output runs/synthetic.pt
jevlike-eval runs/synthetic.pt data/synthetic/test.jsonl

It needs Python 3.10+, NumPy, and PyTorch, and trains on CPU, Apple Silicon, or an NVIDIA GPU. Data is one JSON object per line with a context, a list of options, and the index of the correct one. The README’s advice on splitting your own data (keep related records in the same split so near-duplicates don’t leak into the test set) is exactly right.

Using it

We ran the full quickstart on a four-core CPU with no GPU.

  • Training took about 8 seconds on the generated synthetic menus.
  • Evaluation is thoughtful. Besides accuracy it reports calibration error and a shuffled-context control, which pairs each menu with the wrong context. On the synthetic test set our model picked the right option 99.75% of the time with low calibration error, against 22.75% for the shuffled control. That gap shows the model uses the context rather than guessing. The synthetic task is deliberately easy, though (find the option that matches the text), so don’t read it as a prediction for real data. The README’s own real-world example, next-click prediction on Wikipedia navigation data, is far harder, and the author reports much lower accuracy there, still well above the controls.
  • Prediction works as a one-liner. jevlike-predict takes a context and repeated --option flags and prints a probability for each.
  • Only one test ships with the library. It’s a smoke test that passed. The game examples have their own smoke tests, which we didn’t run because they need the Doom and chess extras.

Permissions and data

  • Everything is local. There are no API calls. Your training data stays on your machine, and the optional Hugging Face encoder is downloaded once.
  • Be careful with other people’s checkpoints. The library’s load_checkpoint calls PyTorch’s torch.load with weights_only=False, which will run code embedded in a malicious checkpoint file. The game examples load with the safer weights_only=True. We checked that a checkpoint produced by the quickstart loads fine with weights_only=True, because its config is a plain dictionary, so this looks like an easy fix. Until then, only load checkpoints you trained yourself.
  • Check your data’s terms. The Wikipedia navigation example downloads a public research dataset from Stanford SNAP and asks you to cite it and review its terms.

Maintenance

The project was published on September 16 in three commits and hasn’t changed since, with a couple of open issues. It’s credited to “Minimal Labs” and MIT licensed. Treat it as a reference implementation to learn from and adapt, not a maintained library.

Verdict

Jevlike is a very approachable way to understand the “choose, don’t generate” idea by building it yourself. It’s small enough to read in one sitting, trains in seconds on a laptop, and its evaluation habits (held-out splits, calibration, a shuffled control) are worth copying even if you never use the code. It isn’t a substitute for Jev: you need labeled data for every task, and a small model trained from scratch won’t have Jev’s general knowledge. Patch the checkpoint loader before loading anything you didn’t train.

For a larger open reproduction that uses pretrained language models, see SemIf. For a larger 0.6B-parameter model with an end-to-end training pipeline, see NanoJev. Our Jev alternatives guide compares these approaches with fine-tuned classifiers and LLMs.

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

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

More in Open Models & Reproductions

Laya

★ 35k▲ 521

NandhaKishorM/laya

Non-autoregressive decision engine over 100+ languages: three checkpoints and a router that detects the script and dispatches per request. Its benchmarks end with a limits section naming the datasets it does not generalise to and the headline figure that came from a training split.

PythonReviewed

kev

★ 9.8k▲ 215

jaredpalmer/kev

Jev-style decision models from 0.5B to 8B, built as LoRA adapters on Qwen and served behind a Jev-compatible /v1/systemone API.

PythonReviewed

SemIf

★ 4.9k▲ 35

TheoLeeCJ/SemIf-OpenJev

Jev-style decisions from a frozen 4B model on a single RTX 3090, with a browser demo. Formerly OpenJev.

PythonReviewed

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.