There's generally a lot of friction in reaching out to your representative in Congress. Mediums such as crappy contact forms, faxes in 2016, or hard-to-find email addresses add a barrier to entry.

The issue is that having to voice our input via those convoluted and/or time-consuming mediums makes us just keep it to ourselves. If it were easy enough as texting them -- knowing our message would be seen -- we'd be more eager to.

Additionally, it's clear that those methods favor those who already possess the time (and thus franchise) to either be able to fax, find a contact form, or write up an email (if they can find the email address). Texting is very easily accessible and thus extends to anyone (disenfranchised or not) who needs their voice heard.

What it does

This tool lets you text your representative. It takes your text message, figures out who your representative is (searches through Congressional open data based on the state of your phone # and the district you specify), and faxes them the message + your phone number in case they'd like to get back to you.

How I built it

I built a small script that runs through congressional data and is able to filter based on characteristics such as state/district + condense it into only what is needed by the app. I then built a Twilio webhook that parsed the received text, tokenized it into district vs. the body of the message, generated the PDF to be faxed, and used the Phaxio API to send the fax (using the test API key so that I'm not actually spamming congressmen during testing).

Challenges I ran into

Initially I was actually just trying to standardize the process of emailing congresspeople (since there isn't a uniform email standard in Congress). Turns out there wasn't enough open data about Congress emails to do so programmatically, so my challenge then was to figure out how else to reach them: after sifting through a few datasets, I saw that they all consistently had fax numbers. I already knew how I was going to handle receiving/sending texts; I then had to figure out how to programmatically fax, which is where Phaxio came into play. From there, my challenges mostly consisted of error handling + learning how to generate a PDF to then fax + making sure I was parsing the message correctly.

Accomplishments that I'm proud of

I'm really proud that the design+aesthetic surrounding the project is as clean as it is; the fax I send is very clean (as opposed to Phaxio's unformatted monospace default) and the landing page ( makes the experience all the more appealing to try out. I'm also glad that despite how ugly the process of taking a text and faxing it sounds, I was able to combine it into a very uniform experience where the end-user's experience makes it seem very simple.

What I learned

For one, I'd never used Twilio or Phaxio, so I learned their APIs. I also used this project as an opportunity to teach myself ES6. Aside from the technical aspects of it, I'd spent a few hours trying to figure out what type of civic hack would be valuable to work on; I systematically narrowed down problems to solve to the underrepresentation of certain voices in government, and then I translated that into the technical solution of making it as easy as a text.

What's next for Text Your Representative

I think Text Your Representative would already be a valuable tool for the average citizen to very easily reach out to their Congressperson.

It'd be best used at scale for when certain organizations such as the EFF, ACLU, etc reach out to their members to systematically pressure Congressional action by reaching out to reps. Typically when that happens (think back to SOPA or Net Neutrality) they have to make a custom tool where each person has to go through a few steps (go to their website, find your rep, send message) in order to get the message across to their specific Congressperson; this would condense that all into one simple step (significantly increasing the participation in such protest). It would also eliminate the need for a custom website/tool for each new protest activity, and would do so within a workflow that people already use everyday (SMS).

Built With

Share this project: