Case study · Live SaaS · 2026
Every branch's Google rating, in one dashboard.
I designed, built and run SemuaCabang, a multi-tenant web app for businesses with many locations. It tracks the Google rating and reviews of every branch, flags the branches that are slipping, and sends every 1–3 star review to the team's Telegram group.
- Downtown4.95
- Riverside4.90
- Airport Road4.80
- North Mall4.70
- Station Square4.60
“Long queue, only one cashier open.”
Illustration with sample data. Real client data is private.
The problem
Owners can't check 20 Google Maps pages every week.
Businesses with many branches (pharmacies, clinics, restaurants, laundries) live on their Google rating. A drop from 4.9 to 4.6 at one branch costs customers, but nobody notices until it's too late, because checking every branch by hand doesn't scale.
- Bad reviews sit unanswered for days.
- Head office can't see which branch is slipping.
- Branch managers find out last.
What I built
A complete product, not just a script.
Branch dashboard
Every branch on one screen, colour-coded Safe, At risk or Danger against the owner's own targets. Rating trends over time and a permanent archive of every 1–3 star review.
Telegram alerts
New 1–3 star reviews go straight to the team's group with the branch name and review text. A weekly summary shows which branches went up or down, and an honest "all clear" when nothing bad came in.
Multi-tenant SaaS
Each client gets a private dashboard link, owner and manager logins, and its own Telegram group. Clients can self-register for a free trial.
Admin panel
One place to manage clients: packages, branch limits, billing status (Running, Hold, Stop), custom pricing per client, and an estimate of the Google API cost.
Automatic setup
Add a branch by name and city. The system finds its Google Place ID and pulls the first data on its own, so onboarding a 20-branch client takes minutes.
Billing lifecycle
Renewal reminders 7, 3 and 1 day before expiry, a hold when payment is late, and automatic data clean-up after the grace period.
How it works
Simple architecture, low running cost.
Engineering details
Built to run unattended.
- Cost control: branch search asks Google for IDs only (a free request), photos are never fetched, and the pull schedule is configurable. A branch costs about 5 Google calls a month.
- Security: Firestore rules give each client access to its own data only, with a separate developer role. The rules have their own automated tests.
- Reliability: retries for Telegram, partial failures don't stop the run, and the report says which branches couldn't be refreshed instead of hiding it.
- Testing: unit tests for the data and message logic, emulator tests for the database rules, and end-to-end browser tests with Playwright.
Work with me
Want this for your locations or your agency's clients?
I can set up review monitoring with alerts to Telegram, Slack or email for your business, white-label it for your agency, or build a similar dashboard on top of any API. I'm Yoga, a developer based in Indonesia, working remotely with clients in any time zone.