jean-rec-1
Closed beta. Reach out for a key.
A pretrained generative recommender you can call without building a model first. You fit a tokenizer on your catalog, send interaction histories, and get recommendations back. There is no architecture to choose, no embedding table to size, and no six-week ramp before the first useful result.
Retrieval and ranking are collapsed into one model that emits item identifiers directly, rather than a candidate generator bolted to a reranker. One system to operate, one objective to tune, and no stage boundary for quality to leak across.
Out of the box
The useful property of a foundation model is that the day-one result is not zero.
| Classical recommender | jean-rec-1 | |
|---|---|---|
| Before first result | Collect interactions, train, tune | Fit a tokenizer, send a history |
| New item | Unusable until it has interactions | Recommendable as soon as it has content |
| New tenant | Starts from scratch | Starts from the pretrained backbone |
| Retrieval and ranking | Two systems | One model |
You still get better results after adapting it on your sequences. The point is that you do not have to wait for that to see whether it works.
Specification
| Task | Next-item prediction over a catalog |
| Architecture | Decoder-only transformer over semantic ID tokens |
| Item vocabulary | 4-level multi-resolution codebook, see Semantic IDs |
| Context | 512 interactions, truncated from the front |
| Input | An ordered interaction history |
| Output | Semantic ID sequences, decoded under a constrained beam to real items |
| Adaptation | Supervised fine-tuning on your sequences, then RL against your ranking objective |
| Status | Closed beta |
Calling it
- Recommend from a catalog
- Next action, no catalog
- Represent a person
curl https://api.jeantechnologies.com/v1/generate \
-H "Authorization: Bearer $JEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "jean-rec-1",
"tokenizer_id": "tok_9k2m",
"history": ["sku_310", "sku_884", "sku_771"],
"limit": 10
}'
curl https://api.jeantechnologies.com/v1/models/jean-rec-1/predict \
-H "Authorization: Bearer $JEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"history": [
{"action": "view", "item_id": "sku_310", "ts": 1735689600},
{"action": "add_cart", "item_id": "sku_884", "ts": 1736294400}
],
"top_k": 5
}'
curl https://api.jeantechnologies.com/v1/models/jean-rec-1/embed \
-H "Authorization: Bearer $JEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"history": ["sku_310", "sku_884", "sku_771"]
}'
See Generate, Predict, and Embed for the full request and response shapes.
What it is not good at
Worth saying plainly, because a model that claims everything is not a model anyone can plan around.
- Catalogs without content. The whole approach assumes items carry real text or images. Bare SKU strings degrade it badly.
- Very short histories. With one or two interactions it falls back on catalog priors and behaves close to a popularity ranker.
- Explaining itself. It emits an identifier, not a reason. If you need a human-readable rationale, that is a separate model on top.
- Anything about language. It has no opinion on your copy.
Request beta access: jonathan@jeantechnologies.com