How GeekLink Uses Jev to Check AI-Translated Subtitles

By Flora Wang, video localization specialist · Updated September 22, 2026 · 8 min read

TL;DR: GeekLink now runs a Jev quality check after AI subtitle translation. Jev receives the source and translated text for each subtitle cue, makes a typed review decision, and flags lines that may contain an omission, a changed number, a wrong name, a flipped negation, or another meaning-changing error. It does not rewrite the subtitle or silently claim that the translation is perfect. The editor gets a smaller, visible review set before export.

Translation can succeed structurally and still be wrong

There are two different classes of failures in an AI subtitle workflow.

The first is structural: a response is not valid JSON, a subtitle ID is missing, a line is duplicated, or an empty translation leaves a gap in the output. GeekLink addresses that class with stable subtitle IDs, structured output where supported, and application-level validation. We described that part of the pipeline in our earlier article about structured subtitle translation.

The second class is semantic. The response can be perfectly valid JSON and still be wrong. A translation may drop not, change “three days” to “five days,” replace a person’s name, or preserve only half of a sentence. Nothing in a JSON parser can detect those errors. A subtitle editor still needs a way to identify the lines worth checking.

That is the reason for adding a separate post-translation check. Translation and verification are related jobs, but they are not the same job. The translator produces the target text. The checker compares the target text with the source and asks whether the meaning appears to have been preserved.

What Jev adds to the workflow

Jev is a recent decision model from TypeSafe. Instead of generating a paragraph of prose, it answers typed questions and returns a decision with a probability or confidence value. OpenRouter describes Jev as a structured decision model for classification, routing, and other software-controlled decisions; its current model page lists both Jev 1.13 and a Jev Latest alias. See OpenRouter's Typesafe model page and TypeSafe's introduction to Jev.

That output shape fits a subtitle QC task unusually well. We do not need Jev to write a replacement translation. We need one narrow answer for each subtitle cue: does this source/translation pair need human review?

For reproducibility, GeekLink's current production route is pinned to the tested Jev 1.13 endpoint through OpenRouter's Decisions API. OpenRouter also exposes Jev Latest as an alias that redirects to the newest model in the Jev family. We use the exact deployed version in this article rather than calling an unpinned alias “latest” without qualification.

The post-translation QC pipeline

1. The translation finishes first

GeekLink completes the normal subtitle translation workflow and keeps the original subtitle positions and timecodes in the application. Jev is not inserted into the translation request, and it never receives permission to rewrite the SRT timing.

2. A free deterministic pass runs before Jev

Some failures do not require an AI judge. Before sending anything to Jev, GeekLink checks for empty translations, missing or duplicate IDs, mismatched source and target counts, and other basic pairing problems. These checks are faster, cost nothing, and identify output that needs repair rather than semantic review.

3. Jev reviews the complete source/target pairs

For the semantic pass, GeekLink sends the source line and its translated line together. It does not pre-filter English and German, or other Latin-script language pairs, by looking for shared characters. Shared alphabets make that kind of shortcut unreliable. Every eligible non-empty pair is given to Jev in a bounded batch.

Each cue is represented as a narrow yes-or-no decision: should this translation be reviewed? Jev returns a typed answer rather than a generated explanation or a second translation. GeekLink applies the review threshold, records the result against the original subtitle position, and continues the job even if an individual QC request fails.

4. The result is attached to the translated subtitle

The QC result is stored with the target subtitle output. When the subtitle is opened in GeekLink's editor, lines found by the deterministic checks and lines flagged by Jev can be shown as different review states. Editing or replacing the translation invalidates the old QC result for that line, so a stale warning is not treated as a current verdict.

What the check can catch

Our first Jev subtitle check is aimed at errors that are easy for a fluent reader to recognize but difficult to catch in a long export by scanning every line:

  • Omission: the source contains two ideas but the translation keeps only one.
  • Negation changes: a “not,” “never,” or similar meaning is lost or added.
  • Numbers and dates: quantities, years, durations, or percentages change.
  • Named entities: a person, place, product, or title is replaced or dropped.
  • Meaning drift: the target sentence is fluent but no longer says what the source says.
  • Suspiciously incomplete lines: a translation ends before the source meaning is complete.

This is not a promise that Jev will identify every error. It is a prioritization layer: instead of treating every subtitle line as equally risky, the editor can start with the lines that the checker considers worth a closer look.

Why Jev flags instead of rewriting

It may seem more convenient to send a flagged line back to a translation model automatically. In practice, that can make the workflow less trustworthy. A single subtitle often depends on surrounding dialogue, names, speaker intent, or a terminology decision made earlier in the file. Sending only the failed line back without that context can produce a different mistake, while also spending another translation request.

GeekLink therefore separates detection from correction. Jev marks a line as worth checking; the editor remains responsible for the final wording. This makes a warning visible without silently replacing a translation the user may have deliberately edited.

The same principle applies when Jev is unavailable. A timeout, rate limit, or upstream failure does not erase a completed translation. GeekLink keeps the translation, records that the semantic QC pass was incomplete, and lets the user decide whether to review the file manually.

What this does not guarantee

Jev is a decision layer, not a source of linguistic ground truth. A typed answer prevents response-format ambiguity, but it does not make a difficult cultural reference unambiguous. A checker can miss a subtle error, or flag a line that is acceptable because the translator made a deliberate adaptation.

Human review remains important for humor, dialect, specialist terminology, song lyrics, proper-name conventions, and any content where the intended meaning depends on the video rather than the subtitle text alone. The product goal is narrower and more practical: make review visible, local, and cheaper than rereading an entire translated file.

That is also why we do not describe Jev as an automatic “translation repair” step. The output is a review signal. The user still makes the final decision.

The workflow is open source

We are also publishing a standalone command-line implementation of this workflow: GeekLink Jev Subtitle Translator. It accepts an SRT file, sends translation requests through an OpenRouter-compatible model, runs deterministic checks, and then writes a line-level Jev quality-control report. It can also check an existing source-and-translation pair without translating it again.

The repository is released under the GPL-3.0-or-later license so other developers can inspect the approach, reproduce subtitle failure cases, contribute provider-compatibility reports, and build their own workflows around the same separation between translation and review. The open-source project is a standalone tool rather than a copy of the GeekLink desktop application, but it makes the core QC idea usable outside GeekLink.

The public repository currently defaults to the tested typesafe/jev-1.13 model, while allowing the Jev model to be selected explicitly. That keeps the example reproducible while leaving room for newer Jev versions and other decision providers as the ecosystem develops.

FAQ

Does Jev translate the subtitles?

No. The translation model creates the target subtitle. Jev receives the source and target pair and decides whether the line should be reviewed.

What is the difference between structured output and Jev QC?

Structured output protects the shape and mapping of the translation response. Jev checks whether the completed translation appears to preserve the source meaning. They address different failure modes.

Will Jev automatically rewrite a line it flags?

No. GeekLink marks the line for review and leaves the final correction to the user. This avoids silently replacing a translation and avoids a context-free retry that may introduce another error.

Does Jev change subtitle timing?

No. The original subtitle positions and timecodes remain in the subtitle pipeline. Jev only reviews the source and translated text.

Does Jev guarantee that no translation errors remain?

No. It is a prioritization and review signal, not a proof of correctness. Human review is still valuable for names, idioms, specialist language, and context that is not present in a single subtitle cue.

Disclosure: GeekLink is our own product. This article describes the current post-translation QC workflow. Jev model names, endpoints, pricing, and provider behavior can change; the linked OpenRouter and TypeSafe pages are the sources of truth for current availability.

Make subtitle review smaller and more visible

GeekLink translates subtitle batches, checks the completed pairs with Jev, and highlights the lines that deserve a closer look before export.

Explore GeekLink Subtitle Translation