Webclat / PostHog Practice

A 92% eval score doesn't tell you the agent got better - here's what does

Offline evals, llm-as-judge scoring, and rag evaluation are necessary. None of them are a product outcome by themselves. This is the wiring most eval setups skip: joining an eval score to the activation, retention, or conversion metric it's supposed to predict, then checking whether it actually does.

Landscape as of September 2026

In short: LLM evals (offline evals, llm-as-judge, code-based checks, rag evaluation, agent evaluation) measure whether a generation passed a quality bar. They do not, by themselves, measure whether a product got better - that requires deliberately joining eval scores to the activation, retention, or conversion metric they are meant to move, and testing the correlation rather than assuming it.

The eval types, and what each one actually checks

"Evals" gets used as one word for several different checks that verify different things. Knowing which one you're running matters, because a passing offline eval and a healthy production agent are not the same claim.

Eval typeWhat it actually checks
Offline evalsRun against a fixed test set before a prompt or model change ships - catches regressions before real users see them, not a substitute for production signal
LLM-as-a-judgeAn LLM scores each generation against a rubric you define - relevance, helpfulness, hallucination, jailbreak, and toxicity are common built-in templates - good for subjective, nuanced checks a rule can't express
Code-based (deterministic) checksRule-based validation - format, keyword presence, length limits - free to run with no LLM cost, and exact wherever the check itself is exact
RAG evaluationScores retrieval quality and answer groundedness separately - did it fetch the right context, and does the answer actually rest on what was retrieved - conflating the two hides which half is actually broken
Agent evaluationScores a multi-step run as a whole - task completion, correct tool selection, whether the agent stopped when it should have - against the full trace, not a single generation

PostHog's evaluations feature (verified against posthog.com/docs/llm-analytics/evaluations as of this writing) runs both llm-as-judge and code-based checks against built-in templates for relevance, helpfulness, jailbreak, hallucination, and toxicity, returning a pass/fail result with reasoning attached to the generation it scored - verify the current template list against PostHog's own docs before scoping a specific check against it, since this is exactly the part of the product most likely to have moved by the time this is read.

LLM evaluation metrics worth tracking over time

  • Pass/fail rate per template, trended by prompt or model version - a single point-in-time score tells you nothing about whether the last change helped or hurt
  • Judge-human agreement rate, spot-checked periodically - an llm-as-judge that has quietly drifted is a silent failure of exactly the kind this whole practice exists to catch
  • Retrieval precision and groundedness rate, tracked separately for RAG systems, since the two failure modes need different fixes
  • Task-completion rate for agent runs, plus the specific step at which failed runs actually fail - a completion rate alone doesn't tell you where to look

The bridge the market misses: an eval score is not a product outcome

A team reports "evals improved eight points" as though that settles whether the product got better. It doesn't - an eval score measures the model's output against a rubric, not what the user actually did next. Session length, task completion in the real product, retention, conversion: those are product outcomes, and none of them are guaranteed to move just because a rubric score moved.

[hypothesis] Assuming a higher eval score causes higher retention or conversion is an inference, not a measured fact, until it is tested against your own product data. It may hold. It may hold for some eval types and not others. It may hold up to a point and then plateau. The only way to know is to build the join and look, which is exactly what the next section does.

Wiring evals to activation, retention, and conversion in PostHog

Because PostHog ties each eval result to the specific generation and trace it scored, and ties traces to the same person and session model as the rest of product analytics, you can segment a retention or conversion view by eval-score band - for example, sessions where the agent's helpfulness score landed in the bottom decile - and see whether that band actually behaves differently, rather than asserting it does.

This is the same discipline that makes ai agent testing mean something beyond "the test suite passed." A passing eval suite and a better product are two different claims until they've been joined and checked against each other. For the KPI-translation side of this - how a P2 analyst defends "the agent got better" to a stakeholder who doesn't want to hear about eval rubrics - see our Amplitude practice's guides on AI consumption KPIs and measuring product agent usage.

How to verify it worked

  1. Confirm each eval result - pass or fail, plus reasoning - is attached to the specific generation or trace it scored, and is filterable by prompt or model version, not just visible in a separate eval-run log disconnected from the trace.
  2. Build one funnel or retention view segmented by eval-score band and confirm the data actually populates - an empty segment usually means the join didn't happen, not that the band has no users.
  3. Check whether the eval-score band correlates with the target metric on your own data. If it doesn't, the eval or the metric mapping needs rework - not the dashboard, and not the assumption that it must be a display problem.
  4. Re-run the same offline eval set after a prompt or model change and confirm the score moves in a direction that eventually also shows up in the linked product metric, not only in the eval log where nobody outside the team ever looks.

Frequently Asked Questions

What's the difference between ai evals and llm evals?

In practice, interchangeable - both refer to the same rail of scoring LLM output quality, alongside llm evaluation metrics. This guide treats them as one topic rather than splitting hairs over which term a given vendor prefers.

Is llm-as-judge scoring reliable enough to trust on its own?

Built-in templates (relevance, helpfulness, jailbreak, hallucination, toxicity) cover common subjective checks, but a judge model can drift the same way any model can. Spot-check judge output against human review periodically - an eval layer nobody re-checks is a silent-failure risk of its own.

How is rag evaluation different from agent evaluation?

RAG evaluation scores retrieval quality and answer groundedness separately - did it fetch the right context, and does the answer actually rest on that context. Agent evaluation scores a multi-step run as a whole - task completion, correct tool selection, and whether the agent stopped when it should have - against the full trace, not one generation.

Do you help build the KPI bridge, not just the eval setup?

Yes - wiring an eval score to the activation, retention, or conversion metric it's supposed to move is event-architecture work, the same discipline we apply to product analytics generally. Our dedicated Amplitude practice covers the KPI-translation side for teams reporting outcomes up to a stakeholder.

Get your eval scores wired to a metric someone can defend.

We scope the eval-to-KPI join - which score band, which metric, which time window - before anyone reports a number upward on faith.

Wire My Eval Scores