Exploring an Experimental Recommendation POC for ListenBrainz

Hi everyone,

I wanted to start a discussion around music recommendations on ListenBrainz, particularly around TROI, which currently recommends music based on similar users’ listening patterns. That approach is well understood and effective in many situations, but it also represents a very specific way of thinking about recommendation: if users listened to similar music in the past, they are likely to enjoy similar music in the future. While this works well, it also naturally limits recommendations to what exists within a user’s listening neighborhood.

I’ve been thinking about whether ListenBrainz could benefit from having a public, low-risk, experimental space to explore additional recommendation signals alongside TROI, without changing or replacing the existing system. This post is meant to open that discussion.


Motivation

TROI’s similar-user approach is strong, but it doesn’t explicitly model a few other aspects of listening behavior that many users intuitively care about. For example, some users enjoy going deeper into artists they already love, while others prefer discovering new artists connected indirectly to their taste. Some users value genre consistency, others value era, and others still prefer exploration driven by social signals.

These aren’t shortcomings of TROI, but they do raise a question i.e. should ListenBrainz experiment with other ways of shaping recommendations, and if so, how can that be done transparently and reversibly?


High-level idea

The idea is to build a clearly labeled experimental recommenderthat lives on the Explore page. Instead of relying on a single signal, recommendations would be generated from multiple simple perspectives, each capturing a different way users discover music. The system would then combine these perspectives into a single recommendation set.

Importantly, this would remain:

  • Opt-in
  • Experimental
  • Separate from TROI
  • Open to feedback and iteration

How recommendations are divided into four sections

To make the system easier to reason about (both for users and contributors), recommendations are intentionally **segregated into four sections,**each representing a distinct discovery strategy. In the current prototype, each section contributes 25 tracks, for a total of 100 recommendations.

This 25–25–25–25 split is a starting point, not an assumption that all users want all discovery strategies equally.


# 1. Discovery via collaborator networks

This section is based on artist relationships rather than user similarity.

  • Identifies artists who have collaborated with multiple artists the user already enjoys

  • Treats collaboration as a signal of shared musical context or scene

  • Prioritizes collaborators who appear repeatedly across the user’s favorite artists

This reflects how many people discover music organically: through liner notes, features, and shared creative circles.


# 2. Broader exploration of familiar artists

This section expands outward to artists the user listens to regularly, but not obsessively.

  • Uses artists ranked just below the user’s top favorites

  • Treats them as a single pool rather than isolated silos

  • Limits how many songs come from any one artist to avoid dominance

The intent here is to surface depth from artists the user already likes, but may not actively seek out.


# 3. Deep dive into top artists

This section focuses on artists the user already listens to the most.

  • Looks at the user’s top few artists by listening history

  • Recommends songs by those artists that the user has not heard yet

  • Prioritizes familiarity while still encouraging exploration within known catalogs

This reflects the idea that liking an artist does not necessarily mean having explored their full discography.


# 4. Similar-user discovery (future extension)

This section aligns most closely with what TROI already does today.

  • Uses listening overlap between users

  • Surfaces songs enjoyed by multiple users with similar listening behavior

  • Acts as a form of social validation

In this experimental setup, similar-user recommendations are treated as **one component,**rather than the sole driver.


Why keep these sections separate?

Keeping recommendations separated by strategy makes the system easier to explain, critique, and evaluate.

Instead of asking whether a recommendation is “good” or “bad” in isolation, users and contributors can reason about **why**a song appeared and whether that discovery path makes sense. This structure also makes it easier to compare strategies against each other and understand which ones users actually find useful.


Scoring and configurability

The current prototype already uses an explicit weighting mechanism rather than a fixed or opaque formula.

Tracks are scored using a small set of interpretable parameters, such as:

  • genre and tag alignment

  • artist familiarity versus exploration

  • collaboration signals

  • era alignment

These parameters are intentionally separated and tunable. This makes it feasible to expose limited user-facing configurability, such as adjusting how much era, genre, or exploration should matter, without requiring users to understand the underlying implementation.


Different users may value different sections

One important assumption this experiment explicitly avoids is that all users value all discovery strategies equally.

Some users may strongly prefer deeper exploration of artists they already love, while others may care more about collaborator-based discovery or social validation. By keeping sections independent, the system allows future experimentation where:

  • sections can be upweighed or downweighed

  • some sections can be disabled entirely

  • different defaults can be tested for different listening profiles

This kind of experimentation is difficult to explore when recommendations are produced by a single monolithic model.


Why the Explore page

Explore already represents curiosity, browsing, and discovery without strong guarantees. Placing an experimental recommender there aligns expectations and avoids presenting it as a definitive recommendation system.

It also provides a natural environment for iteration, feedback, and discussion.


Questions for the community

I’d really value feedback on questions like:

  • Does TROI’s current similar-user approach cover most discovery needs, or are there gaps it doesn’t address well?

  • Is there value in exposing alternative recommendation strategies publicly, even in an experimental form?

  • Does separating recommendations by discovery strategy make the system clearer or more confusing?

  • Would limited configurability help users better understand recommendations, or add unnecessary complexity?

  • How should success for an experimental recommender be evaluated: engagement, feedback, listening behavior, or something else?

  • Would it make more sense to frame this as an experimental playlist generator rather than a recommender?

Critical feedback is especially welcome.


Possible next steps

If this direction seems worthwhile, the next step would be to keep the scope intentionally limited, clearly label the system as experimental, and iterate based on community feedback rather than expectations.

Thanks for reading, and I’m looking forward to hearing thoughts.

1 Like

Troi and the current recommendations are literally a “first step” to see what users think. And the reception has been good, but that doesn’t mean that we’re done. Lets see what new things we can build!

Yes. I bet some users will be interested, others not.

Some people will not be interested in configurability of recommendations, others (like me) will be. But I am very curious about what people say here.

What exactly is the difference? :slight_smile: A playlist generator can be a recommender….

TROI and the current recommendations feel like a solid first step, and this POC is really about exploring what next steps could look like, not questioning what exists today.

On the playlist vs recommender point — I see it less as a strict distinction and more about presentation. Under the hood it’s still recommendation logic; framing it as an experimental playlist generator might simply set clearer expectations while we test new ideas.

I’m mainly interested in learning which signals people actually find useful once they can see and interact with them.

I think this point will become clear once people start working with it.

Same here. And I think we’ll get some good feedback that will allow us to iterate this – I think it would be good to think up how this could be expressed in a simple web UI with some sliders….

Agreed, that’s exactly what I had in mind. A simple web UI with a few sliders feels like the right level of abstraction to let people interact with the signals without exposing too much complexity.

And I agree that once people can actually play with it, we’ll get much clearer feedback on which signals matter and which don’t.

Will add one thing that came to mind: a color badge showing on each listen that tells the user which signal/strategy caused that track to be added to the mix.
So for example blue badge for collaborative filtering, red badge for deep dive, etc.

I think this would make the process more transparent and allow users to adjust according to how they perceived a first generated playlist.

Does TROI’s current similar-user approach cover most discovery needs, or are there gaps it doesn’t address well?

I would recommend a proactive approach, searching thoroughly through the forums here and through jira tickets for any playlist / recommendation feedback

2 Likes