Supply Crunch Allocation Microservice

A new microservice to improve the supply allocation process for Grab's Transportation service.

Overview

  • Company:

    Grab Holdings Inc.

  • Timeline:

    : June – August 2021

  • Role:

    Backend Software Engineer Intern

  • Team:

    Dispatch Backend Engineering

Skills

  • Technical:

    GO, Git, Kibana, postman, Conveyer, Jenkins, Protobuf

  • Soft:

    Asynchronous collaboration, remote work, communication, presentation

Problem

In the recovery markets post-COVID, there have been observed changes in marketplace patterns where supply has been dwindling due to changes in earning expectations. In undersupplied areas in SG (e.g. morning peaks, weekends), it has been observed that ~10% of all bookings are unallocated due to a sheer lack of driver candidates nearby (% no supply), especially during the peak hours. The main goal was thus to moderate un-allocation rate due to undersupply by prioritizing drivers who will move towards a predicted undersupplied location.

Objective

The key objective is to prioritize jobs that head towards predicted undersupplied areas ahead of time. This means that all else being equal, it would be more valuable bring drivers to supply crunched areas than anywhere else. The first step is to first predict where the undersupplied areas are. This will be done by reading signals from existing supply services and real-time data within the last 10 minutes to predict for ifferent area-time levels. The next step would then be prioritizing drivers that brings them to these areas.

Outcome

The outcome for this project is a new microservice that will hopefully improve supply allocation during busy times. My contributions to this project will be taken further by other engineers on the time to help improve supply allocation for all Grab users in the future, allowing more optimized pickup time and thus a better overall Grab experience.

Takeaways

I worked mainly with 2 other engineers on the project to build this new microservice from scratch. I didn’t have much backend experience coming into this internship, and so I was nervous starting from scratch and learning everything. However, I am very grateful for this opportunity because I learned a lot from this experience and was able to get hands-on experience in GO backend service development from scaffolding a service all the way to delivering the service on production. I learned to use many technologies and frameworks commonly used in Grab like GrabKit, gRPC, Kibana, and Conveyor deploy pipelines. The whole development to deployment process for the SCA project was a very educational experience for me and I’m very grateful for all the help and advice that I have gotten. Through this project, however, I realized that though I did enjoy the engineering process, I much preferred frontend and design work in comparison to backend. Although I knew that at some point, my work will be useful in the future, the lack of ability to see how my work will lead to a impactful contribution makes me realize that I am not suited for backend work. Thus, from this project, I found that I wanted to focus on the frontend and design path in the future.