Inspiration

At the heart of Palate lies a deep-seated appreciation for the connections forged over shared meals. As a team, we've experienced firsthand the magic of gathering around a table, whether it's for cherished family dinners or impromptu meetups with friends. These moments, woven into the fabric of our lives, inspired us to create Palate at Tree Hacks, where our shared passion for food and technology converged.

Throughout the weekend, fueled by Popeyes runs and dining hall escapades, we poured our energy into crafting Palate—a testament to the power of collaboration and shared vision. Yet, beyond the lines of code, Palate embodies a philosophy of mindful eating and thoughtful connection.

With Palate, we aim to elevate the dining experience by seamlessly integrating personal preferences and dietary restrictions. Gone are the days of cumbersome inquiries about allergies or dislikes; instead, Palate intuitively keeps track, allowing meals to be curated with care and consideration. By prioritizing the well-being and preferences of those we share meals with, we not only foster deeper connections but also create space for moments of genuine enjoyment and appreciation.

In a world filled with distractions, Palate serves as a reminder of the importance of mindful living, even in something as seemingly mundane as choosing what to eat. Through this project, we hope to inspire others to embrace the joy of shared meals, where every bite becomes an opportunity for connection and celebration.

What it does

Palate is a multifaceted platform designed to revolutionize your culinary experience. Here's a closer look at its key features:

  • Personalized Food Journal: Palate serves as your digital food diary, meticulously cataloging your favorite cuisines and dishes. But it goes beyond mere record-keeping, as it also takes into account your dietary restrictions and ingredient preferences. Whether you're avoiding certain foods due to allergies or simply dislike their taste, Palate ensures that your culinary journey is tailored to your unique preferences.
  • Smart Recipe Recommendations: Powered by a robust database, Palate leverages your stored information to offer personalized recipe suggestions. By analyzing your fridge inventory, liked ingredients, disliked ingredients, and dietary restrictions, Palate curates a selection of recipes perfectly suited to your tastes and dietary needs. Say goodbye to endless recipe searches and hello to a curated selection of culinary delights at your fingertips.
  • Dynamic Recipe Retrieval: Unlike static recipe databases, Palate dynamically retrieves recipes from the internet in real-time. This means you'll always have access to a diverse range of recipes, ensuring that your culinary repertoire stays fresh and exciting. Whether you're craving a classic comfort food or eager to experiment with a new culinary trend, Palate has you covered.
  • Interactive Chatbot: Palate takes your culinary experience to the next level with its interactive chatbot feature. Whether you're seeking recipe recommendations, ingredient substitutions, or cooking tips, the Palate chatbot is always ready to assist. But what sets Palate's chatbot apart is its ability to leverage both your chat history and database information to provide personalized assistance. By analyzing past conversations and stored data, the chatbot offers tailored suggestions and insights, ensuring that every interaction is relevant and helpful.
  • Social Event Planning: Palate isn't just about individual culinary exploration—it's also about fostering connections through shared experiences. With its event planning feature, you can create gatherings and invite your friends to join. But Palate doesn't stop there; it takes the hassle out of menu planning by recommending recipes tailored to the preferences of all attendees. From potlucks to dinner parties, Palate ensures that every event is a culinary success.
  • User Authentication: Ensuring that data provided from the user to us, are safe and sound!
  • Fuzzy/error checking for ingredients: Using levenshtein distance, our program chooses ingredients that are best matched to the user's input.

How we built it

We built Palate using ReactJs as our frontend, Convex as our backend/database. For our chatbot, we used Together AI's Inference models with the Function Calling and JSON mode to structure external API calls from user queries. To query the internet, we used Tavily to perform searches, and Recipe-Scraper (https://github.com/jadkins89/Recipe-Scraper) to scrape the recipe given a url.

Our steps for building our recommendation system were:

  1. The user can interact with Ramsey (chat bot) and describe dishes, ingredients, and cuisines they are interested in receiving a recipe for.
  2. Given a dataset that includes a dishes name, ingredients, and cuisine, we aggregate a user's liked ingredients, disliked ingredients, and cuisines and chat interactions to pinpoint dishes to recommend.
  3. We call Tavliy to query the web for recipes matching the dish and diet of the user and get a list of urls.
  4. We use a recipe scraper to retrieve the recipes to populate into Ramsey and our events.

Challenges we ran into

Some challenges that we ran into were:

  • Choosing Datasets: To have Palate recommend us recipes, we first created a dataset of dishes using Recipe NLG (there are two versions, 1M+, lite). For ease of implementation, we chose to use the lite version. We felt it was important to curate to liked cuisines of the users, however, we were not able to find any available datasets on the internet that mapped dishes to cuisines. As a way to work around this, we used Together AI's API calls to categorize a dish by its cuisine based on its name and list of ingredients. We acknowledge that there may be dishes in our dataset that is falsely classified.
  • Chatbot Challenges: Developing the chatbot proved to be a formidable task as we encountered difficulties in prompting it effectively. Despite leveraging data to augment its responses, the chatbot often provided unexpected or strange answers, requiring extensive refinement and debugging.
  • Technical Learning Curve: Navigating the learning curves of Convex and ReactJS presented significant challenges for our team. As most of us were unfamiliar with these tools prior to embarking on the Palate project, we faced a steep learning curve in mastering their intricacies and functionalities.
  • Understanding Asynchronous Programming: Grappling with the concepts of asynchronous programming, including async, await, and promises, posed additional hurdles in the development process. Recognizing the importance of these mechanisms in ensuring smooth and responsive user experiences, we dedicated time to deepen our understanding and implementation proficiency.

Accomplishments that we're proud of

  • Mastering Convex: Through the development of Palate, we gained invaluable experience in utilizing Convex for user authentication, enhancing our understanding of secure authentication processes within web applications.
  • AI Augmented Data Pipelines: Delving into the creation of pipelines for AI-augmented data retrieval and generation was a transformative learning experience. We honed our skills in integrating AI technologies seamlessly into our platform, empowering Palate to offer intelligent and personalized recommendations to users.
  • Functional Web Application Development: Perhaps most notably, we're proud to have successfully built a functional web application for Palate. From conceptualization to execution, we navigated the complexities of web development, overcoming challenges and refining our skills along the way. Our achievement in bringing Palate to life underscores our growth and proficiency in creating user-centric digital solutions.

What we learned

  • Convex which enabled seamless frontend-backend interaction through API calls.
  • Learned about function calling and generation, enhancing the dynamic capabilities of data manipulation within Palate.
  • Transitioned from JavaScript to TypeScript with React, embracing TypeScript's benefits for writing robust and maintainable code in our frontend components.

What's next for palate

  • Adding more options for dishes to recommend.
  • Being able to recommend more than one items.
  • Caching recommendations to speed up performances.
  • Introducing new events you can organize such as potlucks, or date night. Through this, you are able to assign yourself/others recipes to cook for your events!
  • Palate blend: see how similar your palate is with your friends!

Built With

Share this project:

Updates