Speak It, Baby!

This past weekend, I attended Semantic Seed’s StartUp Camp (Mobile Edition) Bay Area in Santa Clara. On Friday night, I pitched an idea about a notification platform that calls people when certain things happen. The first use case would be to build a Twitter client using purely old-school audio telephony, so that even someone with a landline phone could use Twitter.

My idea received enough votes to be one of the dozen or so teams to start working. I, along with @evanwolf and @romil4you started exploring the idea and what was doable within the 54-hour timeframe. My original idea was to use Tropo to allow people to call a number, transcribe a tweet, and post it on Twitter just by using their voice from any phone in the world. Technically, this would involve doing speech recognition to capture a transcript, play it back to the user (to ensure the recognition was accurate), and then post it. Since the Tropo speech recognition API isn’t real-time, though, the user would need to wait at least 15 seconds before we could confirm the transcript.

So we decided to scrap the tweet sending feature and only allow people to receive tweets as a phone call. This means anytime someone @replies to you or directly messages you on Twitter, you’d get a phone call. To prevent multiple phone calls, tweets sent within a short period, are batched together and spoken in one phone call. For most people, this is fine. In the future, the plan is to add filtering, so that you only get calls when certain people (eg. in one of your lists) tweet you.

By presentation time (around 6:30 PM on Sunday) we had the basic product working, from signing up on the Speak It, Baby! web site to making phone calls with new tweets.

Due to the limited timeframe, we weren’t able to get approved for the Twitter Streaming API, so we decided to drop the DM feature, and just focus on @replies until we get access to the API. As you can guess, the current way of detecting new tweets is to continuously poll search.twitter.com with a list of interested users. (If your tweets are protected, you currently can’t use the service.) Finally, incoming tweets are correlated to registered users and stored into a CouchDB database hosted on Cloudant.

A node.js server monitors the _changes stream from CouchDB and builds up a queue of tweets, for which phone calls need to be made. It uses the Tropo Sessions API to create new outgoing phone calls and manages any phrases the callee might say on the call.

Overall, it was a wonderful experience and I’d do it again. I consider myself a winner anyway since we pretty much launched something that users can start using right now :) So sign up today and wait for someone to @mention you, or tweet @ammmir and I’ll be happy to oblige!