Every time you click to book a ride on the Grab app, the machinery that clicks in the background crunches some serious numbers to pair you with a driver.
It’s “staggeringly complex,” as Grab’s head of engineering, Ditesh Gathani, put it in an interview with Mashable.
Underneath the seemingly simple process of booking, the system has to achieve a few goals, such as: providing the passenger with a driver, at reasonable cost within minutes; and to do this with as few buttons to press, and fields to fill in as possible.
It also runs predictive analytics in real-time to figure out where demand will be, so the app can tell drivers where to go in the next few hours. Add that to machine-learning, with the system figuring out your routine and filling in where you want to go on some days.
And it balances live demand and supply against pricing algorithms so an attractive fare (to both driver and rider) can be recommended.
“All that, in the order of milliseconds,” Gathani said, taking a breath.
The ride-sharing app is Uber’s biggest competition in Southeast Asia, handling well over 1.5 million bookings a day across Singapore, Malaysia, Indonesia, Thailand, Vietnam and the Philippines.
Its driver network has crossed 630,000 across the region, which has stretched beyond private cars and taxis to include motorcycles and, just recently, private shuttle buses and coaches for hire.
Gathani himself has seen the engineering team grow from 10 to its current size of several hundred, across three offices in Singapore, Seattle and Beijing.
Most of the software engineers focus on features and building out Grab’s advanced machine learning engines, while the backend is offloaded onto Amazon Web Services, so there are fewer needed to tend to server room stuff, he said.
The team rolls out an estimated 100 upgrades to the system per week in the background, without users noticing.
Grab has a dedicated team of economists that determine what fare you pay.
The specialists Grab has hired now also include a team of economists, chiefly responsible for the fare you pay.
“From an engineering perspective, dynamic pricing systems are so complicated,” Gathani said.
To arrive at a single fare at a given time, the system works through several economic models, and takes into account real-time demand and supply.
Coupon codes also affect rider behaviour significantly, and the system needs to be smart enough to hand out monetary incentives to drivers, to attract more to high-demand areas if it detects a surge.
How data changes your taxi fare
When Grab started in Malaysia as MyTeksi several years ago, the model was far less sophisticated, he noted. “We had a naive approach to pricing. We’d have a [pre-set fare] and let people offer tips to drivers to pick up their requests — and drivers knew. So [drivers] would wait and not accept rides until tips started coming.
“It made passengers furious,” he said.
Grab — and other companies like it — have become so reliant on data.
Today, the system is a lot smarter. It’s mapped each driver on its network, and is able to measure how likely someone will accept a job. The model is self-learning, so it refines itself over time based on how people behave on the app, and autonomously figures out who to send jobs to, and when.
“We’re able to tailor jobs to drivers, right down to the individual,” said Gathani.
Grab — and other companies like it — have become so reliant on data that nearly every department works through obsessive tracking information for daily operations.
The marketing team, for example, combs through terabytes of data with analysts to measure how well promo codes work, he said.
And is it true that people who cancel rides get penalised?
“Yep,” he nodded. “Cancelling has a tremendously negative effect on the ecosystem.”
The system learns to sift out serial cancellers and penalises them by lowering the chance of them getting a ride.
Only about 5 percent of Grab’s users are classified as serial offenders. If you’re among their ranks, you can still train the machine to lift you out of the red zone by behaving a little more responsibly.