Have you gone through the hassle of keeping track of receipts and splitting bills with your roomates? Are you tired of the monthly chore to settle accounts with your roommates or friends? Are you looking for a hands free, convenient way to keep track and settle accounts? May be through voice?
Splitting bills, settling accounts is a common scenario for all of us. It is cumbersome and a chore that we all wished that we didn’t have to do!
What it does
As a team when we were brainstorming different options for a life hack skill, this idea of voice driven way immediately resonated for all of us. A skill that would remove the hassle of tracking receipts, splitting the bills, complex math of who owes whom! Using Alexa and voice to keep track of all and settling accounts in few minutes!
We really wanted to work on something that would appeal to most of us. Tackle a life productivity issue for majority of us.
How we built it
To build our skill, we started with the Serverless framework for easy deployments, along with Git for our source control. We decided to build our Lambda function in Node.js since that was the framework our team had the most experience using. We went with DynamoDB for storing our data because we wanted to be able to retrieve the data for each household quickly, and easily scale if our application needed to handle a large amount of users in the future.
Challenges we encountered
The biggest challenges we ran into involved the structures we were using to store our data. We needed to be able to store debts and credits for multiple users, but also for different categories. We also needed to be able to retrieve the data quickly, given only one user. Using this information, we designed the data structures so that each user item stored in DynamoDB would maintain lists of all the IOUs that user was involved in. This method of storage allowed us to access the access the data quickly using a single get call to DynamoDB, and without any additional information other than what was provided with the Alexa intent.
What we learned
Our team was able to learn a lot about Alexa skills and working with AWS through this project. Only one of our team members had used Serverless before, so we all got to learn a new framework that made whipping up the base for an AWS project quick and easy. We also enjoyed the opportunity to apply Amazon Web Services to a real project, which gave us experience in picking what services would be right for our particular problem. We also learned how to divide up the tasks we wanted our skill to use into separate intents, so that the language used by the user would remain natural while still conveying the information our skill would need to handle their request.
The future of IOU
Our team is excited for the future of our skill because we have a lot of ideas we think could make it something useful to people everywhere. One idea we had during development was allowing users to create IOUs through the Alexa app on their phone. By linking the user's personal devices to their home device users could create IOUs while out at restaurants or bars, instead of having to wait until they got home.
Once Amazon voice recognition is available to Alexa skill developers, we plan to add more natural language to our intent utterances. Currently our skill requires both parties involved in the IOU to be mentioned by name. With voice recognition users could use phrases like "I owe Chris five dollars for paper towels", which makes for a simpler user experience.
Additionally, we look forward to adding other functionality to give users more power over their IOUs. Linking IOU with an existing P2P transaction system would allow users to pay each other back quickly using a single phrase.
Our team believes that the current version of IOU is a strong base, and that future expansions will make our skill an invaluable tool for a wide variety of users.