All workCase study
Sheelaa.com · Sheelaa M BajajLive in production

A unified lead engine that captures every DM, scores every prospect, and never sleeps.

Multi-channel lead capture and conversation system that ingests every WhatsApp and Instagram message, scores and syncs to Sheets, hunts prospects across Reddit / X / Quora / Facebook every six hours, mines real questions into a content calendar, and tracks rankings, AEO citations, schemas, and voice drafts in one pane.

Sector
Numerology & spiritual guidance
Region
India
Role
Solo build · end-to-end
Timeline
Live, ongoing
Unified inbox — every WhatsApp and Instagram lead in one place, sorted by activity, with totals on the dock.
Live · 3,440 leads

Unified inbox — every WhatsApp and Instagram lead in one place, sorted by activity, with totals on the dock.

01 / 05
The problem

Three inboxes, no shared history, no pipeline.

Sheelaa.com receives leads across three fragmented channels, WhatsApp, Instagram DMs, and direct site enquiries. Conversations lived in three different inboxes with no shared history, no lead pipeline visibility, and no way to track what was asked, who replied, or who paid. The team was missing leads, double-replying, and had zero analytics.

They also had no top-of-funnel discovery. Every lead came from people who messaged Sheelaa first, the business was entirely dependent on inbound traffic.

Architecture

One Express server, five integrated layers.

An Express server on Render exposes a catch-all webhook that platform-detects every inbound message, normalises it, and writes through to Postgres. Background loops sync every 15 minutes (platforms + Sheets) and every 6 hours (scraper).

System architecture
WhatsAppTrikon APIInstagramMeta Graph APIManyChatLegacy pathExpress webhookCatch-all routerPostgresSupabaseDashboardVanilla JS SPAGoogle SheetsApps Script webhookScraperReddit · X · QuoraProspectsHot / warm / cold
The five layers

Capture, store, surface, sync, and hunt.

01 · Layer

Multi-platform message capture

WhatsApp via Trikon, Instagram via direct Meta Graph API, and a legacy ManyChat path kept alive for backwards compatibility. All three normalise into a single messages table with a role tag, platform, and timestamp, so the team sees one history per lead, not three.

Unified inbox — WhatsApp + Instagram leads in one feed, totals on the dock.
Live · 3,440 leads

Unified inbox — WhatsApp + Instagram leads in one feed, totals on the dock.

02 · Layer

Lead pipeline + conversation database

Postgres on Supabase with a per-lead state machine (new → welcomed → collecting_info → insight_sent → trust_sent → curiosity_sent → offer_sent → payment_sent → paid). Auto-extracts name, DOB, and email from natural-language messages.

State machine surfaces in the inbox — every lead carries its current stage.

State machine surfaces in the inbox — every lead carries its current stage.

03 · Layer

Team dashboard

Single-page app, password-protected. Live conversation view per lead, manual reply box that sends through the original platform, daily/funnel stats, prospect quality breakdown, CSV export, archive-and-cleanup tooling. Vanilla JS, ships faster than React for an internal tool.

The internal SPA — comfortable / compact toggles, search, analytics drawer, sync.
Internal SPA

The internal SPA — comfortable / compact toggles, search, analytics drawer, sync.

04 · Layer

Google Sheets sync

Every lead update fires a webhook to a Google Apps Script Web App. Bulk sync runs every 15 minutes in chunks of 20 with rate-limiting. The team keeps working out of Sheets, the system meets them where they already are.

Live Google Sheet — every lead row auto-synced from Postgres in 15-minute chunks.
Sheets sync

Live Google Sheet — every lead row auto-synced from Postgres in 15-minute chunks.

05 · Layer

Autonomous lead scraper

Searches Reddit, X, Quora, and Facebook every 6 hours for people asking about the services on offer. Three-phase pipeline: global Reddit search → targeted subreddit monitoring → Google CSE for X and Quora. A custom 0-100 relevance scorer (intent signals, location, recency, engagement, spam filters) classifies each prospect as hot / warm / cold and writes to the prospects table.

Prospect Finder — hot / warm / cold leads scored across four platforms.
Outbound scraper

Prospect Finder — hot / warm / cold leads scored across four platforms.

06 · Layer

Content Pulse — questions in, calendar out

The same scraper feed is mined for genuine questions, clustered by topic (tarot, numerology, healing, marriage, career, name correction). Each cluster gets a priority score and a calendar of pre-built content ideas. The team writes against demand instead of guessing what to publish, with a digest fired at the end of each cycle.

Content Pulse — topic clusters with priority scores and a publishing calendar.
Content engine

Content Pulse — topic clusters with priority scores and a publishing calendar.

07 · Layer

Automated SEO & AEO

Daily Google Search Console snapshot for tracked keywords, plus a Brave-based competitor lite-rank for the same set. AEO citations tracked across Claude, Groq Whisper, and DuckDuckGo. Schemas regenerated on demand, internal linking audited, voice → blog drafts queued automatically. The dashboard is honest about timelines — head terms move in 8–12 weeks, local and long-tail in 2–4.

SEO & AEO — rankings, citations, schemas, and voice drafts in one pane.
Search visibility

SEO & AEO — rankings, citations, schemas, and voice drafts in one pane.

The numbers

Live metrics, captured before publishing.

3
channels unified
5
integrated APIs
24/7
production uptime
every 6h
autonomous prospect runs

Total leads captured · messages logged · response-time delta · prospect breakdown · conversion rate, pulled from the live dashboard, dropped in once recorded.

Stack

Boring, reliable, owned.

Node.jsExpressPostgreSQLSupabaseMeta Graph APITrikon (WhatsApp)Google Apps ScriptReddit JSON APIGoogle Custom SearchRender
What this demonstrates

The capabilities you'd be hiring for.

End-to-end ownership

Webhook plumbing, schema design, business logic, UI, scheduled jobs, deployment, all under one roof.

Multi-API integration

Five distinct external APIs cohabit in one cohesive system without becoming a tangle.

Pragmatic over perfect

Vanilla JS dashboard ships faster than React for a team-internal tool that two people use every day.

Autonomous loops

The scraper isn't reactive, it actively goes out and finds business while the team sleeps.

Working with non-technical clients

The Sheets sync exists because the team lives in Sheets. Meet people where they are.

Let's build · § IX

Stop bolting AI onto your business. Engineer it in.

Book a 30-minute scoping call. We'll either tell you what to build, or what to skip.

CET overlap 10:00-18:00 · DPA & SCC ready · Reply within one working day