Project Story

Inspiration

After a frustrating search for a romantic anniversary dinner — 20 tabs, zero perfect matches — I realised discovery hasn’t caught up with modern AI. Restaurant Finder was born to turn “I’m in the mood for…” into an instant, reliable answer. Inspired by the growing use of AI in personalized recommendations and my interest in machine learning, I wanted to create a tool that leverages modern technology to simplify this experience. The challenge of integrating real-world data with AI-driven search motivated me to build something impactful and user-friendly.

What it does

Restaurant Finder is an AI-powered web application that helps users discover restaurants based on their preferences, such as cuisine, ambiance, and ratings. Using vector search technology with MongoDB Atlas, it matches user queries (e.g., "romantic Italian restaurant") to a dataset of public restaurants. The app provides tailored recommendations, supports follow-up questions (e.g., address, price range, suitability for families), and offers a conversational interface powered by Google’s Gemini models. It’s designed to evolve with user needs, making dining decisions effortless.

How we built it

I built Restaurant Finder using a Flask backend, integrating MongoDB Atlas for vector search and Firestore for chat history. The process began with importing the whatscooking.restaurants dataset and re-embedding it with Google’s gemini-embedding-001 model to create 3072-dimensional vectors. I developed a custom API endpoint to handle user queries, generate embeddings, and fetch relevant candidates. The frontend uses a simple chat interface, while the AI handles natural language understanding and response generation. Extensive debugging and optimization ensured smooth performance.

Challenges we ran into

One major challenge was aligning the embedding model’s output with MongoDB’s vector search index, requiring multiple iterations to fix API response structures and attribute access errors. Handling follow-up questions initially failed due to lost context, which I resolved by implementing session-based candidate storage. Dataset limitations (e.g., lack of "romantic" metadata) also posed hurdles, pushing me to optimize queries and consider data augmentation. Time management was tight, but I prioritized core functionality.

Accomplishments that we're proud of

I’m proud of creating a fully functional AI chatbot that delivers personalized restaurant recommendations, a feat achieved within a tight timeline. Successfully integrating vector search with a 3072-dimensional embedding space and enabling follow-up queries (e.g., address, price) is a significant technical achievement. The project’s ability to run on Google Cloud and MongoDB Atlas while handling a 10,000+ document dataset showcases resourcefulness. Positive test results so far.

What we learned

This project taught me the intricacies of vector embeddings and their application in semantic search, deepening my understanding of AI and database integration. I learned to troubleshoot API response inconsistencies and optimize for cost and performance. Managing session context for conversational AI was a new skill, and I gained insight into dataset limitations, prompting me to explore data enrichment strategies. The experience also honed my problem-solving and time-management skills under pressure.

What's next for Restaurant Finder

Next, I plan to enhance Restaurant Finder improving recommendation accuracy. I’d like to implement a mobile app version for broader accessibility and explore batch processing to reduce API costs. Integrating real-time data from external APIs (e.g., Yelp) and adding a user feedback loop to refine suggestions are exciting future steps. Ultimately, I aim to deploy it as a public service, helping food lovers worldwide.

Built With

Share this project:

Updates

Submission history