Skip to content

The cold start problem

A recommender learns from behaviour. A brand-new user has none. In dating the problem doubles, because a good suggestion has to work for two people at once. Here is how Affinity Atlas approaches day one without faking it.

Deep Dive ยท Affinity Atlas   By - · 7 min read

What cold start means

Collaborative filtering recommends things to you because people like you liked them. That works brilliantly at scale and fails completely at the edges. The classic definition comes from Schein, Popescul, Ungar and Pennock (2002), who framed the hardest case as recommending items "that no one in the community has yet rated".

There are two versions of the problem, and Affinity Atlas has both:

Why dating makes it harder

Recommending a film only has to satisfy you. Recommending a person has to satisfy two people. Researchers call these reciprocal recommender systems: people are both the subject and the object of the recommendation, and a suggestion only succeeds if both accept. Palomares and colleagues (2021) surveyed the field and made that mutual-acceptance constraint the defining feature.

The payoff for taking reciprocity seriously is large. In RECON (Pizzato et al., 2010), a reciprocal recommender evaluated on real online dating data, accounting for both sides' preferences raised success in the top ten recommendations from 23% to 42%. For new users it still reached 26%. Those numbers are from one dataset in 2010, not a universal benchmark, but the direction is clear: one-sided "who would you like?" models leave a lot on the table.

23% → 42%Top-ten success when RECON accounted for both people's preferences
26%Top-ten success RECON still reached for brand-new users

How others have handled it

The most public example of reciprocal thinking in a mainstream app is Hinge's "Most Compatible" feature. When it launched in 2018, Hinge told TechCrunch it learned from likes and passes and used a pairing approach inspired by the Gale-Shapley stable matching algorithm. CEO Justin McLeod's summary: "the person that you're seeing is also seeing you". The Verge reported that both people received the same recommendation, which expired after 24 hours. Hinge's current explanation describes a newer system, so treat the 2018 description as history rather than how it works today.

The catch is that behaviour-based systems need behaviour. On day one there are no likes or passes to learn from. The usual answer is to collect some explicit signal up front. Affinity Atlas starts somewhere different.

1. Borrow data that already exists

Recommender surveys group cold start solutions into explicit ones (ask the user) and implicit ones (infer from other data), with hybrids in between. Gope and Jain (2017) use that split; Burke (2002) surveyed the hybrid designs that combine them.

Affinity Atlas is, at its core, an implicit cold start strategy. A new user who connects Spotify, Steam and Goodreads is not a blank profile. They arrive with years of real listening, playing and reading. That is the whole premise of matching on data you are already creating: day one is not empty, it is just elsewhere.

๐Ÿ’ก The difference: swipe-trained systems learn who you like by making you swipe. Affinity Atlas learns what you like from what you already do, then introduces people. Swiping is not the training data.

2. Ask fewer, better questions

For interests without a good integration (pets, plants, astrology, parkrun), we have to ask. How you ask matters. Rashid and colleagues (2002) compared six strategies for choosing which items to ask new users to rate and found the choice significantly affected both how much effort users had to put in and how accurate predictions became.

That is why Interest Q&A branches. "Are you a pet person?" only leads to breeds, routines and dealbreakers if the answer is yes. Each answer is chosen to separate people, not to fill a form. Frequency answers feed engagement; preference strength feeds sentiment; answer rarity across users feeds niche weight.

3. Shrink small numbers

Here is the trap niche weighting has to avoid. Say an artist appears in 2 of the first 40 profiles. Taken literally, 5% of people like them, so a shared listen would earn a NicheWeight of 0.95. But with 40 people we have no idea whether that artist is genuinely obscure or just under-sampled.

Statisticians have a standard fix: pull small-sample estimates towards a prior until there is enough data to trust them. IMDb publishes one version for its Top 250, a weighted rating that blends a title's own average with the global average according to how many votes it has (IMDb help). Applied to popularity it looks like this:

popularity_est = (n x observed + m x prior) / (n + m) n = people we have seen observed = share who have the interest m = strength of the prior prior = what we would assume with no data

With n = 40, an observed share of 5%, a prior of 50% and m = 20, the estimate is (40 x 0.05 + 20 x 0.5) / 60 = 0.20. The shared listen earns a NicheWeight of 0.80 instead of 0.95: still clearly niche, but not yet treated as a once-in-a-lifetime overlap. As the population grows, n swamps m and the estimate converges on the real share.

The same instinct shows up elsewhere. Evan Miller's well-known "How Not To Sort By Average Rating" shows how two positive ratings out of two can wrongly outrank 100 out of 101, and recommends the lower bound of the Wilson score interval. Search engines add pseudo-counts for the same reason, a trick known as add-one or Laplace smoothing. The details differ; the principle is identical: do not let tiny samples make extreme claims.

4. Say how sure you are

A new user's first match scores are less certain than they will be later. Most apps hide this. We think it should be on the card.

Recommender research supports showing uncertainty. Coscrato and Bridge (2023) argue that uncertainty estimates can be displayed alongside recommendations, used to trigger explanations, or used to mix safe suggestions with exploratory ones. Much earlier, Herlocker, Konstan and Riedl (2000) described recommenders as black boxes and found that explanations could improve acceptance.

Every Affinity Atlas match card carries a confidence level (High, Medium or Low) based on how many shared signals and shared sources the score rests on. A 61% built on three shared sources and six signals is labelled differently from a 61% built on nine sources and thirty signals, because they are different claims.

5. Explore in the open

Recommender systems learn faster when they sometimes show something uncertain to find out. McInerney and colleagues (2018) framed this as explore, exploit, and explain, with exploration especially valuable for new users and items. The usual way to explore is silently: slip uncertain items into your feed and watch what happens.

We would rather ask. In the demo, when someone has a source connected that you do not, the match card says so and shows the effect before you choose: "connecting Untappd would move this score from 48% to 55%". Because scores only use sources you both share, the number can go down as well as up, and the card says that too. Exploration becomes a decision you make, not an experiment run on you.

What we will not do

Cold start never fully goes away. Every new interest, new platform and new user brings a little of it back. The honest response is not to hide the uncertainty but to design for it, and to tell people where it is.


Watch a cold start warm up

In the demo, connect one platform at a time and the match card tells you how each new source would move every score, up or down, before you commit.

Try the demo