Use case: model routing
Problem: your app fronts several models and handlers. Asking users to choose is unrealistic; sending everything to the strongest model is slow and expensive.
Jev’s role: one Choice on the way in — “what kind of task is this?” — then confidence decides the lane. The official name is Intent routing plus Confidence-gated routing (via the llms.txt index): the answer tells you where; confidence tells you whether to go automatically.
The pattern
Section titled “The pattern”{ "model": "jev-latest", "state": "<the raw user request>", "questions": { "intent": { "type": "choice", "instructions": "Which kind of task is this request", "criteria": { "deterministic": "Order lookups, password changes — fixed flows", "cheap_ok": "Simple Q&A or reformatting a small model handles", "needs_reasoning": "Multi-step reasoning or code generation", "abuse": "Abusive or clearly out-of-policy" } }, "block": { "type": "noul", "instructions": "The request violates the usage policy" } }}const { intent, block } = result.answers;if (block.noul >= 0.8) return reject(); // thresholds per the official Noul guideif (intent.confidence < 0.7) return routeToHuman(); // edge cases go to peopleswitch (intent.choice) { case 'deterministic': return runFlow(); case 'cheap_ok': return smallModel(); case 'needs_reasoning': return strongModel();}Why not an LLM classifier
Section titled “Why not an LLM classifier”Same task, different shape: an LLM must generate text you then parse; Jev returns the enum and probabilities directly. At a high-frequency entry point (every message passes through) the latency and unit-cost gap compounds, and there is no “parse failed” error branch to maintain.
Community implementations
Section titled “Community implementations”- gargpratyush/jev-router (299★, MIT, verified 2026-09-22): Claude Code plugin routing each task to the cheapest sufficient model
- yusukebe/hono-jev-router (45★, MIT): Hono middleware routing HTTP requests by meaning
- More in the routing category of Ecosystem
Caveats (our advice)
Section titled “Caveats (our advice)”- Write option descriptions as decision criteria, not noun glosses (“simple Q&A a small model handles” beats “simple task”)
- Start confidence thresholds at 0.6–0.8 and tune against your live human-escalation rate
- Give “can’t classify” a home — an explicit option or the human lane — so low-confidence requests are never forced into a wrong branch
Next: Content classification, or back to the overview.