<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Inferentia: AI Evals]]></title><description><![CDATA[Practical guides to designing AI evaluations, checking graders, and measuring whether model or prompt changes improve results.]]></description><link>https://www.inferentia.in/s/ai-evals</link><image><url>https://substackcdn.com/image/fetch/$s_!Ydl9!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20523561-1faf-45ef-81af-96c7aeb07db6_1120x1120.png</url><title>Inferentia: AI Evals</title><link>https://www.inferentia.in/s/ai-evals</link></image><generator>Substack</generator><lastBuildDate>Thu, 15 Oct 2026 21:55:12 GMT</lastBuildDate><atom:link href="https://www.inferentia.in/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Piyush Ranjan]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[inferentia@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[inferentia@substack.com]]></itunes:email><itunes:name><![CDATA[Piyush Ranjan]]></itunes:name></itunes:owner><itunes:author><![CDATA[Piyush Ranjan]]></itunes:author><googleplay:owner><![CDATA[inferentia@substack.com]]></googleplay:owner><googleplay:email><![CDATA[inferentia@substack.com]]></googleplay:email><googleplay:author><![CDATA[Piyush Ranjan]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Why your eval result is probably wrong: too few questions and a grader that makes mistakes]]></title><description><![CDATA[Every eval has two problems: too few questions, and a grader that sometimes gets the verdict wrong. How to size for the first, measure the second, and fix the mistakes that more questions can't.]]></description><link>https://www.inferentia.in/p/why-your-eval-result-is-probably</link><guid isPermaLink="false">https://www.inferentia.in/p/why-your-eval-result-is-probably</guid><dc:creator><![CDATA[Piyush Ranjan]]></dc:creator><pubDate>Thu, 15 Oct 2026 18:17:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!bPIj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68442fb6-31a8-4ed4-bfbc-a153755705fa_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bPIj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68442fb6-31a8-4ed4-bfbc-a153755705fa_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bPIj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68442fb6-31a8-4ed4-bfbc-a153755705fa_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!bPIj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68442fb6-31a8-4ed4-bfbc-a153755705fa_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!bPIj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68442fb6-31a8-4ed4-bfbc-a153755705fa_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!bPIj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68442fb6-31a8-4ed4-bfbc-a153755705fa_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bPIj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68442fb6-31a8-4ed4-bfbc-a153755705fa_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/68442fb6-31a8-4ed4-bfbc-a153755705fa_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1267064,&quot;alt&quot;:&quot;Inferentia AI Evals cover: &#8220;Eval Statistics. Sample size. Power. Grading error.&#8221; Conceptual confidence intervals, overlapping distributions and sampled dots.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.inferentia.in/i/220557553?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68442fb6-31a8-4ed4-bfbc-a153755705fa_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Inferentia AI Evals cover: &#8220;Eval Statistics. Sample size. Power. Grading error.&#8221; Conceptual confidence intervals, overlapping distributions and sampled dots." title="Inferentia AI Evals cover: &#8220;Eval Statistics. Sample size. Power. Grading error.&#8221; Conceptual confidence intervals, overlapping distributions and sampled dots." srcset="https://substackcdn.com/image/fetch/$s_!bPIj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68442fb6-31a8-4ed4-bfbc-a153755705fa_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!bPIj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68442fb6-31a8-4ed4-bfbc-a153755705fa_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!bPIj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68442fb6-31a8-4ed4-bfbc-a153755705fa_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!bPIj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68442fb6-31a8-4ed4-bfbc-a153755705fa_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The first question I ask about any A/B test is how big the sample needs to be. The answer depends on the smallest change worth detecting and how noisy the metric is. But before I trust that answer, I check two things: the setup and the metric. An A/A test, where both groups get the identical experience, should show no real difference. If it does, the setup is biased, for example users landing in groups unevenly. Passing it doesn&#8217;t prove the metric is right, though. If revenue double-counts orders that ship in two parcels, both groups double-count equally and the A/A test passes. So I also reconcile the metric against known transactions. A metric can pass an A/A test while consistently counting the wrong thing.</p><p>Evals raise the same two questions. The first is sample size. An eval doesn&#8217;t test a system on every question users will ever ask; it tests a sample. Pick a different 200 questions and you&#8217;d get a different score, just as a different set of users gives a different A/B result. The eval needs enough questions for a real improvement to stand out from that luck of the draw.</p><p>The second is the measurement itself. Every answer has to be graded, and graders make mistakes. When I started building evals for an AI analytics chatbot, I saw this quickly. An answer key accepts only one reading of an ambiguous date range. Two human raters disagree on whether a revenue number should pass when it silently excludes refunds. An LLM judge accepts a confident explanation without noticing that the SQL double-counts orders.</p><p>Those mistakes change the sizing question. An eval can be correctly sized to detect a 3-point change in the grader&#8217;s pass rate and still be badly sized to detect a 3-point change in answer quality. Under a simple model, a grader that flips one verdict in ten roughly doubles the questions you need. This piece takes the two problems in order: sample size first, then the grader.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dcTj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67647d9b-f40c-4381-b058-e213b2c00f03_1344x400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dcTj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67647d9b-f40c-4381-b058-e213b2c00f03_1344x400.png 424w, https://substackcdn.com/image/fetch/$s_!dcTj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67647d9b-f40c-4381-b058-e213b2c00f03_1344x400.png 848w, https://substackcdn.com/image/fetch/$s_!dcTj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67647d9b-f40c-4381-b058-e213b2c00f03_1344x400.png 1272w, https://substackcdn.com/image/fetch/$s_!dcTj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67647d9b-f40c-4381-b058-e213b2c00f03_1344x400.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dcTj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67647d9b-f40c-4381-b058-e213b2c00f03_1344x400.png" width="1344" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/67647d9b-f40c-4381-b058-e213b2c00f03_1344x400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:1344,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Diagram showing question sampling and grading as two evaluation measurement problems&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Diagram showing question sampling and grading as two evaluation measurement problems" title="Diagram showing question sampling and grading as two evaluation measurement problems" srcset="https://substackcdn.com/image/fetch/$s_!dcTj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67647d9b-f40c-4381-b058-e213b2c00f03_1344x400.png 424w, https://substackcdn.com/image/fetch/$s_!dcTj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67647d9b-f40c-4381-b058-e213b2c00f03_1344x400.png 848w, https://substackcdn.com/image/fetch/$s_!dcTj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67647d9b-f40c-4381-b058-e213b2c00f03_1344x400.png 1272w, https://substackcdn.com/image/fetch/$s_!dcTj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67647d9b-f40c-4381-b058-e213b2c00f03_1344x400.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>where an eval score&#8217;s noise comes from &#183; 2 problems</p><h2>How big does an eval need to be?</h2><p>By eval I mean something specific: an eval set of questions, an answer from each system version for every question, and a grader that marks each answer pass or fail. The score is the share that pass. Two separate problems make that score unreliable, and sizing an eval means dealing with both:</p><ol><li><p><strong>Sample size.</strong> The eval set is a sample. A different set of questions would give a different score, and a small set can&#8217;t tell a real improvement apart from luck.</p></li><li><p><strong>Grading.</strong> The grader is a measuring instrument. Some of its verdicts are wrong, so the score tracks what the grader thinks, which isn&#8217;t always what&#8217;s true.</p></li></ol><p>This section covers the first problem, assuming a perfect grader. The numbers below follow one worked example: an analytics chatbot at 82% accuracy, compared with a new prompt that reaches 85%.</p><p>Say your analytics chatbot answers 82% of questions correctly, and a new prompt reaches 85%. How many questions do you need to tell a real 3-point improvement apart from luck?</p><p>It&#8217;s the same calculation as sizing an A/B test. Pick the smallest improvement worth detecting, a significance level (5%, two-sided), and power, the chance of detecting the improvement if it&#8217;s real (80%). If the two versions answer separate sets of questions, you need about <strong>2,400 questions per version.</strong> Most internal eval sets have 50 to 300. With 100 questions per version, the smallest improvement you can reliably detect is around 13 points.</p><p>You can do much better by running both versions on the same questions. Their results are correlated: both tend to pass easy questions and fail hard ones. Comparing them question by question removes that shared difficulty from the noise. What matters then is how often the two versions disagree, one passing while the other fails:</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5d8i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50f9e1a1-a3be-47aa-85e4-5e9ba26261a1_844x136.png 424w, https://substackcdn.com/image/fetch/$s_!5d8i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50f9e1a1-a3be-47aa-85e4-5e9ba26261a1_844x136.png 848w, https://substackcdn.com/image/fetch/$s_!5d8i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50f9e1a1-a3be-47aa-85e4-5e9ba26261a1_844x136.png 1272w, https://substackcdn.com/image/fetch/$s_!5d8i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50f9e1a1-a3be-47aa-85e4-5e9ba26261a1_844x136.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5d8i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50f9e1a1-a3be-47aa-85e4-5e9ba26261a1_844x136.png" width="844" height="136" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/50f9e1a1-a3be-47aa-85e4-5e9ba26261a1_844x136.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:136,&quot;width&quot;:844,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Paired evaluation: 10% disagreement needs about 870 shared questions; 20% needs about 1,740, for a 3-point gain&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Paired evaluation: 10% disagreement needs about 870 shared questions; 20% needs about 1,740, for a 3-point gain" title="Paired evaluation: 10% disagreement needs about 870 shared questions; 20% needs about 1,740, for a 3-point gain" srcset="https://substackcdn.com/image/fetch/$s_!5d8i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50f9e1a1-a3be-47aa-85e4-5e9ba26261a1_844x136.png 424w, https://substackcdn.com/image/fetch/$s_!5d8i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50f9e1a1-a3be-47aa-85e4-5e9ba26261a1_844x136.png 848w, https://substackcdn.com/image/fetch/$s_!5d8i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50f9e1a1-a3be-47aa-85e4-5e9ba26261a1_844x136.png 1272w, https://substackcdn.com/image/fetch/$s_!5d8i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50f9e1a1-a3be-47aa-85e4-5e9ba26261a1_844x136.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><p>You&#8217;d need to estimate that disagreement rate too, ideally from an earlier comparison.</p><p>Evan Miller&#8217;s <a href="https://arxiv.org/html/2411.00640v1">Adding Error Bars to Evals</a> develops paired analysis, power calculations, and clustered error bars for questions that come in related groups, such as several questions about the same table. His framework also allows for random variation within a single question, so ordinary error bars already absorb some random grading noise.</p><p>What error bars can&#8217;t tell you is whether the grader&#8217;s pass rate tracks actual correctness. That&#8217;s the second problem, and the rest of this piece is about it.</p><h2>Every grader makes mistakes</h2><p><strong>First, make sure the task has a right answer.</strong> In analytics, many questions hinge on a definition nobody wrote down. &#8220;Last month&#8221; can mean the calendar month or the last 30 days. Revenue may include or exclude refunds. An active customer might be someone who bought, logged in, or did something else. If the definition is open, a mismatch with the answer key isn&#8217;t a grading mistake. The eval is mixing correctness with whether the chatbot guessed the key&#8217;s interpretation. Fix the task before judging the grader.</p><p><strong>Golden sets.</strong> A golden set grades by comparison with a reference answer, and the reference can be wrong. Northcutt and colleagues found label errors across ten widely used ML test sets, averaging at least 3.3% <a href="https://arxiv.org/abs/2103.14749">(Northcutt et al.)</a>. That isn&#8217;t an error rate for analytics evals, but it&#8217;s a good reason to treat every answer key as a measurement that needs checking.</p><p><strong>Human raters.</strong> People handle ambiguity better than an answer key, but they make judgment calls. Does the right number with one wrong sentence of explanation pass? Is an unstated assumption acceptable? Raters also change their standards as they go. Shankar and colleagues call this criteria drift: people refine what &#8220;good&#8221; means after seeing outputs <a href="https://arxiv.org/abs/2404.12272">(Shankar et al.)</a>. The refined rubric is often better, but answers graded before the change may need regrading.</p><p><strong>LLM judges.</strong> Zheng and colleagues found position, verbosity, and self-preference biases in the judges they tested <a href="https://arxiv.org/abs/2306.05685">(Zheng et al.)</a>. For an analytics chatbot, the bigger question is whether the judge can check the calculation at all. A judge that sees only the final answer, without the query, data, or execution result, can&#8217;t establish correctness. Asking it again won&#8217;t supply evidence it never had.</p><p><strong>Random or systematic.</strong> Some mistakes look random: they hit both versions about equally. Their main cost is sample size, though they also distort the absolute score. Others take sides: a judge that rewards longer answers favors whichever version writes more. Random mistakes need more questions. Systematic ones need a different fix. The next two sections take each in turn.</p><h2>What random mistakes do to sample size</h2><p>Start with a deliberately simple model. Assume the grader:</p><ul><li><p>wrongly fails 10% of correct answers,</p></li><li><p>wrongly passes 10% of incorrect answers,</p></li><li><p>makes each mistake independently, and</p></li><li><p>behaves the same way for both versions.</p></li></ul><p>That&#8217;s a stronger set of assumptions than &#8220;the grader is 90% accurate,&#8221; and it&#8217;s worth stating them, because the results depend on them.</p><p>Under this model, the observed pass rate is 0.1 + 0.8 &#215; the true accuracy. The 82% baseline shows up as 75.6%, and the 85% candidate as 78%. The real 3-point improvement shrinks to 2.4 points.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0G7K!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75a35b15-5aea-4b32-92a7-66ae86772bd6_844x229.png 424w, https://substackcdn.com/image/fetch/$s_!0G7K!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75a35b15-5aea-4b32-92a7-66ae86772bd6_844x229.png 848w, https://substackcdn.com/image/fetch/$s_!0G7K!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75a35b15-5aea-4b32-92a7-66ae86772bd6_844x229.png 1272w, https://substackcdn.com/image/fetch/$s_!0G7K!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75a35b15-5aea-4b32-92a7-66ae86772bd6_844x229.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0G7K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75a35b15-5aea-4b32-92a7-66ae86772bd6_844x229.png" width="844" height="229" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/75a35b15-5aea-4b32-92a7-66ae86772bd6_844x229.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:229,&quot;width&quot;:844,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Perfect grading versus 10% independent flips: a 3-point gain becomes 2.4 points and sample size rises from about 2,400 to 4,850 per version&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Perfect grading versus 10% independent flips: a 3-point gain becomes 2.4 points and sample size rises from about 2,400 to 4,850 per version" title="Perfect grading versus 10% independent flips: a 3-point gain becomes 2.4 points and sample size rises from about 2,400 to 4,850 per version" srcset="https://substackcdn.com/image/fetch/$s_!0G7K!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75a35b15-5aea-4b32-92a7-66ae86772bd6_844x229.png 424w, https://substackcdn.com/image/fetch/$s_!0G7K!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75a35b15-5aea-4b32-92a7-66ae86772bd6_844x229.png 848w, https://substackcdn.com/image/fetch/$s_!0G7K!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75a35b15-5aea-4b32-92a7-66ae86772bd6_844x229.png 1272w, https://substackcdn.com/image/fetch/$s_!0G7K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75a35b15-5aea-4b32-92a7-66ae86772bd6_844x229.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><p>The required eval roughly doubles. Notice the absolute scores dropped too: random mistakes aren&#8217;t harmless just because they&#8217;re random.</p><p>The doubling is specific to this baseline. Around a 50% pass rate, the same model raises the requirement by about 56%. The general point holds: the shrinking gap costs more than the extra noise.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H8je!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93cd51f-c33b-4442-8649-b2556a89f332_1344x622.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H8je!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93cd51f-c33b-4442-8649-b2556a89f332_1344x622.png 424w, https://substackcdn.com/image/fetch/$s_!H8je!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93cd51f-c33b-4442-8649-b2556a89f332_1344x622.png 848w, https://substackcdn.com/image/fetch/$s_!H8je!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93cd51f-c33b-4442-8649-b2556a89f332_1344x622.png 1272w, https://substackcdn.com/image/fetch/$s_!H8je!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93cd51f-c33b-4442-8649-b2556a89f332_1344x622.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H8je!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93cd51f-c33b-4442-8649-b2556a89f332_1344x622.png" width="1344" height="622" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f93cd51f-c33b-4442-8649-b2556a89f332_1344x622.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:622,&quot;width&quot;:1344,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Sample size rises as symmetric independent grader errors increase&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Sample size rises as symmetric independent grader errors increase" title="Sample size rises as symmetric independent grader errors increase" srcset="https://substackcdn.com/image/fetch/$s_!H8je!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93cd51f-c33b-4442-8649-b2556a89f332_1344x622.png 424w, https://substackcdn.com/image/fetch/$s_!H8je!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93cd51f-c33b-4442-8649-b2556a89f332_1344x622.png 848w, https://substackcdn.com/image/fetch/$s_!H8je!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93cd51f-c33b-4442-8649-b2556a89f332_1344x622.png 1272w, https://substackcdn.com/image/fetch/$s_!H8je!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93cd51f-c33b-4442-8649-b2556a89f332_1344x622.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>calculated for this article &#183; normal approximation, symmetric independent grader errors</p><p>The cost accelerates: each extra 5 points of grader error adds more questions than the last.</p><p>Pairing makes it worse. If the two versions truly disagree on 10% of questions, independent flips on each verdict raise the observed disagreement to 24.4%, because the grader creates disagreements that aren&#8217;t real. The shared questions needed rise from about 870 to about 3,320.</p><p>So a single accuracy figure isn&#8217;t enough to plan with. You need to know how the grader errs on correct and incorrect answers separately, and whether its mistakes on the two versions are related.</p><h2>When mistakes take sides</h2><p>The model above treats both versions the same. Real graders often don&#8217;t. Their mistakes can follow an answer style, a task type, or one version.</p><p>Suppose the new version writes longer explanations, and the judge rewards length even when the extra material is wrong. The measured advantage now exceeds the real improvement in correctness. A different bias could hide a real improvement or reverse the ranking.</p><p>More questions don&#8217;t fix this. They give you an increasingly precise estimate of the grader&#8217;s preference. In A/B terms, it&#8217;s a broken metric: no sample size rescues a test that&#8217;s measuring the wrong thing. You need evidence about the grading itself.</p><h2>Measuring your grader</h2><p>That evidence comes from a grading audit, the eval equivalent of reconciling a metric against known transactions.</p><p>Take a random sample of answers from both versions. For each one, keep everything needed to check it: the question, the metric definitions, the query, a data snapshot, and the execution result. Have two reviewers grade independently against a versioned rubric. Compare their verdicts with the answer key and the LLM judge, then settle disagreements by going back to the underlying evidence.</p><p>Record more than an agreement percentage. Count three things separately: correct answers marked wrong, incorrect answers marked right, and cases that are still ambiguous or can&#8217;t be verified. Then check where the errors fall. If they concentrate in one task type or favor one version, you have bias, not noise.</p><p>The audit also shows where to cut errors at the source:</p><ul><li><p><strong>Golden sets:</strong> state the definition in the question, or accept every defensible answer.</p></li><li><p><strong>Human raters:</strong> sharpen the rubric on the cases where they disagree, and regrade after it changes.</p></li><li><p><strong>LLM judges:</strong> don&#8217;t ask the judge to verify what it can&#8217;t see. For an analytics chatbot, run the query and compare the result with the correct number in code, and use the judge only for what code can&#8217;t check, such as whether the explanation is clear.</p></li></ul><p>One caution: two reviewers can share the same wrong assumption. The audit corrects toward your most careful grading, not toward perfect truth, and it&#8217;s worth saying so when you report results.</p><h2>The sizing recipe</h2><p>Putting it together, sizing an eval looks like this:</p><ol><li><p><strong>Define the tasks</strong> so each question has a right answer.</p></li><li><p><strong>Audit the grader</strong> to estimate how often it fails correct answers and passes incorrect ones, and whether its mistakes favor either version.</p></li><li><p><strong>Choose the design.</strong> Run both versions on the same questions where you can.</p></li><li><p><strong>State the smallest improvement worth detecting</strong> in correctness, not in the grader&#8217;s pass rate.</p></li><li><p><strong>Compute the questions needed</strong> using the grader&#8217;s error rates, not a perfect-grader formula.</p></li><li><p><strong>If the audit found bias,</strong> fix the grader or correct the estimate before trusting the result.</p></li></ol><p>For step 6, one statistical option is <a href="https://arxiv.org/abs/2301.09633">Prediction-Powered Inference</a>. It combines a large sample graded by the LLM judge with a smaller random sample graded carefully by people. For a mean score, the idea is simple:</p><p><strong>Corrected estimate = the judge&#8217;s average on the large sample + the average (careful grade &#8722; judge grade) on the small sample.</strong></p><p>The small sample measures the judge&#8217;s average error, and the confidence interval accounts for the uncertainty in that correction. For a comparison between two versions, apply the correction to the difference, not to each score separately.</p><p>It has limits. It corrects the overall estimate, not individual verdicts. The calibration sample has to be drawn at random from the same questions, not picked from conspicuous disagreements. A weak judge adds little, and a small calibration sample leaves wide intervals. And everything above assumes you know the grader&#8217;s error rates, when in practice you&#8217;ve estimated them from an audit, so that uncertainty belongs in the final analysis too.</p><h2>Before trusting the number</h2><p>The useful sizing question isn&#8217;t &#8220;how many questions does an eval need?&#8221; It&#8217;s &#8220;how many questions do I need to detect this improvement in correctness, with this grader, this design, and these dependencies between questions?&#8221;</p><p>Before I trust that number, I want to look at an answer the grader passed when it shouldn&#8217;t have, understand why, and check whether the same mistake would hit both versions equally. In an A/B test, that&#8217;s validating the metric before sizing the experiment. In an eval, the grader is the metric.</p>]]></content:encoded></item></channel></rss>