Personalizing the shopping experience on Myntra Storefront

Anand Agrawal
7 min readMay 19, 2018

--

Myntra Storefront Personalization

Over the past 18 months, our focus at Myntra has been to create a more personalized shopping experience for our customers.

We used all the understanding we have of our users’ fashion taste — in terms of brands, categories, products, product specific attributes such as colors, fabrics, fit etc — to help our users find products more easily and intuitively. As we have grown our catalog to a million+ designs from thousands of brands, for a larger and increasingly diversified customer base, it has become even more crucial for us to surface the right set of products to our customers.

This post summarizes some of the things we have done on the Myntra Storefront over the past few months to help our customers find products that they love.

Understanding the fashion taste of every user

The very first step towards creating a more personalized experience of Myntra was to create a fashion taste profile for every user. We used the browsing and transactions history of our users on the platform — what kind of products do they look at, what they shortlist, and what they buy — in order to better understand the customer’s fashion preference.

Looking at a user’s taste profile, it is easy to understand what kind of brands and categories a user is interested in and at what price points. Moreover, it helps us understand a user’s specific preferences for each category. For example, a particular customer when looking for t-shirts, will mostly be interested in cotton round necks, with half sleeves, in bold colors, with color blocking or very small prints, from a set of preferred brands in the price range of Rs 1,200–1,500.

User’s fashion taste comprising of a combination of preferred brands, categories, attributes, price points etc.

This taste profile also factors in affinities to various attributes over a period of time. Fashion is fickle, some preferences keep changing, some remain constant, and some are just driven by immediate requirement.

Personalizing the Myntra Storefront

Homepage

At any point of time, Myntra store has hundreds of propositions for our customers. These propositions are represented through banners on the storefront and are basically a set of products with some common attributes:

  • Around a theme, say Graphic Tees
  • From a brand / set of brands, say Nike
  • From a category, say Jeans
  • With a discount, say upto 50% off
  • With an offer, say Buy 1 Get 1 Free

The biggest limitation with the Myntra Storefront till a few months ago was that the homepage was static. The merchandizing team would create and handpick a few of these propositions daily and update the homepage. All customers who visited us during the day saw the same banners/content irrespective of their fashion preference.

Two users see a very different Myntra app homepage

As a first step towards making the Myntra storefront dynamic and creating a more personalized experience, we moved away from one storefront to infinite storefronts, each designed keeping the fashion needs of a specific user in mind.

Instead of showing the same propositions to all users, our system cycles through all the available propositions (banners), and pick the most relevant ones for each user based on his/her fashion taste — and show the corresponding banners on the homepage.

With this change, two users who enter the Myntra store on their apps at the same time see a completely different store, tailored to meet their fashion shopping needs.

How we did it?

We modelled our homepage on a basic ad platform that serves ads (banners) to our users based on the a) relevance of the banner to the user, b) performance of the banner, and c) the budget cap or impression cap for each banner.

  • Relevance
    We compute a banner’s relevance to the user by aggregating the user’s affinity to the set of individual products which the banner leads to. Clicking on a banner leads to a set of products. Our system periodically iterates through this set of products and auto-assigns relevant tags (combinations of gender, brands, categories, price and other attributes) info for each banner, which is used to determine the relevance of the banner to the user.
  • Performance
    We looked at the funnel metrics — Clicks, Product Views, Add to carts, purchases — per impression of the banner.

When a user visits Myntra, we rank order all the available banners for the particular user based on these 3 parameters, and serve them accordingly on the homepage.

Personalizing Search Results and Product Lists

There are 2 ways a user lands on a product list on Myntra:

1) User initiated searches — when a user searches for specific categories with keywords such as dresses, tshirts, black dress etc., or for brands with keywords such as Nike, Mango

2) Predefined queries — which are used in merchandizing through links in the navigation menu, in notifications/email, and also in banners.

With a large catalog, a user landing on a list screen will see thousands of products. In order to find the product the user is looking for in this list, they need to scroll and browse a lot of products, and often need to apply various filters such as colour, brand, pattern etc. on this large set to narrow down the result set.

In order to help users narrow down this large product list and find product that they are looking for quicker, we introduced personalized ranking of products in this recall set using the user’s taste profile.

While the entire recall set is ranked based on predicted CTR using various features such as historical click through rate (CTR), revenue, quantity sold, inventory, size availability, discounts etc., we also included the user’s taste profile as a feature to rank products — which boosted the products more relevant to the user on top of the search results.

When two users search for the same keywords, or tap on the same banner or notification link, they see the same set of products, but ranked differently based on their individual preferences — leading to faster discovery of the products that they love.

Same recall set with products ranked differently for 2 users

Intent Driven Ranking

Search query terms in fashion are quite broad (such as Nike Sneakers, or Black Dress, or Tshirts) because describing a fashion product through search query is quite challenging, and does not capture a user’s intent completely — which leads to fairly large product listings.

For us, the most common way to read the user’s current intent on a large product listing has been through filters. Users apply various filters such as color, brand, pattern, filter etc., to narrow down the product set and find relevant items. Application of these filters presents an addition hurdle in the user journey, and is quite complex user experience on a mobile screen. Moreover, these filters are also not sufficient all the time as all types of attributes may not be captured/tagged for a product to capture user’s intent completely.

We try to solve this problem in our system by identifying this intent dynamically using the user’s interaction with the first few products in the result set. The first few clicks on the result set are used to infer the user’s intent, and subsequent products are loaded accordingly.

Our product listing is paginated with 48 products on each page. The user’s intent in captured based on the first few clicks on the set of the presented products, and the remaining products are re-ranked based on this input, and the top 48 products from this are presented as next page, and so on.

Image source: fwdlife.in

This is in many ways very similar to an offline shopping experience. If you visit any saree shop in India you’ll see the store associate do exactly this — pick 10 very “different” products from the shelves, and place in front of the shopper. The shopper looks at these products and shortlists a few. Based on these, the associate tries to understand what the shopper is looking for — in terms of colors, fabrics, patterns, price range etc. Once the intent is identified, the associate removes others, and gets more similar to the ones already shortlisted.

Myntra Launchpad

Looking at platform search and browsing patterns, over a short and long term, indicates that users have a high likelihood of searching or browsing similar propositions.

Customers who are highly engaged and are more loyal, use search more often. They also have a defined set of fashion items that they are looking to buy. They know the selection that Myntra has to offer and what they are looking for — brands, categories etc, and they directly search for these products, without going through most of merchandizing or navigation menus. Most of the search queries also repeat over time for these users.

Our idea behind introducing the LaunchPad was to directly provide “quick links” for our users to get to what they were looking for, while still retaining the option to search using keywords.

A user’s browsing and searching behavior helps us predict what the user could be interested in. We use this to proactively present a personalized feed of highly relevant products and suggestions on the Myntra Launchpad directly.

Some of the items we show a user on the Launchpad

  1. Recent Searches
  2. Suggested Brands based on short term and long term taste
  3. Suggested BrandxCategory combinations
  4. Recently Viewed Products
  5. Product recommendations from on new arrivals, best-sellers, deals etc based on affinities

More later!

Personalization, Search, and Discovery Team at Myntra- Ankul, Aprajit, Arit, Divya Alok, Dnyanada, Navneet, Neha, Nilaksh, Sagar, Sreekanth, Sumit, Teja, Vishal

--

--