Data Science
MGNREGA Employment Analytics: ETL, Data Warehouse and Dashboard
A data-quality-gated pipeline from NREGA progress reports to a decision-ready warehouse and dashboard
- Python
- pandas
- MySQL
- +4
A two-stage learning-to-rank engine over real Bengaluru restaurant data, judged by NDCG — not by vibes
Mapped to your syllabusJNTUH R22 · Project Stage-II incl. Seminar · IV-2Restaurant Ranking and Recommendation Engine is an advanced machine-learning project that rebuilds the core of food-delivery search: given a user's area, cuisine craving and budget, return restaurants ranked by how well they match — and prove, with an offline evaluation protocol, that the ranking is genuinely better than the obvious baselines.
Most search UIs sort by a single number (rating or vote count), which systematically buries new and niche restaurants and rewards the already-famous. This project treats search as a learning-to-rank problem on a real dataset: the public Zomato Bengaluru restaurants dataset (51,717 restaurants, 17 attributes — ratings, votes, cuisines, cost for two, locality, online-order flags). A two-stage pipeline first generates candidates (hard filters plus content similarity), then scores them with a gradient-boosted ranker trained on engineered features: Bayesian-smoothed rating, vote credibility, cuisine and locality match, cost fit, and service flags. A hybrid content-based recommender (“more like this”) sits alongside, using TF-IDF vectors over cuisine and dish text.
The project's spine is its offline evaluation protocol: graded relevance labels are constructed per query context, the ranker is compared against rating-rank and popularity-rank baselines using Precision@10, NDCG@10, MAP and MRR, and a leave-one-locality-out split proves the model generalises rather than memorising famous neighbourhoods. The stack stays inside the JNTUH R22 toolset — Python, scikit-learn (ML lab, CS604PC), MySQL (CS407PC) and a Django demo app (CS409PC) — with the evaluation results also reported in Power BI (CS308PC). Four members own four modules: data and features, models, evaluation, and the demo application.
Syllabus alignment
Food-delivery search in India is a ranking problem, but the rankings users actually get are one-dimensional. Sorting by rating ignores query intent and vote credibility; sorting by popularity entrenches already-famous restaurants and makes new or niche ones undiscoverable. Neither ordering can answer the user's real question — “which of these places best matches my cuisine, budget and area right now?” — and neither comes with evidence that it is better.
There is a need for a query-aware ranking engine built on real Indian restaurant data, which learns a scoring function over query-item features, offers content-based “more like this” recommendations, and — critically — is judged by a documented offline evaluation protocol with rank-aware metrics (Precision@10, NDCG@10, MAP, MRR) against honest baselines, including a generalisation test on unseen localities, so that every claim of improvement is a number in a table rather than a feeling.
This project designs, builds and rigorously evaluates a restaurant ranking and recommendation engine for food-delivery search, using the public Zomato Bengaluru dataset of 51,717 restaurants. A two-stage architecture — candidate generation followed by a gradient-boosted learning-to-rank scorer — returns query-aware rankings for searches like “biryani under ₹600 in Indiranagar”. A hybrid content-based recommender handles the “more like this” path. The contribution the panel will be shown is the evaluation: graded relevance labels, four retrieval metrics, three baselines, and a leave-one-locality-out protocol that demonstrates the learned ranker outperforms rating- and popularity-only ordering on held-out localities.
On food-delivery platforms, the search result list is the marketplace: merchants outside the first screen effectively do not exist. Yet the default ordering — raw rating or raw vote count — has well-known failure modes: a 4.5-star restaurant with 40 votes loses to a 4.4-star with 40,000 votes even when the query screams “quiet, new, affordable”. Learning to rank treats ordering as a supervised problem: learn a scoring function from query-item features that places the most contextually relevant items first, and measure success with rank-aware metrics rather than accuracy.
4.1/5 rate formats, NEW/- ratings, comma-grouped costs, list-valued cuisines) into a MySQL catalogue with a derived feature store — Bayesian-smoothed rating, TF-IDF cuisine/dish vectors, locality statistics.In scope
Out of scope (v1)
The project follows CRISP-DM adapted to an academic two-stage scheme, wrapped in an incremental build: every phase ends with something runnable, and the evaluation harness exists from week 9 onward so the model is never judged by vibes.
| Phase | Weeks | Activities | Deliverable |
|---|---|---|---|
| Stage-I carry-over | 1–2 | Literature study (learning-to-rank, recommender evaluation); dataset audit; finalise objectives | Objectives + data audit note |
| Data understanding | 3–4 | Profile all 17 columns; cleaning rules for rates, costs, NEW/-, cuisine lists | Cleaned MySQL catalogue |
| Feature store | 5–6 | Bayesian rating, TF-IDF vectors, locality priors, budget-fit features | Feature tables + tests |
| Models | 7–9 | Candidate generator; content recommender; gradient-boosted ranker v1; baselines | Runnable ranking service |
| Evaluation | 10–11 | Relevance labels; P@10/NDCG@10/MAP/MRR harness; k-fold and leave-one-locality-out runs | Metric tables vs baselines |
| Demo app | 12–13 | Django search UI, explanation chips, admin evaluation page, Power BI report | Demo build |
| Hardening | 14 | Golden-query regression tests; pytest suite; profiling | Test report |
| Stage-II close | 15–16 | Final report, seminar slides, dry-run viva per member | Submission + seminar |
Testing approach: unit tests for every cleaning rule and metric implementation (metrics verified against a hand-computed example); golden-query regression tests that pin the top-5 results for ten saved queries and fail the build if a model change silently reshuffles them; evaluation runs are scripted and versioned so the report's tables regenerate exactly.
The system is a classic two-stage retrieval architecture backed by a small catalogue database.
flowchart TD
U["User query<br/>locality · cuisine · budget"] --> CG["Stage 1: candidate generation<br/>filters + content similarity (top ~100)"]
C[("MySQL catalogue & feature store<br/>51,717 restaurants")] --> CG
C --> FS["Feature vectors<br/>Bayesian rating · TF-IDF · cost fit"]
CG --> R["Stage 2: learning-to-rank<br/>gradient-boosted scorer"]
FS --> R
R --> X["Explainer<br/>top contributing features"]
X --> O["Ranked results<br/>Django UI"]
B["Baselines<br/>rating · popularity · Bayesian"] -.-> EV
R -.-> EV["Offline evaluation harness<br/>P@10 · NDCG@10 · MAP · MRR"]
EV --> PBI["Metric tables & Power BI report"]erDiagram
RESTAURANT ||--o{ RESTAURANT_CUISINE : "has"
CUISINE ||--o{ RESTAURANT_CUISINE : "tags"
LOCALITY ||--o{ RESTAURANT : "contains"
QUERY_LOG ||--o{ EVAL_RESULT : "is measured by"
RESTAURANT {
int id PK
string name
int locality_id FK
decimal rating
int votes
decimal bays_rating
int cost_for_two
bool online_order
}
LOCALITY {
int id PK
string name
int restaurant_count
}
CUISINE {
int id PK
string name
}
QUERY_LOG {
int id PK
int locality_id FK
string cuisines
int budget
}
EVAL_RESULT {
int id PK
int query_id FK
string model_name
decimal ndcg_at_10
decimal precision_at_10
}The two-stage split is the point of the architecture: Stage 1 keeps latency and label construction tractable, and Stage 2 sees only plausible candidates, so the learned scorer spends its capacity on ordering, not filtering.
Module 01
Owns the raw-to-usable journey: parsing 4.1/5-style rates, NEW/- values and comma-grouped costs; exploding list-valued cuisine and dish columns; designing the MySQL catalogue and locality/cuisine tables; and computing the ranking features — Bayesian-smoothed rating (shrinking low-vote restaurants toward the prior), TF-IDF vectors over cuisines and liked dishes, locality priors and budget-fit deltas. Every rule ships with a pytest unit test.
Module 02
Owns the models: the Stage-1 candidate generator (hard filters plus TF-IDF content similarity), the Stage-2 gradient-boosted scorer trained on query-item features, and the hybrid item-to-item content recommender. Also implements the three baselines (rating rank, popularity rank, Bayesian rank) so the learned model always has something honest to beat, and packages model training into a single reproducible command with a saved model artefact.
Module 03
Owns the project's spine: constructing graded relevance labels per query context (rating strength × vote credibility × budget fit), implementing Precision@10, NDCG@10, MAP and MRR with hand-verified unit tests, running k-fold cross-validation over query groups, executing the leave-one-locality-out generalisation study, and producing the final metric tables and Power BI report that the report and seminar present as evidence.
Module 04
Owns the Django app: the search form (locality, cuisine, budget), rendering the ranked list with per-item explanation chips generated from feature contributions, the “more like this” recommendation panel, and an admin page that shows the latest evaluation metrics. Also owns golden-query regression tests that pin the top-5 results for ten saved queries so model changes that silently degrade the demo are caught in CI.
Slide 1
Restaurant Ranking & Recommendation Engine
Slide 2
The Problem with One-Number Search
Slide 3
Problem Statement & Objectives
Slide 4
The Dataset
Slide 5
Architecture: Two-Stage Retrieval
Slide 6
Feature Engineering
Slide 7
Models & Baselines
Slide 8
Offline Evaluation Protocol
Slide 9
Results
Slide 10
Demo
Slide 11
Testing
Slide 12
Limitations
Slide 13
Conclusion & Future Scope
Bullets, speaker notes and the .pptx · ₹2,000
Read each answer, close it, and say it in your own words. Your viva will ask. Now you'll know.
Learning to rank trains a model whose job is to order items for a query, not to predict a single label per item. Regression predicts a number like a rating, but the quality of an ordering depends on the relative positions of many items together, which is why we evaluate with rank-aware metrics such as NDCG instead of error on individual predictions. Our scorer is a regression model internally, but it is trained, tuned and judged on the ordering it produces for each query context.
Normalized Discounted Cumulative Gain scores a ranked list by summing each item's relevance graded by its position — highly relevant items contribute more, and later positions are logarithmically discounted — then normalises by the score of the ideal ordering so results lie between 0 and 1. We chose it because relevance here is graded, not binary, and because the top of the list matters most in food-delivery search; Precision@10 alone would throw away that grading.
A restaurant with one vote and a 5.0 rating is not better than one with 3,000 votes at 4.4. Bayesian smoothing shrinks each restaurant's rating toward the global prior in proportion to how few votes it has: effective rating = (votes × rating + m × prior) / (votes + m), where m controls shrinkage. As a feature this lets the ranker trust ratings strongly for well-reviewed places and fall back on other signals for thinly-reviewed ones.
+13 more questions, with answers
Unlocks with the project · ₹2,000
Unlock for ₹2,000What to change before it goes anywhere near a submission. Skipping it is how the demo fails live.
Unlocks with the project · ₹2,000
Unlock for ₹2,000How to study it, adapt it and walk your examiner through it, step by step.
Unlocks with the project · ₹2,000
Unlock for ₹2,000OnlyProjects. (2026). Restaurant Ranking and Recommendation Engine for Food Delivery Search: B.Tech / B.E. Data Science project bundle [Educational resource]. https://onlyprojects.online/projects/btech-ds-restaurant-ranking-recommendation-engine
Keep browsing
Same degree, same syllabus slot, different idea. Pick the one your guide will actually approve.
Data Science
A data-quality-gated pipeline from NREGA progress reports to a decision-ready warehouse and dashboard
Data Science
From NPCI's monthly tables to growth curves, seasonality and a trend forecast — one clean dataset, done properly
Cyber Security
Flows, top talkers and scan indicators for the lab's own network — headers only, no blocking, full history
Mechanical Engineering
A human-powered spiked-roller dehusker for small coconut growers around Pollachi — designed, fabricated and tested for ₹ under 20,000
Aerospace / Aeronautical
Build a subsonic test tunnel on a student budget, then trace lift and drag on a 3D-printed NACA 0012 against theory
Agricultural Engineering
Irrigates vegetable beds by soil-moisture thresholds instead of habit, and proves every litre with a flow meter