A judge cannot be calibrated against random production traffic, because random traffic is skewed toward easy, repetitive tickets. What you need is a golden set: a curated, versioned collection of tickets with fixed human labels that you trust as the answer key. The common framing across evaluation guides is that a golden dataset is a labeled record of what should have happened, deliberately weighted toward grey-area cases rather than the most common ones (Musubi). That bias is intentional. If your golden set accuracy is 75% while live accuracy looks like 92%, that gap is a feature, not a defect.
The backbone should be real failures, not invented examples. Every escalation, thumbs-down, or reopened ticket is a free, high-value test case that exposed a genuine gap (qaskills.sh). Capture the ticket text, the metadata the judge will see, and what a correct outcome was.
Tag every case with an intent, because the whole release decision is per intent. A judge that is excellent at password resets and terrible at billing disputes needs different treatment for each, and an aggregate number hides exactly that.
| Decision | Recommended choice | Why |
|---|---|---|
| Source of cases | Real tickets plus known failures, some synthetic edge cases | Synthetic alone encodes your assumptions, not user behavior |
| Minimum per intent | 30 labeled cases before any autonomous grading | Below roughly 20 to 30, kappa confidence intervals are too wide to act on (GEDD) |
| Mix per intent | Clear passes, clear fails, boundary cases | Boundary cases are where judges break |
| Label authority | One named gold owner with final say | Prevents label churn across reviewers |
| Versioning | Freeze v1.0, create new versions on policy change | Keeps trend lines comparable |
| Separation | Never reuse golden cases in prompt tuning | Tuning on the test set silently inflates scores |
The last row matters more than people expect. If you paste golden examples into the judge prompt as few-shot demonstrations, you have trained on the test set and the kappa you compute afterwards is meaningless. Keep a small tuning bank of examples separate from the frozen golden set.
One practical sourcing note: sample the golden set from the same workflows the judge will score, including rare high-risk cases and cases sitting right on the rubric boundary, then keep it isolated from anything you use to write the judge prompt (OneUptime). Store each row with a case identifier, the ticket input, the human label, a short human reason, and the rubric version. The reason field is what lets you debug a judge later without re-reading every ticket.



