Meesho’s Rating and Review System: Capturing user sentiments and analysing in real-time to maintain platform hygiene
By: Himanshu Singla
Tags: Tech, Review, Growth, Customer Service, Meesho

Meesho’s dedicated review service is responsible for calculating the relevance score based on predefined datasets and sending back the appropriate ratings/reviews to the app. The API responses from the review service depend on which page the user is currently viewing. On the Meesho app, we display ratings and reviews on the following three pages:

Catalog Listing Page (CLP) — As the user scrolls through the list of available catalogs, the respective catalog ratings are fetched using the catalog id and highlighted. Product Listing Page (PLP) — Within a selected catalog, after scrolling through the list of products, the respective ratings and reviews are displayed. The reviews are arranged based on the relevance score. Product Description Page (PDP) — Similarly, once you click on any product, the ratings and reviews are displayed as the user scrolls down. However, on PDP, the reviews, images, and videos of the selected product are rearranged to the top, based on the relevance score.

Review service architecture

The in-house media service handles all the user uploaded review images and videos and stores them in an S3 bucket. The uploaded videos are transcoded using the video conversion job configured on the Lambda function. This makes sure that all the review videos are converted into the same file format so that it can be accessed by the review service. Meesho’s supply API enables users to create new reviews or edit an existing one, and the review service processes these updates via Kafka events.

After submitting, the reviews (both new & edited) are indexed in Elasticsearch clusters with the corresponding product metadata.

Using the product id filters, the review service also helps in differentiating between catalog images and real review images uploaded by users. One of the essential review features is to help entrepreneurs in identifying real review images/videos from catalog stock images.

Similar to the review arrangement, the real images & videos are collectively arranged and displayed based on the review relevance score, as explained in the next section.

How is the Relevance Score Calculated?

Each review for a catalog is assigned a relevance score between 1 and 100 based on the following entities:

Rating Score — Score calculated from the product rating provided by the user.

Rating Difference = absolute value (product rating given by user — median of all ratings for that product)

The resulting value is assigned a score based on a predetermined dataset. Text Score — To calculate the quality of the review string entered by analysing characters and numbers entered against a threshold value. Image Score — Quality of uploaded images are calculated based on its approval rate. Helpful Score — Users browsing through catalogs have an easy option to mark helpful reviews on the app.

Helpful Score = Total number of helpful count on the review / Total number of helpful count for that product’s reviews Recency Score — To determine how recent was the review uploaded.

Time Difference = Present day — Review uploaded date

Recency Score = exponent of (-1 * Time Difference / 10)

The value 10 represents the predetermined days threshold.

Before calculating the final relevance score, each of the above scores is multiplied with respective predetermined weights. For instance, the recency score is multiplied against a recency weight of 30 (a static value) and so on.

Relevance Score = (Rating Score * Rating Weight) + (Text Score * Text Weight) + (Image Score * Image Weight) + (Helpful Score * Helpful Weight) + (Recency Score * Recency Weight)

Challenges Faced & Future Scope

Optimising Elasticsearch cluster for reads and to overcome challenges in scaling due to traffic surge. We’ve already identified this challenge during one of our Meesho sale events and devised a mechanism to fully utilize the Elasticsearch clusters. Read more about the solution here.

High ingestion rate — Having experienced peak transactions especially during Meesho price drop, we’re facing a high ingestion rate, especially via the review service. One of our future scopes is to optimise the service so that it can handle more incoming load.

Service Metrics

Requests processed per second during peak sale days

Being one of the busiest services in the Meesho ecosystem, the review service can withstand a load of up to ~ 13,000 TPS. Especially during peak business days like the Diwali Sale and Meesho Price Drop, the service can now smoothly handle a 4x load.

One of our company’s core values is to Make Meesho Entrepreneurs Successful. The ratings and review feature serves as an essential lever for entrepreneurs in providing transparency into the quality of products that they’re reselling to their customers. Hence, our engineers at Meesho are constantly looking for ways to fine-tune the ratings and review feature and a way for the service to handle 10x load in the upcoming months.

Himanshu Singla is an SDE — IV (Backend) — Tech at Meesho. He co-authored the article with Ashok Lingadurai.

Meesho’s GM & VP — Selection Growth, Harshit Madan, reveals the three cornerstones of scaling up you need to know

Senior Software Engineer Shubham Aggarwal explains how Meesho finetuned elastic search cluster to handle traffic surge

Want to join Himanshu Singla and the rest of the engineering team and work on advanced technological innovations at Meesho? Find out if we are hiring for your profile here.