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/dataarchitecture - 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
- codex
- expo.dev
- google-maps
- openai
Log in or sign up for Devpost to join the conversation.