Source: https://ailoot.ai/models/en/jaredpalmer-kev-4b/
Canonical: https://ailoot.ai/models/en/jaredpalmer-kev-4b/
Language: en

# Jared Palmer: Kev 4B

[Markdown](https://ailoot.ai/models/en/jaredpalmer-kev-4b/index.md) · [JSON](https://ailoot.ai/models/en/jaredpalmer-kev-4b/facts.json)

## [Jared Palmer: Kev 4B](https://ailoot.ai/models/en/jaredpalmer-kev-4b/)

Kev-4B scores typed questions about a supplied English document and returns calibrated probabilities over the options you define. Use yes/no, choice and ordered-score questions for classification, routing, triage and checks that need a structured decision rather than generated prose.

- [**Ailoot Ultra · System One** `POST /v1/systemone` `jaredpalmer/kev-4b`](https://ailoot.ai/models/en/jaredpalmer-kev-4b/#method-0)

About the model

This description covers the model’s capabilities. Available in Ailoot inputs, outputs and options are listed for the selected method below.

Kev-4B is a compact decision model for answering typed questions about a supplied state. The state is the document or record being assessed, and each question defines the options the model can score. Its result is a probability distribution and a typed decision record, making it useful for document classification, routing, triage, extraction choices and checks against stated criteria.

The model combines a frozen Qwen3.5-4B-Base backbone with a LoRA adapter and a pointer head. The backbone has 32 layers, comprising 24 Gated DeltaNet layers and eight full-attention layers. The adapter targets attention, MLP and DeltaNet projections; the pointer head scores the supplied options and converts those scores into probabilities. This is a prefill-only decision workflow, with the options forming the answer space.

Three question types can appear in the same request. A choice question accepts 1–255 named options, optionally with descriptions, and returns the most likely option, a separate confidence value and probabilities for the options. A yes/no question, called noul in the maker’s format, returns the probability of yes. Define the meaning of yes in the question rather than assuming that a high number always means a positive outcome for the application.

An ordered-score question accepts 1–255 levels and returns probabilities for the levels and their expected index. Level indices start at zero. The maker’s result format also carries the level legend and a separate confidence value. An expected index can be fractional: it summarises the distribution over your ordered levels rather than selecting a new textual label. Keep the level order and legend with the result so a rating can be interpreted consistently.

Questions share the same state but are evaluated independently. One question cannot read another question’s answer, and the state is computed once and reused. If a later decision depends on a result from an earlier decision, make that dependency explicit in a subsequent state instead of expecting the questions in one request to form a chain. This makes the shared-state workflow suitable for several independent checks on the same document.

Prepare the state with the evidence the questions actually require. It can be plain text or a JSON object or array rendered as labelled text. Keep field names, units, policy conditions and the relevant source passages clear. Write a specific instruction for each question and give its options meanings that can be distinguished from the record. For an original support-routing task, the state can contain the request and its context, while the choices define delivery, access and product-support categories with short descriptions.

A second question can assess urgency, and an ordered question can rate how much follow-up the request needs. These answer different operational questions, so define each separately. Include an appropriate review or missing-evidence option when the choice task needs one, and retain the full distribution when several categories are plausible. The application decides how to route or review a result; the model supplies the scored record.

Kev-4B is intended for typed decisions over documents of a few thousand tokens. Its maker’s serving profile accepts states up to 65,536 tokens and reserves additional space for each question, while the validated context length for this checkpoint is 8192 tokens. Those are different boundaries: accepting a longer state does not establish equally reliable decisions at every length. Keep decisive passages compact and preserve their labels when preparing a long record for classification.

The released profile is English. Its useful tasks depend on evidence in the supplied state and on the defined options, rather than open-ended chat, summarisation or broad knowledge-based answering. Day-level date arithmetic is a particular limitation: the maker provides a separate date-facts preprocessor that supplies computed intervals. For a deadline check, include the relevant dates and computed day intervals in the state, along with the rule that uses them.

The checkpoint ships with fitted probability calibration, but confidence can change with the document domain and question design. The maker also documents fine-tuning the open checkpoint on task-specific labels and fitting its probability calibration to that workload; this is a separate customization workflow from scoring a supplied state. Choose decision thresholds using labelled examples of the actual workload, and keep uncertain cases visible for review. The maker excludes fully automated consequential decisions about people without human review. Option order can also affect an answer, so retain a stable ordering when comparing results. Assess the chosen label, the separate confidence field and the probability distribution according to the role each plays in your workflow.

The current Kev-4B release described by the maker belongs to Kev 1.0 and uses the Qwen3.5 base. Earlier Qwen3-based and document-stage-only releases remain distinct versions. Keep the chosen edition and question definitions associated with the outputs when developing a task-specific workflow, rather than mixing results from different profiles.

A useful final artifact is a named set of decision records with the original questions, option definitions, distributions and any ordered-level legends. For an answer-quality check, the state should include the proposed answer, the evidence and the criterion being tested. For policy triage, it should include the applicable rule and relevant facts. Preserve that input beside the result so a review can establish why a decision was appropriate or which missing fact needs to be supplied.

**Ailoot Ultra · System One** `POST /v1/systemone` `jaredpalmer/kev-4b`

[`jaredpalmer/kev-4b`](https://ailoot.ai/models/en/#m=jaredpalmer%2Fkev-4b&route=Ultra&caller=jaredpalmer%2Fkev-4b&fmt=systemone)

Jared Palmer /`jaredpalmer/kev-4b`

### Overview

Kev-4B scores typed questions about a supplied English document and returns calibrated probabilities over the options you define. Use yes/no, choice and ordered-score questions for classification, routing, triage and checks that need a structured decision rather than generated prose.

Accepted inputs

Text

Results

decisions

### Available in Ailoot · inputs & methods

**Ailoot Ultra · System One** `POST /v1/systemone`

Input types

`text`

Output types

`decisions`

Output format

json

| Field | Type | Requirement | Values & limits | Default |
| --- | --- | --- | --- | --- |
| Field`model` | Type`string` | RequirementRequired | Values & limits jaredpalmer/kev-4b | Default— |
| Field`provider` | Type`schema` | RequirementOptional | Values & limits | Default— |
| Field`questions` | Type`object` | RequirementRequired | Values & limits | Default— |
| Field`session_id` | Type`string` | RequirementOptional | Values & limits | Default— |
| Field`state` | Type`schema` | RequirementRequired | Values & limits | Default— |
| Field`trace` | Type`schema` | RequirementOptional | Values & limits | Default— |
| Field`user` | Type`string` | RequirementOptional | Values & limits | Default— |
| Field`questions.<id>.type` | Type`string` | RequirementRequired | Values & limits noul, choice, score | Default— |
| Field`questions.<id>.instructions` | Type`string\|object\|array` | RequirementRequired | Values & limits | Default— |
| Field`questions.<id>.criteria` | Type`object\|array` | RequirementOptional | Values & limits Conditions: choice/score: required; noul: optional. choice criteria is object; score is array with minItems1. | Default— |
| Field`questions.<id>.criteria.true` | Type`string\|object\|array` | RequirementRequired | Values & limits Applies when: noul criteria object supplied | Default— |
| Field`questions.<id>.criteria.false` | Type`string\|object\|array` | RequirementRequired | Values & limits Applies when: noul criteria object supplied | Default— |

Input material combinations

**noul** · Required: state, questions.\<id\>.type=noul, questions.\<id\>.instructions

**choice** · Required: state, questions.\<id\>.type=choice, questions.\<id\>.instructions, criteria object

**score** · Required: state, questions.\<id\>.type=score, questions.\<id\>.instructions, criteria array with minItems1

Method parameters and lifecycle

| Parameter | Contract |
| --- | --- |
| Parameter`content_type` | Contractapplication/json |
| Parameter`required` | Contractmodel, state, questions |
| Parameter`material_types` | Contracttext |
| Parameter`optional_controls` | Contractprovider, session\_id, trace, user |
| Parameter`multimodal_input_binding` | Contractnull |

Lifecycle: `synchronous`

Send the exact model ID and retain the complete native response.

### Pricing

Tariff references do not add request options. Supported parameters are listed for the selected method.

Fast mode

Not specified When fast mode is selected

Flex mode

Not specified When flex mode is selected

Maximum reasoning effort

Not specified When maximum reasoning effort uses the default adjustment

#### Ailoot rates

#### Prices by configuration

Match each charge to the conditions shown. Use one rate for each set of alternative configurations.

| Configuration | Rate schedule | Context tokens, more than | Context tokens, up to and including | Charge |
| --- | --- | --- | --- | --- |
| ConfigurationBase token rates | Rate scheduleBase rate | Context tokens, more than— | Context tokens, up to and includingNo upper bound | Charge Input · Input tokens **$0.000084** / 1K tokens Output · Output tokens **$0** / 1K tokens Input · Cache read **—** / 1K tokens Input · Cache write **—** / 1K tokens Input · Cache write, 1 hour **—** / 1K tokens |
| ConfigurationRequest-length tier 1 | Rate schedule— | Context tokens, more than0 | Context tokens, up to and includingNo upper bound | Charge Input · Input tokens **$0.000084** / 1K tokens Output · Output tokens **$0** / 1K tokens Input · Cache read **—** / 1K tokens Input · Cache write **—** / 1K tokens Input · Cache write, 1 hour **—** / 1K tokens |

Ailoot reserves an estimated amount before a request. After the result, it settles the final charge from measured usage. Streaming settlement uses the final usage record. [How reservation and settlement work →](https://ailoot.ai/docs/en/billing/reserve/)

### Example requests

#### Ailoot Ultra · System One

Retained official request structure; documentary exampleUse your actual request material and retain the complete result

```json
{
  "model": "jaredpalmer/kev-4b",
  "questions": {
    "is_bug": {
      "criteria": {
        "false": "The customer is asking a question or requesting a feature.",
        "true": "The customer describes broken or unexpected product behavior."
      },
      "instructions": "Is the customer reporting a software defect?",
      "type": "noul"
    },
    "team": {
      "criteria": {
        "account": "Login, permissions, or profile issues.",
        "frontend": "Rendering, layout, or browser compatibility issues.",
        "payments": "Checkout, billing, or payment processing issues."
      },
      "instructions": "Which team should own this ticket?",
      "type": "choice"
    },
    "urgency": {
      "criteria": [
        "Can wait for the next release",
        "Should be fixed this week",
        "Blocking revenue right now"
      ],
      "instructions": "How urgent is this ticket?",
      "type": "score"
    }
  },
  "state": {
    "customer_tier": "enterprise",
    "ticket": "My checkout page shows a blank screen after I click Pay. I have tried two browsers."
  }
}
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_REQUEST_FILE:?Set your actual JSON request file}"
export AILOOT_REQUEST_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads(Path(os.environ['AILOOT_REQUEST_FILE']).read_text(encoding='utf-8'))
if not isinstance(p,dict): raise SystemExit('Request must be a JSON object')
p['model']='jaredpalmer/kev-4b'
Path('request.json').write_text(json.dumps(p,ensure_ascii=False),encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/systemone \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path('result.json').read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

### Receive and save results

#### Ailoot Ultra · System One

json

##### Keep all completed results

Keep every complete returned response, file and content part.

Every supplied question-ID answer with its exact type, noul/choice/score value, confidence, probabilities and legend is retained. Entire original JSON is stored and returned only after settlement.

##### If the original response needs checking

Preserve original operation and full/partial reply; do not replay POST.

Response fields

| Field | Type |
| --- | --- |
| Field`model` | Typestring |
| Field`id` | Typestring |
| Field`provider` | Typestring |
| Field`answers.<id>.type` | Typestring |
| Field`answers.<id>.noul` | Typenumber |
| Field`answers.<id>.choice` | Typestring |
| Field`answers.<id>.score` | Typenumber |
| Field`answers.<id>.confidence` | Typenumber |
| Field`answers.<id>.probabilities` | Typeobject |
| Field`answers.<id>.legend` | Typeobject |
| Field`usage.input_tokens` | Typeinteger |
| Field`usage.output_tokens` | Typeinteger |
| Field`usage.cost` | Typenumber |

Errors and next steps

| Response | Condition | Next step |
| --- | --- | --- |
| Response400 · `invalid_request_error` | ConditionInvalid required field, representation or value | Next stepCorrect the indicated request field. |

### Aliases

#### Model aliases

**Ailoot Ultra** [`jaredpalmer/kev-4b`](https://ailoot.ai/models/en/#m=jaredpalmer%2Fkev-4b&route=Ultra&caller=jaredpalmer%2Fkev-4b&fmt=systemone)

#### Method path aliases

Use the method paths shown above.

#### Related caller IDs

[`jaredpalmer/kev-4b`](https://ailoot.ai/models/en/#m=jaredpalmer%2Fkev-4b&route=Ultra&caller=jaredpalmer%2Fkev-4b&fmt=systemone)

FAQ · Jared Palmer: Kev 4B

What inputs and results are available?

`POST /v1/systemone` · `jaredpalmer/kev-4b`: `text` → `decisions`

Which fields does the request use?

`POST /v1/systemone` · `jaredpalmer/kev-4b`: `model`, `provider`, `questions`, `session_id`, `state`, `trace`, `user`

Connect Ailoot to Claude Code, OpenCode, Hermes or your own app.

## The company and its project portfolio

The company and its project portfolio: millions of customers; monthly sales in the billions.

## Buy tokens at a discount.

Subscription discounts for regular use. Promo codes offer up to 50% off token purchases.

Subscription

Choose a discounted plan for your regular requests.

Promo code: up to 50% off

Enter your code at checkout. The price updates to reflect the current promotion.

Spending in your history

The model, tokens and amount are recorded for each request.

[Choose a subscription](https://ailoot.ai/docs/en/billing/subscriptions/) · [View model prices](https://ailoot.ai/models/en/)

## Connect the API to a product you sell.

Use Ailoot in SaaS, apps and bots under its official service offer and licence agreement. Request a reseller licence for resale.

Commercial application

Add text, image, video and audio generation to paid features in your service.

Reseller licence

Send a description of your project and how you provide access. Request written terms for use and resale.

Documents on the website

The service offer, licence agreement and data processing policy are available before you connect.

[Request a reseller licence](mailto:support@ailoot.ai) · [Service offer and licence agreement](https://ailoot.ai/legal/offer?lang=en)

## Ailoot · The company and its project portfolio





Ailoot combines established operating experience, a large client base, stable service and ongoing KPI control.





The company and its project portfolio: millions of customers; monthly sales in the billions.





Ailoot brings that operating experience to API access for AI features in customer products, agents, applications and automations.
