• My Data Dojo
  • Posts
  • How Zomato Engineers Personalized Food Discovery at Scale

How Zomato Engineers Personalized Food Discovery at Scale

Feeding Cravings with Code

Table of Contents

When you're hungry and scroll through Zomato's home screen, the restaurants you see aren't random. They’re the result of years of engineering design and data science optimization. Behind each swipe and click lies a battle-tested recommendation system optimized to solve a very real problem: helping millions of users quickly find what they want to eat.

This blog dives into how Zomato's tech stack and data science engine turn food discovery into a scalable, profitable, and delightful experience.

The Business Problem: Ordering Should Be Instant

Goal: Get users to convert — faster and more often.

When Zomato realized that users were browsing too long without ordering, they framed a core hypothesis: the quicker we can help a user discover what they love, the higher our conversions, repeat usage, and GMV.

This isn't just a UI issue — it's a data science challenge. Preferences vary by cuisine, mood, location, time of day, and peer influence. What's popular for breakfast in Bangalore is irrelevant for dinner in Delhi.

So how do you make each experience feel like a personal food concierge?

A Multi-Layered Solution

Zomato engineers architected a multi-objective recommendation system, optimizing for:

  • Relevance (will the user like it?)

  • Conversion (will the user order it?)

  • Revenue (is this a high-value order?)

Let’s explore how they pulled it off.

1. Graph-Based Collaborative Filtering

Early models relied on graph embeddings of a bipartite user-restaurant interaction graph. Techniques like GraphSAGE were trialed but scaled poorly. Eventually, Zomato adopted:

  • Cleora for fast graph sketching

  • EMDE to compress user-restaurant similarity into dense representations

These embeddings fuel the first layer of personalization: recommending restaurants similar to what similar users ordered.

Impact

  1. Boosted recall in top-K recommendation by double digits.

  2. Enabled cold-start user onboarding.

2. Content-Aware Ranking: Menu Mining

Zomato didn't stop at collaborative filtering. They turned menus into structured data using:

  • AWS Textract + NLP models to extract dish names and categories

  • Custom classifiers (including finetuned-BERT & Sagemaker) to identify cuisine and special items

This allowed Zomato to surface restaurants not just based on behavior, but also dish-level intent (e.g. "Chicken Shumai near me").

Impact: Enabled dish-level search and improved CTR in search funnels.

3. Contextual + Real-Time Personalization

What works at 11AM won’t work at 11PM. Zomato injected real-time features using:

  • Kafka + Flink for session data streaming

  • Redis Feature Store for real-time access

  • Context vectors like time-of-day, location, and user mood

A contextual Multi-Armed Bandit model was deployed to optimize not just click likelihood but Order-Through-Rate (OTR) and Gross Merchandise Value (GMV).

Impact: Improved GMV/session by ₹3 and AOV by ₹6 within weeks.

4. Supervised Learning-to-Rank Models

The final reranking stage is handled by a LambdaMART model, trained with pairwise loss:

  • Inputs: Collaborative + content + context features

  • Labels: Real user click/order logs

  • Metric: Accuracy@K, MRR

Deployed behind a Go-based ML Gateway, this model determines the final sort order users see.

Impact: +14% gain in relevance metrics vs. baseline rankers

Infrastructure: Fast, Reliable, Scalable

Zomato’s ML platform includes:

  • MLflow for experiment tracking

  • Kubernetes + SageMaker for deployment

  • Airflow for orchestration

  • Redis + DynamoDB for hybrid feature storage

Latency budgets are tight: all recommendations must be computed within ~100ms, at a peak of 100K+ RPS.

Impact: Seamless experience on app, even during peak load (e.g. NYE)

Closing the Loop: Metrics-Driven Deployment

Each model is evaluated on:

  • Offline: MRR, Accuracy@K, NDCG

  • Online: CTR, OTR, GMV/order

Only if a model beats baselines on both fronts does it see production traffic — usually through phased rollouts and A/B testing.

Impact: Shift in user behavior — more orders now start from personalized feed than search.

Final Thoughts

Zomato’s recommendation system isn’t just about suggesting good food. It’s about solving a deep business problem — making food discovery effortless, fast, and relevant, at scale.

And it works. Every byte of data, every millisecond of latency, every ranking tweak — it all leads to one thing: users saying, “This is exactly what I wanted.”

As engineers, that’s the most delicious result we can ask for.

Curious to dive deeper? Let’s decode the models, metrics, and trade-offs behind other real-time personalization engines next.

Follow for more tech deep dives that taste like success.