Current HF baseline metric · 4,866 test examples · GPT-5.6-sol diagnosis snapshot

Office Products:
what to fix next

Current HF baseline Hit@10 is 16.3% (795/4,866). The judged snapshot used for the diagnosis below is 16.3%. In that snapshot, the largest failure mode is slate waste at 37% of all examples, and 25% of targets fall into the two lowest predictability levels. That rating flags weak observed signal; it does not establish a hard ceiling for every model.
Data provenance. Current HF baseline: 795/4,866 = 16.34% Hit@10. The diagnosis below uses the GPT-judged snapshot: 795/4,866 = 16.34%. 31 beam rows differ, so the affected cases must be re-judged before the diagnosis buckets can be refreshed.
The exact current-baseline Hit@10 above is recomputed from the HF baseline file. Bucket sizes, charts and case files below remain tied to the judged snapshot until changed beam rows are re-judged.
01 · Diagnosis

Every 100 examples, sorted by what went wrong

Five mutually exclusive buckets from the judged analysis snapshot. Each one has a different owner and a different fix, so the mix, not the headline Hit@10, is what should drive the next run.

Hit16%
Slate waste37%
Low predictability25%
Wrong reasoning14%
7%
Hit 16% 795Slate waste 37% 1,816Low predictability 25% 1,223Wrong reasoning 14% 679Interest coverage gap 7% 353
Hit16%795
Exact target inside the beam-10.
Research angle · Use predictability as an RL curriculum: begin with high-signal targets to reduce reward sparsity, then add harder and more novel targets. Keep exact repeats separate so early reward does not become copying.
Slate waste37%1,816
Target was inferable, the CoT named the right interest, the beam held related items, but not the target.
Research angle · Evaluation fixes one CoT and decodes ten items, but training produces one item from each of 16 separately generated CoTs. On Video Games, the ten outputs cover only 3.0 Code-1 branches, and the largest branch takes 6.2 slots. Align training with inference by fixing one CoT and sampling several items under it. Score the set with the existing target reward plus a relevance-aware diversity reward for covering distinct Code-1 and Code-1+2 prefixes.
Low predictability25%1,223
A miss where the judge found little or no signal for the target in the observed history (one of the two lowest levels on the five-level predictability scale).
Research angle · Use predictability to allocate RL compute: filter or down-weight weak-signal examples before rollout, while keeping the full test set for evaluation.
Wrong reasoning14%679
Target was inferable, but the CoT never identified the interest it belongs to.
Research angle · Give a graded process reward for how closely the reasoning's inferred interest matches the target interest. A clearly aligned interest receives more credit than a nearby but incomplete one; generic or wrong interests receive zero.
Interest coverage gap7%353
The CoT mentioned the target interest, but none of the ten beam items came from that interest.
Research angle · Mentioning an interest is not the same as selecting it. Ask the CoT to emit ranked intents, allocate beam slots across the selected intents, and reward whether the final slate covers them.
02 · Where it leaks

The pipeline funnel

Each stage keeps only the examples that survived the previous one. The stage with the biggest drop is where the next study is worth the most.

All test examples
4,866 · 100%
Target predictability is level 3 or above
3,632 · 75%
−25 ptshigher-signal slice used below
CoT identified the target's interest
2,900 · 60%
−15 ptsreasoning stage
Beam contains a related item
2,547 · 52%
−7 ptscandidate generation stage
Beam contains the exact target
731 · 15%
−37 ptsslate / ranking stage
03 · Research agenda

Ranked by how many examples they could move

Ordered by bucket size. Evidence is auto-computed from this split; each direction is written as a question, a study that answers it, and the claim that study would let you defend.

#1

The ten answers all run down the same branch

37%1,816 examples
In this bucket the model already knows what the user wants. It just spends the 10 slots badly.
Evidence from this split
  • 1,816 examples (37%), the largest single bucket
  • the 10 answers sit on only 3.5 distinct first codes, and the biggest branch alone takes 5.5 of the 10 slots (4% of examples put all 10 under one first code)
  • mean interest coverage 4.5/10 slots, redundancy 3.5/5
  • 1.3 of 10 slots re-recommend items already in the history, while only 3.2% of targets are literal repeats
  • judge's own top prescription here: improve beam search
Research direction
Question

Where does the redundancy come from? Not from the item codes: when the ten answers do spread across more first codes, the judge sees more distinct interests and rates redundancy lower, so different first codes really do mean different products. It comes from the shape of training. Each of the 16 rollouts writes its own thinking and then one item, so training gets its variety by varying the thought. At evaluation the thought is frozen and all ten items come from one conditional distribution, and that distribution was never trained to spread.

Study

Change the shape of the group before changing the reward. Sample a few thoughts, hold each one fixed, and sample several items under it. Those items share the evaluator's conditioning, so they are a legitimate stand-in for the decoded list, which 16 independently sampled rollouts are not. Reward that set by how many distinct interests it covers as well as by whether the target is in it, and give each item credit equal to how much the set score drops without it. Put the greedy thought in the group, since that is the one evaluation uses.

Claim to defend

A set-level reward computed under a fixed thought raises coverage at equal or better exact match, and it does so by changing the policy, not the decoder. The supporting measurement is that training buys its diversity from the reasoning while evaluation cannot, so the number everyone reports comes from a distribution nobody trained.

two caveats worth stating up front: hit rate peaks at three distinct first codes and drops after that, but a model that spreads is usually a model that is unsure, so this is correlation and only a controlled training run separates the two. And sampling items under a fixed thought is still not the same as beam search taking the most likely ones. Redundancy 4-5 hits 22.3% vs 14.8% at redundancy 1-2, same first caveat
#2

Separate model quality from target predictability

25%1,223 examples
The two lowest predictability levels form a large weak-signal slice, but the judge rating is not a universal ceiling.
Evidence from this split
  • 1,234 examples (25%) fall into predictability levels 1 or 2
  • mostly broadening (72%) and exploration (20%) targets
  • Hit@10 on that slice is 0.9% vs 38.1% for levels 4 and 5
  • the judge prescribes down-weighting for 93% of them
Research direction
Question

How do method comparisons change when examples are stratified by how much target signal is visible in the observed history?

Study

Learn a predictability estimator from history statistics alone, calibrated against the LLM judge's rating, and use it twice: to publish predictability-stratified leaderboards for existing baselines, and to weight the RL objective by estimated learnability. Pair it with a graded semantic reward (category, brand, embedding distance) that scores near-misses instead of zeroing them.

Claim to defend

If stratification compresses or reorders the gaps between published methods, the field's headline metric is sensitive to test-set composition. A released predictability annotation for standard splits would make that sensitivity measurable.

the deliverable is a predictability-stratified leaderboard, not one more number on the old one
#3

Recommendation as a testbed for verifiable reasoning

14%679 examples
Identifying the target's interest is the strongest single predictor of a hit in this split.
Evidence from this split
  • CoT names the right interest → Hit@10 25.2% (2,900 ex); it doesn't → 7.2% (732 ex), a 3.5× gap
  • 679 examples (14%) are inferable targets lost purely at this stage
  • dominant failure modes: no decision 56%, wrong interest 20%
  • CoT↔answer consistency is already 4.2/5, so the decoder faithfully executes bad reasoning
Research direction
Question

Recommendation is the rare reasoning domain with a verifiable intermediate: the interest a CoT commits to can be checked against the target's own category or brand. Does process supervision on that latent beat outcome-only RL, and is the CoT causal or decorative?

Study

Two studies. (1) Causality: counterfactually edit the CoT's stated interest, regenerate the answer, and measure how far it moves; a decorative CoT will barely shift. (2) Supervision: train a process reward on interest identification, or treat intent as a latent variable with the CoT as its amortised inference and optimise an ELBO-style objective, then compare against exact-match-only RL at matched compute.

Claim to defend

Evidence on whether process rewards beat outcome rewards in a domain where the intermediate step is automatically checkable, plus a causal measurement of CoT faithfulness that does not rely on human raters. Both are open questions in the reasoning literature and free of label cost here.

the decoder follows its own CoT closely, which is exactly what makes the causal edit test readable
#4

Turn mentioned interests into slate coverage

7%353 examples
The CoT mentions the target interest, but the slate allocates no item to it.
Evidence from this split
  • 353 examples (7%), the lowest volume and so the lowest priority
  • 82.4% never make a clear interest decision; only 4.8% are explicit CoT-to-answer mismatches
  • 89.2% are judged under-diversified
  • mean interest coverage here is only 3.7/10
Research direction
Question

Is the target interest merely mentioned, actually selected, or selected but omitted from the final slate? The current boolean cannot distinguish those stages.

Study

Require the CoT to emit a ranked intent list before the SID. Allocate item samples or beam slots across those intents, then add a set-level reward for covering the selected intents with relevant items. Count it as a grounding failure only when a selected intent receives no matching item.

Claim to defend

A structured intent-to-slate interface separates reasoning selection from candidate coverage, so each failure gets the reward and intervention it actually needs.

smallest bucket; use it to diagnose intent selection and slate allocation, not as a headline gain
Sensitivity · linear what-if, not a promise
Judged-snapshot Hit@10 is 16.3%. If a change converted part of a bucket into hits:
25.7% from 16.3%
if 25% of slate waste (1,816 examples) converted to hits
19.8% from 16.3%
if 25% of wrong reasoning (679 examples) converted to hits
22.6% from 16.3%
if 25% of low predictability (1,223 examples) converted to hits
18.2% from 16.3%
if 25% of interest coverage gap (353 examples) converted to hits
04 · Evidence

Five charts that carry the argument

Green = share of that bucket where the exact target made the beam-10. Grey = how many examples sit in the bucket. All relationships are descriptive, not causal.

Takeaway

Hit@10 is mostly decided by what kind of next-item it is

Repeat targets are hit 66.9% of the time, exploration targets 0.4%. The benchmark is dominated by broadening targets (42%), the hardest large class, so a model can look better simply by facing an easier intent mix. Report Hit@10 per relation, not just the average.

repeat 553 examples · 11% of split
66.9% hit
same subcategory 612 examples · 13% of split
8.8% hit
same brand or series 623 examples · 13% of split
39.0% hit
complementary 785 examples · 16% of split
9.9% hit
broadening 2,043 examples · 42% of split
2.4% hit
exploration 250 examples · 5% of split
0.4% hit
Hit@10 within the bucket bucket size · target relation to history
Takeaway

Performance changes sharply with target predictability

The two lowest predictability levels cover 1,234 examples (25%) and hit 0.9%; levels 4 and 5 hit 38.1%. Report these slices separately. The judge label identifies weak observed signal, but it does not prove irreducible error.

predictability level 1 255 examples · 5% of split
0.4% hit
predictability level 2 979 examples · 20% of split
1.0% hit
predictability level 3 1,760 examples · 36% of split
4.0% hit
predictability level 4 1,269 examples · 26% of split
29.0% hit
predictability level 5 603 examples · 12% of split
57.2% hit
Hit@10 within the bucket bucket size · judge's inferability rating
Takeaway

Naming the right interest is the biggest controllable lever

Among inferable targets, a CoT that identifies the target's interest hits 25.2%; one that doesn't hits 7.2%, a 3.5× gap that is far larger than any decoding knob. And with CoT↔answer consistency at 4.2/5, the decoder already follows whatever the CoT decides, so fixing the CoT should convert directly into hits.

CoT identified the target's interest 2,900 examples · 60% of split
25.2% hit
CoT did not 732 examples · 15% of split
7.2% hit
…judged harmful 318 examples · 7% of split
17.3% hit
…judged no added value 443 examples · 9% of split
13.5% hit
…judged partly useful 2,815 examples · 58% of split
22.4% hit
…judged useful 56 examples · 1% of split
67.9% hit
Hit@10 within the bucket bucket size · inferable examples only (predictability ≥3)
Takeaway

The right slate width is domain-specific: here it is 4–5 interests

Among inferable targets the best-performing slate covers 4–5 interests (26.0% Hit@10 over 1,680 examples), and redundancy is not what hurts here. That makes diversity a tunable reward term rather than a fixed rule: pick the per-domain target coverage, then reward the beam for hitting it.

beam covers 1–3 interests 1,163 examples · 24% of split
21.2% hit
beam covers 4–5 interests 1,680 examples · 35% of split
26.0% hit
beam covers 6–10 interests 789 examples · 16% of split
12.7% hit
redundancy low 1–2 169 examples · 3% of split
14.8% hit
redundancy medium 3 1,426 examples · 29% of split
21.3% hit
redundancy high 4–5 2,037 examples · 42% of split
22.3% hit
Hit@10 within the bucket bucket size · inferable examples only
Takeaway

Roughly one slot in ten is spent re-recommending what the user already bought

The beam budget is 10 slots. 1.3 of them come back with an item already in the history, while only 3.2% of targets are literal repeats. Repeats are worth keeping: when the target really is a repeat the model hits it 87% of the time, just not 1.3 slots' worth. That gap is a clean natural experiment on how a likelihood-trained decoder allocates a fixed budget under distributional pressure from the history.

1.3 / 10 slots
average beam slots returning an SID already in the user's history (12.9% of all slots)
3.2%
of targets are literally an item the user already bought
87%
Hit@10 when the target is a repeat, the easiest slice in the split
8.5 / 10
beam items judged plausible on average. Relevance is not the bottleneck, allocation is
Show all 14 rubric distributions →
05 · Case files

Read the actual examples

Start from a failure bucket, then read history, beam and the judge's diagnosis side by side. This is where a reward-design idea gets sanity-checked against real rows.

Loading 4,866 judged examples…
06 · How to read this

Definitions

Hit@10The exact ground-truth SID appears in the 10 constrained beam-search outputs. Binary and unforgiving: a perfect substitute product counts as a miss.
Predictability 1–5Judge's estimate of how much evidence for the target appears in the history alone. A score of 1–2 means weak observed signal, not proof that every possible model must fail.
Interest coverage / redundancyHow many distinct interests the 10 beams span, and how near-duplicate they are. Together they describe how the slate budget is spent.
CoT identified target interestWhether the chain-of-thought named the interest the target belongs to, independent of whether the final SID was right.
BucketsAssigned in order: hit → low predictability (pred ≤2) → wrong reasoning (CoT missed the interest) → interest coverage gap (beam unrelated) → slate waste (everything else).
CaveatThe judge is an LLM reading titles, not the ground truth of user intent. Treat bucket sizes as a reliable steer and individual scores as noisy.