Inspiration

We are Muslim students at UC Berkeley who have noticed the dining hall websites lack functional support for students with dietary restrictions. It is difficult for students who want to eat a halal, vegetarian, or vegan diet to filter the dining hall menus for options they can eat. We decided to make a dynamic website that displays different menus for those with different dietary restrictions.

What it does

BearGrub accesses the UC Berkeley dining halls' websites and stores the ingredients of each meal item. It then reviews each meal and determines which are vegan, vegetarian, or halal. The website then presents three separate menus, one for each dietary restriction that comes with the food items available under that restriction.

How we built it

We built the website using Next.js and used Flask to connect it to our backend Python script. Our Python script accesses the university's .xml dining hall menu files, sorts items based on labels built-in to the .xml file (such as vegan), and runs the ingredients of the remaining items through a GPT model to determine if they are halal.

Challenges we ran into

As beginner hackers, this was the first full-stack project we had worked on. We repeatedly ran into issues when connecting the various pieces of our projects, especially with Flask, but eventually resolved them. Additionally, we had no experience using React.js, so developing the BearGrub website was a challenging learning experience.

Accomplishments that we're proud of

We take pride in our website's ability to provide an easy, one-stop shop for individuals with dietary restrictions since our UI makes it very simple for someone to identify all possible meals they can eat in each dining hall. We are also proud of our integration of AI into the backend of our website and the prompt engineering applied to make it work consistently, running seamlessly and ensuring accurate categorization of meal items.

What we learned

The most valuable skill our team gained from this process is the development and management of a full stack. Understanding the connections between the backend, databases, and front end of our website taught us valuable skills applicable to many future projects. Additionally, we learned to integrate LLM API into our projects.

What's next for BearGrub (Inclusive Berkeley Dining)

The next steps are to deploy BearGrub to a public server and integrate a chatbot that can be given queries about the Cal Dining menus and the data collected through our backend processes.

Built With

Share this project:

Updates