file2markdown × Jev: your converter now checks its own work
TypeSafe's Jev reads the PDFs you convert, flags unreadable text, split sentences and broken tables, and is not allowed to write a single word.

3 min read.
Last month one of our readers dropped a long conference paper into file2markdown, copied the result into NotebookLM and asked for the main findings. The answer came back oddly hesitant. When she scrolled through the Markdown she saw why: two of the tables had lost their columns, and one paragraph in the methods section read like someone had shaken the letters loose.
The conversion had "worked". The tool said nothing. She found out from the AI's confusion, twenty minutes later.
That is the problem we fixed this week, together with a new kind of AI model: Jev, built by TypeSafe.
What goes wrong, quietly
Most PDF damage is invisible at a glance. Three patterns cause almost all of it:
Unreadable text. A font the PDF never embedded properly, and suddenly "financial report" comes out as "finan?ial rep?rt". Scanned pages that were OCR'd in a hurry do the same thing.
Sentences chopped at the line end. Old layouts store each printed line separately, so a paragraph arrives as a stack of short lines that end mid-thought. Humans read past it. AI tools treat every line break as meaningful and lose the thread.
Tables that fell apart. A row is missing a cell, or the separator line never made it, and what was a clean grid becomes a heap of numbers.
None of these throw an error. The file converts. You get a tick. You move on.
What we built with Jev
Every conversion now comes back with a short output-health note under the file name. If it spotted something, it names the problem and, where it can, the lines to look at: "A table's rows or columns look broken (lines 40–61)." If it found nothing, it says exactly that: the checks found no obvious problems in the converted text.
The basic checks run on our own servers, for every file, every time: undecodable characters, tables whose rows don't line up, a page header repeated fifty times, a page the OCR engine cut short. Useful, but mechanical. A rule cannot tell that a paragraph reads like scrambled letters.
That is where Jev comes in. Jev is what TypeSafe calls a System One model. Instead of writing text, it reads what you give it and answers precise yes-or-no questions with a probability. Tick "Also run an AI quality check on the converted text" on a PDF, and a few excerpts of the converted Markdown go to Jev with three questions per excerpt. Is this passage unreadable? Are these sentences split across lines? Does this table look broken? Jev answers in numbers. Our code decides what you see.
Before switching it on, we ran it against files we had broken on purpose and against healthy documents in several languages, plus code, formulas and forms, and set the thresholds from what we saw. It is the first time a piece of file2markdown has used a model that judges instead of generates, and it will not be the last. The full build notes, including what the feature deliberately does not claim, are on the blog: file2markdown now checks its own output.
Why a model that cannot write
We could have asked a chat model to "clean this up". We didn't, on purpose.
A model that rewrites text can also change it. A number, a name, a clause in a contract. That is not a risk you should take on a document you plan to rely on. Jev cannot make that mistake, because it does not generate text at all. It judges; it never edits. Every character you download still came from your file. That single property is why we chose TypeSafe over bolting a chatbot onto the converter.
Two more rules, because they matter to the people who read this newsletter:
It is off unless you ask. The checkbox is unticked every time. Your original file is never sent anywhere new; only excerpts of the converted text go to TypeSafe, and only when you tick the box. TypeSafe states it does not train on customer API data, and our privacy page now describes the whole path in plain words.
It never claims more than it knows. The checks look at the output, not at your source. They cannot tell you a page went missing or a figure changed. So you will never see a "98% quality" badge. You will see what was checked, what was found, and one sentence reminding you what wasn't.
How to use it this week
Step 1: Read the note before you copy
Convert as usual and read the line under the file name before you paste anything into Claude, NotebookLM or your notes. Thirty seconds, and it saves the twenty minutes our reader lost.
Step 2: Tick the Jev check on the PDFs you care about
Long papers, scanned contracts, anything with tables. If Jev flags a passage, open the original at that spot and decide for yourself. It costs you nothing extra and it is off by default, so nothing changes unless you want it to.
Step 3: Tell us when a warning is wrong
Reply to this email with the file type and what the note said. Every false alarm we hear about tightens the checks for everyone, and every real catch tells us which documents to look at next.
The next step, once we have watched these warnings for a couple of weeks, is a one-click "re-extract this PDF with OCR" for the cases where the text layer itself is the problem. The original output stays; you get to compare.
Try it on the last PDF that gave your AI a headache:
Robin
P.S. Next issue, in two weeks: a three-folder Obsidian setup for keeping converted discovery documents searchable without leaking client names into any AI. Specific, with screenshots, no code.
What kind of work are you trying to make AI useful on? |