Who should label a dataset? Rules, a decision model and two LLMs on the same 300 records
Anything built on public expression data has to decide what each dataset actually contains — patient tumours, a panel of cell lines, mice — and GEO does not record that in a structured field. It is stated, if at all, in free text. We put four instruments on that one question over 300 blinded records: a hand-tuned rule system, a calibrated decision model, and two general language models. The rule system was right 43% of the time. The best instrument was right 69%. And the largest single effect in the study was neither: it was the wording of the question, which moved agreement between two human annotators by 24 points.
The question
Given a GEO series' title, summary, organisms and sample count: what biological material was profiled? Five options, in their final wording:
| Option | Means |
|---|---|
| patient | material from people — tumours, biopsies, resected specimens, blood, bone marrow, sorted or cultured primary cells — including tumour together with matched or healthy normal tissue |
| cell line | established immortalised lines only, in vitro |
| animal | animals only: PDX, cell-line xenografts, genetically engineered mouse models |
| patient and model | patient material together with lines, xenografts or animals in the same series |
| not stated | the text does not say what was profiled |
The label is not academic: where this corpus comes from, material type feeds the dataset ranking directly, so a mislabelled series is one shown to the wrong reader.
The four instruments
- Rules — a regular-expression classifier tuned over months against this corpus, and the one in production. Not a strawman: it knows that resected, cohort, primary human glioblastomas and N tumours mean patient material.
- Decision model — TypeSafe's Jev (jev-latest): state as named fields, a question with fixed options, and back comes the chosen option with a probability for every option. No text is generated.
- Language models — Claude Haiku 4.5 and Claude Sonnet 5, given the decision model's own instructions and criteria as a prompt, asked for a label and a probability.
Identical question text for all four. Anything else would compare prompts rather than instruments.
Sample and labels
The corpus is 26,138 ranked GEO series across 53 cancers. The sample of 300 was stratified over the rule system's label so the rare classes appear at all; because that over-represents exactly the strata where the rules are weakest, every accuracy below is also given reweighted to the corpus's natural composition (patient 28.1%, not stated 30.5%, cell line 26.9%, patient and model 12.9%, animal 1.6%).
Labels were assigned from the record text alone, blind — the annotation file held nothing but title and summary, with every system's answer in a separate key file. Two of the 300 were unresolvable, leaving 298. A second annotator, a molecular biologist, labelled a random 60 independently, twice: once under each version of the option set.
The wording result
The first option set used mixed for "patient material together with a line or xenograft". Agreement between the two annotators was 40.0%, κ = 0.216 — barely above chance.
The disagreements were not about reading the records. Two systematic differences explained most of them: one annotator read mixed as "tumour together with normal tissue" — one of the commonest designs in GEO, for which the option set had no word at all — and cell line as "any material described as cells", including flow-sorted patient cells. The option set was rewritten so each option states what it excludes and both boundary cases are decided explicitly. On the same 60 records:
| Option set | Agreement | Cohen's κ |
|---|---|---|
| v1 | 40.0% | 0.216 |
| v1, the two differences mapped mechanically | 58.2% | 0.338 |
| v2, same records | 64.4% | 0.493 |
What is left is genuine ambiguity, along three axes: how much may be inferred when material is implied but not named ("cSCC cells", "glioma cultures"); whether outside knowledge of a famous study may be used when the text is silent; and whether a patient-derived xenograft is patient material, an animal, or both.
Accuracy
| Arm | Accuracy | 95% CI | Weighted | macro-F1 |
|---|---|---|---|---|
| Rules | 43.0% | 0.37–0.49 | 47.7% | 0.387 |
| Jev | 68.8% | 0.63–0.74 | 74.2% | 0.556 |
| Claude Haiku 4.5 | 59.7% | 0.54–0.65 | 64.7% | 0.533 |
| Claude Sonnet 5 | 69.1% | 0.64–0.74 | 73.9% | 0.555 |
Jev and Sonnet 5 are statistically indistinguishable; both sit about 26 points above the rule system. Per class, the difficulty is not where one might expect:
| Arm | patient | cell line | animal | patient and model | not stated |
|---|---|---|---|---|---|
| Rules | 0.55 | 0.56 | 0.37 | 0.20 | 0.24 |
| Jev | 0.88 | 0.74 | 0.48 | 0.29 | 0.39 |
| Haiku 4.5 | 0.81 | 0.70 | 0.63 | 0.25 | 0.28 |
| Sonnet 5 | 0.88 | 0.79 | 0.48 | 0.33 | 0.29 |
| n in gold | 151 | 64 | 10 | 13 | 60 |
not stated is hard for everything: deciding that a record does not say what it profiled means resisting a plausible guess, and all three models guess. The dominant error for each of them is over-reporting patient and model — 20 to 30 records apiece — on series that name only one kind of material.
Where two people agreed
| Arm | All 298 | Both annotators agreed (n = 38) |
|---|---|---|
| Rules | 43.0% | 52.6% |
| Jev | 68.8% | 92.1% |
| Haiku 4.5 | 59.7% | 92.1% |
| Sonnet 5 | 69.1% | 84.2% |
This is the central result. Where the task is unambiguous to people, every model is right 84–92% of the time; the rule system is wrong on nearly half of even those. Model error concentrates in the ambiguous residue. Rule error does not — it is spread across easy and hard records alike. (The subset is 38 records and skewed toward patient; it is a check, not a benchmark.)
Calibration
Every arm was asked how sure it was. Only some of those numbers behave like probabilities.
| Arm | ECE | said 0.8 | said 0.9 | said 1.0 |
|---|---|---|---|---|
| Jev | 0.198 | 46% right (n=28) | 65% (n=26) | 81% (n=182) |
| Haiku 4.5 | 0.352 | 25% (n=63) | 31% (n=13) | 72% (n=218) |
| Sonnet 5 | 0.155 | 58% (n=108) | 80% (n=44) | 94% (n=104) |
Haiku's confidence is close to useless: it claims 1.0 on 73% of the sample and says 0.8 on 63 records it gets right a quarter of the time. Sonnet is better calibrated than we expected — the lowest ECE here — but it concentrates on three values, so a threshold has little to bite on. Jev's spreads across the range and rises with accuracy, with one inversion at 0.6.
The practical question is not accuracy but autonomy: at what stated probability can a label be taken without review, and what is left to read?
| Threshold | Jev autonomous | errors accepted | Sonnet autonomous | errors accepted |
|---|---|---|---|---|
| accept everything | 100% | 93 | 100% | 92 |
| p ≥ 0.8 | 76% | 51 | 81% | 54 |
| p ≥ 0.9 | 67% | 39 | 48% | 13 |
| p ≥ 0.95 | 61% | 34 | 35% | 6 |
Sonnet at p ≥ 0.9 is the strongest operating point in the study: half the corpus labelled autonomously with 13 errors in 298. Jev automates more and accepts more error. Haiku has no usable operating point at all, because its confidence does not separate its right answers from its wrong ones.
Cost and latency
| Arm | Per 300 records | Projected per 26,138 | Median latency | Output needs parsing |
|---|---|---|---|---|
| Rules | $0 | $0 | microseconds | no |
| Jev | ~$0.007 | ~$0.65 | ~0.2 s | no |
| Haiku 4.5 | $0.21 | ~$18 | 0.74 s | yes |
| Sonnet 5 | $0.95 | ~$83 | 1.63 s | yes |
Sonnet costs roughly 130× Jev per record for accuracy that is statistically the same; what it buys is the better high-confidence band. Seven of Sonnet's 300 replies could not be parsed even with a 300-token budget — an earlier 40-token budget truncated 27 of them, a harness error of ours that we corrected and re-ran. A decision model cannot return an unparseable answer, because it returns an option rather than prose.
Limitations
- One task, one domain, 298 records. Nothing here transfers to option sets with many more classes or overlapping definitions.
- The primary annotator was the author, blind to every system's label but not independent of the study. The second annotator labelled 60; κ = 0.493 is moderate, not substantial, and the agreed subset is 38 records.
- The second round reused the same 60 records, so some anchoring to the first round is possible. It was done after the rewrite, without access to the first round's file.
- The rule system is the production classifier of this corpus's own pipeline, tuned by the same author: a strong baseline, but not an independently built one.
- Task-trained classifiers and domain BERT fine-tunes were not re-benchmarked; each needs its own labelled training set, which is the cost that keeps them out of small projects. Given that budget they may match or beat everything here.
- Prices, models and the corpus all move. Figures are from 20–23 September 2026.
What we conclude
- Report κ or do not report accuracy. The same records, the same annotators and a reworded option set moved agreement 24 points. An accuracy figure without an inter-annotator statistic measures the instrument and the ruler at once.
- The rule system should be retired from this task. 43% overall, and 53% on records two people agree about, is not a baseline worth patching at the margins.
- Calibration, not accuracy, decides what can be automated. Two arms tied on accuracy; only one offered a threshold that buys real autonomy, and the cheapest offered none despite claiming certainty on three-quarters of the sample.
- Write the option set as carefully as the prompt. Most of what looked like model error in the first pass was an option set with no word for the commonest design in the corpus.
Frequently asked questions
What is a decision model?
A model given evidence as structured fields and a question with fixed options, returning the chosen option with a probability for each. No prose, nothing to parse, and an uncertainty that can be checked against outcomes. Jev is TypeSafe's; this study used jev-latest.
Why is inter-annotator agreement the headline?
Because gold labels are the ruler every accuracy is measured against. Ours moved from κ 0.216 to 0.493 on the same records through wording alone, which is larger than the gap between two of the instruments.
Should I use a decision model or a chat model for this?
On this task they tied on accuracy. Take the decision model for cost (about 130× cheaper), latency and output discipline; take the language model if you need its better-behaved high-confidence band, or explanations, or reasoning over a long document. Neither replaces reading the ambiguous residue.
Can I reproduce this?
The source is public: NCBI GEO series metadata. The option sets are quoted in full above, and the blinded records, both annotators' labels, every arm's per-record output with probability, tokens and latency, and the scoring scripts are kept in the project's eval/gold/ directory. Exact numbers will differ as models and records change.
Is this sponsored?
No affiliation, no funding, no vendor review. Both APIs were paid for at list price by the author.