The search function is essential to anyone’s online shopping experience 🔎
How does it work? A user enters a search item. This query is then matched with our existing products, and the closest matches are shown as a result.
This matching happens through our algorithm. But when there isn’t a product, what will the algorithm recommend? 🤔
When a buyer searches for a product, sometimes we don’t have any results.
My team’s end goal is to show products as recommendations to sellers to help them increase their earnings.
A little complicated? Let’s flip the switch.
As a buyer, have you seen product recommendations under a banner like “products you would like”? We’re trying to do the same thing — but for sellers.
When searches don’t yield results, we have to notify our sellers: Hey, there’s a demand for this product. You should stock up on it!
This is how we do it.
Of course, we don’t just forward all non-result searches to our sellers.
A query goes through a number of refinements before they are treated as recommendations for sellers:
1. We filter all the searches we had in last 7 days
2. From our dictionary, we figure out the meaning and intent of the words in your search string.
Wondering what the dictionary contains? Oops, sensitive information! 🤐
3. From the above information, we figure out the category a search falls into. This part leaves some mystery in our relationship.
4. Next, we remove duplicate search strings. Eg: 'red anarkali saree' and 'anarkali red saree' are duplicates — we don’t want to repeat this process.
5. We group the similar strings and accumulate their performance. Then, we filter the disappointed searches from them.
What’s our benchmark for ‘disappointed’? Again, tough luck.
6. Finally: you get the "trending searches". These are then provided as recommendations to sellers, to promote the stocking of these kind of products.
Mapping recommendations to the supplier
We have our list of products. How do we know which seller to recommend them to?
For that, we need to know our seller.
1. Create a supplier portfolio.
2. Get the attribute terms that the seller is dealing with. Think of it as a mini KYC — all sellers won’t sell all products. Some will specialise in clothes, some utensils, and some imitation jewellery.
Once this process is done, I know my seller.
Now, to map them to the seller.
1. You have search terms, and you have seller terms.
2. Count the number of terms of search string matches to the seller portfolio.
3. Filter out the minimum/non matches.
Boom — you have your recommendations ready.
But, my work isn’t done yet. You have to sort these when you show them to the seller according to the relevant factor.
We take a percentage of how relevant that search is, along with percentage of how disappointed that search is.
We also take a percentage of how much match that search is to the supplier and sort them accordingly.
Take a deep breath 🧘
The stage I talked about above is the OLAP system. In order to serve data to our suppliers it needed to be in the OLTP system.
Uh oh, too technical? Let me help you out.
OLAP is an analytics system, while OLTP is a transactional system. We ingest the complete data in servabel format to OLTP storage (I will talk about this another time).
Now there is something missing. The final step!
We received beautiful designs from our design team. Now the developer team sits for a couple of days divided into two teams: frontend and backend.
We brainstormed the designs and finally came up with the API contracts which are acceptable by both teams (you have to be the one to know the struggle that goes behind this 😛).
For a couple of sprints, we gave our sweat and blood to complete the development, integration with frontend, development testing integration testing.
We passed it to QA (The biggest battle 🥷).
Surprisingly, we got the quality assured mark from QA in less time.
It wasn’t that surprising though — we did dev and integration testing where we fixed SO many issues ✅
Who won the battle? Meesho. We imbibe the mantra: Company > Team > Individual.
Next step: Demo session with our product team and design team. We showed all the flows live to get them validated, because you know they are the creators. After some enhancements and changes (Users first!) we took 1 week to make those changes and finally released the tool to the suppliers.
- As of now 34,000 products are uploaded using this tool!
- Products uploaded using this tool get 2x orders than regular ones.
- Out of all orders 0.5% of order count products are getting uploaded from this tool. Which means more money to suppliers.
- 10% of suppliers are actually using the tool. 2% of all the suppliers are enrolling products to the system. 0.5% of total suppliers are generating revenue. (I gave percentage because absolute numbers are high)
That is some happy ending. But I have more for you.
There is part 2 for this journey. There’s a #WKKB (Why Katappa Killed Bahubali) twist to keep you excited.
We built our product which serves for 30 million recommendations.
Now, the product team wants to release it for 300 million.
Here comes the SS Rajamouli stamp with grand Bahubali 1 climax BGM.
And trailer for part 2? We pull it off.
Product team has already started thinking about part 3. Here's a hint: the number ends in billions 📈
If you would like to work with me on such awesome projects, why not check out our careers page for openings?