Inspiration
What inspired me to make this skill was to solve a common problem in the kitchen: Not knowing what to make for, a meal/drink, and having limited knowledge of the possibilities. I noticed that oftentimes people come home after a long day, and haven't thought about what to make for dinner. They have ingredients at home but don't know any recipes to make using them. After one too many "thrown together" meals, I decided to find a solution. I thought it would be amazing if it was possible to find a good recipe using as many of your ingredients as possible. It would be great if you could make something that actually tastes good with your ingredients by following a structured recipe, and trying something new!
What it does
Recipe Genie will find food or drink recipes that use the ingredients you have in your kitchen while using as many of your ingredients as possible. This way, you can combine your ingredients into a delicious recipe, and avoid throwing away leftover ingredients.
If you want to find a specific dish or drink, you can specify that by saying "only show omelet", for example, which will find recipes including that keyword in the title. This can also be combined with ingredients in your search.
After adding ingredients, you can search for recipes, and select a recipe from the options.
Once you select a recipe, you can hear the ingredients, then step-by-step instructions, or send the recipe to your phone.
Recipe Genie is also flexible so that you can go back and add more ingredients, remove ingredients and search again, or select a different recipe - even if you're at a further stage in the process.
If your Alexa device has a screen compatible with APL, the entire experience described previously will be presented visually. You will see your ingredients pop up on your screen, recipes found for your search, and finally your selected recipe along with its' ingredients and instructions!
How I built it
I built Recipe Genie using Python, recipepuppy API, webscraping, APL, APLA, as well as some external python libraries.
Challenges I ran into
The biggest challenge was that recipepuppy API allowed me to search for recipes by ingredients, but only returned the recipe name, and link to the website. Since it's essential that the recipe can be accessed through voice, I had to refine the API results so that I could use web scraping to extract the Ingredients, Instructions, images, serving size, and time to cook for each recipe. Web scraping was especially challenging since recipe URLs returned by the API were often on different websites having different HTML layouts.
There were some ingredients/ingredient combinations which for some reason resulted in an error from the API, which I had to account for to provide a smooth user experience.
There were many edge cases which had to be accounted for, since there are so many steps before completing the goal - they must be completed in the correct order. (i.e., you can't send a recipe to your phone if you haven't selected one yet).
Accomplishments that I'm proud of
Creating something which solves the problem of figuring out what to eat, as well as reducing waste from ingredients that would be otherwise thrown away.
Incorporating APL and APLA into my skill was challenging, but worth-while since it allows for greater engagement from the user with audio and visuals combined, as well as a more pleasing user experience.
Solving a common problem in the kitchen, Introducing new recipes to people, allowing them to improve their cooking skills.
Being my first Alexa skill, I had to scratch my approach and start over several times throughout the project in order to get it right. I'm happy with the final product and proud that I stayed so determined!
What's next for Recipe Genie
In the future I plan to add:
- The ability to prioritize recipes with a low cooking time when searching.
- An option to save your favorite recipes to access at any time.
- Improve user experience based on feedback.
- Further improvements in general!
Built With
- apl
- apla
- python
- recipepuppy
- webscraping
Log in or sign up for Devpost to join the conversation.