Ever since I read the shocking memoir penned by Jaycee Dugard, a prisoner over her body and her will for over 20 years, in middle school, I've been constantly scared that one day I'd be snatched from reality and forced away from the ones I love. Women are indoctrinated from childhood: don't wear short skirts, don't drink too much beer, and don't put yourself in a position to get hurt. But what if, through no fault of your own, you are in a situation & a 911 call could endanger your life?
Recently the FCC ruled that cell phone carriers can offer Text-911 services. But the localities that offer them are scarce and response centers still aren't legally required to offer those services. When 80% of calls originate on cell-phones, there could be a day when a phone call means exposing your location to someone who could hurt you. Most 911 call centers still rely on basic 911, taking up to 10 minutes to get your GPS coordinates from your cell phone provider. Those are valuable minutes wasted.
What it does
My hack relies solely on SMS and phone calls to reach the widest audience possible: you text a number, sponsored by Bandwidth at the moment, and it collects preliminary information before routing your call to a specified destination. In production, you can easily set this to 911 & make use of the respective 911 API's offered by Bandwidth as well. Then, our server continuously listens for texts from your phone & uses TTS to send them over the phone to an operator. At the same time, the operator's audio is being transcribed and sent as an audio file over continuously so you can seek emergency services incognito. You can see & hear the entire progress of the call through your phone: hence, EmergenSee.
How I built it
I started off using Bandwidth's API for receiving and sending texts back to the user. This worked incredibly well because Bandwidth supports lots of media types. I used Twilio to continuously gather audio from the callee and start bidirectional streaming. I used Google Maps Geolocation API to reverse geocode coordinates and Python to take care of the rest. My methods & API endpoints are hosted on AWS Lambda & API Gateway while methods continuously poll DynamoDB tables for new texts.
Challenges I ran into
Bandwidth didn't full support the call transcript abilities that I needed: if someone was in a situation where it was critical to be as silent as possible, transcript services would be essential. Therefore I spent a lot of hours on Bandwidth API's but had to switch over to Twilio for voice. Coordinating all the different components to work together was the biggest challenge: many things had to constantly be calling others and I could never stop the call so the call had to constantly receive back TwiML.
Accomplishments that I'm proud of
This is a passion project I've been sitting on for quite a while. Since high school, I've wanted to do something like this but just didn't know how. I looked at programmable voice/sms API's for emergency 911 calling often over the past few years, and I felt really proud bringing such an important hack to fruition finally. This is something that's sorely missing from our emergency medical services, and that has made me constantly afraid to be out past the brink of sundown.
What's next for EmergenSee
If there's interest in this project, I'd really love to bring it to 911 call centers across the country. GroupMe started as a hackathon project at TechCrunch and turned into a multi million dollar business. This project has the real potential of being helpful to so many people in the US, increasing accessibility & providing safety. It's the first real project I've done that I could actually get behind a startup of. Here's to more to come!