# Decisions with Jev

> Use Jev, TypeSafe's classifier model, on your own TypeSafe connection for routing, guardrails, tool gating, triage, reranking, evals and control loops.

Source: https://infro.io/docs/features/decisions

> **Note:** INFRO is in private early access. Running these examples requires an early-access account, an active trial or subscription entitlement, and your own provider connection. Self-serve purchasing is not generally open. See [Early access](https://infro.io/early-access).

Jev answers typed questions about a piece of state — yes or no, one option of a set, or a level on a rubric — with calibrated probabilities and a confidence, and generates no text. That makes it the engine for the decisions a control plane takes around a model call. INFRO runs it in nine places, each on your own TypeSafe connection, with INFRO's routing, budgets, failover and request log around every call.

> **Note:** Every Jev call runs on **your own TypeSafe connection** and your TypeSafe account bills it; every other [decision model](https://infro.io/docs/features/decision-models) runs on your own account with its provider. INFRO charges nothing per decision; the estimated provider cost of each call is on its row in the request log, separate from your INFRO subscription.

## The nine use cases

| # | Use case | What INFRO does | Where |
| --- | --- | --- | --- |
| 1 | Model routing | Classify each prompt on a route and send each class to its own model with route rules. | A route with a prompt classifier — [Routes](https://infro.io/docs/routes#prompt-classifier) |
| 2 | Guardrails | Check prompts for injection, jailbreaks, harmful or off-topic requests before they reach the model. | A guardrail policy with classifier checks — [Guardrails](https://infro.io/docs/features/guardrails#classifier-checks) |
| 3 | Tool-call gating | Ask before an agent runs a tool: allow, ask a person, or deny. Pin the tools that never need a model. | A decision policy — `POST /v1/decisions/{slug}` |
| 4 | Inbox triage | Sort messages into reply now, later or archive — one at a time or in batches of up to 500. | A decision policy — `POST /v1/decisions/{slug}` |
| 5 | Reranking | Order retrieved passages by relevance to a query with POST /v1/rerank. | The rerank endpoint — [`POST /v1/rerank`](https://infro.io/docs/api/rerank) |
| 6 | LLM evals | Score an answer against a rubric — on demand, or on a sample of live traffic per model. | A decision policy — `POST /v1/decisions/{slug}` |
| 7 | Bulk labeling | Label rows in batches of up to 500 per call, with a per-label summary to merge across batches. | A decision policy — `POST /v1/decisions/{slug}` |
| 8 | Real-time control | Decide inside a control loop with a deadline; past it, a safe fallback answers instead. | A decision policy — `POST /v1/decisions/{slug}` |
| 9 | Confidence gate | Act above 0.9, confirm from 0.5, hand to a person below — thresholds kept in policy, not in code. | A decision policy — `POST /v1/decisions/{slug}` |

## Connect TypeSafe

Add a TypeSafe connection under Providers with your TypeSafe API key — or a connection to any provider of another [decision model](https://infro.io/docs/features/decision-models): OpenAI, Cloudflare, Perplexity, Inception, Liquid AI, Upstage, Azure or OpenRouter. Decision policies, classifier checks, route classifiers and eval monitors default to the model `typesafe/jev-1.13`; any of them can name another decision model, or a route, to fail over across several keys or providers.

## Confidence bands

Every decision carries a band computed by INFRO from the answer's confidence and the policy's thresholds: **act** at or above `bands.act`, **confirm** at or above `bands.confirm`, otherwise **human**. The default thresholds are 0.9 and 0.5. A yes-or-no answer's confidence is its distance from a coin toss, scaled to 0–1: a probability of 0.97 or 0.03 is a confidence of 0.94; 0.55 is 0.10. Keeping thresholds in the policy means changing one needs no deploy.

## What is recorded

- Each decision, batch, rerank and system call is a row in the request log with its outcome, band, confidence and option probabilities, and its estimated provider cost.
- A call INFRO makes for another request — a guardrail check, a route's prompt class, an eval — is its own row, linked to that request (`parent_request`) and listed under it in the request detail.
- The state, the prompt and the response are never recorded by these features. Payload capture, when your organization enabled it, is unchanged.

## Limits

| Limit | Value |
| --- | --- |
| State per decision | 128 KB of JSON |
| Items per batch | 500 |
| Batch concurrency on your connection | 1–16, default 8 |
| Deadline | 50–10000 ms |
| Options per choice | 2–64 |
| Levels per score | 2–10 |
| Pins per policy | 50 |
| Classes per route classifier | 2–20 |
| Eval monitors running at once | 5 per organization |
