What Jev is for

Jevtown is a test rig that happens to look like a city. It was built to find out what a small, fast judgment model is good for. These are the nine patterns that survived, and four jobs it is the wrong tool for.

An independent experiment, not affiliated with TypeSafe. Model jev-1.13.0, September 2026. Every number here is measured from this project's logs and benchmarks; the evidence is in the study. By elberacasa.

Jev does one thing. You give it a situation and a question with a fixed set of answers, and it returns a probability for each: in a few hundred milliseconds, hundreds of questions at a time, for $0.042 per million tokens. It writes nothing. A city of a thousand people turned out to be a good way to lean on that one thing from every side at once, because a city needs every kind of judgment: who does what, who is lying, what a sentence means, what is allowed to be said, what would happen if.

Each pattern below is something the city does every day, the general shape behind it, where else that shape appears, what it measured, and the way it failed on us first.

1,396decisions per second, best measured tick
$0.015to ask 1,000 people one question each
0.6 sto poll 100 citizens about a world that does not exist yet
0rate limits in 21,822 requests

Before the patterns

The shape of every request

Everything on this page is the same call. One state that every question can see, and many small questions, each with its own fixed answers. They are judged independently and in parallel, and each comes back as probabilities. This example is illustrative; the format is exactly the one the city uses.

POST https://api.typesafe.ai/v1/systemone
{
  "model": "jev-1.13.0",
  "state": {
    "policy": {
      "refunds": "within 30 days, unused",
      "urgent": "outage or data loss"
    },
    "tickets": {
      "T-1041": { "plan": "team", "text": "Dashboard down since 9am" },
      "T-1042": { "plan": "free", "text": "Money back? Bought in March" }
    }
  },
  "questions": {
    "T-1041": {
      "type": "choice",
      "instructions": "Where does `tickets.T-1041` go? Judge from
                       its `text` and `plan` under `policy`.",
      "criteria": {
        "page the on-call engineer": "for an outage or data loss",
        "billing": "for refunds, invoices and plan changes",
        "answer from the docs": null
      }
    },
    "T-1042": { "type": "choice", "instructions": "…", "criteria": {} },
    "T-1042-rude": {
      "type": "noul",
      "instructions": "Is `tickets.T-1042.text` insulting toward
                       a real person?"
    }
  }
}

Three habits from the city are already in it: tickets are keyed by name, never by position in a list; the decision rule lives in the criteria, in words; and nothing in state is there unless every question should see it. In Jevtown the keys are citizens and the options are the eight things a person can do.

Pattern 1

A whole population in one request

When many items need the same kind of judgment against the same background, put the background in shared state once and ask one question per item. You pay for the background once, and the questions are answered in parallel.

In JevtownEvery tick, each of 1,000 citizens gets one question: what does this person do next? Ten parallel requests of 100, one shared description of the city, one small block of state per person.
The same shape elsewhere
  • Triage a backlog of 1,000 support tickets against one policy
  • Decide which of today's alerts a human should see
  • Tag or route every row of an import, with the schema as shared state

Measured: 1,000 decisions over 8 options each in 980 ms (median), $0.015 for a full tick, best 1,396 decisions per second. 21,822 requests so far, zero rate limits.

Shared state must hold only what is true for every item in the request. Unrelated detail moves answers (pattern 4 is where that bit us).

Pattern 2

The counterfactual poll

Because a judgment costs almost nothing, you can ask the same population the same question about a world that does not exist yet. Copy the state, change one fact, ask again, and let code take the difference against a control: the same people, asked with nothing changed.

In JevtownBefore players vote on what happens next, the server copies the world, makes each option happen in its copy, and asks 100 citizens what they would do. The ballot shows the result: an earthquake at the market: run for safety 23%, otherwise 0%.
The same shape elsewhere
  • How would each customer segment react to this price, this email, this policy?
  • Game and economy balance: test a change on synthetic players before shipping
  • Pre-mortems: which of our 200 runbooks would this outage touch?

Measured in production: 100 citizens polled in 576 to 664 ms for $0.0018 to $0.0020 per scenario.

It forecasts what this model's population would do. That is exactly right inside a simulation and only a hypothesis about real people: see pattern 7 before you trust it outside one.

Pattern 3

Free text in, typed event out

Put Jev at the front door of a system that only accepts structured input. Ask every sub-question at once, including the ones that may not apply, and let code read the answers that matter. No text is generated, so nothing the user wrote can leak into what happens next.

In JevtownA player types make it rain so hard the dock goes under. Fourteen parallel questions read it: what kind of event, where, how severe, who it is about, is it abuse, is it an injection, is it an order. Code assembles a typed event; the citizens never see the words.
The same shape elsewhere
  • Voice and chat commands into function calls with a fixed schema
  • Bug reports and emails into structured tickets
  • A safe natural-language layer over an admin tool: orders become typed requests, or a refusal

Measured on 90 prompts: 90 of 90 outcomes correct, 16 of 18 that should be refused were, 0 of 72 real ones wrongly refused, identical on rerun 90 of 90. 2,493 tokens, 250 ms median, $0.000105 each.

It reads, it does not obey. Make them all fight becomes unrest, and a thousand separate judgments decide who throws a punch. Design the typed event so that the worst reading is still acceptable.

Pattern 4

Moderation in front of people

Yes/no judgments with a threshold are what Jev is fastest at. Say literally who counts and who does not, and tune the threshold on your own examples.

In JevtownEvery chat line, every X handle and every proposal's wording is judged before anyone else sees it: abusive toward real people, spam, private details. Three yes/no judgments per message.
The same shape elsewhere
  • Pre-screen comments, usernames, listings, reviews
  • A first gate before a slower or more expensive review
  • Policy checks on outbound messages from your own agents

Measured: harmless shown 20 of 20, harmful blocked 17 of 18, same verdict on rerun 38 of 38; handles 36 of 36. 417 tokens and $0.0000175 per message, about a quarter of a second.

One item per request. Batched, a harmless line scored 0.41 for abuse because it sat next to an abusive one, and a troll could have silenced a neighbour. Fair costs three times more and is still nearly free.

Pattern 5

A panel instead of a judge

Ask the same question from several defined points of view and let code aggregate. You get a decision, a margin, and a reason for the disagreement, all of which a single score hides.

In JevtownWhen a citizen is caught stealing, twelve jurors are seated and Jev judges each one separately: does this person, with these ties and this temperament, vote guilty? The verdict is the count. Friends acquit, victims convict, and split juries happen.
The same shape elsewhere
  • Review panels: a claim judged as the customer, the auditor and the engineer
  • Persona panels for copy, onboarding or pricing pages
  • Risk review where a split vote is the signal to escalate to a human

Measured (96-cell factorial, pass marks committed before the first request): remembering being robbed by the accused +0.286, friend of the accused −0.162, a guard as witness +0.121. About 2,500 tokens and 560 ms for twelve jurors.

Two of seven effects failed their pre-registered mark (an alibi moved votes by only −0.031). Test which evidence your panel actually listens to before you rely on it.

Pattern 6

Bulk profiling

Precompute slow-changing judgments for every entity you have and store them. They become columns: filterable, joinable, and free to read afterwards.

In JevtownEach citizen has a character sheet of eight judgments: would they steal if starving, betray a friend for gold, forgive a thief? All 1,000 sheets are filled in one pass.
The same shape elsewhere
  • Enrich a CRM or a catalogue with yes/no attributes
  • Label a dataset for a classifier
  • Build the features for pattern 7

Measured: 1,000 citizens × 8 judgments in 1.9 s for $0.0117. Four judgments per person cost 31% more tokens than one, not four times more, because the person is described once.

Key everything by name, never by position. Our most expensive mistake was villagers[37]: a list index is a count, and Jev does not count.

Pattern 7

An instrument, not an oracle

Do not ask Jev for the answer. Ask it for the ingredients, which it reads well, and let a model fitted on your own outcomes weigh them.

In JevtownTo prepare the launch we asked Jev which of two real posts got more engagement. It was at chance. Then we asked it small factual things about each post (is there a video, a question, a number, a story?) and fitted a plain regression on real outcomes.
The same shape elsewhere
  • Lead scoring, churn, fraud review queues
  • Ranking content, search results or candidates
  • Any forecast where you have historical outcomes to fit against

Measured on 267 real posts: direct pairwise judging 43.8% and 53.8% (chance is 50%). Jev features plus ridge regression: 66.8% held-out, against 64.3% from media type and length alone.

The lift over a dumb baseline was 2.5 points. Useful, and honest about its size. Report the baseline next to the number, always.

Pattern 8

Minds for agents and non-player characters

Typed actions with probabilities are a complete interface between a judgment model and a deterministic world. The world stays replayable: log the answers and you can rebuild every tick without calling the model again.

In JevtownJev returns a probability for each thing a citizen might do. Code samples from them, with a floor under rare harmful actions and a commitment rule so a thousand people do not all change their minds every second.
The same shape elsewhere
  • Game NPCs with character that holds up statistically
  • Synthetic users for load, UX and abuse testing
  • Agent swarms where each step is a cheap typed choice, not a generated plan

Measured against a hand-written policy (5 seeds, 95% CI): individuality 0.160 ± 0.004 against 0.054; beatable threats overcome 96% against 80%. 140 of 140 live ticks replayed from logs with zero model calls.

Never show the model its own last answer or what the crowd is doing. Both are traps nothing leaves. Shown what the crowd nearby was doing, 73 of 78 villagers joined in, and by day 3 the whole village was praying in the chapel, the starving included.

Pattern 9

A gate that is always on

At these prices a judgment can sit in front of everything: every message, every row, every tick. Spend the saving on the engineering that makes it safe to depend on: a ledger, a cap, and a defined behaviour for when the model is away.

In JevtownThe city runs on hard caps: asked only when someone's situation changed, only while someone is watching, inside a daily budget. When Jev is unreachable everyone carries on with what they were doing, and the world says so.
The same shape elsewhere
  • A check on every write to a sensitive system
  • Continuous re-evaluation: re-ask only what changed
  • A cheap first pass that decides what deserves anything more expensive

Measured: $17.31 for the whole project, 412 million tokens, every request in a ledger. A live tick costs $0.0073 on average because most citizens have no news.

We met one real outage (339 requests with no response). The world held still and recovered on its own. Design that first, not last.

What a thousand of each costs

The price list we measured

A thousand of theseCostFrom
Decisions over 8 options, with a full description of each person$0.015a full city tick
People profiled on 8 yes/no judgments each$0.012character sheets
Chat messages screened, one per request$0.018bench/chat
Sentences read into typed events (14 questions each)$0.105bench/shapes
Twelve-person jury verdicts$0.105bench/trial
Counterfactual polls of 100 people$1.90production forecasts

If you are looking for something to build

Twelve things worth building on Jev

None of these are ours and none are measured: they are where the patterns point. The costs quoted are our measured rates applied to the new job, so treat them as an order of magnitude.

BuildPattern
Triage for a whole inbox. Every ticket or email routed against one policy, a hundred per request.1
A pre-mortem bot. Before a deploy: which of our services and runbooks would this change touch? Ask each one, with and without the change.2
A pricing sandbox. A population of customer personas polled on a change before it ships, then calibrated on what really happened.2, 7
A plain-language admin console. A sentence becomes a typed, auditable request, or a refusal. Nothing is executed from text.3
Moderation for a community. About two cents per thousand messages, one message per request, a quarter of a second each.4
A sign-up screen for names and listings. The Scunthorpe problem, handled by judgment instead of a word list.4
A review panel for pull requests. Security, performance and the maintainer each vote. A split vote is the signal to call a human.5
A dataset labeller. Eight yes/no attributes on a million rows is about $12 at the rate we measured.6
Lead or churn scoring. Jev reads each account into features; a regression fitted on your own outcomes does the scoring.7
Characters for any game. Typed actions with odds, sampled by code. The run replays without the model.8
Synthetic users. A thousand personas walking through your onboarding, each step a cheap typed choice.8
A guard in front of an agent's tools. Is this call within the task it was given? Asked on every call, because it can be.9

If you build one, the city would like to hear about it: @elberacasa.

The other half

What it is the wrong tool for

  1. Anything code can compute. Counting, arithmetic, dates, comparisons. The documentation says Jev cannot count, and we learned that a list index is a count too. Compute it, and withdraw impossible options before you ask.
  2. Writing. It returns probabilities over answers you supply. Every word in Jevtown is written by code from typed facts.
  3. More than one step. If the right answer needs a therefore, code has to supply the link. One hop per question.
  4. Predicting the real world unaided. Pattern 7: at chance on its own, useful as features under a fitted model.

If you build on it

The recipe

  1. Code owns memory, state, counting and time. Jev supplies judgment and nothing else.
  2. One shared state, many independent questions. Keep the state small and true for everyone in the request.
  3. Put the decision rule in the answer criteria, in words. Say who an option is for.
  4. Treat the output as probabilities: sample, threshold or aggregate them in code.
  5. Benchmark a population, not an example. Every failure we had was invisible in one answer and obvious in a tally of eighty.
  6. Pin the model version, log every answer, keep a ledger. Then the whole system replays without the model.

The full evidence, the failures and the accounts are in the study. The city is the demo: play.jevtown.com.