Classify: Text classification
Route a ticket, rate a review or flag a comment: yes/no, multiple-choice and rating questions about one text, answered with calibrated probabilities in a single call. Runs Kev, an open Jev-style decision model, in the tab. No text is generated.
Try Classify
Runs in this tab · nothing uploaded
Model size
Probabilities for every option will appear here…
Response JSON
{}What it does
Ask typed questions about any text. Get probabilities.
- Kev-0.8B by Jared Palmer: a LoRA and a pointer head on Qwen3.5-0.8B-Base, trained to answer typed questions. Each question scores its options in one forward pass; nothing is generated, so answers are probabilities, not text.
- Request and answer shapes are TypeSafe’s System One API (
noul·choice·score), the same JSON a Kev or Jev server accepts. Question ids are yours; the model never sees them. - Each question only sees the text and itself. The text is read once and its cache is reused for every question.
- Probabilities are calibrated with the temperature fitted for the checkpoint (~2.35). Pass
temperature: 1for raw logits. Option order can still change an answer. - Kev can’t subtract dates.
dateFacts: trueappends the day count between every pair of absolute dates in the text, as Kev’sKEV_DATE_FACTSdoes. - Two sizes.
small(default) is Kev-0.8B: 0.70 on sources it wasn’t trained on, weak on general knowledge, best in English.size: "large"is Kev-4B: 0.84 (Jev: 0.86), ~2.7 GB and about 4× slower. Test either on your own data before trusting a threshold. - runonweb merged the LoRA and exported the backbone to ONNX: int4 weights with fp32 activations (Kev-0.8B keeps its Gated DeltaNet layers in int8). Probabilities differ from the fp32 export by ~0.03 (small) and ~0.04 (large) on average. Recipe in
training/kev-onnx.
Specifications
- Package
- runonweb/classify
- License
- Apache-2.0
- Weights
- midudev/kev-0.8b-ONNX
- Download
- ~750 MBlarge ~2.7 GB
- Quantization
- int4 on WebGPUsame files on WASM
- Backend
- WebGPUWASM fallback
- Input
- Text
Get started with runonweb/classify
pnpm add runonwebimport { Classifier } from 'runonweb/classify'
const classifier = new Classifier() // size: 'large' for Kev-4B (~2.7 GB)
await classifier.load()
const { answers } = await classifier.classify({
state: 'Shoes arrived two weeks late and in the wrong size.',
questions: {
department: {
type: 'choice',
instructions: 'Which team should handle this?',
criteria: { returns: null, shipping: null, billing: null },
},
escalate: { type: 'noul', instructions: 'Does this need urgent human attention?' },
frustration: {
type: 'score',
instructions: 'How frustrated is the customer?',
criteria: ['Calm', 'Frustrated', 'Very angry'],
},
},
})
answers.department.choice // "returns"
answers.department.probabilities // { returns: 0.50, shipping: 0.44, billing: 0.06 }
answers.escalate.noul // 0.51 = p(yes)
answers.frustration.score // 1.21 on a 0–2 scale
classifier.dispose()Same shape everywhere: construct, load(), run, dispose(). Pass onProgressto show download progress on first use.
Questions about Classify
Does Classify run on device?
Yes. Weights download once and stay in the browser. Nothing is sent to a server.
Which model does Classify use?
Kev-0.8B (Qwen3.5-0.8B-Base + LoRA) by Jared Palmer · base: Qwen, under Apache-2.0. runonweb loads the midudev/kev-0.8b-ONNX weights and runs int4 on WebGPU · same files on WASM.
How big is the Classify download?
~750 MB · large ~2.7 GB, fetched once on first use. The browser caches the weights, so later loads skip the network and keep working offline.
What does Classify cost?
Nothing. runonweb is free and MIT-licensed, with no device limits, tokens or sign-in. The weights keep their own license: Apache-2.0.
Which browsers support Classify?
Chromium browsers use WebGPU. Firefox and Safari fall back to WebAssembly automatically, slower but identical output.
Can I use a different model with runonweb/classify?
Yes. See each module’s docs for the options it accepts (model, size, language…). Check the license and test both backends before shipping.