Hello Rubber, meet Road: Putting recommenders to work

In our previous post, we spoke about how various recommender algorithms work, and why the nature of the data suggests what might work for whom. But having a good list of personalized recommendations is only half the battle. So what’s the other half?

Imagine picking a place to order in from on Sunday evening. (Let’s make it more specific: Sunday, 19 October 2023. You’re likely to be a wee preoccupied with what’s on television, don’t you think?) How do you pick a place?

If I were to take a poll, the answers I’d get would range from:

  1. I just pick a restaurant whose food I’ve always enjoyed and reorder my favourites.
  2. Cricket night is pizza night.
  3. My ten year old has never seen India in a world cup final. So, something new to commemorate the occasion.
  4. Who knows? Whatever looks good on the day.

… and so on.

What I’m trying to get at is, we don’t always approach consumption the same way. So why should a recommender system come up with a single consolidated list of recommendations, however good and however personalized they might be, and assume that the job is done?

And so…?

And so, recommender stories. Each way of approaching consumption is a way of filtering the recommendation list for the customer, and picking a subset that suits. For instance, if I’m in the mood for pizza, then I’d filter the list down to pizzerias. If I’m in the mood for something new, I’d want the recommender to surprise me.

This isn’t a new concept. If you look at the rows of recommendations in your Netflix app, you’ll see row titles that are ways of filtering a larger list to provide subsets. Some subsets are relatively generic (Trending in India is probably the same for everyone logging in from India), while some are personalized (Based on your Watch List), and some are in between (you and I might both get lists of K-Dramas, but yours might be different from mine).

You can think of these different ways of filtering recommendations as recommender stories. In other words, selling strategies.

Here are some examples of how stories can be used to filter down to relevant recommendations:

  1. Recommendations for you: This is simply a matter of picking the top k recommendations from the hybridizer output.
  2. Recommendations in your favourite category: Pick the category that the customer is most fond of (the one where they’ve made the most transactions, for instance), and filter the list by that category. Different people would therefore not just get different categories, but also different recommendations within the category (since the subset comes from their personalized master list produced by the hybridizer).
  3. Cross-selling: Pick a category or subcategory the customer is most fond of, or maybe last purchased, and find complementary products. You can either do this by looking at co-purchase patterns in general, or filtered down to appropriately defined complementary subcategories.
  4. Exploration: Find a category that the customer has never shopped in before. Category addition through exploration-based selling strategies is a good way of improving customer stickiness. If a customer doesn’t come to you for just one thing, you’re more likely to keep them.
  5. Algorithm-driven: Remember the common-sense phrases describing each recommender strategy from the previous article? Each of those are also selling stories, when you think about it. “People like you bought this” is a way of saying, filter the recommendations down to those produced by the algorithm using that strategy.
  6. Source-driven: You can run recommenders on various categories of customer engagement. Actual purchase, adding to a shopping cart (but not purchasing), adding to a wish list, browsing a product page etc. Each of these represents customer intent vis-à-vis a product, but not necessarily to the same degree. One can therefore filter the hybridizer output down to recommendations that were generated based on a particular source.
  7. Category-driven: Suppose you want to promote a particular category. Filter the hybridizer output down to recommendations from that category. Two customers might get recommendations in the same category, but the actual products might differ since they’ve been filtered down from different, personalized supersets.
  8. Specialized products: In verticals such as pharmaceuticals (even when we stick to nutritional supplements and the like), it might be a good idea to limit some recommendations to product categories or subcategories that the customer has already bought. Imagine an old person buying geriatrics-focused nutritional supplements – filter their recommendations down to only that category, and don’t send them diabetes or hypertension-related stuff.

There are many more strategies that one can think of, obviously. There’s also a way to combine these – stories of stories, if you will – that allows multiple, specifically picked strategies to coexist within a single list. For instance, you might want a story of stories that combines a list of specialized product recommendations (#8 above) with a personalized list filtered down to general purpose products (#7, with a filter for general purpose product categories).

What happens if you run out of recommendations?

Yeah, this can happen. Let’s say you want 20 recommendations in the customer’s favourite category and what you actually have is only 12. You can set up a backstop so that the remaining 8 come from trending products in the category. Obviously, if you’re doing this for a customer who has not transacted at all and therefore doesn’t have a favourite category, the resulting list should still be empty.

How do these stories actually make their way to the customer?

Broadly speaking, customer engagement can be both proactive and reactive. Proactive is when the brand sends out a message or an app notification and initiates the engagement, and therefore takes a call on what recommender story to use for whom. Reactive is when the customer initiates the engagement by logging into the app, and the brand now has an opportunity to personalize their experience.

Here are some examples of how reactive stories work.

  1. A carousel with personalized recommendations: This is not unlike the Netflix example we spoke of. Pick one or more recommender stories, and let the customer scroll through the recommendations.
  2. Product page personalization: Commonly co-purchased products can be displayed in a section below the product details. We’ve all seen this.
  3. At checkout: Look at what’s in the shopping cart, identify co-purchase recommendations and display them for the customer to add. The phrase “Would you like fried with that?” might ring a bell.
  4. Preference-driven listing: Imagine a customer with a preference for a particular colour, say blue. When this customer searches for formal shirts or clicks on the relevant category page, reorder the products so that blue shirts come up on top. You could do this with any product attribute: price band is an obvious example. Typical price-driven listings are either low to high or the other way around, but if what you prefer is something in the middle, you shouldn’t have to scroll through a lot to find what you want.

Proactive stories are embedded within messages. The key here is to make sure that the message tonality and wording is in sync with the story being used. For instance, if the message says, “We know you love our range of accessories, so we thought you’d be excited by our new additions”,  it indicates that you’re talking to (most likely) active customers whose favourite category is accessories, and filtering the recommendations accordingly.

Sometimes, you just want to talk to everyone and run a category promotion, and you might therefore think that there’s no place for a recommender story here. But you can get inventive even with a mass campaign like that. Let’s say you want to offer 20% off on ethnic wear during the festive season. Break it down into three different campaigns. Here’s a ChatGPT-designed set of three solutions:

  • For customers whose favourite category is ethnic wear:

🌟 Diwali Special Offer! 🌟

Hello [Customer Name]! Your love for ethnic wear shines bright! Enjoy an exclusive 20% off on your favorite styles. Visit <> or use XYZ app. Explore now! 🎉 [Short Link to Personalized Recommendations]

  • For customers who have bought ethnic wear before but isn’t their favourite category:

🎉 Diwali Delight! 🎉

Hi [Customer Name]! Celebrate Diwali in style! Enjoy a 20% discount on ethnic wear. It’s not your usual, but we’ve got something special for you. Visit <> or use XYZ app. Check it out now! 🌟 [Short Link to Personalized Recommendations]

  • For customers who haven’t bought ethnic wear before:

🎆 Diwali Debut! 🎆

Greetings [Customer Name]! This Diwali, step into elegance with our ethnic wear. Avail an exclusive 20% off on your first purchase! Visit <> or use XYZ app. Start your ethnic journey now! 🌺 [Short Link to Personalized Recommendations]

And for those who have a strong preference for non-ethnic wear, you might want to try a different tactic:

Diwali calls for celebration! 🎊 While our ethnic wear is fabulous, check out our diverse range at <>. Personalized picks: <shortlink4>”

In this message, link to a recommender story that filters out the ethnic wear and either focuses on their favourite category, or on some category they haven’t tried before, or a mix of everything except ethnic.

I know what you’re thinking. We started off talking about what recommender strategy works for whom, then went on to talk about hybridizers and about recommender stories, but what all that has accomplished is to kick the can down the road. So now you’re asking…

How do I know which story works for whom?

The short answer is: you don’t, so you test and learn. Imagine that there are a million customers, and you want to find out which of 10 recommender stories configured works best across the entire base.  The simplest thing to do is to try each story for a randomly chosen set of 100k customers, and see what works best.

A slightly more sophisticated strategy would be to take a batch of 100k customers, try each story for 10k of them, and use the results to adjust the sampling in favour of the strategies that seem to work better in the next batch. Keep doing this as you get better at understanding what works, so that you increasingly spend your marketing efforts on the more effective stories, but leave a little room to keep trying the ones that seem to not work but might become effective in the future; in other words, exploit what you know but continue to explore what you don’t. This approach falls under the category of multi-armed bandit problems – while it has been around for decades, it has recently become more popular, especially with digital-focused companies trying to test and learn but not leave too much money on the table.

A more sophisticated variant of the multi-armed bandit approach is the contextual bandit, wherein we want to understand what works, but not in a generic sense but specifically for different kinds of customers. This will again trade-off between exploration and exploitation, except that the extent of exploration and exploitation is also a function of what we know about the customer.

So, back to the short answer: try everything, then do more of what works. If you know this at a customer or segment level rather than in a general sense, even better.