I tried to do some marketing by connecting with people on Twitter. At first I thought a simple search on twitter to get the relevant tweets and then reply to them. It works, but it gets boring pretty fast and I abandoned it. Then I saw Guy Kawasaki plugging hockey.alltop.com to all that dared talked about hockey on twitter. This was basically what I was doing, but the fact it was automated was obvious. The replies were not very relevant and this was the reason why I was not willing to go that route.
That is when I thought about Amazon Mechanical Turk. I always wanted to use it, but hadn’t really had a project for it. Now was my luck, I logged in and was denied because Amazon Payment was restricted to U.S. credit card. It slowed me all of 3 minutes. In fact once your account is setup you can use any credit card you want, not just U.S. issued ones. back to twitturk, I now had all the ingredients so I put together a little ruby script.
First it reads the feeds for a query on search.twitter.com. Each is posted as a hit on mechanical Turk, a “hit” is the name of a unit of work. A hit is basically a form to input the best answer for the original question. Here is the tricky part, you want to allow the worker some leeway, but not too much. It must be possible to say the original twit doesn’t warrant an answer, while the answer must contains all the right stuff for your goal. Here is a sample scenario.
If the original twit is “Going to play hockey with the guys, I just love this game”. Then it is probably ok to answer with a link to hockey.alltop.com. While if the original twit is “My significant other is still glued to the TV watching hockey, I just hate it”, then you may want to pass. After that there is the leeway in the response you want to leave the worker. You want the link to be correct, but at the same time you probably want a human to craft an answer with some reference the original tweet. I think that an answer that target something from the query is much better. Mechanical Turk allows some validation on the fields of the Hit. like mandatory, maximum size and regular expression. This allows to at least validate the answer will fit in 140 characters and contain a URL that leads to the page you wanted to target.
When the script is restarted it checks for completed hits with an answer and post them to twitter. I kept the duration for the Hit pretty short, but there is some delay. On average I would say less than 60 minutes from query to answer. You also have to monitor Mechanical turk so the work is done properly, but it is not too bad and you can just let the hit be, they get auto-approved after a fixed period of time. Once the tweet is posted, the script follows this person and will not send them another tweet unless they are following back.
I ran this little experiment for about 3 weeks, the result where interesting. At 0.055$ per Hit, I found it a bit too expansive for my case. At a lower price per hit, I was not getting enough Amazon workers. In the ends this means that for about the price twitterhawk is charging per tweet you could have someone decide if a tweet is warranted and compose one. I guess it really depends on the value you put on your tweets. Also I learned that most people didn’t saw this as spam. I was bracing myself for outcry, but just some people complained. I was thinking I would have to pull the plug in 2 minutes, but it was not the case in the end. In fact if you look at alltop you’ll see not that many reply in outcry. I really feel like I’ve created a monster, but it was fun.