Inspiration
We live in an age of convenience and plenty.
With Lyft, I can order a car at the push of a button. With Postmates, I can have food delivered in a few clicks.
But we don't all live in an age of convenience and plenty.
With Lyft, I've spoken with drivers who drive four hours to get to San Francisco from Sacramento on Friday for the weekend rush, sleep in their cars over the weekend, and put in grueling 14 hour days. With Postmates, I've spoken with couriers who've described the rush to finish jobs, the contentious interactions with customers who ask them to illegally park their vehicles and come upstairs, and the sub-human pay during off hours.
It's hard, when pushing the button to order a Lyft, to think about the individual on the other end of the transaction and what he or she is going through. Technology enables convenience for many of us, while -- on the other end of the scale -- creating jobs which lack consistent pay, living wages, and basic benefits. Alexa represents a new frontier in technology -- voice technology enables convenience to be taken one step further.
Four years ago, I started volunteering at my local food bank, and, seeing how they struggled to get donations, I came up with idea for Godfrey: Food With A Purpose.
The idea was simple: What if I could take voice communication and the advantages of convenience it enables and offer the easiest, most convenient way to do something many privileged people do every day -- order food -- and take the value capctured by my application and donate it directly to those most in need of the service the app was providing: my local food bank.
From there, the idea grew. How could I get people engaged? Could I make it competitive? When you log in to your Godfrey account, the first statistic you'll see is how many meals you've donated to the hungry. The second statistic you'll see if how your donations rank compared to your peers.
With Godfrey, I'm trying to capture the value of convenience and transfer it to those in need. Technology doesn't have to be a force for inequality -- it can be harnessed to do good for our communities.
What it does
Godfrey consists of two pieces: An Alexa skill and a website, located at link
The Alexa skill is Godfrey's main interface. It allows users to quickly and easily order delicious food. Since my focus is on convenience and targeting busy people, I designed it to be a simple interface -- the only options you have are the type of cuisine and the number of people you're ordering for.
You can also ask the skill what your impact is, and it will tell you how many meals you've donated this month, and how you stack up to your peers.
The website is the secondary interface -- you can login to your account to see your donation history, your latest order, and your order history.
How I built it
The front end of Godfrey is built off of Meteor -- a popular Node.js framework -- and vanilla HTML / CSS with Bootstrap.
The back end consists of two servers -- a hosting server, Meteor Galaxy, and a data processing server which I set up on my own. The data processing server runs Python, and regularly polls the database for new orders; when a new order is detected, it springs into action. It's first pass is via Yelp's API -- it searches for restaurants close to the user's address that match the desired cuisine, and downloads menus where available. It then parses the restaurant's reviews and uses NLTK, a Python framework, to discover which menu items have the most positive sentiment associated with them. Once it has compiled an order, it uses Postmates' API to place the order and queues it for delivery.
Just about the only part of Godfrey that isn't automated is the donations at the end of each month to the San Francisco-Marin Food Bank, but that's because I feel some things just shouldn't be automated!
Challenges I ran into
Godfrey was challenge after challenge.
This was my first project built on Alexa. Alexa may be convenient, but many aspects of building on it -- eg. account linking -- are not simple to grasp and took lots of testing to get right.
This wasn't my first time putting together a website, but building out the backend and the integrations with the different APIs took weeks of work to get right.
Accomplishments that I'm proud of
I'm most proud of the impact I've had. I've only tested Godfrey with myself and a few of my friends from school, but, on average, we've been donating more than 500 meals per month to the food bank. I'm excited about the potential impact I can have when I roll Godfrey out to more people.
I'm also proud of just how easy I've made Godfrey. When I explain how it works to people, they usually think there must be more to it. I have to work to convince them that all you have to do is tell Godfrey what food you want and for how many people, and that's it! It'll be at your door shortly. Most of my friends and their families have started using it regularly, and that's been a big motivator for me.
What I learned
Almost everything I used to build Godfrey, I learned from scratch.
What's next for Godfrey
I have a few updates in store for Godfrey.
I'd like to make it more social, allowing users to follow other users and see how their donations compare to their friends.
I'd also like to give users more choice. The current iteration of Godfrey only allows you to specify a cuisine, but people I've talked to have told me they'd like to have some choice over what items are ordered, such as specific pizza types.
I'm already working on implementing both of these iterations.
Godfrey could also easily be extended to other services, and I'm excited to explore other ideas after I'm satisfied with the current iteration!
Log in or sign up for Devpost to join the conversation.