== 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
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.