Jefferson

Jefferson

Overview

After the 2016 election, I–like many others–wanted to do something to make a difference and increase political engagement. In the proceeding months and years, I came up with multiple social justice projects, including Jefferson: A Facebook Messenger bot for contacting your congresspeople.

With this bot, I wanted to provide a non-partisan platform that encourages and facilitates political engagement in an effective manner: it is largely accepted that calling or writing your congressperson is the best way to make your voice heard! I chose a Messenger bot over a website or an app because I wanted to remove as much friction as possible from the process. If the end goal of the interaction is to make a phone call, then the platform should exist on your phone! An app was possible, too, but I believed that even downloading something was too much friction. Most people have Messenger on their phone, so leveraging that seemed like an ideal option.

I worked to conceptualize, design, and develop the bot on my own during grad school, and learned a massive amount about the Messenger system and how chatbots work. This was not my first experience with chatbots by any means, but it was my first solo project on Messenger.

Demo1_PHONE.mp4.gif

Features

Jefferson’s path is very simple: get the user’s location, find their congresspeople, provide contact details for congresspeople. For each congressperson, users have the option to contact them directly by phone or get their mailing address. In both cases, Jefferson also provides a script, so users don’t need to worry about what they’re going to say or write.

This bot uses mostly Messenger’s built-in tools for location and presentation, and the ProPublica Congress API to get congressional data.

One of the major challenges for the bot was allowing users to go back and access previously provided information without going through the bot flow again. Someone might request contact details for their House representative, but then change their mind and want to contact a Senator. At the time this was written, bots were very state dependent, so tapping a button would send a transient response that would expire once another message was sent. I worked around this by modifying the transient responses to include relevant bits of the message history (representative ID, etc.) so that it persisted between messages, allowing users to tap any button and get the correct response, regardless of the age of the message.

While this bot didn’t take off or go viral, it did reach 50+ subscribers in the first few months, and user feedback was largely positive. I have not been able to keep the app updated, so it is currently offline, but I hope to have an opportunity to get it back up and running soon.