Restaurant Recommendation Engine
Jun 2019
Photo by Satria Bagaskara on Pexels
Building a production recommendation system from scratch using Singular Value Decomposition that delivered accurate personalized suggestions from sparse user rating data.
Background and Industry Context
How do users find restaurants based on the ones they liked? Using SVD, we can give recommendations based on similar users, in a very powerful, but efficient way.
Our client needed a recommendation engine that could identify hidden patterns from sparse rating data (just a handful of restaurants). As the main developer, I built the core system: recommendation algorithm, backend API, and business logic, delivered in just 4 weeks.

Result
Unreasonably effective recommendations from minimal user data. The SVD-based system accurately predicted preferences from as few as 3-10 ratings, outperforming rule-based approaches while maintaining controllable serendipity for discovery.
Solution Architecture
Matrix Factorization with SVD
Implemented collaborative filtering using Singular Value Decomposition to decompose the sparse user-restaurant rating matrix into latent features. Direct NumPy matrix manipulation provided full control over factorization, enabling custom optimization unavailable in off-the-shelf libraries.
Serendipity and Business Logic
Pure accuracy optimization produces safe, boring recommendations. I introduced controlled randomness to suggest venues slightly outside predicted preferences, with tunable exploration factors balancing confidence versus discovery.
Additional features included:
- Cold-start handling via content-based fallbacks for new users and restaurants
- Rule-based filtering for cuisine, price, and dietary restrictions
- Geographic constraints respecting location preferences
- Real-time updates incorporating new ratings dynamically
Technologies Used
Python, NumPy, Pandas, Flask, OpenAPI
Need support for your AI project?
Let's work together!