Dopp vs Jev
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
| Jev | Dopp | |
|---|---|---|
| What answers | TypeSafe's hosted model | Jev, or your own model, or both |
| Price per request | Jev's price, forever | Jev's price at first; a fraction once your model answers |
| Latency | Round trip to Jev | Round trip to your model, or 0 ms in the browser |
| Your data | Sent, not kept | Every request recorded as training data |
| Training | None | One button; price and time shown first |
| Measuring | None | Held-out agreement per answer; live agreement on traffic |
| Runs in the browser | No | Yes, every trained version |
| Lock-in | Their model | An open model you can download |
| Integration | Their URL and key | Change the URL; same request body |
When to just use Jev
- Your volume is small and the bill doesn't matter.
- Your requests change shape every week and never repeat.
- You don't want to think about models at all, ever.
When to put Dopp in front of it
- Jev is a real line on your bill and the requests repeat.
- Latency matters: a chat gate, a per-keystroke check, a moderation step.
- The data can't leave your users' devices: PII, health, legal.
- You want a model you own and can take with you.
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
- Create a model in Dopp and copy its key.
- In your app, change Jev's URL to Dopp's. Same body, same questions.
- 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.