It came during the final scene of an episode of The West Wing. Then President Josiah Bartlet references free elections that are taking place in Taiwan that are the product of U.S. and UN oversight. Taking it to it's logical end, and we arrive at what we spent this weekend building — an awesome voting platform for people with access only to non-smartphone mobile devices.
What it does
It's a voting platform that allows people in developing and third-world countries, with a history of violence, voter fraud, and/or low turnout. The idea is to allow people to submit votes via their mobile device (most probably a non-smartphone device) through SMS.
Voters will have to authenticate with a series of security questions (government ID number and birthday) matching information that they provided on their voter registration form. Going through this process is the best we could come up with for authenticating in this limited amount of time, while still achieving it's primary goal of disabling more than one vote being submitted for a single person with multiple devices.
How I (we) built it
There are three essential elements of this project: the SMS platform, the data server, and the Public API.
The SMS platform is the most interesting part of this project — it's what allows you to communicate with our servers and authenticate yourself as a voter.
The data server is simply an encrypted Parse datastore, with custom code to specialize how voters post their preferences to the system. It's then available and retrievable by the public API.
The public API was created as an extension of the Parse platform, allowing anyone who wants to, to query for the results of the pending election. It was implemented in the demo iOS and OS X app that we (will) use during our demo and allowed us to display the results of our local election to all those watching.
Challenges we ran into
Seeing that none of us had ever built a SMS platform like this before, it was difficult at first to get off the ground with the SMS platform, but as the hours progressed and as we came up against the submission deadline, we were able to finish the Python code that runs the response system.
Accomplishments that we're proud of
Overcoming the issues with setting up the SMS platform felt great, once it was up and running — but simply finishing a few hours early was fantastic because it meant we could catch a few Zzzz's before our science fair-style demo to the rest of the hackathon.
What we learned
Don't ever try to setup two-factor authentication at a hackathon, in less than 20 hours. It's hard. You can also never have enough sleep, so be sure to invest enough to be able to be productive during the day.
What's next for Mobilize Democracy
Who knows? Maybe someone will find this interesting — or maybe this project will be lost to hackathon hacker history.