IMWT Blog

TakeMyTeam: Building on Travel APIs

On Saturday the 8th of October I reached a major milestone on a personal project. TakeMyTeam.com was rolled out to the world. It was originally intended to be a quick solution to one very specific problem, but its development took on a life of its own and grew into something I’ve been truly proud to show people and talk about. It’s also my entry in Skyscanner’s “Build with Skyscanner” competition.

With the development to get it “competition ready” complete, now seems like a great time to reflect on the efforts of the last few months.

So what is it? And why does it exist? Let’s start at the beginning…

The Idea

Actually, before I start I’m going to back up for a second and give some background information. The IMWT team is distributed all over the world. There are team members spread from Hobart to Stockholm. It’s awesome that we all manage to work so well together remotely, but it means that face-to-face time is fairly scarce.

With that bit of background out of the way I can start the story. I was coming to the end of a phone call with Freddy when he mentioned that as a reward for the team’s performance over the last year we’d be having a get together. No destination had been decided for it and there was going to be a little competition to see who could pick the best place.

This was pretty exciting. Aside from giving me the chance to escape the dreary Melbourne winter it was an interesting problem to solve: how do you pick the optimal destination for people spread all over the world? I wasn’t sure where people would be travelling from or where they might like to travel to, so manually comparing the costs of travel from place to place was out of the question.

And then the idea came: I could write a tool which would let people enter their own parameters. “I have one team member in Melbourne, two in Sydney and one in London and I want to compare the costs of taking everyone to Perth, Kuta or Honolulu”.

Surely there were APIs which would provide the costs of flights, accommodation and food. All I had to do was tie them together! Easy peasy, a few hours of development at most!

The Development

Hofstadter’s Law: It always takes longer than you expect, even when you take into account Hofstadter’s Law.”

 – Douglas Hofstadter

It took more than a few hours. The first step was to find APIs which would provide the information I needed. Finding a good API for flight costs was easy enough – Skyscanner provides a great one. Finding a way to estimate food and hotel costs proved quite a bit more problematic.

Originally the plan for food was to use Zomato’s API and grab the first twenty restaurants for the selected destinations, then average the costs of a meal across those restaurants. This proved problematic for a couple of reasons:

  • Zomato didn’t have coverage of enough countries to meet my requirements.
  • The first results returned often weren’t representative of the average cost of food in a given place.

It also seemed like a crazy overhead to request a pretty large dataset just for the sake of calculating a single number.

I spent hours Googling and puzzling over this problem before I stumbled upon Budget Your Trip. They supplied the exact data I needed (for food and hotels) and they provided an excellent API for accessing it. I’m incredibly grateful to them for allowing me access to their API.

An unexpected difficulty was getting the two APIs to slot together nicely and recognise place names based on a common format. Luckily they both supported identifying places using GeoNames IDs. This provided a common identifier for origins and destinations.

So with my data providers all set up I got to work coding. At the beginning of the project I’d expected to build something really rough. I thought that I’d be the only person to ever use it. But when I mentioned to people what I was working on it generated a huge amount of enthusiasm. It turns out that other distributed teams have struggled with the exact problem I was trying to solve. That — along with my discovery of the Build with Skyscanner competition — drove me to create something much more polished than I’d originally planned.

The Result

It worked!

takemyteam

Unfortunately by the time it was in usable state the IMWT team trip (an amazing week at Club Med Cherating in Malaysia) had already come and gone. But TakeMyTeam is everything I’d originally set out to build and more.

I think it’s a really powerful tool for distributed teams to choose a destination to get together. The deadline for Build with Skyscanner has passed but this is something I intend to keep on developing and the planned features list keeps on growing.

Thanks to Freddy for providing the original spark for the idea (and for the trip to Malaysia). Check it out! I hope it’s useful for you!

Leave a Reply