A Survey of Explore and Exploit Interfaces
Some of the most popular apps today are highly personalized — everyone sees content tailored to them. This is typically powered with supervised machine learning. The basic idea is to keep track of what you (or people like you) see and show you more things that are similar.
Facebook’s News Feed looks for what you like and click on and shows you similar content. Spotify’s Discover weekly is powered by seeing what songs you listen to and see what other songs people are putting on playlists with that song. YouTube’s related videos are powered by what other videos people watch with a particular video.
The basic constraint of supervised ML is that the system can only show you more of what it already knows you like. But a good product is also responsible for understanding what you like comprehensively and over time. Machine Learning folks call this the explore/exploit tradeoff because given limited user attention, we can either learn something new about them or show them more about what we know they like. The pain point of this tradeoff is that exploit is more likely to keep the user engaged in the short term.
The most common way to do early exploration is what the industry calls “new user experiences” or NUX.
But increasingly as NUXes show up in every product, this feels like burdensome work for users, and the need to collect explore signal with lower friction increases. Also, people’s needs and wants evolve so a product needs to be continuously exploring. My goal here is to show you a set of interfaces that collect exploratory signal and ones that exploit signal, and some that do a combination of both
In its simplest terms, an explore interface is one which tries to collect new information to show you relevant content, while an exploit interface is one that uses information it has to try and suggest content for you to consume.
Think of these examples as a lens through which to look at your own product to see what you have and what might work for you.
- Directory (explore): A curated organization of the space of content into meaningful categories
- Search (explore): An unpromoted space to enter intent
- Search Results (exploit): Content related to what you asked for
- Related (exploit): Content similar to what you’re seeing
- Common Knowledge: A list of globally popular content, sometimes in a specific context
- Personalized Feed: An unpromoted stream of content based on interests you’ve expressed in the past
Now, given that abstract survey, let’s dig into some examples:
Here, you see our first example that these interfaces don’t have to be mutually exclusive. For example, Facebook is search coupled with suggestions using common knowledge.
This is typically an exploit interface but usually at the exploit interfaces if the intent is not satisfied, they tend to leave room for explore. In fact, it’s a general pattern for exploit interfaces to make room for explore at places where there’s some chance the exploit has failed.
It’s interesting to note here that the related content doesn’t strictly need to be related. For example, suggestions 3 and 4 in the YouTube example above are based on just my past browsing history and the model predicts despite the context that I have a higher change of clicking through on them.
The goal here is to expose that you’re seeing something because many others (or sometimes many others like you) have seen and reacted positively to it.
An unprompted, personalized feed is usually a catch-all pattern. It shows up unprompted and uses all the the context the product has on you. It’s normally exploit but also interweaves explore. You can see things based on what’s common knowledge, what’s similar to what you’ve liked, it can serve as a springboard for explore.
Wiring it all up
You’ve already seen how these interfaces come together on a single screen, but where the magic happens is in the flows that connect them together. A healthy app has easy access to explore and exploit states from anywhere and effortlessly moves the user from one to another.
In fact, the better a system gets at exploiting, the more explore paths you become responsible for creating, lest a user get trapped in a continually narrower space.
For example, notice how a set of transitions through Google and YouTube start with a search for Pandas and ends with lists examples of civil and structural engineering.
Even more dramatic, this hop through Wikipedia, through not many different UIs but extremely dense linkification. This serves to illustrate that one can effective explore and exploit without the need for machine learning.
Some of these hops were related, e.g. from Heimspiel to Album, but the hop to Learjet came from Lear’s involvement in the Stereo 8 format, and Learjet had operations in Grand Rapids.
These are some examples of successful patterns. An unsuccessful exploit pattern will result in a monotonous dead end of context. An unsuccessful explore pattern is one where you keep wading through filters, directories and other interfaces without finding anything fulfilling. Balancing explore and exploit is a tricky problem for any personalized app. We grapple with this all the time at Quora. I hope you find these patterns useful to keep in the back of your mind when working on your next one.