Case study · AI engineering

Shipping AI features with evidence: a shared evaluation and observability platform

Several product teams had shipped AI features, each with its own prompts, its own vendor calls and its own idea of 'good'. Model upgrades were risky, regressions were found by customers, and nobody could say what an AI feature cost to run. The goal was one platform for evaluating, releasing and observing every LLM feature.

Case studySoftware · B2B SaaSSumanta Mukhopadhyay9 min read
#ai#llm#observability#platform
CASE STUDY · CASE STUDY · AI ENGINEERING28 Oct 2026 · 10:25 GST
At a glance
SectorSoftware · B2B SaaS
My roleAI architect
EngagementPlatform design, build and enablement
ScopeEvaluation sets, release gates, tracing, cost and quality dashboards
What changed
  • Every AI feature has an owned evaluation set that runs before release
  • Model and prompt changes ship behind gates with a clear pass or fail
  • Traces show each model call, tool call and token count in one view
  • Cost and quality are reported per feature, not just per vendor invoice
OpenTelemetry GenAI conventionsOTel CollectorEvaluation harnessLLM-as-judgePrompt registryModel gatewayFeature flagsData warehouse

Anonymised composite. Client names, identifying details and confidential figures are withheld; public facts are cited in the references.

The situation

A software company had moved quickly on AI. Support had an answer assistant, sales had an email drafter, the core product had a summariser and a natural-language search box. Each team had picked prompts, vendors and settings independently. When a model provider released a new version, nobody knew which features would get better and which would quietly break. Quality problems surfaced as customer tickets. Finance saw one large model invoice and could not split it by feature.

Leadership did not want to slow the teams down. They wanted the same confidence in AI releases that they already had in ordinary code releases.

What had to be true

  • Every AI feature has an evaluation set that reflects real use, owned by the team that ships it.
  • Changes ship through gates: a prompt, model or retrieval change runs the evals before it reaches customers.
  • Every model and tool call is traceable, with latency, tokens and errors, using an open standard rather than a vendor format.
  • Sensitive content is not logged by default.
  • Cost and quality are visible per feature, so product managers can make trade-offs.

Architecture

Features
Support assistantRAGEmail draftergenerationSummariserlong contextSearch boxtext to query
Runtime
Model gatewayrouting, keys, limitsPrompt registryversioned promptsFeature flagsgradual rollout
Evaluate
Eval sets per featureowned, versionedGradersexact, rubric, judgeRelease gateCI pass or fail
Observe
GenAI tracesOpenTelemetryToken and latency metricsper featureFeedback signalsthumbs, edits, escalations
Decide
Quality dashboardper feature and versionCost dashboardper feature and customer tierEval refreshfrom production misses
Evaluation before release, observation after it, and a loop that feeds production misses back into the eval sets.

The data flow, end to end

  1. ProposeTeam changes a prompt, model or retrieval setting in a branch
  2. EvaluateCI runs the feature's eval set through the gateway and graders
  3. GateScores compared with the current version; regressions block the merge
  4. Roll outChange enabled for a slice of traffic behind a flag
  5. ObserveTraces and metrics compared between old and new versions
  6. LearnProduction failures become new eval cases
The same eval set gates the release and measures the rollout, so offline and online quality stay connected.

Tracing followed the OpenTelemetry semantic conventions for generative AI, which standardise how model calls are recorded, including the model, input and output token counts and, when explicitly enabled, prompt and completion content12. Standard metrics for token usage and operation duration made cost and latency comparable across features and vendors3. The detail is in LLM observability with OpenTelemetry.

The hard part: evaluation sets that predict production

Building the pipeline was straightforward. Building evaluation sets that actually predicted how features behaved for customers was not. Generic benchmarks said little about whether the support assistant would answer a specific customer's question correctly.

  • Cases drawn from real, anonymised usage, grouped by intent, with a slice of known hard and sensitive cases.
  • Deterministic checks wherever possible: format, required fields, citations present, forbidden content absent.
  • Rubric-based model graders only where judgement was needed, calibrated against human labels. Research on LLM-as-a-judge found strong models can match human preference agreement, but also documented position and verbosity biases that need controlling4.
  • Regular refresh from production misses, so the set evolves with the product.

More on this in evaluation sets that predict production and, for agentic features, evaluating AI agents.

An eval set is a product artefact, not a test fixture. The team that owns the feature owns its definition of good.

How it ran

Platform
  1. Gateway and tracing
  2. Eval harness in CI
  3. Dashboards
Feature teams
  1. Build eval sets
  2. Define pass criteria
  3. Ship behind gates
Risk and privacy
  1. Content capture policy
  2. Sensitive-case review
  3. Map to risk framework
Platform supplies the machinery; teams define quality; risk sets the boundaries.
Phase 1Observe
  • Route calls via gateway
  • GenAI tracing
  • Cost per feature
Phase 2Evaluate
  • First eval sets
  • Graders and calibration
  • Baseline scores
Phase 3Gate
  • CI release gates
  • Flagged rollouts
  • Version comparison
Phase 4Loop
  • Production misses to evals
  • Model upgrade playbook
  • Quarterly review
Observability first gave teams a reason to want evaluation; gates came once eval sets were trusted.

Key decisions and trade-offs

DecisionAlternativeWhy
OpenTelemetry GenAI conventionsA vendor-specific tracing SDKPortable across vendors and backends, fits existing observability
Content capture off by defaultLog everything for debuggingPrompts and tool arguments can hold sensitive data
Deterministic checks before judgesJudge every output with a modelCheaper, faster and free of judge bias
Eval sets owned by feature teamsCentral QA writes all evalsTeams know what good looks like for their users
Gateway for all model callsEach team calls vendors directlyOne place for keys, routing, limits and cost attribution

The programme was mapped to the NIST Generative AI Profile, which gave the risk team a recognised structure for issues such as confabulation, information security and data privacy5.

What I'd do again, and differently

Again: start with tracing and cost per feature, because visibility creates demand for evaluation. Differently: write a model upgrade playbook in the first phase. Provider version changes arrive on their schedule, not yours, and a rehearsed path from new model to gated rollout takes the drama out of them.

If your AI features are multiplying faster than your confidence in them, my AI architecture work covers evaluation and observability platforms, or analyse your challenge and bring the result to a call.

References
  1. 1
  2. 2
  3. 3
  4. 4
    Judging LLM-as-a-Judge with MT-Bench and Chatbot ArenaZheng et al. (arXiv; NeurIPS 2023) · 2023
  5. 5
FAQ

Common questions

What should an LLM evaluation set contain?

Real examples of what users ask, with known good answers or clear grading criteria, covering common cases, known failure modes and sensitive edge cases. It should be owned by the feature team and refreshed from production feedback.

Can LLMs grade other LLMs reliably?

Research on LLM-as-a-judge found strong models can agree with human preferences at a level comparable to agreement between humans, but also documented biases such as position and verbosity bias. Use judges with calibration against human labels, not as the only signal.

Does tracing LLM calls capture prompts and user data?

Not by default in the OpenTelemetry GenAI conventions: content capture is opt-in because prompts and tool arguments can contain sensitive data. Metadata such as model, token counts and durations is captured without content.

Keep reading

Related

Open to advisory, fractional CTO & select builds

Let's talk about what you're building.

The fastest route is a free 30-minute call. Prefer to write? Send a message and I'll reply personally within two business days.

Start a conversation

How would you like to reach me?

Book a 30-min callFastest. Pick any open slot on my calendar.→ Write in GmailOpens a pre-filled draft in your browser.→ Use my email appOutlook, Apple Mail or your default client.→

I reply personally within two business days. Time zones from the Americas and Europe to the Middle East and Asia-Pacific.