Dopp vs simple-jev and RFDT
simple-jev is an open-source server that answers Jev-style typed questions using open Hugging Face models by reading answer-token scores. RFDT is its training script for fine-tuning those models on labelled examples. Dopp is a hosted product that captures your traffic, labels it with the decision API you already use (Jev, for example), trains a small model in one click, measures it, and routes between it and Jev.
How is Dopp different?
Same last mile, different first ten. Both end with "a small model fine-tuned on labelled examples of your decisions". RFDT starts there: you bring the examples, the labels, and a GPU. Dopp starts at your URL and produces the examples and labels from your live traffic.
A product, not a recipe. simple-jev gives you scripts and a server to run. Dopp gives you a request log, a Train button with a price on it, a held-out number, a routing switch, and a browser copy.
The teacher stays in the loop. Dopp uses whatever decision API you run today as the teacher and the fallback and measures your model against it on real traffic. That can be simple-jev itself. RFDT can call a teacher during data preparation; after that you're on your own.
Side by side
| simple-jev + RFDT | Dopp | |
|---|---|---|
| What it is | Open-source server and training scripts | Hosted product |
| Examples | You bring them | Captured from live traffic; plus paste, datasets, generated |
| Labels | You bring them, or script a teacher | Jev, automatically; overridable |
| Training | torchrun on a GPU you provision | One button, our GPUs, price shown first |
| Measuring | Metrics printed by the script | Held-out agreement per answer; live agreement on traffic |
| Routing | None | Jev / compare / model with fallback / model only |
| Serving | Their server on your host | Hosted per version, or in the browser |
| Base models | Any HF decoder (Qwen, Gemma) | Laya (small encoder); more bases as needed |
| License / cost | Apache 2.0; your infra | Metered; see the credits line |
| Who it's for | ML engineers who want the recipe | Product engineers who want the result |
When simple-jev and RFDT are the better choice
- You have an ML engineer, a GPU, and a labelled dataset already.
- You want a decoder model with a long context and full control of the training loop.
- You'd rather run everything on your own infrastructure.
When Dopp is the better choice
- You have traffic but no dataset and nobody to build the pipeline.
- You want to know, in one number, whether the model is good enough before you switch.
- You want the browser copy, the routing switch, and the meter without building them.
What simple-jev does better
It's open source, it runs anywhere, and it supports bigger decoder models with longer contexts than the small encoder Dopp trains by default. If you outgrow Laya's shape limits, their recipe is a good place to go, and it's one we can add as a base.
Pricing
simple-jev is free software; you pay for the GPU and the engineer. Dopp meters Jev's labels, training minutes and serving, shown before each step; the browser copy serves for free.
Switch in three steps
- Point your app at Dopp's URL; Jev answers meanwhile.
- Train when the button lights up.
- Compare, then route. Export the model if you want to run it yourself.
Questions
Is Dopp open source?
The model you train is an open model you can download. The product isn't.
Can I run the trained model with simple-jev?
The Laya checkpoint runs with Laya's runtime, which simple-jev also supports as a backend.
Can simple-jev be the API behind Dopp?
Yes. Any Jev-compatible endpoint can be the teacher and the fallback; simple-jev on your own host is one of them.
Can Dopp train RFDT-style decoder models?
It's on the list as a base option; today's default is Laya.
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.