Skip to content
runonweb

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

Pick a sample, or write a text and your own questions

Model size

Try with
~750 MB, cached after the first load
Answers

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: 1 for raw logits. Option order can still change an answer.
  • Kev can’t subtract dates. dateFacts: true appends the day count between every pair of absolute dates in the text, as Kev’s KEV_DATE_FACTS does.
  • 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
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 runonweb
runonweb/classifyts
import { 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.