Reepli.com: An In-depth Look

Posted by Tejus Parikh on November 10, 2008

Reepli.com is the Atlanta Startup Weekend 2 project created by Erik Peterson, Mark Luffel, Hamed Hashemi, Amro Mousa, Joe Uhl, and me.  I’m really proud of how the team worked together and the amount of stuff that we were able to get done in a very short period of time.  We closed out 45 issue items over the course of 48 hours.  That’s a pretty good clip. Since the site’s still in private beta and the seed data took over the presentation, I’m going to present what we built in a little more detail.

Conversations

The focus of Reepli is conversations. The system allows you to not only find conversations, but also reply to them through the system. Currently we support responding to twits on Twitter and Wordpress blogs that don’t have captchas. The conversations screen is the center of the app. This is a list of recent searches that have match the keywords defined in a campaign. We’ve written a background process that fetches new results from google and twitter every 10 minutes. The front end also refreshes every 5 minutes. You can either choose to ignore a message or reply to it. Twitter replies happen inline. With each campaign, you define your form responses. You can always use a form response, or modify it to choose your own. There is a module that reformats your English to give the appearance of customization. However, this happens at message creation time right now and is not integrated into this view.

Identities

Multiple identities are crucial to any successful marketing campaign. It needs to appear that you are not the only one spreading the message. Or, if you are a support department, you may want to appear as the only contact point for consistencies stake. Reepli is flexible and will let you use the system however you want. You can select an identity per-response.

Campaigns

All conversations are tied to a campaign. A campaign defines the search terms (or keywords) that require you to respond. You can activate and deactivate campaigns depending on your needs. The keywords for an active campaign are passed into the search modules every 10 minutes. The search modules scan Google and Twitter and store the results of their match in a database. The search module also filters out non-blog results on Google. This means your agents won’t have to waste time on non-actionable webpages. This is the overview of the campaigns screen. You can edit the name of a campaign: The details page for a campaign not only show the keywords, but also the pre-canned replies defined for each campaign. One of the neater and more useful features of the app is the system will translate the text on edits. Subtly changing the text you are replying with will help prevent your responses from getting incorrectly marked as spam. Look closely at the following screenshots:

The toolset

Reepli.com is written in Ruby on Rails. For AJAX and effects, we use the JQuery. We’ve configured the database using ActiveRecord Migrations. On our dev boxes we were running SQLite. Our production server uses PostgreSQL. The app is deployed on a Slicehost slice running Ubuntu Hardy. The appserver we chose is Passenger. The code is hosted on GitHub and is deployed to the server via capistrano. We’ve also unit tested a significant portion of the system with RSpec. This was invaluable in isolating the faults between the front-end and back-end.

Revenue Model

This is easy. Charge people somewhere between $7-$25/mo for accounts (depending on the costs of the system).

What’s Left?

We built this thing in a weekend. The team was very talented and super-focused, but there’s only so much you can do in that little time. There are a few show stopper bugs. They aren’t hard to fix, we just didn’t get them before demo time (also why the screen shots show a local IP and not reepli.com). The hard problems of scalability are still there. Support for responding to more platforms needs to be added. However, for a weekend project, the code is solid, well written, and does a lot. If the eBay auction doesn’t work out, a few of us might actually pick it up eventually. There were quite a few “damn this is useful” moments through the course of the weekend.

Tejus Parikh

I'm a software engineer that writes occasionally about building software, software culture, and tech adjacent hobbies. If you want to get in touch, send me an email at [my_first_name]@tejusparikh.com.