I originally posted this in the Amazon Raise-up Buildathon, a hackathon to create projects that help NGOs raise funds.


NGOs make a great effort to get donations from individuals. In addition to occasional donations to attend emergencies, periodic donations are also important, which allow the NGO to continue its activity.

But the budget of an NGO to make itself known is limited. Some people do not know the important work of some NGOs, even if they work very closely.

Furthermore, all payments through Amazon Pay (including donations) have a small fixed fee.

In other hand, there are other organizations in society, such as private companies or brands, that have easy ways to communicate with their workers or followers.

If we ask the organizations (example: companies or brands, that they do know the NGO), that they are organizers of a collective donation on behalf of their workers or followers, then we get multiple benefits:

  1. More people know about the NGO’s work, without increasing the NGO’s marketing budget.
  2. Donations for NGOs increase, as collective donations are larger than individual donations.
  3. Fixed fees for donation transfers are reduced.

What it does

This Alexa skill, called «Fundraising Team» is the tech solution to turn the above point into reality. This skill makes easy the creation of virtual «donation teams», the enrollment in these teams and the team donation by the organizer of each team.

In addition, the skill allows individual users to also make individual donations. And the skill allows upgrade from puntual donation to subscription donation (recurring monthly payment) in a very easy way, both for individual donations and for group donations.

That is, this Alexa skill supports 4 types of products to pay with Amazon Pay: one-time individual donations, individual subscription donations, one-time team donationsa and team subscription donations.

Note: In the team donations, the person who pays is the team organizer. The skill asks the user how much he wants to donate for each team member (for example, 10 dollars), then the Alexa skill calculates the total team donation (example for a team of 200 people: 10×200 = 2,000 dollars) and the skill asks for confirmation from the team organizer to do The donation. In the individual donations, user chooses too the amount in dollars.

In summary, all this also increases the fundraising capacity for Nonprofit Organizations.

How I built it

To design the voice model I’ve used the alexa developer console.

The skill backend is hosted in an AWS lambda function and I’ve updated it using ASK CLI.

The persistence of Alexa session is on AWS S3.

To store the donation teams (team name, organizer and joined people), I’ve used a single DynamoDB table.

In the Amazon Pay, we use the credentials provided by devpost.

I’ve configured AWS security with the principle of least privilege. I mean, the IAM role that runs the AWS Lambda function has permission only to access the DynamoDB table, to access the S3 bucket, to write to CloudWatch logs, and to execute the lambda function.

To testing the Alexa skill I’ve used the Alexa Developer Console (Utterance Profiler), the Alexa simulator, real devices and betatesting distribution (to test the Alexa skill in the other Amazon account). To debug errors I’ve used CloudWatch.

To assist the connection from AWS Lambda to DynamoDB, this project uses an opensource library made by me, it’s called «Dynamola».

Other parts of this skill are based on the Alexa opensource template developed and maintained by me.

The skill includes simple screens made with Alexa Presentation Language (APL).

In addition to Amazon Pay permission, the skill also requests email permission, in order to verify that each person does not register more than 1 time for each team.

Challenges I ran into

The Amazon Pay functionality was a challenge because I hadn’t used before.

It has also been a very inspiring challenge to have to come up with a useful idea to help NGOs. I think that the challenge of this contest was complex but I’m happy with the result.

I’ve had problems with my Spanish Alexa account to request permission from «Amazon Pay». Maybe it’s a problem with the Alexa mobile app or maybe Amazon Pay for Alexa is not yet available in Spain. Finally I did a workaround using another Amazon account from United States.

To avoid malicious use and avoid users who join to a team several times, I ask the user for email permission and I store in DynamoDB the list of emails of the users who have signed up for each team. Thus, each user can only join in each team once.

Some screens with Alexa Presentation Language gave me problems and I couldn’t finish them on time. I hope to improve the APL in the future.

Accomplishments that I’m proud of
I’m very proud of the idea submitted to this contest. I’m convinced it can be very useful for NGOs.

I’m very proud of the voice model designed. I think this Alexa conversation is very natural, and it’s easy for users to create a team, join a team and make donations.

There are some details such as asking for confirmation when the user says the name of the team, or the upsell from punctual donation to subscription when user wants to make a donation. I think these details are important to reduce friction and increase donations for NGOs.

What I learned

First of all, I’ve learned that it’s really hard for NGOs to raise funds. Many times they have to do it urgently to deal with a crisis, but it’s also important to have constant donations to carry out their activity well.

I have learned to use Amazon Pay as a developer, and specifically I have learned to use it in Alexa skills.

All transfers have a small fixed cost, so I think is a good idea to group donations through a team.

In addition, some companies may be interested in making donations on behalf of their workers, as part of the company culture of helping society.

From a technical point of view, I’ve learned to better debug code in AWS Lambda with CloudWatch and CloudWatch alarms, I’ve learned to save the Alexa skill session information in S3 (this is an important step because the session is closed during the process of Amazon Pay). I’ve also improved my skills with DynamoDB and the Alexa Developer Console.

For the Amazon Pay workflow in Alexa, the official example of Alexa Amazon Pay has helped me a lot, it is on github.

What’s next for Fundraising Team

The source code of this Alexa Skill is going to be released as open source. This will allow NGOs to customize their Alexa skills for team donations using Amazon Pay.

In the future, users who join a team will receive an automatic email or an Alexa notification when the team organizer makes the donation on behalf of all users.

This alexa skill can also be used in the future to report the total amount of donations received and to tell what projects the NGO is doing thanks to these donations.