Checked, not fully reviewed
Open 2B to 9B models that answer Jev-style questions about a photo and a record. Checked, not fully reviewed: it works on CPU, but takes minutes per request.
Good for
- Jev-style choice, yes/no and score questions about a photo checked against your own record, on your own hardware
- A model that can say it can't tell: every answer carries an `unknown` probability and an `abstained` flag
Watch out for
- Images sent through the official SDK are dropped without an error, so the answer ignores the photo; send them as an `image` form field, as the README does
- On a CPU a three-question request took over two minutes, and the 2B needs more than 6 GB in its default float32
- The server does not check the `Origin` header, so other pages in your browser can send it requests
Tested Oct 27, 2026 at 318e8dad55c1 · python:3.11-slim in Docker on 2 CPU cores and 6 GB, CPU PyTorch, no GPU; the released imajev-2b adapter (Hub e8cb9fc6) on Qwen3.5-2B (15852e8), loaded in bfloat16 through a small wrapper, with its calibration file; the official typesafe-sdk 0.7.5 as a client
Checked, not fully reviewed. We ran its test suite and served the released 2B on two CPU cores.
We sent it the README’s ticket example, its listing photo with two different records, a question the
photo cannot answer, a set of bad requests and the official Python SDK. We did not run the 4B or the
9B, the Mac (MLX) path, a GPU, the browser playground, the benchmarks or the training. No Jev calls.
The README’s leaderboard ranks and benchmark results are the author’s.
imajev fine-tunes Qwen3.5 with a LoRA and a small decision head. It serves them behind Jev’s
/v1/systemone, and accepts up to two photos. It does not call Jev. The serving path makes no
network calls, and it refuses image URLs, so only the model download leaves your machine.
It works, slowly. On CPU the server loads the model in float32. That ran out of our 6 GB, so we
used a wrapper to load it in bfloat16 instead. The ticket went to billing at 0.97, and its confidence
followed TypeSafe’s formula, scaled down by the unknown share. With the photo of beige shoes listed as
red, it named listing.color as the wrong field at 0.85. With the listing changed to beige, the colour
check went to 0.72, but the field question was unsure and picked the wrong answer, at 0.46. Asked for a
shoe size the photo does not show, it abstained, with 0.67 on unknown. Each request took between 34 seconds
and 3 minutes 22. Bad JSON, an unknown question type, nine questions and an eleven-level score each got a
422 with a plain message.
Two things to know. The official SDK worked for text. But it sends a photo as an assets upload,
which the server ignores: it answered from the text alone and gave no error. And it accepted a request
sent from another site’s origin. 639 tests passed and 8 failed. Six of those fail on Python 3.11, which the
README asks for, because one file needs Python 3.12.
Apache-2.0 for the code and adapters; the Qwen bases are Apache-2.0. 410 stars.
See how it compares with other tools in Best Jev tools, tested hands-on.
Review updated Oct 27, 2026. Numbers quoted from the project are its author's own; we don't publish our own measurements of Jev.