medOS ultra
AI AgentsPatient relationshipGrowth & recall agent

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.

Recommender-firstHuman sign-offPlane-isolatedOn-box AI option
scheduling — clinic week
MonTueWedThuFri
9:0010:0011:0012:0013:0014:0015:0016:00
Cardio
ANC
Ortho
Cardio
ANC
Walk-in → slot
Ortho
Cardio
ANC
Ortho
No roster match
Dr. Niran — no roster match Fri · clinic-roster gate holds the slot
STAFF ROSTER (ตารางเวร)
Dr. Anong
Cardio
AM
Dr. Somchai
Ortho
AM/PM
RN Malee
ANC (ฝากครรภ์)
PM
Dr. Niran
Cardio
Fri ?
walk-in converts to a slot when capacity opens — dashed block

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.

proposalconf 0.88

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.

AcceptEditReject
proposalconf 0.81

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.

AcceptEditReject
proposalconf 0.79

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.

AcceptEditReject
proposalconf 0.83

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.

AcceptEditReject

The loop

Sense → propose → approve → execute

01

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.

02

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.

03

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.

04

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

24/7

Always-on recall

Works the lapsed and no-show backlog around the clock; staff work the approvals.

0 chart reads

PHI-walled by grant

Zero database grant on clinical tables — segmentation runs on consent only.

Consent-gated

No send without it

Every outbound checked against per-channel consent and do-not-contact first.

Draft-only

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.

marketing_audience view (consented, de-identified)marketing_consents (per-channel consent state)crm_contacts + lead_scorecrm_opportunities pipelinemarketing_campaigns + crm_interactionsdepartment_queues / encounter journey (lapsed & no-show signals)messaging service (email / SMS / push dispatch)Acknowledgement Inbox (agent_proposal accept/edit/reject)

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.

Ask Anything