Evidence for LLM evaluation sets

Your first question: Does a generated evaluation set cover the cases I care about, without near-duplicates, and are its labels right?

Short answer, from one 200-row run per request: planning a taxonomy of the domain, with a few scenario variants per leaf, reached more leaves of an independent taxonomy on 3 of 4 requests and spread texts more evenly across its leaves on 4 of 4, with near-duplicates at or near zero. A difficulty dial made “hard” rows look harder but broke their labels, so it isn't offered. Taxonomy coverage is now coverage mode: opt-in from the request panel, and you confirm the taxonomy before it's applied.

Coverage

Leaves of a held-out taxonomy reached by the written text

A blind judge assigns each text to a leaf of a taxonomy that was never used to generate anything. Share of leaves with at least one text. Higher is better.

Leaves of a held-out taxonomy reached by the written text: the numbers in the chart
RequestCoverage mode offCoverage mode on
LLM eval set (bank support)84.4%90.6%
Support tickets76.9%92.3%
E-commerce reviews61.1%94.4%
Patient visit notes86.2%86.2%
Coverage detail: leaves reached, leaves with at least three texts, and the effective number of leaves (exp of entropy)
RequestLeaves, todayLeaves, prototype≥3 texts, today → prototypeEffective leaves, today → prototype
LLM eval set (bank support)27 of 3229 of 3222 → 2520.4 → 23.5
Support tickets20 of 2624 of 2615 → 2212.2 → 19.8
E-commerce reviews11 of 1817 of 188 → 144.8 → 10.6
Patient visit notes25 of 2925 of 2916 → 1915.2 → 19.8

Coverage costs realism: the leaf floor moves the top-level mix (e-commerce “delivered” fell from 147 to 118 of 200 rows). That is right for an evaluation set that asked for coverage and wrong for data meant to look like production. Coverage is likely but not guaranteed: leaves are weights, not quotas.

Label agreement

Texts a blind judge put in the leaf they were written for (taxonomy + variants)
RequestIn the assigned leaf
LLM eval set (bank support)96%
Support tickets97%
E-commerce reviews85%
Patient visit notes95%

Near-duplicates

Share of texts with another text at word-pair Jaccard ≥ 0.4
Request, armNear-duplicates
LLM eval set, baseline1%
LLM eval set, taxonomy, no variants4.1%
LLM eval set, taxonomy + variants0%
Support tickets, baseline2.5%
Support tickets, taxonomy + variants0%
E-commerce reviews, baseline0%
E-commerce reviews, taxonomy + variants2%
Patient visit notes, baseline0%
Patient visit notes, taxonomy + variants0%

A taxonomy without variants made texts within a leaf more alike (near-duplicates on the eval set rose to 4.1%); variants brought them back to zero. Variants ship with the taxonomy or not at all.

How it was measured
Four templates at 200 rows per arm; text written through the production path (Claude Opus with Ground's quality checks and personas). Judges are blind to the arm and the assigned labels: Haiku assigns leaves, Sonnet built the held-out taxonomy and checks labels.
Uncertainty
One run, 200 rows per arm, no confidence intervals: treat differences of one or two leaves as noise.
Scored by
Ground's assessment harness with LLM judges (self-scored). The held-out taxonomy comes from the same prompt on a different model, not from a different method.
Source
docs/assessments/taxonomy-and-difficulty.md

Measured no-go: a difficulty rubric

Labels still correct, by difficulty level (LLM eval set)

Share of rows whose assigned intent a Sonnet judge accepted as a correct reading of the text. Higher is better.

Labels still correct, by difficulty level (LLM eval set): the numbers in the chart
Levelnaive (level named, one-line hint)difficulty rubric
Easy98.5%98.5%
Medium96.9%98.5%
Hard100%76.5%
Per level and arm: judged difficulty (1–5), judge category accuracy, and a small model's answer score (1–5)
Arm, levelJudged difficultyJudge category accuracyAnswer score
naive (level named, one-line hint), easy1.9398.5%3.43
naive (level named, one-line hint), medium2.2093.8%3.38
naive (level named, one-line hint), hard3.1594.1%3.21
difficulty rubric, easy1.9397%3.46
difficulty rubric, medium2.2092.3%3.66
difficulty rubric, hard3.3850%3.72

Before it is reconsidered it needs a verify-and-repair step per row, difficulty measured on the target model itself, and length held constant so “hard” doesn't just mean “longer”.

Leakage guard

AI-written text must not give the label away. Prompts forbid stating it, a per-column list of label words rewrites any value that uses them, and each export's text-quality summary compares a text-only classifier for the label with one trained on the row's other columns. Published leakage measurement on a public evaluation set (text-only AUC): pending first independent run.

Next: methods and reproducibility, or defects and edge cases for test data.