One honest caveat: "Jev never hallucinates" means it can only return values from your schema — it can still choose the wrong one.
Calibrated confidence is your second signal: gate expensive or irreversible actions on it.
Jev 113 words
Support Ticket Triage (One Call, Three Answers)
The pattern from TypeSafe's own docs — all three questions answered in one ~300ms call.
Task: route and grade every inbound support ticket before a human sees it.
state = {
ticket: { subject: "...", body: "..." },
account: { plan: "pro", age_days: 210 }
}
questions:
- department: Choice("Which team should handle this")
billing: "Payment, subscription or refund issues"
technical: "Bugs, integrations or broken features"
success: "How-to questions and account help"
other: "Anything that fits none of the above"
- frustration: Score("How frustrated the customer appears")
["Calm, just stating facts", "Frustrated but civil", "Very angry, strong language"]
- churn_risk_now: Noul("The message signals intent to cancel right now")
Routing rule (confidence-gated): if department.confidence < 0.5, queue for a human triager.
If churn_risk_now.noul > 0.7, escalate regardless of department.
Jev 85 words
Content Gate with Asymmetric Error Costs
Encodes your error economics directly into the routing rule.
state = { content: { title, body }, author: { report_count } }
questions:
- violates_policy: Noul("Contains harassment, doxxing or illegal solicitation")
- borderline: Noul("A careful human reviewer would hesitate on this one")
- action: Choice("What to do with this content")
approve: "Clearly fine — publish"
queue_human: "Uncertain enough that a human should look"
reject: "Clearly violating — remove"
Rule: reject only when violates_policy.noul > 0.8 AND borderline.noul < 0.3.
A false rejection costs 10x a false approval — when in doubt, queue_human, never reject.
Jev 91 words
Lead Qualification as Composite Questions
Official best practice: score each axis independently, weight them in code.
state = { lead: { company_size, signup_source, pages_visited_7d, trial_features_used } }
questions:
- icp_fit: Score("How well the company matches our ideal customer profile")
["Outside ICP", "Adjacent market", "Core ICP"]
- activation: Score("How engaged the account was during trial")
["Signed up only", "Explored lightly", "Used the core feature repeatedly"]
- handoff: Choice("Next action")
sdr_call: "Worth a human call this week"
nurture: "Keep in the email sequence"
other: "Not enough signal yet"
Combine in code, not in the model: handoff = sdr_call is respected only when
icp_fit.score >= 1.5 AND handoff.confidence > 0.6.
Jev 95 words
Enum-Only Extraction with "not_stated"
Jev is unreliable at counting and date math; enumeration sidesteps both.
state = { raw: { category_text, price_text, date_text } }
questions:
- category: Choice("Best category for this product")
apparel / electronics / home / beauty / other
- currency: Choice("Currency in price_text")
USD / EUR / GBP / not_stated
- launch_month: Choice("Month mentioned in date_text")
jan ... dec / not_stated
- needs_review: Noul("Any field is ambiguous enough to need a human check")
Per the docs: never ask Jev to parse free-form dates or do arithmetic — enumerate
the options (always including "not_stated") and let it pick. needs_review > 0.5
routes the row to a human.
Jev 65 words
Search Reranking on a Budget
Filter 20 search hits down to the 3 worth an LLM's attention.
state = { query: "the user's original question", candidate: { title, snippet } }
questions:
- relevant: Noul("The candidate page actually answers this query")
- credible: Noul("The source looks authoritative rather than spam")
Run once per candidate. Keep results with relevant > 0.6 AND credible > 0.5,
drop the rest before anything expensive sees them (output tokens are free;
input is ~$0.04 per million tokens).
Jev 81 words
Tool-Call Safety Gate for Coding Agents
A guardrail that's faster and cheaper than a second LLM reviewing the call.
state = { plan: "the agent's stated plan", tool_call: "bash: rm -rf ./data", diff: "..." }
questions:
- irreversible: Noul("This action destroys data or state that cannot be restored")
- off_task: Noul("The action is unrelated to the stated plan")
- hidden_scope: Noul("The command touches files or services outside the workspace")
Rule: block on irreversible OR hidden_scope; ask the user to confirm on off_task.
Questions like these answer in ~250ms — cheap enough to run before every
bash/write call (the "pi-warden" pattern).
Jev 69 words
Difficulty-Based Model Router
Pay frontier prices only for prompts that actually need a frontier model.
state = { prompt: "the incoming user prompt" }
questions:
- difficulty: Score("How hard this prompt is for a small model")
["Trivial FAQ", "Needs real reasoning", "Frontier-level"]
- needs_tools: Noul("Answering requires fresh data: search or API calls")
Route in code: difficulty < 1 -> cheap model; 1-2 -> mid model;
> 2 or needs_tools -> frontier model with tools attached.
Vercel AI Gateway ships this routing pattern natively now.
Jev 84 words
Citation Reality Check
For AI-generated content that must cite real sources.
state = { claim: "the sentence being verified", source: { quote: "verbatim text from the page" } }
questions:
- relation: Choice("Relationship between the quote and the claim")
supports: "The quote directly backs the claim"
contradicts: "The quote states the opposite"
unrelated: "The quote is real but about something else"
- out_of_context: Noul("The quote is technically true but misleading as cited")
This catches the failure mode string matching misses: a citation that exists,
loads fine, and still doesn't say what you claim it says.