Observability

Your AI customer support agent scores 89% on HumanEval and ranks in the top 10 on the Chatbot Arena leaderboard. You deploy it to production. Your users hate it. The agent can reverse a linked list and write a flawless quicksort, but when a customer asks “my refund was supposed to hit my card three business days ago, can you check what’s going on?” it hallucinates a tracking number and tells them the refund was already processed. The disconnect between public benchmark glory and real-world failure is not a fluke — it is the norm. We have built and broken enough AI evaluation pipelines to say this with confidence: public benchmarks are useful for comparing foundation models against each other, but they are nearly useless for predicting how well a model will perform on your specific product. This article walks through why that gap exists and, more importantly, how to build internal benchmarks that actually tell you whether your AI product is getting better or worse for the people who matter: your users.

TL;DR: Public benchmarks will actively mislead your product decisions because they reward memorization over reliability — stop treating MMLU and HumanEval scores as signals of production readiness and start building internal benchmarks from your own users’ real, messy data.

The Public Benchmark Deception

Let us start by naming the elephant in every AI team’s evaluation room. Public benchmarks like MMLU (Massive Multitask Language Understanding), HumanEval (functional correctness for code generation), GSM8K (grade-school math word problems), and Chatbot Arena (crowd-sourced Elo ratings) dominate the discourse. Every model release comes with a leaderboard screenshot. Every vendor pitch includes a slide comparing scores. And every team that has shipped an AI product to real users eventually learns that these numbers do not translate.

The core problem is benchmark contamination. Training data leaks. It leaks a lot. Researchers have demonstrated that many frontier models were trained on data that overlaps significantly with benchmark evaluation sets. A 2024 study by researchers at Scale AI found that GPT-4 answered MMLU questions with 86.4% accuracy — but when they modified those same questions with trivial surface-level changes (swapping names, changing numeric values, rephrasing without altering the underlying reasoning), accuracy dropped by over 25 percentage points on some categories. The model had memorized answer patterns, not learned reasoning.

This is not a small effect. Consider this concrete example:

BenchmarkReported ScoreScore Under Non-Contaminated VariantDrop
MMLU (STEM subset)86.4%63.2%-23.2 pp
GSM8K92.0%58.0%-34.0 pp
HumanEval (pass@1)76.2%41.5%-34.7 pp

Example data adapted from published contamination studies; exact figures vary by model and test variant.

The pattern is consistent: when you scrub known overlap or introduce simple surface-level variation, scores plummet. Your 89th-percentile model may be a 60th-percentile model on genuinely unseen problems.

There is a second, more subtle problem: construct validity. MMLU measures whether a model can answer multiple-choice questions across 57 academic subjects. That is a real skill, but it is not the same skill as “resolve a customer’s billing dispute while maintaining a professional tone and adhering to company policy.” HumanEval measures whether a model can produce syntactically correct code that passes unit tests. That is not the same as “generate production-ready API integration code that handles edge cases, respects rate limits, and logs errors appropriately.” The constructs do not align.

Why Product Teams Need Internal Benchmarks

Internal benchmarks bridge the gap between “this model is generally intelligent” and “this model works for our specific use case.” They serve three distinct purposes that public benchmarks cannot address.

First, they catch regression before it reaches users. A model update might improve MMLU by 2 points while simultaneously making your summarization model 15% more likely to omit a critical numeric detail. Without a benchmark that mirrors that summarization task, the regression stays invisible until users complain. We have seen this happen repeatedly: a provider ships a model update, your public benchmark scores look fine or even better, and your product metrics tank.

Second, they clarify what “good” actually means for your product. A public benchmark gives you one number. An internal benchmark gives you a scorecard across the dimensions that matter to your business: accuracy, tone, safety, latency, cost, and so on. When a PM asks “is the new model better?” you can point to specific rows in a table rather than gesturing vaguely at an aggregate score.

Third, they depersonalize model decisions. When you have a benchmark, model selection becomes an empirical exercise rather than a religious debate. We have sat through too many meetings where the loudest voice in the room picked the model. A benchmark turns that into: “here is how all four candidates scored on our 200-example test suite. Here is where each one fails. Let us make a decision based on data.”

Building Your First Benchmark: The Pragmatic Approach

The most common objection we hear is “we do not have enough data to build a benchmark.” This is almost never true. What teams lack is not data but a process for turning their data into evaluation material. Here is a practical, repeatable method.

Step 1: Define Your Task Taxonomy

Before collecting a single example, map out what your AI product actually does. A customer support AI might have this taxonomy:

  • Intent classification — does the model correctly identify what the user wants? (refund status, account closure, technical issue, etc.)
  • Factual response — does the response contain accurate information from your knowledge base?
  • Tone and safety — is the response professional, empathetic, and free of harmful content?
  • Action execution — if the model triggers an API call (check order status, initiate refund), does it produce the correct parameters?
  • Handoff detection — does the model correctly identify when it should escalate to a human?

Each task gets its own scoring rubric. Each task gets its own test examples. Mixing them into one undifferentiated pool produces a single number that tells you nothing about where your system is strong or weak.

Step 2: Collect Real User Inputs

We cannot emphasize this enough: do not write synthetic examples. Humans surprise you in ways your imagination cannot replicate. Real user inputs contain typos, rambling, contradictory statements, emotional language, and cultural references that synthetic data never captures. Pull the last 90 days of actual user messages from your logs. Sample them across dimensions: happy users and angry users, short queries and long queries, first-time users and power users, users from different regions.

Aim for 100 to 300 examples per task category. This sounds small, and it is intentionally small. The goal is not statistical significance — it is coverage of your failure modes. You can always add more later.

Here is a concrete distribution we used for a customer support benchmark for an e-commerce platform:

Task CategoryExamplesSource
Intent classification200Sampled from production logs across 3 months
Refund policy accuracy150Real queries rephrased to test edge cases
Tone and empathy100Interactions flagged by post-survey as “unsatisfactory”
Escalation detection80Mixed of true escalations and near-misses
Multi-language support70Spanish, French, and Mandarin user messages

Step 3: Create Diversity, Not Just Volume

The most dangerous benchmark is one that passes because every example looks the same. A model that has seen 500 refund-related queries phrased as “I want a refund for order #12345” will appear to handle refunds perfectly. It will not handle “the thing I bought last Tuesday never showed up and I want my money back” because the semantic structure is different, even though the intent is identical.

Surface-level variation matters. For each test case, include variations:

  • Paraphrases: “Can you check my order status?” vs. “Where is my package?” vs. “Tracking number 1Z999AA10123456784 is showing delivered but I never got it”
  • Misformatted inputs: “refund for oder # 12345” (typos, missing punctuation)
  • Ambiguous inputs: “I need help with my account” (could be password reset, billing question, or account deletion)
  • Multi-turn context: Queries that only make sense in the context of previous conversation turns

Step 4: Design Scoring Rubrics That Reflect Your Quality Bar

Binary pass/fail is almost never the right granularity. Real AI outputs exist on a spectrum. We recommend a four-point scale for most tasks:

  • Perfect (4): Ready to show the user, no edits needed
  • Acceptable (3): Gets the right answer but could be clearer or more polished
  • Degraded (2): Contains the right information but has a meaningful issue (slightly wrong tone, missing a minor detail, verbose)
  • Failure (1): Wrong answer, hallucinated information, safety violation, or user-facing harm

A score of 2 might be acceptable for a low-stakes task (suggesting a product name) and unacceptable for a high-stakes one (providing medical dosage information). Your rubric should encode your product’s risk profile.

For customer support, here is a concrete rubric for response accuracy:

ScoreCriteriaExample
4 — PerfectCorrect answer, correct format, professional tone, no hallucinations”Your refund for order #12345 was initiated on June 15. It typically takes 3-5 business days to appear on your statement. If you don’t see it by June 20, please reach back out and we’ll investigate.”
3 — AcceptableCorrect answer, minor formatting or phrasing issues”Your refund was started June 15. It should show up in 3-5 days. Contact us if it doesn’t.”
2 — DegradedCorrect intent but missing important detail or slightly wrong”Your refund is in process. It takes a few days. Let us know if there’s anything else.” (Missing date, missing specific timeline)
1 — FailureWrong information or hallucination”Your refund has already been processed and deposited.” (Not true — refund was initiated but not yet deposited)

Maintaining Benchmarks Over Time

A benchmark is a living artifact. Treat it as such.

Retire stale test cases. If you change your refund policy, the old test cases about the old policy become misleading. A model that answers correctly under the old policy might fail under the new one, and your benchmark will not catch it. Review your benchmark quarterly. Flag examples that reference outdated processes or products. Replace or update them.

Watch for internal contamination. Your own benchmark can leak into your system. If you use your benchmark examples in few-shot prompts, evaluation sets, or fine-tuning data, you are measuring memorization rather than capability. Hold out a set of examples that never touch any training or prompt pipeline. Rotate fresh examples from production into this held-out set regularly.

Keep difficulty calibrated. As your product improves, your benchmark may stop discriminating between models. If every candidate scores 95%+, your benchmark is too easy. Add harder examples: edge cases from production incidents, adversarial inputs your safety team created, multi-turn conversations that require remembering information from several exchanges ago. Conversely, if every model scores below 40%, your benchmark may be too hard or your rubric too strict. We have seen teams set their quality bar so high that even human experts fail — which makes the benchmark useless for ranking models.

Track benchmark scores alongside product metrics. A benchmark is a proxy, not the ground truth. The ground truth is user satisfaction, task completion rate, and revenue impact. If your benchmark says models are improving but your product metrics say users are less happy, trust the product metrics and debug the benchmark.

The Minimum Viable Benchmark

Here is the good news: you do not need thousands of examples to start. Our experience across dozens of AI product teams suggests that 50 well-chosen examples per task category are sufficient to catch the majority of regressions. This is because your risk is not evenly distributed — most regressions happen at the boundaries, not in the center of the distribution.

A customer support team we worked with started with 40 examples: 10 each for the four categories of their taxonomy (intent classification, refund accuracy, tone, escalation). They caught three regressions in their first month that had previously gone undetected. That benchmark saved them from deploying a model update that would have made their escalation detection 30% less sensitive.

Start today with what you have. Take 50 real user conversations from last week. Write down the expected best response and the expected worst-in-class response for each. Run your current model. Score it. That is your baseline. From there, add examples incrementally as you discover failure modes.

How Frequently to Run Benchmarks

The cadence depends on how fast your stack changes:

  • When evaluating a new model provider: Run the full suite before making any decision. Compare against your current baseline on every task category, not just the aggregate.
  • When upgrading a model version: Run the full suite before deploying to production. Run it again 24 hours after deployment with fresh production logs to catch distribution shift.
  • Weekly: Run a subset of your benchmark (20-30 high-signal examples) every week as a health check. A sudden drop on this subset is an early warning.
  • Monthly: Run the full benchmark and compare against the previous month. Update your held-out set.

We recommend automating this. Set up a scheduled evaluation pipeline that runs your benchmark, generates a report, and posts it to your team’s communication channel. Manual evaluation becomes a bottleneck. Automation makes benchmarking a habit rather than a project.

Making Benchmarks Interpretable for Non-Technical Stakeholders

The worst benchmark report is a single number. The second-worst is a spreadsheet with 47 columns.

Use a tiered summary. Stakeholders need three pieces of information: the overall trend, the areas of concern, and the decision at hand.

Here is a template that works well:

**Benchmark Report — June 2026**

Overall Score: 87% (vs. 85% last month, vs. 82% three months ago)
Healthy (green): Intent classification (94%), Refund accuracy (91%)
Degraded (yellow): Tone and empathy (76%) — down from 82% last month
Critical (red): Multi-language support (62%) — consistently declining

Decision: Model 2.4 is approved for production rollout EXCEPT in Spanish and French,
where Model 2.3 should be retained until the next evaluation cycle.

This report tells a story. It highlights what matters. It recommends a decision. It respects that the reader does not need to know about rubrics, contamination risk, or inter-rater reliability — they need to know whether to ship or not.

When presenting benchmark data to executives, lead with the failure case. “The new model fails on 38% of Spanish-language refund queries” is more actionable than “the new model scores 82% overall.” Lead with the worst-case scenario and bucket everything else beneath it.

A Concrete Example: Customer Support AI Benchmark

Let us tie everything together with the benchmark we built for a customer support AI product that handles refund inquiries for a mid-market e-commerce company.

Task Taxonomy

Five categories: intent classification, refund policy accuracy, tone and empathy, escalation detection, and multi-language support.

Data Collection

We pulled 600 real user messages from six months of production logs. We stratified by outcome (resolved vs. escalated vs. refund denied), language (English, Spanish, French), and sentiment (negative, neutral, positive). We rewrote none of them — every test case is a verbatim user message.

Scoring

Each response gets a score of 1-4 per task category. The rubric for refund accuracy is the four-point scale detailed earlier in this article. The rubric for tone includes specific guidance on when to apologize, when to use the customer’s name, and when to avoid jargon.

Results That Changed the Product

The benchmark revealed that the team’s model scored 94% on English refund queries but 58% on Spanish ones. The root cause was not the model — it was the knowledge base. The documents the model retrieved from contained inconsistent Spanish translations of refund policy terms. The team fixed the knowledge base, and the Spanish score went from 58% to 83% without any model change.

A separate finding: the model scored 72% on escalation detection, but manual review showed it was not symmetric. It was excellent at detecting when to escalate (95% recall) but terrible at detecting when not to escalate (45% precision). The model escalated 40% of all conversations to human agents, overwhelming the support team. The benchmark’s per-category design made this asymmetry visible immediately. A single aggregate score would have hidden it.

Maintenance Cycle

The team runs a 50-example quick check every Monday. Full benchmark runs on the first of every month. Quarterly review of test case quality and rubric calibration. New test cases are added whenever a production incident reveals a failure mode not covered by the existing benchmark.

Key Takeaways

  • Public benchmarks measure general capability, not product readiness. Do not make deployment decisions based on MMLU, HumanEval, GSM8K, or Chatbot Arena scores alone. These numbers will mislead you.
  • Start with 50 examples per task category. You have enough data. Use real user inputs, not synthetic ones. Build your benchmark this week, not next quarter.
  • Design rubrics that match your quality bar. Use a four-point scale. Acknowledge that “good enough” depends on the task and the stakes.
  • Maintain your benchmark like production code. Retire stale examples, rotate held-out sets, and calibrate difficulty. A stale benchmark is worse than no benchmark — it gives false confidence.
  • Automate your evaluation pipeline. Weekly quick checks catch regressions early. Monthly full runs provide trend data. Manual evaluation does not scale.
  • Report to stakeholders in tiers, not tables. Lead with failures. Recommend decisions. Make the benchmark a tool for shipping better products, not a academic exercise.
  • Your benchmark will find problems you did not know you had. The Spanish language gap. The escalation asymmetry. The knowledge base that was silently poisoning responses. These are the discoveries that make benchmarking worth doing.

Build your benchmark. Run it weekly. Trust it more than any public leaderboard. Your users will thank you.