All work case study

Dolarindo Remittance Chat — a
WhatsApp bot for a money changer

Most money-changer inquiries in Indonesia happen on WhatsApp — today’s rates, whether a transaction can proceed. Dolarindo Remittance Chat answers them automatically: a WhatsApp Cloud API chatbot that handles language choice, live exchange rates, and transaction hand-off, backed by a Laravel operations panel where staff manage orders, branches, and every logged conversation. Around 300 transactions a month flow through it.

client Dolarindo Money Changerrole Developer · solostack Laravel · WhatsApp Cloud API · MySQLscale ~300 tx / month
Dolarindo Remittance · sign in
Dolarindo Remittance login
the brief

A money changer runs on WhatsApp. So does this.

For a money changer (valas), most customer contact happens in one place: WhatsApp. People ask today’s rates, whether a currency is available, how to send a transfer. Answering each one by hand doesn’t scale — and every missed message is a missed transaction.

Dolarindo Remittance Chat turns that inbox into a product. A WhatsApp chatbot greets the customer, switches language, shows live exchange rates, and starts a transaction — and a Laravel operations panel gives staff the other half: orders, customers, branches, currencies, broadcasts, and a full log of every conversation.

I built it solo on Laravel, the WhatsApp Cloud API, and MySQL. In production it handles roughly 300 transactions a month across Dolarindo’s branches.

at a glance

ClientDolarindo Money Changer
DomainMoney changer · valas
RoleSolo developer
ChannelWhatsApp Cloud API
Scale~300 tx / month
LaravelWhatsApp Cloud APIMySQLBroadcast
stack owned · 4/6
Design
Web
Mobile
API
Data
Infra
the chatbot

The whole front desk, in WhatsApp.

A guided conversation on the official WhatsApp Cloud API. Tap any to enlarge.

WhatsApp language and menu
Language & menu Greets the customer, offers
Bahasa / English, then a menu
WhatsApp live exchange rates
Live exchange rates Info Kurs — today’s buy / sell
for ~15 currencies
WhatsApp session end
Session flow Rate disclaimer + Kembali /
Akhiri Percakapan controls
the admin panel

Where staff run the operation.

A Laravel back office for everything the bot feeds. Tap any to enlarge.

under the hood

A bot and a back office, one Laravel app.

The interesting part is state: keeping a WhatsApp conversation, live rates, and an order ledger in sync.

WhatsApp Cloud API

The bot runs on the official WhatsApp Cloud API on a verified business number, driving language, menu, and session control through interactive reply buttons.

Live rate engine

Info Kurs pulls the current buy / sell rates for ~15 currencies and formats them into a clean, timestamped WhatsApp message — with an “indicative, not binding” disclaimer.

Laravel backend

One Laravel app drives both the bot’s conversation state and the operations panel, over MySQL — no separate services to keep in sync.

Every chat logged

Each conversation and order is persisted — the Chatbot Log and Orders tables give staff a full audit trail (thousands of entries) with statuses like Draft, Cancel, Direspon, Dibaca.

Operations panel

Staff manage customers, branches (cabang), currencies (valas), walk-in hours, and broadcasts — and update the status of every incoming order — from one web panel.

Running in production

The system handles roughly 300 transactions a month across Dolarindo’s branches, with orders arriving from both WhatsApp and the web.