Inspiration

Finding the right restaurant shouldn't be a medical minefield. Millions of people with allergies, dietary restrictions, or specific food preferences spend hours scrolling through reviews only to discover a restaurant can't accommodate them. We imagined a smarter assistant—one that actually listens to your dietary story and matches you with restaurants that fit, without the guesswork or risk.

What it does

DietMate67 is your AI restaurant concierge. Simply tell the chatbot what you're craving and any dietary constraints ("I'm allergic to shellfish, vegan, and want Thai food in downtown"), and it:

  • Parses your preferences naturally through conversation with Claude AI
  • Searches real restaurants using Google Places to find nearby options
  • Scores matches intelligently based on allergen safety and dietary compatibility
  • Presents results with ratings, reviews, estimated safety levels, and recommended menu items
  • Never compromises on allergen safety — allergen checks are deterministic, never delegated to the LLM

How we built it

Frontend: React 18 + TypeScript, Vite build tool, and Axios for API calls. The UI handles real-time chat streaming and gracefully displays restaurant results with null-safety guards for all numeric data.

Backend: FastAPI (Python) orchestrates two critical APIs:

  • Claude (Anthropic) for conversational preference extraction and menu analysis
  • Google Places Text Search for restaurant discovery in real-time

Architecture: Client sends natural language input → Backend extracts structured preferences → Google Places search → LLM scores compatibility → Frontend renders results with allergen risk indicators.

Challenges we ran into

  1. The Null Pointer Crisis — Google Places returns incomplete data. Restaurant ratings, prices, and distances can be null. Calling .toFixed() on null crashed React entirely. Solution: Defensive null checks on every numeric field with fallback values ("N/A", 0, etc.).
  2. Vite React Plugin Incompatibility — @vitejs/plugin-react v4.7.0 wasn't compatible with Vite 8.x, throwing JSX configuration errors. Solution: Upgraded to v6.0.2.
  3. LLM Safety Boundaries — Initially considered using Claude to determine allergen safety. Problem: Too risky. Solution: Built deterministic allergen checking instead, keeping the LLM only for preference parsing and menu recommendations.
  4. Location Precision — Google Places Text Search includes location in the query string but doesn't strictly enforce geographic radius. Results could include restaurants from nearby cities. Still an area for improvement.

Accomplishments that we're proud of

  • Zero allergen safety delegated to AI — Allergen decisions are 100% rule-based, making the system medically defensible
  • Crash-free UI — All 10+ edge cases (null ratings, missing review counts, undefined prices) handled gracefully
  • Real API integration — Switched from mock data to live Google Places and Claude APIs, proving real-world scalability
  • Conversational UX — Users describe complex preferences (5+ dimensions) in one natural sentence instead of filling out forms
  • Production-ready architecture — Clean separation of concerns, proper error handling, CORS middleware, and async I/O throughout

What we learned

  • Defensive coding is non-negotiable when consuming external APIs—assume data is incomplete AI boundaries are features, not limitations—keeping LLMs out of safety-critical decisions builds trust and compliance
  • Conversational interfaces scale complexity better than forms—users are willing to engage more naturally
  • Mock data hides real problems—switching to live APIs immediately surfaced edge cases that need handling
  • Type safety matters—TypeScript caught null-reference bugs before they reached production

What's next for DietMate67

  1. Geographic precision — Add lat/lng parameters to Google Places queries with proper radius filtering
  2. Menu integration — Partner with restaurant APIs (Yelp, Toast) to fetch actual menu items for real allergen matching
  3. User accounts — Save dietary profiles so repeat users don't re-enter preferences
  4. Dietary community scores — Crowdsourced allergen safety ratings from users with the same restrictions
  5. Mobile app — Expand beyond web with native iOS/Android apps for in-restaurant ordering Restaurant onboarding — Let restaurants directly verify their allergen protocols, building trust with users
  6. Multi-location search — Plan restaurant-hopping itineraries based on dietary needs across cities Integration with delivery services — Check DietMate67 match scores directly in DoorDash, Uber Eats, etc.

Built With

Share this project:

Updates