Work

case study · 2021

Shipping a chatbot backend at Ruangguru

Ruangguru · Senior Software Engineer, backend lead

  • platform
  • chatbot
  • go
The constraint
A hard launch date tied to a national exam season, a new team, and a messaging pipeline that was getting expensive.
Who I talked to
product owner

Context

Ruangguru is one of Indonesia’s largest education platforms. In 2020 it was preparing Roboguru, a chatbot for students, and the first release had to land in time for the national exam preparation season when demand peaks. I was asked to lead the backend team for that release while also owning the marketing platform’s integrations.

The constraint

The date could not move, the team was new to each other, and the marketing pipeline that would announce the launch throttled outbound messages through Google Pub/Sub at a cost that was growing faster than the audience. We needed a first release that held up on launch day and a messaging layer that did not surprise finance.

Architecture

graph LR
S[Student<br/>chat] --> API[Roboguru backend]
API --> Q[Shared queue library<br/>replaces Pub/Sub]
Q --> W[Workers]
W --> H[HubSpot]
W --> MSG[Outbound messages]
API --> DB[(PostgreSQL)]

The Roboguru backend served the chat product. Around it, a shared queue library I wrote replaced Pub/Sub for throttled marketing sends: the same throttling guarantees, a fraction of the cost, and a package other teams could import. The HubSpot integration for marketing workflows ran through the same workers.

What I did

I led the backend team: timelines, task breakdown, code review, and the daily contact with the product team so that scope decisions were made early rather than on launch week. I wrote the queue library and initiated the HubSpot integration, and I sat in the core backend design discussions with the VP and engineering manager where our backend patterns were set.

The product owner was the person I talked to most. Because that channel was direct, the launch scope shrank twice before it grew: we cut two features that would not be ready and shipped the one that mattered.

Outcome

Roboguru’s first release landed on time and, within the year, generated the highest number of fresh contacts of any channel. The queue library reduced Pub/Sub cost and is still used by other projects for the same problem. The team that shipped it stayed together for the next releases.

Stack

GoGoogle CloudPub/SubHubSpotPostgreSQL

Related