Skip to content

Jev Freeform

An experiment that composes TypeSafe Jev Choice decisions into free-form text: every next character becomes one typed decision over 98 options, with branch backtracking and a final complete/incomplete check.

Stars
3
Language
JavaScript
Published by
Community
Author
kesku
Last verified
Oct 2026

kesku/jev-freeform

User repository on GitHub

View on GitHub

An observable raw-character chat experiment powered entirely by TypeSafe Jev Choice

Forks
0
Last pushed
Updated Sep 2026

Repo stats from the GitHub API, cached Oct 2026.

About this project

Can TypeSafe Jev Choice generate text through successive typed decisions? Well I tried it. Node.js 22+ and a TypeSafe API key. Jev can't generate text. It takes some state + a set of choices and returns a typed decision with probabilities over those choices. There are 95 printable ASCII characters, newline, tab, and EOS. 98 choices total. I ask Jev to judge continuations like: Each option is the entire reply prefix with exactly one character appended. The basic loop looks like this:

Quoted from the project's README. Read the full README.

Highlights

  • The choice set is 95 printable ASCII characters plus newline, tab and EOS, so every option is a reply prefix with exactly one character appended.
  • The default mode keeps several high-probability continuations and re-asks Jev which prefix can still become the best answer, backtracking out of a bad branch.
  • A greedy mode follows the selected character directly; the README says it gets stuck pretty easily.
  • Stopping is a typed decision too: Jev picks complete, incomplete or invalid, and only complete is treated as a finished reply.

Watch out

The author frames this as an experiment in whether Choice can be composed into text, not a usable chat client. The reply only exists because the controller stitches character decisions together, and the README states plainly that Jev never returns freeform text and that no tokenizer, dictionary or canned response sits behind it. Cost tracks output length, since every character is one decision, plus a second call whenever several branches survive and a final call to judge the ending. The search mode is what makes it work at all: a prefix like "I m" can lose to an earlier one and continue as "I am". Needs Node.js 22+, a TypeSafe API key, and it serves on 127.0.0.1:4177. Copy reviewed against the repository README on 2026-10-04, not from running it.

Questions about this entry

Short answers drawn from the linked project or page.

More Jev resources like this

23GitHub stars
Live race rig that labels 1,000 real app reviews with Jev typed questions against Gemini JSON output on identical batches, then replays recordings and re-ranks rows locally without extra model calls.
Jev Practices & Patterns#community#jevbest#catalog-import
Recorded experiments on how Jev reports probability rather than whether it predicts well. On a hidden fair die it picked an option with a mean reported probability of 82.9% while accuracy stayed at 19.0% over 400 trials, and Choice lost a stated 45% versus 55% distinction in an input document.
Jev Practices & Patterns#community#jevbest#catalog-import
An eval that puts Jev two questions about shadcn-ui/lint: whether each finding is a real rule violation, and whether the linter's message tells you what to change. It runs the real linter over 131 rule test cases and scores both the detections and the messages.
Jev Practices & Patterns#community#jevbest#catalog-import
0GitHub stars
A Japanese-language repository that continuously researches TypeSafe's Jev and System One models and organises the findings as Markdown slides, a presentation script and a standalone article.
Jev Practices & Patterns#community#jevbest#catalog-import
24GitHub stars
Unofficial laptop study of parallel constrained decoding: prefill once, share the KV cache across fields, and decide all schema fields in one batched forward pass without writing JSON.
Jev Practices & Patterns#community#jevbest#catalog-import
22GitHub stars
Offline evaluator that checks whether classifier confidences match reality and converts mistake costs into a deployable threshold, emitting an HTML report plus machine-readable threshold files.
Jev Practices & Patterns#community#jevbest#catalog-import

From the Jev guides

Original write-ups on what this entry is for.

Most Jev accuracy problems are state problems. What belongs in a state, what is a pre-made judgment to leave out, and why naming the slice you ask about matters more than the wording.
Jev Practices & Patterns#state#design#primitives
Read article
A Noul returns one number and no separate confidence. How to read the value, pin its boundary with criteria, split compound questions, and set a per-action threshold that matches the cost of being wrong.
Jev Practices & Patterns#noul#primitives#confidence
Read article
A Score is a weighted position, not a ruler. Why the number can land between levels, why levels are judged separately, and how to combine several atomic scores in code instead of one crowded rubric.
Jev Practices & Patterns#score#primitives#scoring
Read article
Back to all resources

From the Jev community

Posts from builders shipping with Jev right now.

Follow @typesafeai