Inspiration

As college students with diverse dietary needs, meeting our nutrition goals can be frustrating. Manually checking dining hall menus and logging each item is tedious, and studies show that self-tracking is often inaccurate. We wanted a smarter solution. Our project streamlines this process by web-scraping dining hall menus and using machine learning to suggest optimal meal combinations that align with individual nutrient goals and preferences. Now, students can plan meals and track nutrition effortlessly—saving time while making healthier choices.

What it does

Our project is a comprehensive meal planning and tracking system that helps users plan their daily nutrition based on their dietary preferences and restrictions. Users can input their specific requirements (such as being vegan, vegetarian, gluten-free, or halal) along with their target daily calorie and protein goals. The system then uses machine learning (specifically, cosine similarity) to recommend personalized meal plans for breakfast, lunch, and dinner that match these preferences. Each recommended meal comes with detailed nutritional information including calories, protein, carbohydrates, and fat content. With the newly added rating system, users can now rate meals on a scale of 1-10, and these ratings are stored in their profile for future reference. The system keeps track of their meal ratings over time, showing their favorite meals (highest rated) and maintaining a chronological history of all their meal ratings. This helps users identify patterns in their food preferences and helps the system make better recommendations over time.

How we built it

The website was built using React/TypeScript for the frontend user interface and Python/Flask for the backend server, with a database to store meal data and user ratings. The frontend sends HTTP requests to the backend when users input their dietary preferences or rate meals, and the backend processes these requests using machine learning (specifically cosine similarity) to recommend personalized meal plans. The system stores all meal information in a CSV file which is processed using pandas, while user ratings are stored in a database using SQLAlchemy for persistent data storage. The entire application is styled using Tailwind CSS and includes features for meal planning, rating tracking, and nutritional information display.

Challenges we ran into

One major challenge we faced was building a web scraper to extract nutritional information from dining hall websites. Not only was this our first time working with web scraping, but the data was also embedded in pop-up windows, making the HTML structure more complex and difficult to parse. Overcoming this required creative solutions, including experimenting with different scraping techniques and learning to navigate dynamic web content effectively.

Accomplishments that we're proud of

  • Implementing web-scraping after repeated failures
  • Using an Anthropic API key and integrating it with the chatbox for full meal-planning functionality
  • Utilizing a rating system for your personal meal preferences that are linked to your login account

What we learned

  • Web Scraping: Gained proficiency in extracting data from websites using libraries like BeautifulSoup and Selenium
  • Improved teamwork and communication skills by working collaboratively, sharing ideas, and integrating feedback effectively

What's next for Vora

  • Add support for various dining halls throughout the country
  • Introduce social features to allow users to share unique meal ideas
  • Launch image processing for students to obtain real-time nutrition data for their dining hall food
Share this project:

Updates

Submission history