WhichJudge / decision

Comment toxicity gate

Replace compares Jev with 4o-mini only

A neighbour of the hate-speech row: toxicity in comments rather than hate speech aimed at a group in tweets, on CC0 gold. Jev 76.8% beats Mini 72.4% (Holm p=0.035). TF-IDF beats both at 85.2%, and clef, a hosted typed-decision API, beats Jev at 86.0%, as clef-flash beats Jev at 85.4%. Read this next to the hate row: a different task and dataset gives a different ranking, which is the point, not proof that the hate loss was label noise.

Replaces: Toxicity classifier gating user comments before publication
Gold: google/civil_comments - Civil Comments test split (CC0), n=500, seed=11
Labels: toxic / not_toxic

ModelAccuracy95% CILatency (p50 unless stated)Cost per 1M decisions
Jev jev-1.13.076.8%[72.9% - 80.3%]770 ms$19.27
gpt-4o-mini-2024-07-1872.4%[68.3% - 76.1%]996 ms$33.87
gpt-5.4-mini-2026-03-1775.6%[71.6% - 79.2%]892 msunpriced (203.6 tok/call)
Laya (self-hosted, convaiinnovations/laya)72.2%[68.1% - 75.9%]391 ms local cpu, no network$0 API, compute not priced
gpt-6-luna (OpenAI Decisions API)72.6%[68.5% - 76.3%]903 ms, one client, region unset, includes network$25.33 (list $0.10 per 1M input tokens, 2026-10-09)
@cf/cloudflare/clef (Cloudflare Workers AI)86.0%[82.7% - 88.8%]1167 ms, one client, region unset, includes network$64.68 (list $0.24 per 1M input tokens, 2026-10-09)
@cf/cloudflare/clef-flash (Cloudflare Workers AI)85.4%[82.0% - 88.2%]1286 ms, one client, region unset, includes network$24.25 (list $0.09 per 1M input tokens, 2026-10-09)
TF-IDF + LR (train n=60,000)85.2%[81.8% - 88.0%]77 us mean per row, batched$0

McNemar Jev vs Mini: jev, p=0.00501 (39 Jev-only correct, 17 Mini-only correct). TF-IDF vs Jev: tfidf.

Quit line

86.7% on 58.8% of comments at >=0.9, 9.9pt above ungated, and ECE 0.101 is low enough to state the confidence out loud. Publish that slice automatically and queue the rest.

Auto slice: at Jev confidence ≥ 0.9, 86.7% accurate on 58.8% of traffic, which is +9.9pt against 76.8% ungated. That threshold is the strongest one still covering at least half the traffic, picked by rule from the measured gates.

Calibration: ECE 0.101 (max bin gap 0.13). ECE says whether the confidence can be read as a probability. It does not say whether gating helps: thresholding only needs the model to rank its own answers, so a badly calibrated task can still gate well. High ECE costs you the right to quote the number, not the right to threshold on it.

Verify this

Frozen samples 52e19e1682d7, schema 99a600702dd1. receipts/civil_toxicity.json here is the slim copy: per call, the id, gold, prediction, confidence, latency and the SHA-256 of the request and response. The full request and response bodies are in the repository at results/receipts/civil_toxicity.json .

git clone https://github.com/RadRebelSam/whichjudge.dev
python3 scripts/verify_run.py   # recounts this table from the receipts, no API key
python3 scripts/run_eval.py     # hits the APIs again with your own keys

Independent bench, not affiliated with TypeSafe AI. Public gold labels, n=500, not a procurement study. All 11 decisions · source and data · contact@radrebeldeveloper.com

build e6d1f683a4 · this row from run 1 of 1, 2026-09-21T06:23Z