Custom System · Malaysia

WhatsApp lead-generation platform

Multi-tenant SaaSStripe billingRLS isolationServerless
WhatsApp lead-generation platform
Snapshot

A multi-tenant lead-generation platform that collects fresh Malaysian SMB prospects on demand, pairs every lead with a ready-to-send personalised WhatsApp opener, and is built as a self-serve subscription product — signup, free trial, and tiered Stripe billing all in the platform.

Business
Creative studio · SaaS product
Market
Malaysia
Format
Custom System
Status
Delivered
21
Search terms, one vertical
67
Malaysian cities covered
90d
Dedup window per campaign
15
Opener message variants
How the system runs
Collect
One click, queued worker
Dedup
90-day window + blacklist
Personalise
Multi-framework openers
Send
Click-to-send WhatsApp links
Convert
Statuses + sales playbook
Business context

A creative studio relied on WhatsApp cold outreach for new business, but prospecting consumed the pipeline it was meant to fill: finding fresh businesses, verifying numbers, avoiding embarrassing repeat contacts, and writing opening messages one at a time. The workflow clearly generalised — other merchants had the same problem — so the internal tool became a product.

The challenge

The system had to deliver fresh, deduplicated prospects daily with messages worth sending — then scale from one user to many tenants with hard data isolation, self-serve onboarding, subscription billing, and infrastructure lean enough to run with effectively zero operations.

  • Outreach needed a daily supply of fresh prospects that had never been contacted before — dedup had to be systematic, not memory
  • Opening messages had to feel individually written at a volume where writing them individually was impossible
  • Turning one user into many tenants meant hard isolation: no tenant could ever see another's leads
  • Growth couldn't depend on manual onboarding — signup, trial, and billing had to run themselves
  • The economics only worked if the platform ran with near-zero infrastructure and operations cost
How Undertide responded
Decision 01

Collection as a controlled pipeline

Merchants trigger collection on demand from the dashboard; a queued worker gathers ~100 fresh prospects per run through campaign-specific source lanes — one vertical alone spans 21 search terms across 67 Malaysian cities — deduplicated against a 90-day per-campaign window and across every tenant — no two merchants ever receive the same prospect. A database constraint permits one open request per merchant, campaign, and day; stale jobs are reclaimed and retries stay idempotent — the queue rules are structural, not conventions.

Decision 02

Messages worth sending

Every lead ships with a personalised opener selected from a 15-variant, multi-framework message engine — stable per lead, bilingual where the vertical demands it — delivered as click-to-send WhatsApp links. The merchant's daily workflow collapses to: open list, review, tap, send.

Decision 03

Tenant isolation enforced by the database

Every row is stamped server-side with the owning tenant, and row-level security policies derived from the authenticated identity make cross-tenant access structurally impossible. The isolation model was tested adversarially — a privilege-escalation suite attempts every crossing and expects rejection on all of them.

Decision 04

Self-serve growth loop

Signup auto-provisions a workspace, a free trial delivers real leads immediately, and Stripe Checkout with webhook-driven tier sync handles subscription state — the database mirrors Stripe rather than trusting client claims.

Under the hood

Deliberately serverless: a static frontend, Postgres with row-level security, serverless edge functions, scheduled jobs for retention and billing sync, and CI-runner workers for collection — no servers to patch, scale, or babysit.

What was delivered
01On-demand lead collection pipeline with quotas and exclusion filters
0290-day dedup windows and global contact blacklist
03Personalised opener engine — multiple frameworks, EN/CN bilingual
04Multi-tenant isolation enforced at the database layer
05Self-serve signup, free trial, and tiered Stripe subscriptions
06Merchant dashboard with daily lists, statuses, and sales playbook
07Owner global view across all tenants
What changed
  • Merchants now collect fresh, pre-deduplicated lead lists with one click instead of hours of prospecting
  • Every lead now arrives with a ready-to-send personalised opener in the right language
  • New customers can now sign up and trial the product entirely self-serve, with tiered subscription billing built in
  • Tenant data is now isolated at the database layer and verified by adversarial tests
  • The platform now runs on serverless infrastructure with near-zero fixed cost

Need a similar result for your business?

If a manual workflow is eating the time it's supposed to create — or an internal tool deserves to become a product — tell us what it does. Undertide will assess fit and recommend the right scope.