Inspiration

Eating well around the UWaterloo campus is surprisingly hard. You have to balance distance, price, nutrition, and whatever food happens to be available that day, as residence cafeterias have rotating menus. We wanted one place to answer a simple question: “What should I eat right now?”

What it does

WATsForLunch recommends available meals based on a student's building, travel time, dietary restrictions, and allergies. It combines menu data with walking routes to surface a short list of options that accurately fits the user's needs.

How we built it

  • Built as a cross-platform Expo app that runs on Android, iOS, and web
  • Structured with a clear app -> services -> domain/data architecture
  • Used Google Routes to calculate travel times from campus buildings to restaurants
  • Added menu filtering for dietary restrictions, allergens, health preferences, and daily availability
  • Used an LLM to construct complete meal combinations from eligible cafeteria menu items -Added a lightweight backend to securely handle OpenAI API requests rather than exposing the API key in the client

Challenges we ran into

  • Modelling rotating cafeteria menus while keeping recommendations tied to today's availability
  • Combining menu eligibility, restaurant diversity, and travel-time limits into one recommendation

Accomplishments that we're proud of

  • Built a working meal discovery experience instead of just a static restaurant directory, delivering the experience across three platforms using Expo
  • Added cafeteria meal composition so users can see complete meal suggestions, not only individual menu items
  • Overcame the issue of lacking online data on menu options across campus
  • Successfully integrated a backend server with OpenAI's API to generate meal combinations from real cafeteria inventory

What we learned

  • Separating the UI, services, domain logic, and data made it easier to evolve the recommendation flow
  • Combining deterministic filtering with LLM-based meal composition lets each approach handle what it does best

What's next for WATsForLunch

  • Improve ranking with price, nutrition, personal history, and feedback from users
  • Expand menu and restaurant coverage, then add deterministic tests for filtering and recommendations
  • Add deeper AI integration to support natural-language input and create more personalized output

Built With

Share this project:

Updates

Submission history