Inspiration
According to the CDC, "in 2015–2018, 17.1% of U.S. adults aged 20 and over were on a special diet on a given day." What's more, an estimated 33 million Americans have food allergies (FoodAllergy.org). As people with dietary restrictions ourselves, we understand the anxiety and uncertainty that comes with dining out. One team member's severe nut allergy and another's vegetarian diet showed us firsthand how difficult it can be to trust menu items, and how difficult it can be to query waitstaff about the components of each menu item.
In order to ascertain whether a particular restaurant or dish works with their diet, people with dietary restrictions often resort to word-of-mouth, online reviews, and menu postings. As a result, making food decisions can take a disproportionate amount of time and effort.
Enter SafePlates. Our web app aggregates all of this data as a crowd-sourcing platform for allergen and dietary restriction-friendliness testimonials. Using AI agents to understand and analyze natural language reviews for allergen tagging, as well as to supply deeper semantic knowledge of traditional preparation methods for a given dish, we present this data to users via an intuitive UI. We hope that by aiding users in their decision-making, users will feel more confident eating out with their loved ones, treating themselves to delicious entrees, and trying new foods.
What it does
SafePlates empowers diners with dietary restrictions by:
- Creating a community-driven platform where users can share their experiences
- Crowdsourcing real experiences from users about specific dishes
- Analyzing menu items for allergens and dietary restrictions using image recognition
- Integrating with Google Maps data to provide comprehensive restaurant information
- Helping users make informed decisions about where and what to eat
How we built it
We created SafePlates using:
- Frontend: React with Material-UI and Tailwind-CSS for a clean, accessible interface
- Backend: FastAPI for efficient API endpoints, MongoDB Atlas for hosting of the database
- Database: MongoDB for flexible document storage
- External APIs: Google Maps for restaurant data, AWS S3 for image storage, OpenAI for semantic understanding
- Deployment: Local hosting in development with Vite (frontend), uvnicorn (backend). Production hosted on AWS EC2 via Terraform.
Challenges we ran into
Our main challenges included
- Designing a MongoDB schema that balances flexibility with structure
- Integrating multiple APIs (Google Maps, AWS S3, OpenAI) cohesively
- Integrating PropelAuth with our MongoDB Database, since we had other user information to keep track of in addition to authentication data
- LLM outputs are not deterministic, and we had a difficult time engineering one of our inference prompts to achieve our dietary restriction classification goal
Accomplishments that we're proud of
For half of our team, competing in and completing this hackathon was a new experience. This meant that for them, it was a breakneck but effective introduction to the usual Git conflicts, development environment complications, and 24-hour time crunch that hackathons entail. Over the course of our project, from ideation to design, implementation, integration, and finally, deployment, we encountered many technical challenges, especially with the new technologies and tools we sought out. To us, the learning process was just as valuable as the final product. Despite being inundated by schoolwork at this point of the semester, we’re proud of not only finding the time to participate in Technica, but also completing a project that has real-world impact and that we all have a personal stake in.
What we learned
The team leveraged each team member’s strengths, allowing everyone the chance to learn and engage with new technologies such as MongoDB, FastAPI, Swagger UI, Amazon S3, OpenAI API, Terraform, React, and more. Since at least two team members worked in close collaboration with each technology in our stack, we were also able to learn best practices for development from each other.
What's next for SafePlates
Despite being able to query and retrieve data from Google Reviews via the Google Maps API, the attached photos were not well-labeled by type. As a result, we were not able to identify an efficient way to extract menu items for a given restaurant aside from manually crowdsourced input. Eventually, we hope to establish a data pipeline for retrieving menu information for most, if not all, restaurants.
Built With
- amazon-web-services
- fastapi
- git
- github
- google-maps
- material-ui
- mongodb
- mongodb-atlas
- openai
- react
- swagger
- vite

Log in or sign up for Devpost to join the conversation.