Cases - Rentcars.com - Metasearches Integration

== Rentcars.com - Metasearches ==

One of the biggest challenges I faced when joining Rentcars.com as a manager was to help the team delivery a long wished feature: integration with travel metasearches.

First, a bit of business context for those who never heard about or doesn't make an idea of the importance of this type of customer acquisition channel. Every acquisition channel has a cost and a conversion rate. For example, Google isn't too expensive, but it also has a lower conversion rate.

Besides affiliate programs, which are paid based on sales only, not traffic (which is the best scenario), from the pay per click channels, the best one is a metasearch. People who came from a metasearch is not usually researching or planning. They decision are usually made. They are just looking for the best price. Thus, any click from there has a high chance to be converted to a reservation.

That said, rentcars.com wasn't able to integrate with any metasearches. The metasearches usually send the filters and conditions a customer is looking, and wait for 30 seconds for an answer. After this 30 seconds, it simply drops the connection and show results to customers. Rentcars.com integration interface was taking around 5 minutes to generate the response XML.

The first thing we've done, was to implement the Solr search engine, so queries would not hit the database directly, and some extra filters come handy. This implementation, along with code changes, and all maintenance routines in place, all staging tests, and so on, took around 3-4 months to be implemented. I thought this step would be enough to make it happen, but it didn't. Time to generate the XML dropped to near 2 minutes. A huge improvement, but far from what we need.

The second change was related to the serialized calls to partners web services - the biggest companies are well-designed and integrated. But our application was doing a lousy job with serialized calls. One after another. We created a nodejs app, which could open dozens of concurrent connections, and deal with response in promises as they were ready. Cool. This took another round of 3-4 months to be production ready. And yet the response time was fluctuating between 25 seconds to 35 seconds. Not good enough.

The last call was to profile the application with xdebug and webgrind. With this analysis, we spotted some strange behaviors, like over 900 select calls being made to database only to get the exchanges prices. For each offer available, it was going to database to check the dollar price, for example. Well, we spotted all those inefficiencies and changed the code accordingly. The result? Fast as 3.5 to 4 seconds. Blazing fast!

After we settled everything and turned on the metasearches, the next month sales increased by almost 17% above the expected trend. The project paid itself in less than a quarter.

And this is not all. The apps that were under development, were revamped to accomodate new filters and become way faster. We improved the website usability. But the pinnacle was the call center improvements. We could implement faster searches for them too, promoting the improvement of the average wait time, average time handle, average talk time, conversion rates, and so on. Their overall efficiency was improved, and as they were the biggest payroll, we had a major impact on business.

That's it, kids. This is one of my favourite stories on my IT career so far.