In today's politically polarizing times, people want their voices heard more than ever. A seemingly effective way to voice opinions is to call your state or national representative's office. One of our team members, however, has almost never been able to leave a message due to the voicemail inbox being full. After additional consultation with elected official offices, most of the staff tasked with listening to the voicemails rarely take into account the opinions and sentiment being shared. Why should thousands of voices and priceless data be lost in the void?
What it does
ListenUp is a web application that hopes to address this problem. The web application, which is linked to an elected official's voicemail inbox and email, automatically transcribes the messages sent to the official, intelligently analyzes the message for key issues and sentiment, and aggregates the data into an accessible database for data visualization. The goal of this project is to ease the burden of getting to know constituents for elected officials, as well as giving constituents more of a voice in policy.
How we built it
Our team built this Node.js application by using a Gmail API to collect emailed Google Voice transcripts into Google Cloud Datastore. Before being saved into the database, the data passes through a layer of sentiment and keyword analysis by IBM Watson's Natural Language Processing API. The data is then exposed and sent to a Google Live Sheets, which powers Tableau's data visualization. The entire application is hosted on Google App Engine.
Challenges we ran into
The first challenge we ran into was with Google Voice, as the application did not have an exposed API for development. We found a workaround by configuring the inbox to send all voicemail transcripts to the account's gmail inbox. Gmail, on the other hand, had more robust and complete documentation. When connecting the various parts of the application, we ran into challenges with authorization. The various credentials being passed around by the many endpoints made it difficult to keep track of client_ids, secrets, etc. Tableau was also poorly documented and did not have an exposed API in our knowledge, so we found another workaround the update a Google Live Sheets. We spent a majority of Saturday configuring the various pieces of the project to fit into each other and were authorized during the process.
Accomplishments that we're proud of
We are proud of the sheer amount of technologies we were able to learn, as all of us were fairly unfamiliar with the development side of Google applications and Tableau. Additionally, we are proud to have deployed a public facing prototype to display the necessary future that government must take.
What we learned
We learned that seemingly small problems may take much longer than expected, many times leading to a rabbit hole of possible problems. While we completed all of our priority one and priority two goals, it was at the cost of many hours of focus and lost sleep (but all for the best!).
What's next for ListenUP
ListenUP has many future possibilities, such as scaling the web app to work on all emails and phone calls, pull data as specific as to how constituents support certain bills(ex. I support DACA but only…), separate voicemails according to topic mentioned in message, and implement anti-spam security to ensure that the paid and active callers do not skew data.