writing

The model that can't write a word, and that's the point

Last month I wrote here about reaching for the specialist tool instead of a language model, and letting the LLM be the glue. This is that argument with one specific tool on the bench. I spent two days testing it.

Jev is a classification model from TypeSafe AI, out since 15 September 2026. It has one trick, and the trick is that it does not write. You hand it some text and a question, and it hands back an answer picked from a list you defined, plus a probability. TypeSafe gives you two shapes: a Choice, where it picks one of several labels, and a Noul, a plain yes or no. Both come with a number attached. No paragraphs, no summaries, no rewrite. Just: which one, and how sure.

That number is the whole reason I bothered. Ask a chat model to sort an email and it gives you an answer, every time, with the same even confidence. Ask how sure it is and you get a sentence it wrote, not a measurement. Jev gives you the measurement. Which means you can build the one rule a chat model can’t honestly follow: send the answers it isn’t sure about to a person, and let it clear the rest on its own. The number is the design.

It’s also cheap enough that cost stops being a factor: $0.042 per million input tokens, and the output is free, because the output is a number. The launch got written up in a few places, and the vendor makes some large speed and accuracy claims. I haven’t verified those, so I’m leaving them out and telling you only what I measured myself.

The made-up test

I started with fake mail, on purpose, because I could plant traps in it.

Forty-two emails of the kind a small Croatian carpentry workshop gets: quote requests, billing questions, complaints, scheduling, spam, and a catch-all. Two questions each, which category and whether it’s urgent. I ran the whole set three ways: Croatian email with Croatian questions, Croatian email with English questions, and an English translation with English questions, to see whether the language of the question changed anything.

On category it scored 42 out of 42, in all three runs. The traps didn’t land. One phishing email used the word “račun”, which in Croatian means both an invoice and a bank account, in the bank-account sense, and it did not file it as billing. One email stated plainly that nothing about it was urgent, and it took the email at its word. One was a bare prompt-injection attempt telling the model to drop its instructions, and it dropped the injection instead.

Urgency is harder, and there it got 40 out of 42 in the Croatian run. The two it missed are the point: they came back at 0.52 and 0.57, right in the middle. It wasn’t confidently wrong, it was unsure, and it said so. So I added the rule the probability makes possible: anything from 0.3 to 0.7 goes to a human, plus one line of ordinary code saying spam is never urgent. Five of the 42 went to a person. Of the ones it cleared by itself, none were wrong. The whole thing runs at about three US cents per thousand emails.

I’ll be honest about why that looks so tidy. I wrote the emails and the sorting rules in the same sitting, so of course they agree. Short, clean, and built to be sorted. Real mail is none of those.

My actual inbox

So I pointed it at my own Gmail.

Forty-one emails from the last month or so. Roughly four in five were automated: receipts, newsletters, account notices, the usual sediment. The rest were real: client threads, a meeting invite, a friend messing around.

Before any of it left my laptop I pulled out everything sensitive: work under NDA, bank alerts, medical records, login codes, anything carrying an ID document. What was left I stripped and redacted, with names and addresses and phone numbers and IBANs and tax numbers gone and links removed. Bulk mail went in as nothing but its subject and preview line, real mail as plain text with the signatures cut. If you ever try this on client mail, that step comes first, not last.

Two questions again: which folder (work, personal, money, account, newsletter) and does this need me to do something. On folders it put 38 of 41 where I’d have put them, and the other three were close calls I can’t really argue with: two server alerts from a client project and an onboarding email, all filed as “account”. On the “do I need to act” question it got 39 of 41.

Those two misses taught me more than the 39 hits. Both were client forwards where the visible body was just a signature. The thing that actually needed doing was inside an attached Word file, and Jev never saw the attachment, because I never handed it one. The weak spot had nothing to do with Croatian, or tone, or the model’s reading of language. It was meaning that lived somewhere the model couldn’t see. That’s a problem with how I built the system, not with the model, and it’s the kind of thing you only ever find by running real mail through it.

Fast and nearly free

The speed and the price make this an easy call. The entire Gmail run was 25,245 input tokens and cost about a tenth of a US cent. Each email came back in a median of 280 milliseconds, 331 at the ninetieth percentile. That’s fast enough and cheap enough to run on every message the moment it arrives, which is the only version of this idea worth anything.

Where it actually fits

This is the toolbox argument from last time, made concrete. Jev is a specialist: a classifier that returns a calibrated number and nothing else, and the “nothing else” is why I’d put it in a loop and sleep at night. The language model still has work in this system, the glue work: reading the grey-band cases the classifier flags, and, if I’d built it properly, opening that Word attachment and pulling out the one sentence that mattered.

Where I’d point it next, and these are ideas rather than things I’ve shipped: routing a small business’s incoming mail to the right person and flagging what can’t wait; scoring every listing in a little bot I run that hunts for good buys on Vinted; sorting a year of receipts into business and personal before they reach the books. Each of those is a pick-one-from-a-list-with-a-probability problem, which is the only kind of problem this model has.

What I’d fix before trusting it further

The caveats are real, and I’d rather say them than have you find them. The samples are small, 42 and 41. The made-up set flatters the model by construction. And the answers I graded the Gmail run against are ones I went through by hand, for a single inbox, so read 39 of 41 as a rough figure, not a benchmark.

On data, if you’re weighing this for real client mail: TypeSafe has a data processing agreement, on EU standard contractual clauses under Irish law. The promise not to train on your data sits in the privacy policy, though, not in the agreement itself, and I couldn’t find a stated retention period or a processing region. Zero retention is enterprise-only. None of that rules it out, but it’s worth reading before you put someone else’s mail through it.

The test that would settle it is one I haven’t run: the same 41 emails through an ordinary small language model, Haiku or GPT-mini class, measuring accuracy, speed, cost, and whether the confidence it reports means anything at all. When I run that, it’ll be the honest version of this post.

If you’ve got a stack of mail, or listings, or documents that need sorting and the plan is to ask a chat model nicely, write to me. The first hour is me working out which parts are really a classification problem and which need a person.

work with the studio

Manual work that a system should be doing? Start a project.