Statistical power for LLM evals.

Your eval set cannot see the regression you are looking for.

Forty cases, 82% to 79%, and the team spends a day bisecting a prompt. That difference is noise, and the eval could never have told you otherwise. EvalPower computes what your eval can actually resolve, before you trust it.

No spam. One email when it is ready to try.

Not distinguishable from noise40-case eval · 82.5% → 77.5%paired permutation test, 5,000 sign flips
Scoreboard reads
-5.0 pts
what gets reported
95% interval
-12.5 pts → 0.0 pts
covers zero
p-value
0.49
nowhere near 0.05
Smallest visible effect
14.3 pts
at n=40

Two real eval runs with a known injected regression. Everything computed live from the per-case outcomes.

The problem

Everyone reports the number. Almost nobody reports the uncertainty on it.

Eval suites emit a pass rate. Two versions, two pass rates, and the difference gets treated as a fact. But a pass rate is an estimate from a sample, and its standard error depends on how many cases you ran and how much the judge disagrees with itself. Without that, a team cannot tell a real regression from sampling noise, so they chase phantoms and ship real regressions in the same week.

±8 pts
Standard error on the difference between two 40-case pass rates near 80%. Anything smaller than that is not interpretable.
Direct consequence of the binomial standard error. Check it in the calculator
Cases needed to halve the smallest effect you can detect. Power scales with the square root of n, so doubling your eval set buys about 30%.
Arithmetic, not opinion
Unmeasured
How much of a typical eval score is judge disagreement rather than model behaviour. Almost no team runs repeated judgements to find out.

The insight

Report significance and you are answering the wrong question first.

Significance testing answers "given what I observed, could this be chance?" That is the second question. The first is "if a regression I care about existed, would this eval set have found it?" That is statistical power. A team with an underpowered eval that reports significance correctly still ships regressions, because their eval quietly fails to reject almost every real effect. And the specific structure of evals makes this worse than the textbook case: the same cases run through both versions, so the correct test is paired, and the judge itself contributes variance that no number of extra cases can remove.

Method

Paired bootstrap confidence intervals and sign-flip permutation tests instead of an unpaired t-test on two means. Power and minimum-detectable-effect computed for the paired design. Variance decomposed into model-driven and judge-driven components from repeated judgements on identical outputs, which yields an effective sample size. Benjamini-Hochberg control across slices, because scoring twelve categories separately is twelve tests.

How it works

Four steps, no data science team

01
Point it at eval runs you already have

Per-case outcomes from your existing harness, or an export from whatever platform you run. It needs the case-level scores, not the summary. The pairing is where the power comes from.

02
It tells you what the set can resolve

Minimum detectable effect at your current size, power for the regression size you actually care about, and the number of cases required to close the gap.

03
Separate the judge from the model

Repeated judgements on identical outputs split observed variance into real quality differences and judge self-disagreement, and convert that into an effective sample size.

04
Gate the merge on evidence, not vibes

A CI check that blocks on a statistically resolved regression and stays quiet on noise, with the interval and the power printed in the PR so the decision is auditable.

Who it is for

The engineer who has to decide whether to ship

Teams with an eval suite they do not fully trust. Usually the ones who have already argued about whether a three-point move was real, and had no way to settle it.

Pricing

Free
$0
Open-source calculator and CLI
  • Power and MDE calculator
  • Paired bootstrap CLI
  • Public, no account
Most common
Team
$300/mo
Up to 20 engineers
  • CI gate with PR annotations
  • Judge-variance tracking over time
  • Per-slice FDR control
  • Eval-set health monitoring
Scale
$1,200/mo
Unlimited seats
  • Self-hosted
  • Custom estimators
  • SSO and audit log
  • Design review with a statistician

Competition

What exists, and what it does not do

WhoWhat they doThe gap
BraintrustEval automation that analyses statistical significance and can block merges.Answers whether an observed difference is significant. Does not tell you beforehand that your eval set was never capable of resolving the effect, and does not separate judge noise from model behaviour.
Langfuse / LangSmithEval running, tracing, and score dashboards.Reports the score. Uncertainty on the score is left to the reader.
A statistician on the teamExactly right, and the actual substitute at large labs.Does not scale below the companies that can hire one, which is most of the market.
Spreadsheets and intuitionWhat most teams do today: eyeball the delta, argue, pick one.Systematically overconfident on small samples in both directions.
How this fails

The real risk is that this is a feature, not a company. Braintrust already owns the eval run and could add power analysis in a sprint. The counter is that the wedge is a free, public, genuinely useful calculator that spreads on its own, and that the durable product is not the significance test but the judge-variance tracking, which requires repeated-judgement data nobody currently collects, and which gets more valuable the longer it runs.

Market

Attached to the eval budget, which every team building on models now has

Teams already pay $200 to $2,000 a month for eval platforms. This is a smaller line item beside that, sold to the same buyer, with a free tier that reaches every engineer who has ever squinted at a three-point delta. Five thousand teams at the Team tier is $18M ARR.

Get early access

No spam. One email when it is ready to try.

Or just go look at the demo first →