Sunday 13:30–14:15 in Tower Suite 3

Just ask: designing intent-driven algos

Anna Schneider

Audience level:
Intermediate

Description

Classic recommender systems are great for answering the question “what does a user want in general?”. However, they only get you partway to an answer to “what does a user want right now?”. To close the gap, it helps to capture and act on real-time user intent. I’ll share examples of this paradigm, and the resulting changes to our algorithms and architectures.

Abstract

People are complicated. They don’t want the same thing every time; their general preferences are tempered by their specific use cases. Some days I want to watch a comedy special, other days I want an indie drama—and if I’m in the mood for one, I don’t want to see recommendations for the other.

Algorithms that incorporate user context are called “contextual recommender systems” in the literature. Some contextual recommenders work by showing the user an initial set of recommendations, then adapting to user behavior throughout a session. I’ll talk about a different flavor of contextual recommender: ask the user what they want upfront, then serve a complete set of relevant recommendations that matches the user’s intent.

Intent-driven recommenders are challenging on several fronts. Incorporating real-time user input into algos is hard, particularly if you run any part of your predictions in batch mode. It’s also hard for users, if they’re not accustomed to making their implicit intent explicit. And since it’s hard for users, it’s hard for UX designers to figure out how to make it easier for users.

Stitch Fix has had success with this intent-driven approach recently when creating data products for internal users (e.g., merchants who decide what to stock in the warehouses). I’ll talk about our solution (user-configured constrained optimization for the merchant tool). I’ll also mention other intent-driven algos such as search or routing. I’ll compare and contrast each algo by covering several points, including:

Subscribe to Receive PyData Updates