1. Data source
  2. Decision schema
  3. Model inference
  4. Structured result
2 Decision schema 4 typed questions
  • model_tierchoiceflashbalancedfrontier
  • complexityscorelowmediumhigh
  • needs_toolsnoulprobability 0–1
  • safety_sensitivenoulprobability 0–1

3 Model inference typesafe/jev-1.13

Waiting for a run.

4 Structured result

Run the demo to see the JSON answers, the highlighted pick and the final action.

Call Jev yourselfSame data and schema, straight to Flatkey. Set FLATKEY_API_KEY and run.
curl -sS https://router.flatkey.ai/api/alpha/decisions \
  -H "Authorization: Bearer $FLATKEY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "typesafe/jev-1.13",
  "state": "Research the three main approaches to RAG evaluation in 2025, cite peer-reviewed papers and recent industry blogs, then write a Python notebook that benchmarks faithfulness and context precision on our 200-question internal set. Flag any claim you cannot source.",
  "questions": {
    "model_tier": {
      "type": "choice",
      "instructions": "Which model tier should handle this request? Prefer the cheapest tier that can still do the job well.",
      "criteria": {
        "flash": "Short, low-stakes answers: lookups, rewrites, formatting, simple Q&A with little reasoning",
        "balanced": "Moderate work: light coding, short summarization, single-tool calls, everyday analysis",
        "frontier": "Hard work: multi-step reasoning, research with citations, complex code, safety-sensitive or irreversible actions"
      }
    },
    "complexity": {
      "type": "score",
      "instructions": "How much reasoning, planning or domain depth does this request need?",
      "criteria": [
        "low",
        "medium",
        "high"
      ]
    },
    "needs_tools": {
      "type": "noul",
      "instructions": "The request needs tool use, multi-step planning, or retrieval with citations to succeed."
    },
    "safety_sensitive": {
      "type": "noul",
      "instructions": "A wrong answer could cause real harm, irreversible change, or a high-stakes decision."
    }
  }
}'

No Flatkey key yet? Get one for Jev 1.13 →

Run with real Jev

Sign in and connect a key

  1. Sign in with Google.
  2. Connect your Flatkey or OpenRouter key on the next screen. Get a Flatkey key for Jev 1.13.
  3. Come straight back here and press Run again.

This site is for researching, sharing and cataloguing Jev use cases. Your key is only there to make trying Jev convenient: it is stored encrypted, used only for runs you trigger, never used for anything else, and you can delete it anytime.

About this use case

Use Jev for criteria-based model routing: incoming state, Jev decision, routed outcome

Who / when

Audience

  • platform teams running multi-model gateways who want cost and latency under control
  • agent builders who mix a cheap flash model with a frontier model on hard tasks
  • product engineers replacing prompt-and-parse routers with typed decisions

Triggers

  • every request hits the frontier model and the bill or p95 latency spikes
  • a cheap model fails on multi-step reasoning, tool use or citation-heavy work
  • you need an auditable reason a request went to flash vs frontier
  • safety-sensitive or irreversible tasks must never skip the strong model

The workflow

  1. 01
    Request stateUser prompt + task contextInput
  2. 02
    Pick model tierflash / balanced / frontierJev
  3. 03
    Complexity + flagsScore + tools / multi-stepJev
  4. 04
    Code gateDispatch or force-upgradeYour code

Question shape

{
  "model_tier": {
    "type": "choice",
    "instructions": "Which model tier should handle this request? Prefer the cheapest tier that can still do the job well.",
    "criteria": {
      "flash": "Short, low-stakes answers: lookups, rewrites, formatting, simple Q&A with little reasoning",
      "balanced": "Moderate work: light coding, short summarization, single-tool calls, everyday analysis",
      "frontier": "Hard work: multi-step reasoning, research with citations, complex code, safety-sensitive or irreversible actions"
    }
  },
  "complexity": {
    "type": "score",
    "instructions": "How much reasoning, planning or domain depth does this request need?",
    "criteria": [
      "low",
      "medium",
      "high"
    ]
  },
  "needs_tools": {
    "type": "noul",
    "instructions": "The request needs tool use, multi-step planning, or retrieval with citations to succeed."
  },
  "safety_sensitive": {
    "type": "noul",
    "instructions": "A wrong answer could cause real harm, irreversible change, or a high-stakes decision."
  }
}

Gate policy

≥ 0.90

Dispatch straight to the chosen tier (flash, balanced or frontier).

0.65–0.90

Prefer the chosen tier, but upgrade one step if needs_tools or safety_sensitive is true.

< 0.65

Default to balanced, or force frontier when safety_sensitive is true; log the probabilities.

Failure modes

Pre-launch checks before you trust auto-routing:

  • Routing every request to frontier "just in case" and erasing the cost/latency win;
  • Sending multi-step research or citation work to flash because the prompt looked short;
  • Ignoring safety_sensitive and letting a weak model approve irreversible actions;
  • Overfitting the criteria to one product's prompts so new traffic misroutes;
  • Prompt injection that tries to force "use the frontier model" without matching the criteria;
Keep exact work in code: model allowlists, spend caps, latency budgets and force-upgrade rules for safety-sensitive traffic stay deterministic. Jev scores the criteria; your gateway picks the endpoint.

FAQ

Why not always call the strongest model?

Most traffic is short and low-stakes. Scoring complexity, tool need and risk once with Jev lets flash handle the easy majority and reserves frontier for the cases that actually need it—without a brittle prompt-and-parse router.

How is this different from LLM tool routing?

Tool routing picks which skill or API to load. Model routing picks which model tier runs the request. Many stacks need both: route the model first, then route tools inside that call. See LLM tool routing.

What does the Flatkey call look like?

POST https://router.flatkey.ai/api/alpha/decisions with Authorization: Bearer …, Content-Type: application/json, and a body of state, model (typesafe/jev-1.13), and questions (choice / score / noul). This is not an OpenAI-compatible /v1 chat endpoint.

Can I bring my own API key?

Yes. Try the free demo above without signing in. To run it live on your own text, sign in with Google and connect a Flatkey or OpenRouter key (a quick test call runs when you save it). Manage or delete it anytime under Dashboard → BYOK. Keys are stored encrypted on the server, used only for runs you trigger, and never sent back to the browser. Need a Flatkey key? Get one for Jev 1.13 on Flatkey.

Is this the official TypeSafe Jev product page?

No. jev-llm.com is an independent research and practice site. Verify pricing, models and terms at the original TypeSafe sources.

Sources

Seen on X
Independent-site note: jev-llm.com is an independent research and practice site. It is not the TypeSafe AI official site. Verify models, pricing and terms at the original source.