Better offline tests lead to more production wins
Offline rank → online rank
A focused benchmark tracked production more closely.
Broad engagement proxy
Weak / inverted alignment
ρ ≈ −0.4
Policy A
3
Policy B
0
Policy C
1
Policy D
2
1 / 4 exact ranks
Production-specific benchmark
Strong directional alignment
ρ ≈ +0.8
Policy A
0
Policy B
0
Policy C
1
Policy D
1
2 / 4 exact · one adjacent swap
How randomized evidence and offline replay helped a product team choose stronger recommendation ideas before spending weeks testing them with real users.
A product team can generate recommendation ideas much faster than it can test them. A ranking rule takes days to build. A reliable A/B test can take weeks, needs real traffic, and competes with every other experiment on the roadmap.
That makes offline evaluation valuable for a simple reason: it lets a team reject weak ideas before users ever see them. But this only works when the offline test predicts the metric the team wants to move in production.
In this project, the first offline benchmark did not. It rewarded the recommendation system already in production, disagreed with the first online experiment, and would have sent the team toward the wrong candidates. Randomized traffic gave us better evidence. We used it to rebuild the benchmark, replay more than a dozen policies, and find an offline measure that tracked production much more closely.
The goal was not to replace A/B testing. It was to make every A/B test start with a stronger set of ideas.
- 14
- candidate policies replayed
- 5
- definitions of relevance
- 4
- policies checked online
- −0.4 → +0.8
- directional rank correlation
one persisted analysis snapshot
from incumbent-shaped to lower-bias evidence
used for the offline–online rank comparison
derived Spearman comparison; n = 4
There were more ideas than A/B-test slots
The product was a high-traffic consumer feed. The team had a strong incumbent recommender and many plausible ways to improve it: broader intent signals, different candidate generators, personalized ranking, deliberate discovery, and combinations of those ideas.
The hard part was not producing another candidate. It was deciding which candidates deserved production traffic. Sending every idea into a live test would create a long experiment queue and expose users to approaches that could have been rejected cheaply.
| Candidate family | Question | Why offline screening helped |
|---|---|---|
| Existing policy | How strong is the production baseline? | Established the bar a new approach had to clear. |
| Intent and similarity | Can broader user intent improve candidate quality? | Compared several retrieval and ranking choices on the same sessions. |
| Personalized ranking | Does more user-specific ordering improve meaningful consumption? | Found where richer personalization earned its additional complexity. |
| Discovery | Would controlled novelty help users who had exhausted familiar content? | Measured the trade-off between immediate relevance and catalog breadth. |
| Exploration | Can the system collect evidence beyond its usual recommendations? | Created the data needed to evaluate future ideas more fairly. |
A useful offline benchmark would turn this portfolio into a shortlist. A misleading benchmark would make the experiment queue worse by confidently promoting the wrong work.
The first offline test rewarded the system already in production
The initial evaluation used engagement from production logs as its answer key. That sounds reasonable until we remember how those logs were created: the incumbent policy chose what users saw, and users could only engage with those exposed items.
The benchmark therefore mixed up two different facts: whether an item was relevant and whether the existing system had chosen to display it. Unseen content looked like rejected content. New policies were graded using evidence collected by the policy they were trying to replace.
01
Policy chooses exposure
The incumbent decides which items enter the visible slate.
shown ≠ available
02
Users create labels
Clicks, plays, skips, and watchtime exist mainly for exposed items.
unseen ≠ rejected
03
Benchmark grades candidates
New policies are scored against labels shaped by the incumbent.
similarity rewarded
Failure mode
The incumbent appears strongest partly because it is most similar to the policy that generated the answer key.
This is why the incumbent appeared strongest in the most policy-dependent evidence. When we moved toward evidence collected outside its usual choices, the apparent gap narrowed and sometimes reversed.
| Observed event | Naive interpretation | Safer interpretation |
|---|---|---|
| Recommended and played | The item is relevant. | The item may be relevant; it also received exposure. |
| Not recommended and not played | The item is irrelevant. | We do not know—the user may never have seen it. |
| Recommended and skipped | The item is irrelevant. | Stronger negative evidence because exposure is known. |
| Found through search or another surface | Unrelated to feed quality. | Useful evidence about demand the feed may have missed. |
Randomization turned an A/B test into better evaluation data
The first online experiment did more than compare recommendation approaches. It introduced controlled variation into what appeared in the visible slate. That gave some items exposure they would not normally receive and made the resulting behavior less dependent on the incumbent policy.
We could now separate three questions that the original logs had mixed together: Was the item available? Was it shown? What did the user do after seeing it?
Observed session
Same slate. Different ranking.
- Candidate set
- fixed
- User context
- fixed
- Policy
- varied
- Chosen-item rank
- measured
| Session | Observed choice | Policy A | Policy B | Policy C | Policy D |
|---|---|---|---|---|---|
| S-01 | i4 | rank 2 | rank 5 | rank 1 | rank 3 |
| S-02 | i2 | rank 4 | rank 1 | rank 3 | rank 2 |
| S-03 | i5 | rank 3 | rank 2 | rank 4 | rank 1 |
| S-04 | i1 | rank 5 | rank 3 | rank 2 | rank 4 |
| S-05 | i3 | rank 1 | rank 4 | rank 2 | rank 5 |
Illustrative session rows. The production analysis aggregates the same comparison across all usable sessions and reports rank-sensitive metrics.
What “replay” means
For each logged session, we kept the candidate set that had actually been available. We then asked every candidate policy to rank that same set. If the item the user later chose moved toward the top, the policy received a better offline score.
This is often called counterfactual evaluation: asking what a different policy would have done in a situation we already observed. Here it was a practical replay, not a claim that we could perfectly predict every unseen production outcome.
| Step | Held fixed | Changed | Measured |
|---|---|---|---|
| 1 · Select sessions | Logged randomized or exploratory exposure | Nothing | Sessions with usable candidate and outcome data |
| 2 · Rebuild the slate | Items available in that session | Nothing | Common support for every policy |
| 3 · Rerank | Candidate set and user context | Recommendation policy | Position assigned to the observed choice |
| 4 · Aggregate | Metric definition | Users, cohorts, and policies | Hit@K and rank-sensitive measures |
| 5 · Validate online | Candidate policy identity | Offline versus production outcome | Whether the offline ordering predicted the A/B test |
We tested five definitions of success
Better data was only half the problem. The team also needed the right target. “Did the user engage somewhere?” and “Did this recommendation surface create meaningful consumption?” are not the same question.
We evaluated the same policies against five views of relevance, ordered by how strongly the incumbent policy influenced the labels.
| Evidence view | Policy dependence | What it helped us learn |
|---|---|---|
| Same-surface engagement | High | How well a policy matched behavior already produced by the incumbent surface. |
| All organic engagement | Medium | Whether the policy recovered a user’s wider interests across the product. |
| Behavior after a rejection | Lower | What users chose when the incumbent recommendation did not work. |
| Search-driven engagement | Lowest | What users explicitly sought outside the recommendation policy. |
| High-engagement organic behavior | Medium–low | Which choices led to meaningful consumption rather than a shallow click. |
The exercise changed the conversation. We were no longer asking for the single official offline metric. We were asking which combination of evidence and metric best predicted the production decision.
The best benchmark was the one closest to the product decision
The broad benchmark asked whether a policy could surface anything a user engaged with anywhere in the product. It was easy to compute, but it was a weak proxy for whether a recommendation improved the target surface.
The production-specific benchmark narrowed both sides of the comparison. Offline, it used engagement from the surface being optimized. Online, it used consumption created by that same surface. That tighter definition produced a much more useful policy ordering.
Offline rank → online rank
A focused benchmark tracked production more closely.
Broad engagement proxy
Weak / inverted alignment
ρ ≈ −0.4
Policy A
3
Policy B
0
Policy C
1
Policy D
2
1 / 4 exact ranks
Production-specific benchmark
Strong directional alignment
ρ ≈ +0.8
Policy A
0
Policy B
0
Policy C
1
Policy D
1
2 / 4 exact · one adjacent swap
| Candidate | Broad offline rank | Online rank | Focused offline rank | Online rank |
|---|---|---|---|---|
| Policy A | 4 | 1 | 4 | 4 |
| Policy B | 3 | 3 | 1 | 1 |
| Policy C | 1 | 2 | 2 | 3 |
| Policy D | 2 | 4 | 3 | 2 |
The improved benchmark still did not predict every position exactly. Two similar policies swapped second and third place. That was a useful expression of uncertainty: they were close enough that offline evidence could shortlist both, while the online test decided between them.
The benchmark became a filter, not a replacement for production
A benchmark that tracks production changes the order of work. The team can explore many approaches offline, remove candidates that fail obvious checks, and reserve live traffic for a small set with credible evidence.
Offline portfolio
14 candidate policies
common replay
- C01
- C02
- C03
- C04
- C05
- C06
- C07
- C08
- C09
- C10
- C11
- C12
- C13
- C14
Online portfolio
4 candidates
+ 1 measurement arm
- A
- B
- C
- D
Offline evaluation reduced the search space. Production traffic was reserved for the closest, best-supported decisions.
| Gate | Question | Decision |
|---|---|---|
| Data support | Can this policy be evaluated on the logged candidate sets? | Stop unsupported comparisons rather than inventing missing outcomes. |
| Offline relevance | Does it rank observed user choices well on the focused benchmark? | Remove candidates with consistently weak evidence. |
| Cohort stability | Is the result broad, or is it carried by one user group? | Advance globally or test a segment-specific route. |
| Product guardrails | Could the candidate damage diversity, latency, or another business outcome? | Revise, constrain, or stop before using live traffic. |
| Online confirmation | Does the candidate move the real production metric? | Ship, revise, or write the failed hypothesis back into the benchmark. |
Online experiments remained the source of truth. They measured effects that replay could not: new retrieval behavior, changes in user response, system latency, novelty, and downstream product outcomes. Offline evaluation made those experiments more selective; it did not make them unnecessary.
Better offline tests make every online test more valuable
The speed benefit is easiest to understand as experiment capacity. If a team can test only a few candidates at a time, screening the portfolio offline can remove entire rounds of live experimentation.
| Illustrative planning case | Without offline screening | With offline screening |
|---|---|---|
| Plausible ideas | 14 | 14 |
| Candidates requiring live traffic | 14 | 3 |
| Available candidate slots per round | 4 | 4 |
| Online experiment rounds | 4 | 1 |
| Assumed time per stable read | ≈2 weeks | ≈2 weeks |
| Total experiment-calendar demand | ≈8 weeks | ≈2 weeks |
The important gain is not merely that one project finishes sooner. A stronger shortlist raises the chance that each online test contains a real winner. Teams spend less traffic rediscovering obvious failures and more traffic distinguishing between credible alternatives.
Better offline evaluation turns A/B testing from broad exploration into focused confirmation.
Every A/B test should improve the next benchmark
A fixed benchmark gets stale. Products change, users change, and teams start optimizing new outcomes. The benchmark therefore needs the same feedback loop as the production system.
01
Explore ideas
Many candidate policies
02
Replay offline
Focused benchmark + guardrails
03
Shortlist
Strong and uncertain candidates
04
Test online
Real users + production metrics
05
Recalibrate
Agreement, misses, and new cohorts
Write-back
Every online result updates the labels, cohorts, thresholds, and unanswered questions used in the next offline evaluation.
After each experiment, we compare the offline prediction with what happened online. Agreements increase confidence. Disagreements are more valuable: they reveal a missing cohort, a weak label, a guardrail the benchmark ignored, or a part of the serving policy the replay could not reproduce.
The result is a Frontier Benchmark: not a frozen dataset, but a measurement system that keeps earning the right to guide production decisions.
What we learned
- Production logs are not neutral ground truth. They contain the choices of the policy that produced them.
- Randomization is measurement infrastructure. An exploratory arm can improve future offline evaluation, not only the experiment in which it runs.
- The target must match the product decision. Broad engagement was easier to measure but less useful than a surface-specific production outcome.
- Offline evaluation should shortlist, not declare victory. Close candidates should advance together when the benchmark cannot separate them confidently.
- The real goal is a higher experiment hit rate. Better offline tests help teams put stronger ideas into production and ship metric wins more consistently.
Limits
The exploratory traffic was partially randomized rather than fully randomized across every possible item and position. That reduced dependence on the incumbent policy but did not remove every source of bias.
Replay could rerank only items present in the logged candidate set. It could not estimate outcomes for unseen items or a completely different retrieval system. The production baseline was also not perfectly reproducible from every logged session.
Finally, the offline–online rank comparison contained four policies. The change from weak alignment to strong directional alignment was useful for choosing the next experiment, but it should not be treated as a general statistical result.
Those limits are why the loop matters. Offline evaluation decides what deserves a live test. Production decides what is true. The benchmark learns from the difference.
More case studies
Teams using Pavo to move the metrics that matter, in production, at scale.
- A 25M-user edutainment app$100M+ ARR · 100M downloadsHow category-level personalization lifted notification CTR +43% and doubled second-video starts+43%Notification CTRRead case study
- Feed Personalisation 2Technical case-study rewriteHow Pavo’s Segment-Adaptive Personalization Lifted Time Spent by 4.5%+4.5%Platform-wide time spentRead case study
