In early 2019, I joined Canopy, a start-up founded by the people behind Spotify’s Discover Weekly with the goal of building a privately personalized recommendation technology. We asked ourselves if we could design a consumer product that provided personalized recommendations while touching on all Sensible principles; our first stab at this was Tonic.
Tonic is an iPhone app that gives you a selection of personalized reads every day. We combine machine learning and editorial input to find the unexplored parts of the web and deliver five articles that are meant to delight and inform you. Here’s how we used Sensible principles to guide the design of Tonic:
First, we wanted to make sure that we could deliver personalized content you would love without asking for more data than necessary. We did this by using a technique called Differential Privacy.
Differential Privacy is defined as “a system for publicly sharing information about a dataset by describing the patterns of a group while withholding information about the individuals.” This is a practice spearheaded by many engineers and scientists who are far more qualified to explain how it works than I am (but I’m going to try anyway!).
In Tonic, we basically create a version of what you’re into based on your activity with the app — what you choose to tap on, how long you spend on an article, etc — then we add “noise” to make it mathematically impossible to decipher who you are and we send that to the server. Once we’ve delivered your recommendations, we throw that noised representation away instead of storing it permanently.
This approach is only made possible recently given the advancements in computing power on newer mobile devices, but what this means is that there is no longer a necessity to collect your personal data in order to deliver personalized experiences you will love.
In fact, we don’t even ask you to log in when you download Tonic (I know. Crazy, right?!). You can just download the app, go through a quick onboarding and start using it right away.
This means that we don’t know anything personally identifiable about any of our users, but only information about them in aggregate. We have no way to know their name, where they’re from, or how much time they individually spend on our app unless they choose to share that information with us.
This provided a unique challenge for understanding how to design for our audience. We have no way to target a specific user and learn from their behavior without their consent. So, we decided to lean in to user feedback and create a direct channel to our team.
We put a feedback button in the main screen that, when tapped, it allows any user to send an anonymous message directly to our Slack. It’s a wonderful window into our users’ minds. We regularly get messages from users who love and hate our app and most importantly WHY they do.
The great thing about it is that, even though we are a small team and don’t have the resources for an entire research department, we all get to see how our users feel about the product we’re building. That includes engineers, product, design, marketing, and every other area of the company that is typically not exposed to this level of user insight.
We knew we wanted to avoid FOMO that made you overwhelmed every time you open the app. There are already a lot of bottomless lists of content on the internet and we didn’t want to just add to the noise.
We created a constraint: instead of an infinite feed of content, we’d limit it to five recommendations every day and aimed for quality over quantity. This made the app feel fresh and gave you a reason to come back every day, without having to rely on growth hacks to bring you back.
Optionally, we can remind folks when new recommendations are ready. Of course, people can choose when the notification is sent. This was an opportunity to delight people while reinforcing the idea that they remain in control of every part of the experience.
Most recommendation systems are a black box. How many of us can describe how Instagram’s Explore page actually works? We wanted to peel behind the curtain with Tonic and give people a clear sense of what we think they’re into and more importantly, what information we use to inform that.
One of the three tabs in the app is dedicated to your Activity. Tonic users don’t have to go hunting for it behind a menu in Settings. What they’ve done in the app is right there, visible next to the home screen.
In the tab, we show them a full history of the articles they’ve read along with how much we think they loved it. We also expose what ‘vibe’ they’re giving us based on their reading history.
A quick note about feedback: we intentionally didn’t include negative feedback because we learned that saying you “don’t like something” puts a lot of pressure on a recommendation system to honor that and not show you anything like it in the future. We focused on four degrees of positive feedback (“alright”, “good”, “great”, and “love”) and one option to “ignore” the read instead to match user expectations.
Vibes — also, a mood or atmosphere — are what Tonic thinks you’re giving off based on your reading history, likes and dislikes. Your vibe changes as you interact with different kinds of reads everyday. We base the vibe descriptions on japanese RPG archetypes and create fun descriptions of each user so they can feel seen by the app.
My vibe is “Leader & Planner” which means readers like me “strive endlessly to master human affairs and their own place in the world” — 😏 not too shabby!
We noticed our users really love this feature as it provides an opportunity to understand why they’re being recommended their reads and how that changes over time.
Transparency isn’t enough to create a Sensible product. It must also be controllable, which means that at any point users can correct what the algorithms got wrong.
We give people a couple opportunities to do this in Tonic:
As I mentioned before, Tonic assigns an automatic rating to every read based on your activity. However, if we get it wrong, people can long-press on any read article to correct the automatic rating. This will steer future recommendations to something more aligned with their tastes.
This core interaction (long press to rate) is something present everywhere in the app: any time you see an article you’ve read, we expose the app’s rating and every user has the opportunity to correct that with the same interaction throughout the app.
Rating is great for articles our users have read and decided they don’t love as much as Tonic thinks they do (or maybe even more!), but what about when Tonic gets it wrong right away and they don’t even want to read the article? They can use the same interaction: long press to swap a recommendation.
This was a particularly interesting challenge because we wanted to avoid encouraging people to use this mechanic to get into a rabbit hole of reading more than 5 articles per day. After all, Tonic should feel finite and not like an endless stream of stuff to read (see Mindful principle above).
We considered tapping a button to get five new articles totaling ten articles, or replacing all five articles for a new set of five. We settled on individually swapping one article at a time to encourage a thoughtful interaction with the app that gave each piece a time to shine.
Tonic is a small app and a proof of concept for what a Sensible product could look like. Some of these features may sound familiar, but when combined together and designed simply into the foundation of your product, we believe they deliver something entirely new. There are still many unanswered questions, like how to scale these principles to a product that serves millions of people, how do you build a Sensible social platform, and transferring your recommendation profile across devices.