Every model vendor's demo works; that is what demos are for. This playbook runs an identical eval set across the candidate models or vendors and writes the decision memo from measured quality, cost and latency on your cases — production evidence instead of demo impressions and leaderboard folklore.
Workflow area: AI Product Economics · Tier: Advanced · Hands-on time: ~45 minutes
The way AI vendor decisions actually get made is embarrassing: a stakeholder saw a demo, a leaderboard screenshot circulated, a discount was offered, and the architecture was chosen. Public benchmarks measure performance on public benchmarks — your support copilot's ability to handle your refund-policy edge cases, in your tone, at your latency budget is a different question that only your own eval set answers. The bake-off is the PM-owned decision instrument: same inputs, same grading, every candidate, numbers in a table.
Fix the candidates and the constraints before running anything. Two to four candidates (more dilutes attention), and the constraint sheet: latency budget (e.g. p95 under 3s), cost ceiling per interaction, data-residency and DPA requirements, rate limits. A candidate that fails a hard constraint is out regardless of quality — write that down first so the bake-off can't be relitigated by demo enthusiasm.
Assemble the eval set from real distribution plus hard cases. 30–60 cases minimum: representative inputs at their production frequency, plus your failure-taxonomy hits (pb-36) and edge cases with per-case pass criteria (pb-37). Every case carries an expected outcome or a rubric. Resist the urge to only test hard cases — you're buying performance on the distribution, not on the museum of horrors.
Run the identical set across candidates. With promptfoo, one config runs all candidates over all cases; OpenRouter gives you many models behind one API key for the comparison:
# promptfooconfig.yaml — the shape of a bake-off
prompts:
- file://prompts/support_copilot.txt
providers:
- openrouter:anthropic/claude-sonnet-4.5
- openrouter:openai/gpt-5.2
- openrouter:google/gemini-3-pro
tests:
- file://cases/eval_set.yaml # same cases, every provider
Hold the prompt constant for the core run; if a candidate needs prompt adaptation to be viable, run that as a labeled second pass — "with tuned prompt" is a different (and fair) claim than "out of the box."
Grade with the same standard, and audit the grader. Deterministic assertions where possible; a rubric-based LLM judge for subjective dimensions — the same judge for every candidate, and never a judge from the same family as a candidate without checking its bias. Spot-check 10–15 judge grades by hand before trusting the totals (pb-38 is the full discipline).
Build the decision table. One row per candidate:
CANDIDATE QUALITY HIGH-SEV FAILS p95 LAT COST/1K INTER.
Model A 91% 0 2.1s $4.10
Model B 93% 3 1.4s $1.60
Model C 84% 1 3.8s $0.55
The classic trap sits in that table: Model B wins headline accuracy while failing three high-severity cases (say, confident policy hallucinations). Severity-weight the failures — a candidate that's 2% better on average but fails catastrophically on the cases that trigger refunds or press coverage is not better.
Write the memo from the table. One page: recommendation, the table, the severity analysis, constraint compliance, cost at projected volume (pb-46 math), and — mandatory — the revisit triggers: "re-run this bake-off when: our volume 10×es, candidate prices change >30%, a candidate ships a major version, or our failure taxonomy gains a new high-severity mode." Attach the eval config so the rerun is one command, not a project.
Bake-off cases drawn from production traces can contain customer text and personal data — scrub PII before cases enter the eval set, and check each candidate vendor's data-use terms before sending your cases to their API; a bake-off must not become an inadvertent data disclosure to four companies.
Demos are marketing, leaderboards are someone else's distribution, and your eval set is the only instrument that measures the thing you're actually buying — decide from the table, severity-weight the failures, and version the whole rig so the next decision costs an afternoon instead of a quarter.