Two prompt or model variants on the same cases: average score, latency and tokens with B’s change against A, both answers side by side, a human pick per case (1, 2, 3), and filters for regressions and disagreements.
Installs components/ui/eval-compare.tsxDepends on none beyond ReactMotion none in component source
$pnpm dlx shadcn@latest add @caliper/eval-compare
0container fluid→
Compare Prompt v2 with Prompt v3
APrompt v2Sonnet 5.5 · t 0.5
86/1001,230 ms · 45 tok
BPrompt v3Sonnet 5.5 · t 0.3
66/100856 ms · 31 tok−20 pts · −374 ms · −15 tok
People preferred
A 2 · tie 0 · B 1 · 2 left
Case 1
billing
How do I export my invoices to CSV?
Expected Settings → Billing → Export, with the date range.
A921,210 ms · 48 tok
Go to Settings, then Billing, and press Export. Pick the months you need.
B96980 ms · 41 tok
Settings → Billing → Export. Choose a date range and you’ll get a CSV by email in a minute.
Case 2
Regressionbillingpolicy
Can I get a refund for unused seats?
A881,350 ms · 52 tok
Unused seats are credited to your next invoice automatically when you reduce them.
B41760 ms · 22 tok
Yes, we refund all unused seats to your card.
Case 3
Grader disagrees
Is my data stored in the EU?
A841,290 ms · 46 tok
Business plans can choose EU data residency. Other plans are stored in Ireland and the US.
B901,010 ms · 44 tok
Business plans can pin data to the EU (Frankfurt). Other plans use Ireland and the US.
Case 4
support
The app is slow today
A791,120 ms · 39 tok
Sorry about that. Our status page shows no incident; can you tell me which page is slow?
B81890 ms · 34 tok
Sorry about that. Which page is slow, and roughly since when? I’ll check our traces.
Case 5
Regressionpolicy
Cancel my account
A861,180 ms · 41 tok
I can help. Before I do: your data is kept for 30 days, and you can export it first.
Adds its 4 files to components/ui/, each with its own stylesheet, and installs their packages. Pro installs with your access token, set up once per project. See Pro access. The first part also adds Caliper UI’s tokens; import them once as in Installation.
It exposes img, group and status semantics, with aria-labelledby, aria-label, aria-keyshortcuts, aria-pressed and aria-hidden kept in step with state. Changes that matter are announced through a live region.
No custom key handling; Tab and the native activation keys do the work.
It declares no animation in its component source. Any transition comes from its stylesheet, which uses the duration tokens that collapse to instant under prefers-reduced-motion.