Case

Multi-Tenant MEO SaaS for Inbound-Heavy Retail

A two-layer SaaS — operator admin plus client-facing SPA — handles monthly insight reports, AI-drafted bilingual posts, AI review replies with low-rating alerts, and policy self-check, with a human approval queue between every AI step.

Multi-Tenant MEO SaaS for Inbound-Heavy Retail

Client

Name
Multi-store retail / F&B operator
Business
GBP-managed local businesses (10+ locations)
Location
Tokyo / inbound-heavy districts
Revenue
Per-store monthly retainer model
Staff
One operator agency + N client stores

Demo

Operator admin + client SPA — 2.5-minute walkthrough

What was breaking

  1. 01

    Posts are written one store at a time — no consistency across locations and no way to scale without hiring

  2. 02

    Review replies pile up across multiple languages; same-day response is structurally impossible

  3. 03

    Profile-policy violations slip through manual review; suspensions cost a month of visibility

  4. 04

    Operator burns context-switching between tenants; no single approval queue

  5. 05

    Tenant data lives in spreadsheets; no clean isolation when a client churns

Before / After

MetricBeforeAfter
Post creation cycleManual per-store1 SPA / month
Review reply turnaroundDays, single languageSame-day, multilingual
Policy-violation riskManual reviewAI self-check + human approval
Operator loadPer-store context-switchSingle approval queue
Tenant isolationSpreadsheet-basedRLS-enforced per client

Notes from the build

Context — Inbound-heavy retail and F&B operators sit on Google Business Profile real estate that decays the moment posting cadence slips. Manual operations don't scale past a handful of stores. The brief was to build a production SaaS that lets a single operator agency run dozens of stores without losing the human-in-the-loop discipline that keeps GBP listings from being suspended.

Architecture — Two interfaces, one shared backend.

The operator admin is the agency-side console: monthly insight reports auto-batch on day 1; AI-drafted posts and review replies queue here for approval; profile-improvement suggestions escalate from data analysis. Everything passes a human before it touches Google.

The client SPA is per-store: one URL per location, surfacing last month's results and this month's post setup on a single page. The client uploads photos, writes one short context paragraph, and the AI handles bilingual copy. No login fatigue, no admin burden on the merchant.

Underneath: Supabase with row-level security per tenant, n8n workflow group orchestrating GBP API calls, OpenAI / Claude for bilingual generation, and a multilingual auto-detect layer for incoming reviews.

The Two-Layer Decision — The temptation was to build a single admin app and onboard merchants directly. The two-layer split exists because the agency owner is the only person who should ever press "publish." Merchants see results and provide raw material; the agency runs operations at scale. The SaaS encodes that operating model into the product.

What Got Cut — No automated GBP onboarding (manual setup is a one-time cost the agency absorbs). No AI-only publishing (every post and reply is approved). No customer-facing analytics dashboard (the monthly insight email is enough). Each cut sharpened the product around the agency operator's actual job.

Build a system like this for your operation.

Bring the workflow you would describe to a new hire. Thirty minutes is enough to identify where automation pays back.