Inspiration
“What should we eat?”
A simple question… but somehow it makes a whole group think like they’re solving advanced math. One person says “anything is fine” (but rejects everything), another has a 50k budget but wants a 5-star experience.
Meanwhile, current apps just show a long list of restaurants — the decision is still… entirely up to you.
So we thought: What if there was a system that actually understands you — from your budget to your taste — and makes the decision easier?
That’s how MealMatch was born — a “food companion” that never says “whatever you want.”
What it does
MealMatch helps users by allowing them to input:
budget taste description (free-form, e.g., “spicy, soup-based, under 70k”) number of people, dining time
The system will then:
analyze needs using AI extract dining preferences fetch restaurant data from Google Maps analyze reviews to identify popular dishes recommend the most suitable restaurant and specific dishes Key highlights: Understands natural language Recommends specific dishes, not just restaurants Provides explanations for recommendations (Explainable AI)
How we built it
We combined AI with a rule-based system to ensure both intelligence and reliability.
- Data sources
Using Google Maps API:
restaurant names ratings price levels reviews
- Dish extraction from reviews
We use:
keyword matching (fast fallback) optional AI to extract dish names from reviews
This allows the system to understand what a restaurant serves without needing an official menu.
- User input analysis
AI processes natural language and converts it into structured data:
taste (spicy, sweet, etc.) category (soup, dry dishes, etc.) budget context (dinner, group dining, etc.)
- Matching & Scoring engine
We match:
user needs dish tags
Then compute a compatibility score.
- Recommendation output
The system returns:
restaurant suitable dishes estimated price match percentage AI-generated explanation
Challenges we ran into
- No structured menu data
Google Maps does not provide menus, so we had to:
extract from reviews infer from unstructured data
- Understanding natural language
User inputs are often vague:
“something warm” “light but still filling”
We needed AI to convert these into structured data.
- Balancing AI and accuracy AI is powerful but hard to control Rule-based systems are stable but less flexible
Solution: a hybrid system
- Limited development time
We had to:
optimize scope (MVP) focus on core features instead of complex UI
Accomplishments that we're proud of
We successfully built a system that:
understands natural language input recommends real dishes from review data provides explainable recommendations
We effectively combined:
AI (NLP) real-world data (Google Maps) scoring system
Creating an experience similar to a personal food assistant
What we learned
AI is not always the perfect solution → it needs to be combined with traditional logic
Real-world data is often:
messy incomplete → requires smart processing
UX is extremely important Users prefer:
clear recommendations explanations simplicity
Scope limitation is critical when working under tight deadlines
What's next for MealMatch
In the future, we plan to develop:
- Personalization learn from eating history understand long-term preferences
- Location integration recommend nearby restaurants optimize travel time
- Conversational chatbot
Example:
“I feel tired today, what should I eat?”
- Advanced recommendation use embeddings / vector search deeper semantic understanding (beyond keywords)
- Real menu data crawl data or partner with restaurants
Built With
- axios
- express.js
- mongoose
- node.js
- openai
- react
- tailwind
- vite
Log in or sign up for Devpost to join the conversation.