Cooking is a great hobby for most people and there are so many reasons behind it. The biggest reason would be because it’s super fun and it gives everyone a chance to experiment with a wide variety of choices. Another great reason is that we get an amazing dish at the end. Also, there are loads of recipes to try out.
But many times, we drop the idea of cooking just because we don’t have an ingredient that’s needed for the recipe and we have no time to rush to the grocery store to buy the missing ingredient.
When we heard about Alexa conversations, we wanted to create something that will help people out there to continue with the recipe with some alternative ingredients. Also, our hands will be pretty engaged while cooking and we thought conversations will be a perfect fit to help users find ingredient replacements for recipes. That’s not all about it!
Though there was such a skill already, what we personally thought was missing was that all of us in today’s world want to focus on diets and be fit. In addition to this, all of us do have some kind of food intolerance.
We wanted to make this more personal to the user by considering users' diet, allergy preferences and also to make Alexa smart enough to recommend ingredients based on the kind of food the user is going to make. That was our starting point.
What it does
Finds an ingredient alternative based on the users' diet, allergy preferences, and the kind of food the user wishes to prepare. These are different ways to find an alternative ingredient using our Ingridi' hunt skill.
Search by ingredient and the specific food type
The user can provide the ingredient name and the type of food to be prepared to get a more refined substitute.
Refine your search with allergy & diet preferences
The user can provide allergies and/or diet preferences so that the users' health is not negatively impacted by the substitute. Say you are allergic to peanuts and want a substitute for butter, you wouldn’t be recommended peanut butter. Also, you may be a vegetarian and wouldn’t want any ingredients with egg as a substitute. These choices are taken care of by the skill.
The user can provide just the ingredient name to do a quick search so that we get a substitute without any custom preferences. A super busy mom trying to make a quick breakfast for herself before joining a zoom meeting is a typical use case we considered for this.
General ingredient replacement tips
We often like to hear some general tips while experimenting with interesting recipes. Ingridi’ Hunt also provides a way to hear exciting food tips when you want. Don't forget to try those out!
The user need not worry if their preferences do not have an exact substitute recommendation, we always recommend the closest alternatives in case we do not have a perfect match.
How we built it
Alexa conversations were the most interesting part for us. We worked on setting up conversations and dialogs for different scenarios that a user could search for an alternative ingredient or ask for tips. These conversations were then integrated with the APIs we created in the backend using AWS Lambda to fetch the recommendation for the user-specified ingredient based on the substitutes, diets, and allergies stored in DynamoDB.
Alexa Presentation Language
For devices which support APL, we included screens for the initial launch and for recommendation to present the ingredients in a better way.
Data being the crux of this conversational skill, we made use of different reliable data sources to fetch ingredient related data along with the diets and allergies. Currently, we support diets like Kosher, Vegan & Vegetarian, and allergies like peanut, tree nut, dairy, alcohol, sulphite, gluten. This data was loaded into our tables in DynamoDB so that we could leverage the interaction between lambda and DynamoDB.
The slack channel created for this hackathon motivated us a lot and we were actively getting our questions/issues sorted out with the Alexa team and was also very helpful for us to know the resolutions for common issues that we often faced. Being the first skill we are building, the certification issues that the community actively shared helped us to a great extent. The live streams in twitch introduced us to many aspects of Alexa conversations skills.
Challenges we ran into
- Collecting data for different types of ingredients and food types and consolidating them, deciding on how to handle different food types.
- Handling different possible user inputs and conversations.
- Figuring out how to continue the conversations and clearing the previous conversational context was a bit challenging.
- Trying to figure out the different utterances that the user can make to get things done.
Accomplishments that we're proud of
- Publishing our first-ever Alexa skill
- Allowing multiple conversations with the user to ask for tips or search for substitutes.
- We got a chance to explore different AWS services like Lambda, DynamoDb, S3, and integrate those with our custom hosted skill.
What we learned
- Usage of AWS lambda functions i.e how easy it is to integrate it with our skill and load layers of packages. In addition, saving and deploying lambda functions was very convenient and time-saving.
- Setting up conversations in a sequence and understanding what the user wants. We also spent time understanding how the user will convey what they want and how they can switch context.
- Alexa presentational language and how it can be used with/without display enabled devices.
What's next for Ingridi' Hunt
- Expand the choice we give for the diet preferences and refining the API to be able to provide results based on various food types.
- Bring more flexibility by adding more dialogs like updating the preferences during a conversation.
- Make better use of APL and get user inputs from APL.
- Get feedback from the users, find their pain points, and make the skill greater!