Three different problems with one name
Collaborative filtering works by finding patterns across many users and items. When either side is new, there is nothing to pattern-match against.
- New item - a product just added, with no interactions. It cannot be recommended by behaviour, so it stays invisible and never accumulates the data it needs.
- New user - a first-time visitor with no history. Common on most sites, and the majority of sessions for many businesses.
- New system - you have just started collecting interactions at all.
Treating these as one problem produces a solution that handles none of them well.
Content-based matching for new items
A new product has no behaviour but plenty of attributes: category, price, brand, material, description text, images. Matching on those lets it be recommended from day one alongside similar established items.
This works best where your catalogue data is decent. If product attributes are inconsistent, half-populated or free-text, that is the thing to fix first - and it pays off across search, filtering and merchandising as well as recommendations.
Context beats nothing for new users
For an anonymous first-time visitor, you know more than you think: the page they landed on, the search term that brought them, the device, the time of day, and what they have clicked in this session.
Session-based recommendations built from within-visit behaviour often outperform personalised ones for new visitors, because immediate intent is a stronger signal than a thin profile.
| Situation | Sensible default |
|---|---|
| No information at all | Popular in this category, recently |
| Arrived on a product page | Similar and complementary items |
| Arrived from a search term | Best matches, then related |
| Two or three clicks in | Session-based, updating live |
A staged plan rather than a big build
Businesses regularly attempt a personalised recommender before they have the interaction data to support one, and conclude that recommendations do not work.
- Start with popularity by category and context. Unglamorous, immediately useful, and it generates the interaction data everything else needs.
- Add content-based similarity once attributes are clean. This covers new items permanently.
- Add session-based recommendations from sequences of views within a visit.
- Only then consider collaborative filtering, once there is enough repeat behaviour for it to learn from.
Each stage produces value and feeds the next, which is a better shape of project than a long build with one uncertain payoff.
Giving new items a chance to be seen
Even with content-based matching, popular items tend to crowd out new ones, and a recommender trained on its own output narrows the catalogue over time. Deliberately reserving a slot for newer or less-shown items counteracts this.
Keep the reserved share modest and measure its cost. The point is to gather information about items you would otherwise never learn about, and that has real value even when the immediate click rate is lower.
A recommender that only shows what already sells will slowly forget your catalogue.