MonoSkin Engine · Broadcast & Campaign Guide

How we talk to thousands of doctors, one doctor at a time.

Hi,

This is a quick read on how the MonoSkin Engine handles WhatsApp outreach end-to-end. It is written in plain language and also doubles as the onboarding doc for anyone joining the team. By the end of this you should understand what a broadcast is, what a campaign is, how the system protects doctors from being spammed, and where to look when something goes wrong.

The big idea: Every doctor we contact gets a personalised journey, not a mass blast. Even when we send to 500 doctors at once, each one progresses through their own private timeline, and the system stops talking to them the moment they ask us to.

The two ways to reach a doctor

When you open the engine and create a new broadcast, you choose between two modes:

ModeWhat it doesBest for
Single templateOne Meta-approved WhatsApp message goes out to every doctor in your audience, once. That's it.Announcements, reminders, alerts.
Multi-step sequenceA funnel. First message goes out, then the engine waits, then it sends a follow-up, and the follow-up depends on whether the doctor replied, ignored us, or tapped a quick-reply button.Nurturing, re-engagement, sample requests.

The broadcast lifecycle

Every broadcast moves through these four states. You can pause and resume any time before it completes.

Status flow · top to bottom
Paused Scheduled Running Completed
default
on creation
if you
scheduled it
cron picks
it up · 65% throttle
all recipients
processed

How a Single Template broadcast works (4 steps)

1
Pick your audience
Filter doctors by Tier (T1, T2, T3), city, or any other doctor attribute. The engine shows an estimated reach. You can also add doctors one-by-one from the Doctors page using the "Add to broadcast" bulk action.
2
Pick a template
Only templates Meta has approved show up here. If the template you want isn't approved yet, the engine has its own template designer (with AI assist) that submits it to Meta for you.
3
Decide when
Send immediately or pick a date and time in the future. Either way the broadcast starts paused so you can review before anything goes out.
4
Review and Resume
You see the doctor list, the template preview, the estimated reach. Click Resume and a small pop-up asks "Immediate or Schedule?" — confirm and the engine takes over.

The engine then sends the messages at a steady, polite pace — about 52 messages per second — which is 65% of what WhatsApp allows. We deliberately stay under the cap so our account stays healthy and Meta keeps us in their high-trust tier.

How a Multi-Step Sequence works

This is where things get interesting. A sequence is a flowchart of what the engine does over days or weeks, based on how each doctor responds. Below is what a real "nurture funnel" looks like:

Sample sequence · 3-touch nurture funnel
Send template
"patient_leakages"
Wait 72 hours
Did the doctor reply?
Yes
Stop · hand to MR
No
Send template
"reorder_prompt"
Wait 5 days
Did they reply now?
Yes
Stop · hand to MR
No
Send template
"reengagement_180d"
Stop

You design this flowchart visually using the Workflows Canvas editor. Drag nodes onto the canvas, connect them, save. Then attach this workflow to a broadcast.

What's important to understand: every doctor in the broadcast runs the sequence independently. Dr Sharma might be at Step 2 (waiting 72 hours after the first message), while Dr Verma is already at Step 4 because she replied early. The engine remembers exactly where each doctor is.

Why this matters
This means no doctor ever feels like they're getting blasted. They get one message, then we listen. If they respond, we adjust. If they don't, we wait the right amount of time and gently nudge — using the next message in the sequence.

The STOP master rule (non-negotiable)

This is the most important rule in the entire engine, and it is enforced in multiple places to make sure it never breaks. Here is what happens the moment a doctor replies "STOP":

STOP cascade · one reply cancels everything downstream
Doctor replies "STOP"
All queued
recipient rows
across every
broadcast
All active
workflow runs
every sequence
for that phone
Future
marketing sends
blocked at
send time
Doctor gets one confirmation
"You will no longer receive messages. Reply START to opt back in."

This is enforced at four different layers — by the inbound webhook, by the recipient-row cleaner, by the workflow halter, and by the messaging service itself as the last line of defense. Even if a future broadcast tries to message this doctor, the messaging service refuses to call WhatsApp.

This is not just polite. It is the law (DPDP Act 2023) and it is also Meta's policy. One missed STOP can downgrade our entire WhatsApp account's quality rating, which slows delivery for every other doctor.

How the system is built (architecture at a glance)

Outbound path · how a message gets to a doctor
You
(create broadcast)
Dispatcher
(every 60s)
Compliance gate
(opt-out check)
Meta API
(throttled 52/sec)
Doctor's
WhatsApp
Inbound path · how a doctor's reply gets to you
Doctor
replies
Meta webhook
(real-time)
STOP check
(cascade)
AI chatbot
(Claude + KB)
Inbox
(MR reviews)

What the report shows you

Every broadcast has a live report page at /whatsapp/broadcasts/{id}. It updates automatically every 10 seconds while the broadcast is running, then every 30 seconds for the next 24 hours while we collect delivery and read receipts.

NumberWhat it means
AudienceTotal doctors queued for the broadcast.
SentWe successfully handed the message to Meta.
DeliveredMeta successfully delivered it to the doctor's phone.
ReadThe doctor opened the chat and read it (blue ticks).
RepliedThe doctor sent us a message back.
FailedSomething went wrong — bad number, Meta rejected, doctor opted out.

Per recipient, you also see: doctor name, clinic, phone (one-click copy), open chat in inbox, the current sequence Step they are on, and their full profile in a click-to-open pop-up. CSV export of the entire recipient list is one click. Pause and Resume controls work even mid-broadcast.

The AI layer (optional but powerful)

Behind the inbox, there is an AI assistant that reads every inbound message from a doctor and either drafts a reply for the MR to review, or — for confident, simple FAQ-style questions — replies on its own. It uses Claude (with OpenAI as a backup, switchable through a config), and it can ground its answers in a Knowledge Base that you upload (PDFs, images of brochures, clinical brief sheets).

This means the chatbot doesn't just guess — it answers based on the latest MonoSkin clinical and product info that you've fed it. Upload a new PDF, and the chatbot is smarter that same day.

It also "learns" without being fine-tuned. Every night, the engine scans recent conversations, finds the ones that went well (no opt-outs, doctor stayed engaged), and promotes those question-and-answer pairs into a "good examples" library that the chatbot uses as reference in future replies. So the more the engine runs, the more polished its answers get — without any retraining bills.

What is happening today (state of the system)

PieceStatus
Meta-approved templates28 live
Doctor database~3,900 doctors · 3,280 WhatsApp-eligible
Pilot broadcast #411 of 11 sent · 1 test recipient added live
STOP master ruleLive and verified
DispatcherLive (runs every minute, throttle 65% of Meta cap = 52 msg/sec)
Multi-step sequence engineLive · waiting on first real sequence to be designed
AI inbox listenerLive · Claude + OpenAI switchable · knowledge base ready
Knowledge base uploadLive · PDF + image OCR

How to use it · the 60-second version

  1. Open /whatsapp/broadcasts+ New broadcast
  2. Pick audience (tiers + cities) → name it
  3. Pick mode — Single template or Multi-step sequence — then pick the actual template or workflow
  4. Send now, or pick a future date
  5. Review → it lands as Paused
  6. Open the report page → Resume → choose Immediate or Schedule
  7. Watch the live counters

And for inbound conversations:

  1. Open /whatsapp/{number}/inbox to see what doctors are saying back
  2. Click a doctor's name in the chat header to see their full profile in a pop-up
  3. Star high-priority chats (1-3 stars) so MRs can triage at a glance
  4. The AI assistant suggests replies — review, edit, send
  5. Anyone who says STOP is automatically removed from every future campaign without any manual work

What still needs to happen before the 500-doctor send