Inspiration

Historically, online storefronts have had a challenging time optimizing their interface for each customer. Algorithms are expensive and imperfect, and early implementations of machine learning to improve personalization haven't yielded massive wins. In theory, the optimal solution is an LLM like ChatGPT that can generate and personalize a page. However, in our tests, LLM personalization is both expensive and slow. Customers will simply shop elsewhere instead of waiting for personalized results.

Our Solution

We decided to build a custom model that fuses specialized training data and multiple model architectures. This creates a model that is not just cheap but also incredibly fast. In synthetic tests, our model is able to raise revenue by 3% per shopper while only adding tens of milliseconds of additional page load time. We believe this number could be raised further given additional time to train and optimize the model.

This model enables personalization with the quality of generative AI at the speeds demanded by modern commerce.

Why AI

Ranking items on a storefront seems simple at first, like a job for a simple algorithm. However, what if storefronts want chips explaining why a customer might want a specific item in natural language? What if they want to color-match the throw pillows a customer searches for with the couch they bought last week? Or recommend coffee beans from a new country after the customer has shown an interest in trying different origins through their purchasing habits?

When we want to describe something in natural language or make increasingly nuanced connections between multiple items to predict what the customer wants, AI is the only piece that fits. But historically, this has been basically impossible due to the speed of LLMs. The model we built enables these use cases at speeds that were previously impractical.

How We Built It

We started with Qwen, an open-source large language model, and post-trained it for storefront personalization using specialized training data and custom components for choosing products and writing text.

A traditional LLM generates text one word fragment at a time. Our model predicts the words for short descriptions together, alongside ranking products for the customer. This combination lets us keep the language understanding of a larger model while making personalization much faster.

We connected it to a storefront where products, colors, and descriptions change based on the customer's preferences, history, and searches.

Testing and Feedback

We built a swarm of AI shoppers with different shopping goals and had them browse both the original and personalized storefronts through screenshots and clicks. This let us measure what they actually purchased rather than just whether the recommendations looked good.

The feedback loop takes this further: shopping behavior becomes training data for the next version of the model. Instead of training once and leaving it there, we can use the results to improve personalization, test again, and see whether those changes actually help.

What's Next

We want to expand this loop to more products and eventually real shoppers. The goal is a storefront that keeps learning from how customers use it, improving its recommendations and descriptions without making the page slower.

Share this project:

Updates

Submission history