Dopp

Dopp vs Jev

Dopp · 2026-09-24

Jev, by TypeSafe, is a hosted model that answers typed questions about any state. Dopp is a proxy that sits in front of Jev, or any Jev-compatible API, records every request, trains a small open model on them, and lets you route between the two.


How is Dopp different?

It's built on your API, not against it. Every request you send through Dopp still gets your current API's answer. That API is the teacher: its answers become the labels your model trains on, and the yardstick your model is measured against. Jev is the one this page compares against; simple-jev or your own Jev-compatible endpoint slot in the same way.

You end up owning a model. After a few hundred requests, one button trains a small open model on your own traffic. It's yours: download it, run it on our servers, or run it in the browser.

You choose who answers, per request. Jev, your model with Jev as backup when it's unsure, or your model alone. Change it any time; it applies to the next request.

Side by side

JevDopp
What answersTypeSafe's hosted modelJev, or your own model, or both
Price per requestJev's price, foreverJev's price at first; a fraction once your model answers
LatencyRound trip to JevRound trip to your model, or 0 ms in the browser
Your dataSent, not keptEvery request recorded as training data
TrainingNoneOne button; price and time shown first
MeasuringNoneHeld-out agreement per answer; live agreement on traffic
Runs in the browserNoYes, every trained version
Lock-inTheir modelAn open model you can download
IntegrationTheir URL and keyChange the URL; same request body

When to just use Jev

When to put Dopp in front of it

What Jev does better

Jev is a stronger model than anything you'll train on a few hundred examples. On a brand-new kind of request, Jev is right more often. That's why Dopp keeps Jev as the fallback and measures your model against it instead of pretending otherwise.

Pricing

You pay Jev's price for every request Jev answers, plus cents per training run and a meter for everything else you can see before you press a button. Once your model answers most requests, the Jev line shrinks to the requests it's unsure about.

Switch in three steps

  1. Create a model in Dopp and copy its key.
  2. In your app, change Jev's URL to Dopp's. Same body, same questions.
  3. Send traffic. Train when the button lights up. Flip the switch when the number looks right.

Questions

Do I have to stop using Jev?

No. Jev answers until you say otherwise and stays as the fallback after.

Does Dopp see my Jev key?

You can bring your own Jev key or use ours; either way it's stored encrypted and never shown again.

Will my model be as good as Jev?

On requests like the ones it trained on, close: 94% agreement on a per-word PII task after the first training. On new kinds of requests, Jev is better, which is why it stays in the loop.

Is this allowed by TypeSafe?

Dopp calls Jev the same way your app does, with a key you're entitled to use.

What Dopp is. Dopp is a drop-in proxy for any Jev-compatible decision API: TypeSafe's Jev, Kev, GLiNER, simple-jev, or your own endpoint that answers typed questions about a state. You change one URL; every request still gets your current API's answer and is recorded as training data. When you have enough, one button trains a small open model on your own requests, measures it against the API it learned from on requests it never saw, and lets you choose who answers: the API, your model with the API as backup, or your model alone, on our servers, or offline, even in your users' browsers.