Spec-only preview. The API is not yet live; the surface below is what we are building toward. Request access to the closed beta.
curl --request POST \
--url https://api.jeantechnologies.com/v1/match \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"user_id": "u_alice",
"domain": "dating",
"limit": 10,
"filters": {
"location_within_km": 50
},
"stages": {
"llm_judge": true,
"cross_encoder": {
"enabled": true,
"top_k": 25
}
},
"explain": false
}
'{
"matches": [
{
"user_id": "c_456",
"score": 0.87,
"stage_scores": {
"light_ml": 0.71,
"embedding": 0.84,
"cross_encoder": 0.87
},
"reasons": [
"shared communication style",
"compatible relationship goals"
]
}
],
"pipeline_stats": {
"after_sql_filter": 12431,
"after_light_ml": 412,
"after_embedding": 53,
"after_cross_encoder": 10
},
"models_used": {
"embedding": {
"tier": "tenant",
"version": "u_acme.dating.2026-05-17"
},
"cross_encoder": {
"tier": "domain",
"version": "dating.cx.2026-05-01"
}
}
}Run the matching pipeline for a user and return ranked compatible candidates.
curl --request POST \
--url https://api.jeantechnologies.com/v1/match \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"user_id": "u_alice",
"domain": "dating",
"limit": 10,
"filters": {
"location_within_km": 50
},
"stages": {
"llm_judge": true,
"cross_encoder": {
"enabled": true,
"top_k": 25
}
},
"explain": false
}
'{
"matches": [
{
"user_id": "c_456",
"score": 0.87,
"stage_scores": {
"light_ml": 0.71,
"embedding": 0.84,
"cross_encoder": 0.87
},
"reasons": [
"shared communication style",
"compatible relationship goals"
]
}
],
"pipeline_stats": {
"after_sql_filter": 12431,
"after_light_ml": 412,
"after_embedding": 53,
"after_cross_encoder": 10
},
"models_used": {
"embedding": {
"tier": "tenant",
"version": "u_acme.dating.2026-05-17"
},
"cross_encoder": {
"tier": "domain",
"version": "dating.cx.2026-05-01"
}
}
}The value moment. Given aDocumentation Index
Fetch the complete documentation index at: https://docs.jeanmemory.com/llms.txt
Use this file to discover all available pages before exploring further.
user_id and a domain, the platform runs the pipeline against the most specific model available for your tenant (general → domain → tenant-tuned):
SQL filter → light ML rerank → domain embedding → cross-encoder → optional LLM judge
curl https://api.jeantechnologies.com/v1/match \
-H "Authorization: Bearer $JEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"user_id": "u_alice",
"domain": "dating",
"limit": 10,
"filters": { "location_within_km": 50 }
}'
stages object accepts a boolean shortcut or a per-stage config. Mix freely.
{
"user_id": "u_alice",
"domain": "dating",
"stages": {
"llm_judge": true,
"cross_encoder": { "enabled": true, "top_k": 25 },
"light_ml": { "min_score": 0.3 }
},
"explain": true
}
| Stage | Default | Per-candidate cost | When to tune |
|---|---|---|---|
sql_filter | on | microseconds | only off for debugging |
light_ml | on | milliseconds | raise min_score to be stricter |
embedding | on | sub-ms (ANN) | almost always on; required for quality |
cross_encoder | on | ~10ms | lower top_k for latency, raise for quality |
llm_judge | off | seconds | turn on when prompt-fit or free-text deal-breakers matter |
"explain": true to get per-candidate stage_scores and human-readable reasons in the response.
{
"matches": [
{
"user_id": "c_456",
"score": 0.87,
"stage_scores": {
"light_ml": 0.71,
"embedding": 0.84,
"cross_encoder": 0.87
},
"reasons": [
"shared communication style",
"compatible relationship goals"
]
}
],
"pipeline_stats": {
"after_sql_filter": 12431,
"after_light_ml": 412,
"after_embedding": 53,
"after_cross_encoder": 10
}
}
pipeline_stats lets you see, per request, how the candidate pool narrowed. Useful when tuning: if after_light_ml is too small, your min_score is too aggressive. If after_sql_filter is huge, your hard filters aren’t pulling their weight.
llm_judge off, p99 is typically under 200ms on a 10M-user index. Turning the judge on adds 1-3 seconds per request. Reserve it for the final-decision call, not exploratory queries.API key issued by Jean Technologies. Contact the team for access.
"u_alice"
"dating"
1 <= x <= 10010
Hard constraints applied before ranking.
{ "location_within_km": 50 }Per-stage controls. Each stage can be toggled on or off, or passed a config object for finer control. Omit the whole object to accept sensible defaults for the domain.
Show child attributes
{
"llm_judge": true,
"cross_encoder": { "enabled": true, "top_k": 25 }
}If true, response includes per-stage stage_scores and human-readable reasons for each candidate.
Ranked candidates
Show child attributes
Show child attributes
Which model tier and version served each stage. Log alongside outcomes to attribute lift to a specific deploy.
Show child attributes
{
"embedding": {
"tier": "tenant",
"version": "u_acme.dating.2026-05-17"
},
"cross_encoder": {
"tier": "domain",
"version": "dating.cx.2026-05-01"
}
}