Katkat

Design a "Future Best-Sellers" Prediction and Recommendation System

IntuitSoftware Engineer · Technical Screen

Last updated

This question tests the ability to design an end-to-end machine learning system that predicts future best-sellers and serves real-time recommendations, balancing model accuracy, batch processing, and serving latency.

Problem Statement

Design a system for an e-commerce platform that identifies "future best-sellers" (products likely to gain high sales velocity in the next 7 days) and displays them to users via a personalized recommendation feed.

Functional Requirements

  1. Prediction: Identify products with rising trends before they hit peak sales volume.
  2. Recommendation: Surface these predicted best-sellers to relevant user segments on the homepage.
  3. Updating: The prediction pipeline should refresh daily, while the serving layer must provide low-latency recommendations (sub-100ms).

Non-Functional Requirements

  • The platform receives 1 million requests per day.
  • The product catalog contains 500,000 active SKUs.
  • Recommendations must be personalized based on user history and category affinity.

Expected Deliverables

  • High-level system architecture (Data ingestion, training pipeline, serving layer).
  • Data model design for storing item features and user-item interactions.
  • Strategy for handling the "cold start" problem for new items.
  • Trade-offs between batch inference vs. real-time scoring.

Hints

Hint 1

Consider decoupling the heavy prediction pipeline (batch) from the lightweight recommendation retrieval (online).

Hint 2

Think about how to represent product velocity trends using time-series data or windowed aggregations.

Hint 3

Discuss how to use collaborative filtering or content-based filtering to bridge the gap between predicted trends and user preferences.

Follow-up questions

  • How would you measure the success of this system, and what specific metrics would you track in A/B testing?
  • If the 'future best-seller' list becomes highly skewed toward popular items, how would you introduce diversity or serendipity into the recommendations?
  • How would your architecture change if you needed to perform inference in real-time based on a user's click session rather than daily batch updates?