Inspiration
Finding good recipes is hard. We've found in our own day-to-day experience that when you don't know what to cook, finding inspiration, identifying the necessary ingredients, and figuring out the cooking process is difficult. This often leads to eating out, which wastes money and is more often than not, unhealthy. We also noticed that especially in today's climate, rising costs and budget are becoming more and more of a major concern. Cooking at home is one of the best ways to improve health and save money, yet it's hard to know which recipes are good, which sources to trust, or even where to begin. We created KitchenSink! to solve these problems.
What it does
KitchenSink! is an application designed to streamline the entire process of home cooking, from idea to shopping list. Users can input almost anything as a prompt to find a recipe – from specific requests like "Vegetarian Pesto Pasta for two" to vague concepts like "A dish for an Italian food lover that can also satisfy an Indian food lover". Our backend processes this prompt, generates a suitable recipe idea, and then uses the Google Search API to scrape the top 5 related recipes online. It intelligently condenses these multiple sources into one set of easy-to-understand directions and generates a comprehensive ingredients list.
Furthermore, if you plan meals for several days, KitchenSink! can consolidate ingredients from multiple recipes into a single, unified shopping list. To help manage budgets, it then scrapes pricing information from Target and Kroger APIs to find the cheapest place to buy those groceries.
How we built it
We built KitchenSink! with several interconnected components. The core involves a backend system that interprets user prompts to generate recipe concepts. This system then interacts with the Google Search API to retrieve relevant, highly-ranked online recipes. We developed scraping logic to extract instructions and ingredient details from these web pages. Another key part of our backend is the consolidation engine, which merges information from multiple recipes into a single, coherent set of instructions and a unified ingredient list. Finally, we integrated scraping capabilities for the Target and Kroger platforms to fetch pricing data and enable cost comparison for the generated shopping lists. We used NextJS for our front end to display all the above, and used PostgreSQL and Supabase for our database.
Challenges we ran into
Our biggest challenge was achieving full integration. KitchenSink! has many moving parts – prompt processing, recipe generation, Google scraping, instruction condensing, multi-recipe consolidation, and grocery store API scraping (Target/Kroger). Making all these components work together seamlessly required significantly more time and effort than developing each part individually.
Specifically, the web scraping aspect, particularly for Google Search and Target, proved very difficult. We encountered several sophisticated anti-bot protections, as these platforms understandably don't make it easy to reverse engineer their systems or scrape their data programmatically. Overcoming these hurdles was a major technical challenge.
Accomplishments that we're proud of
Our proudest accomplishment is successfully reverse engineering the scraping mechanisms for Target and Google Search. Figuring out how to navigate their anti-bot protections and reliably extract the data we needed felt like a significant win, especially given how resistant these platforms can be to automated access. Getting the entire complex system integrated and functioning, despite the inherent difficulties, is also something we are very proud of.
What we learned
Through this project, we learned a great deal about the complexities of system integration, especially when dealing with multiple external APIs and web scraping targets. We gained firsthand experience with the challenges of web scraping, encountering various anti-bot techniques and learning strategies to potentially overcome them (within ethical boundaries). The process reinforced the importance of persistence and creative problem-solving when tackling difficult technical obstacles. We also learned how much effort goes into making disparate systems appear as a single, cohesive user experience.
What's next for KitchenSink!
We are all incredibly passionate about KitchenSink! and see huge potential for growth. While we're proud of what we've built, it currently consists of many distinct parts, and there are many features we've envisioned but haven't yet implemented. Our future plans include:
- History-based auto grocery list generating: Automatically suggest items based on past recipes and shopping habits.
- Remixing recipes: Allow users to modify existing recipes or combine elements from different ones.
- Reflexive functionality: Enable users to start with a recipe to generate a list, and start with an existing grocery list (or pantry inventory) to find suitable recipes.
- Grocery receipt scanning: Allow users to take a picture of a grocery receipt to use its contents as a search parameter (e.g., finding recipes based on recently purchased items).
- Social features: Implement the ability to follow other users who post recipes.
- Natural language search improvements: Utilize technologies like VectorDB for more intuitive and powerful natural language searching.
- Shopping List Analyzer: Provide insights into shopping lists, perhaps analysing nutritional content, cost trends, or suggesting budget optimizations.
Built With
- beautiful-soup
- gemini
- kroger
- nextjs
- postgresql
- python
- supabase
- target
Log in or sign up for Devpost to join the conversation.