SaaS Platform

Multi-Tenant Business Automation Suite

WhatsApp-first operations for clinics, CRM, and customer inbox — one platform, many tenants

multi tenantwhatsapp automationoperationsai automation

Overview

We designed and delivered an end-to-end digital operations suite: marketing site, customer dashboard, WhatsApp inbox, CRM pipeline, clinic front-desk, and a shared API — all multi-tenant from day one.

Context

Small and mid-sized businesses in India need WhatsApp as their primary customer channel, but stitching together inbox, CRM, appointments, and billing across disconnected tools creates chaos. Kaana needed a unified system where each client gets their own workspace without deploying separate infrastructure per tenant.

Real-world scenario

A dental clinic group wants to run marketing on their own domain, manage leads in a CRM, handle WhatsApp conversations in a shared inbox, and operate daily patient flow from a front-desk app — while the platform owner provisions new clinics in minutes from an admin console.

Constraints

  • Multi-tenant isolation via JWT and hostname-based tenant context
  • Single backend API serving inbox, CRM, clinic, and platform apps
  • Production deployment on GCP Cloud Run with custom domains per product
  • WhatsApp Business API (Meta) integration with webhook verification
  • Wildcard subdomain routing for per-tenant URLs (e.g. tenant.inbox, tenant.crm, tenant.clinic)
  • Low ops overhead — serverless containers, Secret Manager for credentials

What we built

  • Built six coordinated applications: marketing (Next.js), platform dashboard, BotIQ inbox, PropCRM pipeline, clinic desk, and Express API backend
  • Implemented platform-admin provisioning API to create tenants, default admin users, and product links in one call
  • Wired WhatsApp Meta provider with conversation routing, lead capture, clinic booking flows, and broadcast support
  • Deployed all services to GCP via Cloud Build with environment-specific VITE build args and Secret Manager bindings
  • Configured global HTTPS load balancer with host-based routing to route 15+ custom domains to the right Cloud Run service
  • Added Razorpay-ready billing hooks, Resend email, and JWT auth with username-or-email login per tenant

Architecture

  • Internet → Global HTTPS Load Balancer (single static IP) → URL map routes by hostname
  • Cloud Run services (asia-south1): web, platform, inbox, CRM, clinic, API — each behind serverless NEGs
  • Shared API (SQLite + GCS backup bucket) handles auth, tenants, WhatsApp webhooks, leads, appointments, analytics
  • Frontends receive build-time API URLs; locally proxied to port 3002 for full-stack dev
  • Optional Render blueprint for API with persistent disk as alternative hosting path

Integrations & platforms

  • Meta WhatsApp Business API (messages, webhooks, phone number ID, verify token)
  • Razorpay payment keys (platform billing)
  • Resend transactional email
  • Firebase (optional clinic auth overrides)

Reliability & security

  • Secret Manager for JWT, WhatsApp tokens, admin credentials — never in source
  • Health check endpoint on API; Cloud Run min/max instance tuning per service
  • Tenant slug validation on login; platform admin vs tenant user role separation

Outcomes

  • One codebase serves unlimited tenants — no per-client deployment
  • Clinic, CRM, and inbox share conversation and lead data through one API
  • Live production stack on kaana.in subdomains with SSL managed certificates
  • Platform admin can provision a new client with default credentials and deep links in under a minute

Technology stack

Frontend

Next.js 16React 19ViteTypeScriptTailwind CSS

Backend

Node.jsExpressSQLitebetter-sqlite3JWTbcrypt

Integrations

Meta WhatsApp APIRazorpayResendTwilio (optional)

Infrastructure

GCP Cloud RunCloud BuildArtifact RegistrySecret ManagerGlobal HTTPS LB

FAQ

What products are included in the Kaana suite?

Marketing site, platform dashboard, BotIQ WhatsApp inbox, PropCRM pipeline, clinic front-desk app, and a shared Express API — all multi-tenant on GCP.

How are new clients provisioned?

Platform admins create tenants via a provisioning API that returns inbox, CRM, and clinic URLs plus default credentials in under a minute.

Which cloud provider hosts production?

Google Cloud Platform — Cloud Run services behind a global HTTPS load balancer with Secret Manager for credentials.

Related services

For social · LinkedIn hook

Most businesses don't need another app. They need one system that connects WhatsApp, CRM, and daily operations.

  • Problem: disconnected WhatsApp, CRM, and front-desk tools for SMBs
  • Solution: multi-tenant suite with shared API + per-tenant subdomains
  • Stack: Next.js, Vite, Express, GCP Cloud Run, Meta WhatsApp API
  • Outcome: provision new clients in minutes, one deploy serves all tenants

Need WhatsApp automation, multi-tenant SaaS, or an operations suite for your industry? We design the full system — not just the UI.

Discuss a similar project

Related work