Patient relationship
Growth & recall agent
Recall, campaigns and lead nurture — consent-walled, drafted by AI, sent only on your approval.
The Growth & recall agent watches for patients who lapsed or no-showed, the consented segments worth a campaign, and the service-line opportunities sitting in the pipeline — then drafts the outreach for a human to accept, edit or reject. It runs on the Growth plane: its database role has zero grant on clinical tables, so it literally cannot read a chart, and every outbound message honors per-channel marketing consent and do-not-contact before it can be queued. Nothing sends on its own — accept is what dispatches, and that accept/edit/reject is the training signal.
What it senses
The signals it watches for you
It reads across the systems you already run — on the medOS event substrate — and surfaces the issue while there is still time to act.
Lapsed & no-show signals
Bookings that lapsed or were missed, and follow-up windows that have aged past their recall interval — surfaced from the operational journey, not the chart.
marketing_audience view
The only patient-linked data it can read: consented contacts plus de-identified aggregates (age band, region, service-line interest) — never diagnoses, results or encounter detail.
marketing_consents
Per-channel, withdrawable consent state (email / SMS / push) gating who is even eligible for outreach.
crm_contacts & lead_score
Inbound leads and their lifecycle stage, scored against engagement and segment fit.
crm_opportunities pipeline
Open service-line opportunities by stage, value and idle time, flagging the ones drifting without a touch.
marketing_campaigns
Campaign definitions and prior sends, so the right segment isn't double-touched or fatigued.
What it proposes
Drafted work, never an autonomous act
Each item lands in the Acknowledgement Inbox with its reasoning and a confidence score. Nothing is sent, charged or changed until a human accepts.
No-show recall outreach
Draft SMS to a 3-day-lapsed dermatology follow-up: "Reply YES to rebook your skin-check" — channel SMS, consent verified.
Consented segment campaign
Brief + bilingual (TH+EN) draft for a wellness-package campaign to ~620 consented contacts in the 40–55 age band, est. send window next Tue.
Lead nurture step
Next-touch draft for an inbound cardiology-screening lead scored 0.84 — propose a follow-up email plus a routing task to the liaison.
Idle opportunity revival
Re-engagement draft for a ฿38,000 health-check opportunity idle 14 days at stage "Quote sent" — nudge contact + log the interaction.
The loop
Sense → propose → approve → execute
Sense
Sweeps lapsed/no-show bookings, the marketing_audience view, crm_contacts lead scores and the crm_opportunities pipeline — on the Growth plane, with no read access to any chart.
Propose
Drafts the recall message, campaign brief or nurture step with bilingual copy, a confidence score and its reasoning trace — consent and do-not-contact pre-checked. Nothing is sent.
Approve
The draft lands in the Acknowledgement Inbox as an agent_proposal; a human accepts, edits or rejects, and that disposition is logged as the training label.
Execute
On accept, the message dispatches through the existing messaging service and the touch is written back to crm_interactions / the campaign — the same path a marketer uses by hand.
Capabilities
What it can do
No-show & lapsed-visit recall
Detects missed appointments and aged follow-up windows and drafts timely recall outreach so the slot is rebooked or backfilled before it's lost.
Consented campaign execution
Builds segment briefs and bilingual EN/TH content against the marketing_audience view, restricted to contacts who granted marketing consent on the chosen channel.
Lead scoring & lifecycle
Scores inbound leads on engagement and segment fit, tracks them through the funnel, and proposes the next nurture step at each stage.
Opportunity pipeline management
Watches crm_opportunities for idle or stalling deals and drafts a revival touch plus the interaction log to keep the pipeline moving.
Channel-consent & do-not-contact enforcement
Every draft is checked against per-channel consent and suppression lists before it can be queued — purpose-bound to consent, never spam.
PHI-walled segmentation
Segments only on consented, de-identified aggregates; the agent cannot target an individual by diagnosis because it has no grant on clinical data.
Send via the real dispatcher
On approval, outreach goes out through the same messaging service (email/SMS/push) staff already use — one funnel, no parallel marketing tool to reconcile.
Not a black box
Why it is safe to run
Autonomy without guardrails is a liability in a hospital. These are the constraints that make this agent safe to put to work.
Consent-walled Growth plane
Runs under a dedicated Postgres role with zero grants on encounter_journey_cache and every clinical table — it can read only the consented marketing_audience view, so it cannot see a diagnosis or result.
Human approves before every send
The agent only drafts; outbound email/SMS/push is never sent hands-free. A person accepts, edits or rejects in the inbox, and accept is what dispatches.
Per-channel consent & do-not-contact
Outreach is gated on withdrawable, per-channel marketing_consents and suppression lists (PDPA / anti-spam) — no consent on the channel means no proposal.
Audited per decision
Every proposal and disposition is logged under a named agent identity with its full reasoning trace, plus a per-read audit on the audience view.
Data plane
It runs on the Growth plane: a dedicated Postgres role with zero grants on clinical tables, able to read only the consented, de-identified marketing_audience view — so isolation is enforced at the database grant, not in app logic.
Operating characteristics
What changes when it runs
Always-on recall
Works the lapsed and no-show backlog around the clock; staff work the approvals.
PHI-walled by grant
Zero database grant on clinical tables — segmentation runs on consent only.
No send without it
Every outbound checked against per-channel consent and do-not-contact first.
Human sends
No autonomous send path — accept in the inbox is the only thing that dispatches.
Works on your stack
Reads and writes where you already work
On accept, it calls the very same endpoints your staff use — no shadow write path, no second source of truth.
Questions
Frequently asked
Can this agent see a patient's diagnosis to target them?
No — and not as a setting, by construction. It runs on the Growth plane under a database role with no grant on clinical tables, reading only the consented marketing_audience view. It cannot target an individual by diagnosis or result.
Will it message patients automatically?
Never. It drafts recall, campaign and nurture messages; a human accepts, edits or rejects each one in the Acknowledgement Inbox. Accept is the only thing that dispatches, and it dispatches through the same messaging service your staff already use.
How does it respect consent and PDPA?
Every draft is checked against per-channel marketing consent and do-not-contact lists before it can be queued. Consent is opt-in, recorded per channel, and withdrawable — withdraw it and the contact drops out of every future proposal.
How does it learn?
From your decisions. Each accept, edit or reject is logged as the training label, so the segments, timing and copy it proposes sharpen toward what your team actually approves — no separate model tuning.
Does our patient data leave the building?
It doesn't have to. Inference can run on-box via Ollama on your own hardware, and the agent already operates on de-identified, consented data only — air-gapped deployments are supported.
What does it actually write when I approve?
It sends the message through the existing messaging dispatcher and logs the touch back to crm_interactions and the campaign — the same write paths a marketer uses by hand. There is no shadow system to reconcile.
Put Growth & recall agent on your floor
See it draft real work against your own workflows — every action under human sign-off.