JARED PALMER / KEV 4B

Kev 4B. Small model, structured decisions.

Route requests, classify text and score inputs with Jared Palmer’s open-weight decision model. Kev 4B uses a LoRA adapter and pointer head on Qwen3.5-4B-Base and returns typed answers with probabilities.

100 credits for new accounts. Web and API use the same balance and rates.

Model context

8,192

tokens · shorter than Jev’s 32,000-token context

API input rate

600

credits / million input tokens

Minimum API charge

1 credit

per successful request · output is free

choice

Choose from your options

Define named options and receive a selected label, its probability distribution and confidence.

score

Score on your scale

Define ordered levels and receive a score from zero to the last level’s index, with probabilities and confidence.

noul

Measure a yes/no condition

Ask a narrow question and receive P(true), from 0 to 1. Your application decides which threshold to act on.

The same price as Jev

OpenRouter lists identical input and output rates for Jev 1.13 and Kev 4B. This service uses the same credit rate for both, rounded up separately for every successful request.

ModelUpstream input · $/1M tokensUpstream output · $/1M tokensCredits / 1M input tokens
Jev 1.13 ↗$0.042$0600
Kev 4B ↗$0.042$0600

max(1, ceil(input_tokens × 600 / 1,000,000))

1,000 input tokens cost 1 credit; 5,000 input tokens cost 3 credits, on both web and API. We reserve a budget first, settle actual usage on success, and refund failed calls.

Prices checked against OpenRouter’s model pages and endpoint metadata on September 26, 2026. Upstream prices may change.

Try Kev 4B in the workbench

Start with the support-routing example, or define your own questions. This page keeps a separate browser draft so your main playground draft stays available.

What do you want to decide?

Choose a task to load its input and rules. Loading examples uses no credits.

Kev 4B ↗Span · behavior evaluation ↗

Kev 4B supports Choice, Score and Noul. Context: 8,192 tokens, including state and questions. Web and API use the same credit rate as Jev.

Text or JSON evaluated independently by every question.

Advanced question settings

Questions 1/8

Which team should handle this ticket? Use other when no option fits.Choice

Options

Maximum credit budget: 1 credits

We reserve this budget before the model runs, then charge actual usage and return the difference. Failed calls are refunded.

New account? Receive 100 credits once. Short requests typically use 1 credit; longer inputs can use more.

100 welcome credits · one balance for web & API

Draft saved in this browser · Your draft will be restored after sign-in.

Your current configuration stays in this browser tab for the setup flow.

ILLUSTRATIVE EXAMPLE · NO CREDITS USED

“I was charged twice this morning. Please refund the duplicate payment today.”

One input → structured decisions

Choice

Billing

Route to the billing queue

Yes / no

96%

Probability of an urgent request

Score

2.8 / 3

Urgency on a 0–3 scale

Static illustration of the output format. Values are not a live model response or a measure of accuracy.

Web runs and saved configurations are private to your account. API history stores usage only.Usage ↗

Your draft will be restored after sign-in.

Use the decision API you already know

Send model, state and questions to /v1/systemone with a Decision API API key. Set model to jaredpalmer/kev-4b. Answers are returned at data.result.answers; data.creditsUsed reports the charge.

Text, JSON objects and arrays are supported. This service accepts up to 8 questions and 32 KiB per request; Kev’s separate 8,192-token model context still applies. Web runs are limited to one attempt every 3 seconds.

Live checks passed for Choice, Score and Noul together, using text, object and array inputs. This verifies the request and response contract, not prediction accuracy. Evaluate the model on your own labeled cases.

// Server-side JavaScript (Node 20+ or Bun). Set DECISION_API_KEY.
const response = await fetch("https://decisionapi.org/v1/systemone", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.DECISION_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
  "model": "jaredpalmer/kev-4b",
  "state": "I was charged twice for order A-4471. Please refund the duplicate payment.",
  "questions": {
    "route": {
      "type": "choice",
      "instructions": "Which team should handle this ticket? Use other when no option fits.",
      "criteria": {
        "billing": "Payments, charges and refunds",
        "technical": "Bugs and product errors",
        "account": "Login and account access",
        "other": "None of these teams"
      }
    }
  }
}),
});
const body = await response.json();
if (!response.ok || body.code !== 0) throw new Error(body.message);
console.log(body.data.result.answers);
console.log(body.data.creditsUsed);