Jev Prompts & Decision Templates

Jev is the first System One model, released by TypeSafe AI in limited early access on September 15, 2026. The name nods to Kahneman: instead of generating long chains of reasoning (System 2), Jev answers predefined questions over your data with typed, calibrated decisions (System 1) — a Choice from your option set, a Score on your scale, or a Noul probability for yes/no. One call sends a state plus all your questions; every question is answered in parallel, in roughly 70–500 ms, with output tokens free.

So "prompting" Jev means designing the question set: closed option lists, clearly described score levels, and confidence thresholds that decide when code should act versus escalate to a human. The templates below follow the real SDK syntax and cover the patterns early adopters are running in production — triage, moderation, scoring, reranking, agent safety, routing and citation checks.

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.

Want proof these patterns work outside the docs? Read the Jev case studies — evidence-backed projects with real metrics, negative results included.

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.