Inspiration
Our inspiration for Nutribuddy stemmed from our collective struggles to maintain a balanced diet amidst the chaos of modern life. Going through the "food" category in Google Photos, we were wondering how many calories we have consumed. And that was the moment where we actually thought to create a solution that will actually answer this question. We wanted to create a solution that would make managing nutrition easier for everyone facing similar challenges.
What it does
Nutribuddy is a comprehensive tool designed to assist users in effectively managing their nutrition and diet. Its features include calorie tracking, personalized meal suggestions, and visualization of dietary calorie intake. Upon registration, users receive notifications about their Body Mass Index (BMI) and are provided with suggested daily calorie intake based on their height, weight, and activity level. Users can then customize their meal preferences, including favorite cuisines, dishes, ingredients, and allergies. These preferences are utilized to recommend dishes that align with the user's remaining calorie intake. By simply uploading photos of their meals to the app, users can effortlessly track their food intake. Additionally, users can monitor their progress through a visual dashboard.
How we built it
Our application is constructed using Streamlit for the frontend and FastAPI for the backend, complemented by a Postgres database. Initially, we delved into the Google Gemini API to accurately calculate the calorie content of food images. Through extensive experimentation with approximately 50 different dishes, we fine-tuned the prompts to yield the desired output precisely.
Subsequently, we established an Airflow pipeline to generate the vector database. Leveraging the Kaggle recipes dataset, we meticulously processed and stored the cleaned data in a Snowflake table. Furthermore, we generated embeddings for the recipe names and stored them in Pinecone.
To enhance user experience, we developed a Retrieval Augmented Generation Pipeline to identify the top 10 dishes resembling the user's preferences. These similar dishes, in conjunction with the user's preferences, served as context for Google Gemini to recommend dishes to the user effectively.
Utilizing all available user data, we crafted visualizations to illustrate the user's progress, highlighting days where meals were consumed correctly. This comprehensive approach ensures that users can track their nutrition journey effectively and make informed dietary choices.
Building Nutribuddy required the combined efforts of our dedicated team. We focused on creating a seamless user experience, with intuitive interfaces and efficient algorithms to process large amounts of user-generated data. Collaboration was key.
Challenges we ran into
One of the biggest challenges we faced was processing the vast amounts of data required to make Nutribuddy a powerful tool for our users. We had to develop efficient algorithms to handle the data while maintaining optimal performance. After hours of whiteboarding and design changes we incorporated Google Cloud Storage to effectively handle large data of user images and recipes.
Also, integrating the Airflow pipeline posed a notable challenge, but with proper guidance, we successfully processed the data. Ensuring images displayed correctly and effective time management emerged as additional complexities, demanding meticulous attention to detail and strategic allocation of resources. In facing these obstacles, we forged a strong bond as a team, leaning on one another for support and drawing guidance from mentors. Our collaborative efforts not only helped us overcome these challenges but also fostered a sense of camaraderie and a sense of achievement.
Balancing the demands of developing Nutribuddy with other commitments, such as academic finals, also presented significant challenges.
Accomplishments that we're proud of
Despite the challenges, we're proud to have successfully developed Nutribuddy. We are really proud of handling more than 10K lines of code! We built our code code into a working project, showcasing our adaptability and commitment to skill development and creativity. We went a step further and deployed the application on a Google Compute Instance making it publicly available. This collective experience marks a significant milestone in our growth as individuals and as a collaborative team.
What we learned
Through the process of building Nutribuddy, we learned valuable lessons about resilience, determination, and the importance of collaboration. We gained technical expertise in Streamlit, FastAPI and Airflow. We are well versed with Gemini and Google Cloud Platform now.
What's next for Nutribuddy
Moving forward, we're committed to continuously improving Nutribuddy and adding new features to enhance the user experience. We plan to incorporate neural networks to provide even more personalized recommendations and insights. Additionally, we aim to expand Nutribuddy to capture other nutritions as well, empowering even more individuals to live healthier, happier lives.
Built With
- airflow
- docker
- fastapi
- gcp
- gemini
- huggingface
- matplotlib
- pinecone
- plotly
- postgresql
- snowflake
- streamlit

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