At Washington University in St. Louis, choosing a meal plan often ends up being guesswork. Many students either overspend or lose unused meal points at the end of the semester.
We built WashU Meal Plan Optimizer to make this decision data-driven, using past spending and schedule patterns to recommend a plan that actually fits how a student lives. What it does
Inspiration
We repeatedly saw friends buy larger plans “just in case,” only to waste a significant portion of their points.
This project started from a simple question: What plan would minimize total cost given how someone actually eats?
WashU Meal Plan Optimizer predicts a student’s next-semester dining demand using two inputs: historical meal point transactions and expected on-campus time for the upcoming semester.
The app parses meal transaction history, classifies spending into behavior patterns like lunch, snacks, and dinner, and adjusts those patterns based on how the student’s future schedule differs from their past one. It then compares eligible WashU meal plans and recommends the cheapest practical option by considering expected spending, rollover rules, waste, shortfall, and plan restrictions.
The goal is not to maximize point usage. The goal is to minimize expected total cost while keeping daily dining realistic.
How we built it
We built the app with Next.js, React, TypeScript, Tailwind CSS, Papa Parse, and Recharts.
All analysis runs locally in the browser. We designed a deterministic pipeline that:
parses and cleans CSV transaction data filters for relevant historical semester records classifies transactions into meal behavior categories extracts weekly spending and schedule-related features predicts next-semester dining demand scores meal plans using cost, shortfall, and waste penalties We also added manual on-campus schedule inputs so the model can adapt predictions when a student expects a different routine next semester.
Challenges we ran into
One challenge was working with messy real-world transaction data. CSV formats are inconsistent, headers vary, and not every row is actually useful for modeling.
Another challenge was designing a recommendation engine that reflects real student decision-making. Covering 100% of predicted spending is not always the best financial choice, so we had to balance affordability with practicality instead of just recommending the largest plan.
We also had to think carefully about semester logic, rollover behavior, and how to make the model transparent enough that users can understand why a recommendation was made.
Accomplishments that we’re proud of
We’re proud that the project solves a real campus problem in a way that is practical and easy to understand.
We’re also proud that:
the app is fully local-first and privacy-friendly the recommendation logic is transparent rather than a black box it models behavioral categories instead of only using raw averages it focuses on cost optimization, which makes the recommendations more realistic the interface is simple enough to demo quickly while still showing meaningful analysis What we learned
We learned that for student tools, explainability matters almost as much as accuracy. Users want to know not only what the recommendation is, but why.
We also learned that small policy details like rollover, forfeiture, and housing restrictions can completely change what “best option” means. Building useful decision-support software requires understanding the rules around the decision, not just the data itself.
On the technical side, we learned a lot about building a local analysis pipeline in the browser and turning messy transactional data into a usable forecast.
What’s next for WashU Meal Plan Optimizer
Next, we want to make the app more robust and more personalized.
Our planned next steps include:
supporting more real-world transaction export formats adding confidence ranges for predicted spending improving campus location and merchant classification adding what-if controls for changing habits, like fewer snacks or more dinners supporting easier schedule import options updating the policy layer for future WashU meal plan changes Long term, we’d like this to become a practical budgeting and planning tool that students can actually use before every semester.
Built With
- eslint
- next.js
- papa-parse
- react
- recharts
- tailwind-css
- turbopack
- typescript
- vercel-ready-static-export
Log in or sign up for Devpost to join the conversation.