What it decides
Each example is a JSON state plus typed questions. Gold labels are not free text.
Table with columns: Type, Returns, Notes| Type | Returns | Notes |
|---|
choice | One key among the criteria, with a probability on every key | Up to 16 options. Order should not be trusted as a feature. |
noul | true / false, with a probability | Yes/no and verification. |
score | An index on an ordered rubric | Up to 10 levels. |
Abstention is an option (non_determinabile / nessuna_delle_opzioni), not a special token. If the state does not support an answer, the model is trained to take that option instead of guessing.
The tasks it was trained for: triage and routing, intent, claim verification, prompt-injection checks, invoice checks, and agent supervision (approve a tool call, pick a tool, ask for clarification, mark a task done, read a trace).
Weights
model/F16/kAI Bolt realease-F16.gguf
F16 is the master quant. Smaller GGUF quants, if present, live beside it. The filename still has the upload spelling realease. Rename it in a later commit if you want kAI_Bolt_0.8B-F16.gguf; the card matches the file you are uploading now. Load it with any GGUF runtime that can serve this architecture (llama.cpp, LM Studio, or an MLX build of the same fused weights). Point the decision server at that file. Do not chat-template the questions into a generated paragraph and then parse it. The head is the product.
Benchmarks
Every figure below is either a measurement from this release or a number copied from a public write-up. Nothing here was filled in to make the table look better.
Protocols are not paired. kAI Bolt was measured by the author on an Apple M2. Rizzo Flow’s numbers are their published llama.cpp runs (Q8_0, CUDA, RTX 5060 Ti unless noted). Jev’s typed-decisions row is the dataset-card figure quoted by Rizzo Flow, not a rerun on the same machine. Do not read a one-point gap as a ranking.
typed-decisions
LocalLLaMA/typed-decisions. Accuracy is exact match to the gold argmax. The dataset card’s teacher self-agreement ceiling on the full suite is 0.735. A local run can sit above that ceiling when the slice or the scorer is not the full 2,000-decision test. kAI Bolt’s 0.7465 is the author’s run. It is not a leaderboard submission.
Table with columns: Model, Size, Accuracy, Notes| Model | Size | Accuracy | Notes |
|---|
| kAI Bolt 0.8B | 0.8B | 0.7465 | Author run. p50 about 500 ms on M2. |
| Jev 1.13.0 | hosted | 0.727 | Dataset card, as quoted by Rizzo Flow. KL 1.442, Brier 0.148. |
| Rizzo Flow 4B | 4B | 0.648 | Fine-tune, Q8_0. ECE 0.112, p50 195 ms. |
| Spark-X2.5-4B base | 4B | 0.574 | Same Rizzo table, before the LoRA. |
| Rizzo Flow 1.7B | 1.7B | 0.544 | Q8_0. ECE 0.169, p50 109 ms. |
| Spark-X2.5-1.7B base | 1.7B | 0.530 | Same Rizzo table. |
Source for every row except kAI Bolt: Rizzo Flow README, typed-decisions table (Q8_0). A same-size specialist, od1-nano, reports 0.751 on the full 2,000-decision test (model card). That row is a different harness. It is listed so a 0.8B comparison is not hidden.
Bars are accuracy / 1.0 * 600, drawn from zero. kAI Bolt is the only highlighted bar because it is the only author measurement.
SemIf fixtures
SemIf fixtures, as scored by the author (raw accuracy, zero schema errors).
Table with columns: Fixture, Accuracy, Correct, Errors, p50| Fixture | Accuracy | Correct | Errors | p50 |
|---|
| authored144 | 0.7431 | 107/144 | 0 | 144 ms |
| perturbations108 | 0.6759 | 73/108 | 0 | 152 ms |
Rizzo Flow publishes mean-family balanced accuracy on the same files, not raw accuracy. Those numbers are not dropped into the chart above.
Table with columns: Model, authored144 (balanced), perturbations108, Source| Model | authored144 (balanced) | perturbations108 | Source |
|---|
| Rizzo Flow 4B Q8_0 | 0.845 | 0.946 | Rizzo Flow README |
| SemIf Q8, their published row | 0.819 | 0.766 | same table |
| Rizzo Flow 1.7B Q8_0 | 0.678 | 0.640 | same README, 1.7B paragraph |
On raw accuracy, kAI Bolt 0.8B is in the same band as Rizzo Flow 1.7B’s balanced scores and behind the published 4B fine-tune. That is the honest reading. The 4B is better on this suite.
JevBench 1.2 files
Author run on the public JSONL files, Apple M2. This is not the official JevBench v1.2 score. The official hard tier is 220 items (111 public + 109 held out). Jev 1.13.0’s published hard-tier accuracy is 74.1% on that full tier (RESULTS-v1.2). It is not comparable to 43/111 and is not plotted against it.
Table with columns: File, Accuracy, Correct, p50, Comment| File | Accuracy | Correct | p50 | Comment |
|---|
| easy.jsonl | 1.0000 | 48/48 | ~150 ms | Public easy slice. Most systems on the v1.2 board are also perfect on easy. |
| original.jsonl | 0.7222 | 52/72 | 150 ms | Public original slice. |
| hard.jsonl | 0.3874 | 43/111 | 447 ms | Public hard file only. |
A public-hard (111) number that is labeled that way: jqv’s zero-shot Qwen3-1.7B at 0.423 (jqv README). kAI Bolt’s 0.387 on the same file length is close to that 1.7B zero-shot row and well below models that publish a full-tier hard score. Hard is the weak slice of this release.
What was not run
No paired rerun of Rizzo Flow, Jev, Liquid d1, or Microsoft-Decision-1 was done for this card. Internal training dev numbers are not public benchmarks. They are in the training section only.
Training
Three QLoRA stages on the run-1 checkpoint, Unsloth Desktop, decision-model mode, MLX checkpointing, seed 3407, cosine, weight decay 0.01, dropout 0, one epoch, rank 16, alpha 16.
Table with columns: Stage, Rows (train), Held-out accuracy, Held-out ECE, Learning rate| Stage | Rows (train) | Held-out accuracy | Held-out ECE | Learning rate |
|---|
| A | 13,743 | 0.51 → 0.66 | 0.03 | 3e-5 |
| B | 13,443 | 0.75 → 0.91 | 0.01 | 2e-5 |
| C | 5,841 | 0.82 → 0.88 | 0.02 | 1e-5 |
Held-out here is the stage dev file inside the trainer (dev_A 349, dev_B 479, dev_C 300). It is not T1–T4 and it is not typed-decisions test. Stage A’s first launch (1e-4, rank 32) diverged and was discarded. The table is the relaunch.
Data, all with a commercial-use license, or synthetic labels computed from code rather than from a teacher model:
- LocalLLaMA/typed-decisions (Apache-2.0), train rows in stage C
- tasksource procedural typed decisions (Apache-2.0)
- Open-Jev redistributable records (CC0); customer-control and workflow-controls rows were left out
- tasksource Jev typed decisions limited to
license_use=commercial
- MASSIVE Italian intents via the MTEB mirror (CC-BY-4.0)
- Italian synthetic families: tickets, invoices, plant checks, tool calls, traces, prompt injection, claim verification
Exact-hash and 8-gram decontamination was applied against the frozen tests. CC-BY-SA source rows, where present in the commercial slice, require attribution of the upstream set and share-alike on derived data.
Use
Fit for: routing a ticket, accepting or refusing a tool call, checking a short claim against a state, scoring a rubric, abstaining when a field is missing.
Not fit for: open-ended writing, legal or medical advice, anything that needs the official JevBench or SemIf leaderboard protocol, or any context where a wrong confident label is expensive and you have not calibrated on your own dev set. Stage ECE numbers are internal. They are not a promise about your traffic.
Italian and English are both in the training mix. Quality outside those two languages was not measured for this card.
Reproduce the author numbers
The typed-decisions, SemIf, and JevBench files were scored locally against an LM Studio (or equivalent) server on an M2, p50 measured on that machine. To compare with Rizzo Flow fairly, run both models on the same files, the same metric (raw accuracy or mean-family balanced accuracy, not a mix), and the same quant. The chart in this card does not do that for you.
License
Apache License 2.0. See LICENSE.
Copyright 2026 Francesco Cappa.
Qwen3.5-0.8B is used under its own license. MASSIVE Italian data is CC-BY-4.0; keep the upstream attribution if you redistribute derivatives of that slice. This model is not affiliated with TypeSafe, Liquid AI, Microsoft, Alibaba Cloud, or the Rizzo Flow authors.