Inspiration
Most meal planning apps are built around the idea that you can fully control your diet—offering recipes, grocery lists, or perfectly tailored meal plans. But as a college student on a mandatory meal plan, that’s not my reality.
At Princeton, students and athletes still need to properly fuel their minds and bodies, but we’re often stuck choosing from dining hall options that are inconsistent in quality and hard to compare. I often find myself staring at menus, unsure where to go or what to eat. And even once I arrive at a dining hall, I’m basically guessing what will actually help me hit my protein, calorie, and nutrition goals.
Then, TigerBite was born.
What it does
TigerBite scrapes the Princeton Dining menu site daily for every meal (breakfast, lunch, and dinner) across all residential colleges, collecting up-to-date menu items and nutrition information.
It then runs an algorithm that evaluates each food item based on nutritional value—especially protein and calories—and ranks the best possible choices. From there, it can assemble suggested “meals” from available items and recommend not just what to eat, but where to eat it.
Users can input their personal preferences and constraints, including:
dietary restrictions and allergies likes and dislikes fitness goals (high protein, calorie targets, etc.)
The app adjusts recommendations dynamically based on these inputs. Even without any user-defined goals, TigerBite still provides smart default recommendations along with clear nutritional justification so users understand why something is being suggested.
Users can also create a profile to save preferences, so they don’t have to re-enter them every time.
How we built it
Most of the implementation was done using Claude Code, with me heavily involved in prompting, structuring the system, and building out supporting scripts.
A big focus was making sure the scraper, data pipeline, and recommendation logic all worked together reliably despite the constantly changing dining hall menus.
Challenges we ran into
The hardest challenge I'm facing at the moment is working with the login menu, because we are having some trouble with consistent logic with logging in, creating accounts, and saving, and it is likely an issue with the SQL and storage.py logic, but I have run out of Claude tokens, but am confident with more time it could be fixed.
It was rough dealing with messy and inconsistent menu data from the Princeton Dining site. Items aren’t always structured cleanly, and nutrition information isn’t uniformly formatted across all dining halls.
Another challenge was figuring out how to turn raw menu data into something “decision-useful.” It’s one thing to scrape food items—it’s another to meaningfully compare them and build realistic meal suggestions from them.
We also had to balance simplicity with personalization: making the algorithm smart enough to be useful, but not overcomplicated for a first-time user. The algorithm was definitely a challenge for both me and Claude.
Accomplishments that we're proud of
We’re proud that we built a full end-to-end system that actually turns real dining hall data into actionable recommendations.
It’s not just a static menu viewer—it actively helps students decide what and where to eat based on their goals, which is something that doesn’t really exist in current campus tools.
We also managed to get a working pipeline from scraping → processing → recommendation in a relatively short time frame, which made the idea feel very real very quickly.
What we learned
We learned a lot about working with imperfect real-world data, especially when it comes from websites that aren’t designed for developers.
We also got a better understanding of how hard “simple” recommendation systems actually are once you introduce real constraints like preferences, nutrition goals, and incomplete data.
On the tooling side, we learned how powerful it is to use AI-assisted coding workflows (like Claude Code) effectively when paired with good structure and human direction.
What's next for TigerBite
Next, we want to improve the recommendation engine to be more intelligent about full meal composition—not just ranking individual items, but building truly optimized plates. We want to include more than just calories and protein, but perhaps other macro goals that can be customized.
We also want to expand personalization, including fitness-focused presets (cutting, bulking, maintenance) and smarter learning from user behavior over time.
Long term, we’d love to turn TigerBite into a campus-wide app that integrates more deeply with dining services and possibly expands to other universities with similar meal plan systems.
Built With
- beautiful-soup
- claude
- cors
- fastapi
- html
- pydantic
- python
- shell
- sqlite
- threading
Log in or sign up for Devpost to join the conversation.