Skill ID: amzn1.ask.skill.fb8b2b02-c9c8-4f44-857e-00ca02154c89
I was thinking that with 39 million Alexa users, there had to be millions of people, literally, who want to help the world. They all have unique talents, skills, and expertise which they want to share. But how, do I link those who are in need with those who want to help? Along came my idea for Talents for Good! This skill seamless links them together, using a central database.
What it does
This skill, Talents for Good, matches people who are in need of talents, skills, services, or expertise with those who want to volunteer it. It uses Voice to make a positive impact in our world! It searches through our nationwide list of people who want to volunteer their services, skills, and talents to help you! If there is nobody offering the help you need at the moment, our skill will even take your phone number and text you when someone volunteers it.
How I built it
I spent the majority of my time: (a) gathering proper zip-code data (longitude and latitude) and associated routines for calculating distances between them, while allowing for regular updates to the zip-code data, (b) integrating with DynamoDB directly (sort of like a persistence-plus concept) where data from those offering their talents can be retrieved by those looking for help (c) enabling the ability for the skill to store the users phone number and send them an SMS text (using Amazon AWS SNS) when someone else eventually offers that talent in their area (as determined by the number of miles the offering person is willing to deliver the service)
Challenges I ran into
(a) uploading all the zip code data to DynamoDB, only to learn that in order for the skill to properly scale, I needed to remove it out of Dynamo and put it in a local file. I still use DynamoDB for all the offers, though (b) when I was playing with Amazon AWS SNS, I tried opting out just to see what it would do. I then opted back in, but I still didn't get the text messages! Finally Amazon support ended up helping fix some sort of bug in their SNS system and I could test again - this delayed me by over a week!
Accomplishments that I'm proud of
I am SUPER proud to release a skill which uses a central database for the users. All the other skills I have used do not collaborate and there is no community element. All the data comes from some third-party source. My system allows all the data to come FROM the community! This is REALLY exciting to me!!
What I learned
(a) I learned an enormous amount about DynamoDB. I am used to MS-SQL so this is quite different. But I am impressed by its abilities, when I modify my approach accordingly.
(b) I also learned how to use advanced dialog management with Alexa Skills Kit. It is very powerful and it was fun populating the fields the user was entering on the Alexa Show screen, as they were being filled in! I really think this is a beautiful user experience! (c) I enjoyed delivering excellent entry resolution. For example, when someone enters a zip code which doesn't exist, the skill properly tell them this, rather than accepting it and producing an error later.
(d) I also learned about CanFullFilIntent, and its peculiarities!
What's next for Talents for Good
(a) figuring out how to get Alexa to give MORE Max_Retries. There are cases when a person wants to try several times and currently, she just hangs up. I searched and found no way to fix this. Hopefully soon, I will! (b) smartening up the categories, to make nearly-identical items match better than the do (c) ability for the person needing help to remove their phone number via the skill (d) perhaps expand this outside of Amazon Alexa (e) allow those donating to put a maximum number of hours they're allowed to donate (f) some sort of confirmation when the work was donated, with a rating and review system by the person who received the benefit. (g) perhaps another separate skill for specialized service providers