Agents (Early Access) · Use case
An agent that wakes up the moment a patient misses a visit, then handles that one patient one of three ways — it sends a warm rebook text on a first miss, a firmer text plus a heads-up to staff on a repeat, or it hands a sensitive visit to a person for a personal call. It sends at most one message, ever. When the freed slot is in demand, it also tells the front desk to fill it from the waitlist.
Beta note: This article covers the Keragon Agents early-access release. Behaviour, limits, and UI may change during the early access period; this page is updated on a rolling basis as we learn from early adopters.
| Who it's for | Front-desk teams who chase no-shows by hand to rebook the patient and fill the freed slot. |
| Apps it uses | An EHR / scheduler (like Cliniko), a HIPAA-ready SMS app (like Twilio), and a staff channel (like Slack #front-desk). |
| What fires it | A missed appointment. |
The scenario
When a patient misses a visit, someone at the front desk works the same loop by hand:
- Spot the no-show in the calendar.
- Open the chart and read who it was.
- Decide how to handle it — a gentle nudge, a firmer note, or a careful personal call.
- Text or call the patient to rebook.
- Check whether the slot is worth backfilling, and tell the team if it is.
Take Marcus — a first-time miss on a routine physiotherapy slot. If nobody reaches out while it's fresh, he quietly drifts, and the open time goes unfilled instead of going to a patient on the waitlist.
How it works
The agent runs once for each missed appointment and sorts that patient into one of three outcomes. It only ever does one thing per patient — it never sends more than one message, and a sensitive visit never gets an automated text.
Read the miss. Pull the patient's record, count their cancellations and no-shows over the last year, judge how sensitive the visit type is, and check whether the practitioner's next week is nearly full.
Send a warm rebook text. Send one friendly text with the booking link when it's a first miss on a routine visit, so the patient can pick a new time.
Send a firmer text and flag staff. Send one firmer text and post a heads-up to the staff channel when the patient has missed before, so the team knows it's a repeat.
Hand sensitive visits to a person. Route any sensitive visit to the staff channel for a personal call instead — no automated text, ever.
The adaptable agent
This is an example no-show recovery agent — a ready-to-use starting point. Use it as-is to see how it works, then change the highlighted fields so it matches how your practice runs day to day.
It's made of two kinds of pieces:
- Fixed pieces hold the agent's judgement and the safety rules that keep it reliable — one path per patient, one text at most, and never an automated text for a sensitive visit. Leave these as they are.
-
Fillable pieces (shown in
[BRACKETS]) are the details you swap for your own apps, channel, booking link, and your list of sensitive visit types.
Trigger
What starts the agent.
| Trigger | When it runs |
|---|---|
| Missed appointment | Once each time a patient cancels or doesn't show up. |
Instructions
Paste this into your agent. Change the highlighted [BRACKETED] fields to match your practice; leave the rest as it is.
Full instructions — paste into the agent
TRIGGER CONTEXT
You run once each time a patient cancels or misses an appointment in
[YOUR_EHR]. The event tells you the appointment, the patient, the start
time, the visit type, and the practitioner. Use the start time to anchor
"today" and to judge how soon the freed slot needs filling.
STEPS
1. Get the patient's record from [YOUR_EHR] (read their first name and the
mobile number for any text).
2. Get this patient's appointments from [YOUR_EHR] over the last 12 months
and count how many they cancelled or missed. That count is their
strike history.
3. Decide how sensitive the visit is from the visit type. Treat these as
sensitive: behavioral / mental health, counseling or therapy,
substance-use, oncology, and any type your practice has listed in
[YOUR_SENSITIVE_TYPES]. Everything else is routine.
4. Decide whether the slot is in demand: get the practitioner's upcoming
appointments from [YOUR_EHR] around the freed time. If their next 7 days
are mostly full, the slot is in high demand.
5. Pick the one outcome that fits, and do just that one:
• Sensitive visit - don't send any text. Post to [STAFF_CHANNEL]:
"Sensitive-visit no-show — please call personally. Patient
{first_name} (id {patient_id}), {appointment_type}, missed
{appointment_start}." Then stop.
• Routine visit, first miss - send one text via [YOUR_SMS_APP] to the
mobile on file: "Hi {first_name}, we missed you today and hope
everything's okay. Whenever you're ready, you can pick a new time
here: [REBOOK_LINK]. We'd love to see you back."
• Routine visit, repeat miss (2 or more) - send one firmer text via
[YOUR_SMS_APP], and post to [STAFF_CHANNEL]: "Repeat no-show —
{first_name} (id {patient_id}), {strike_count} misses in 12 months.
Firm rebook SMS sent."
6. Separately, if the slot is in high demand, also post to [STAFF_CHANNEL]:
"Open slot to backfill — {appointment_start} with {practitioner} freed
up. Offer it to the waitlist." This backfill note is in addition to the
text, never instead of it, and it's never posted for a sensitive visit.
7. Post one short summary line to [STAFF_CHANNEL] saying which outcome ran
and whether a backfill note was raised.
WHEN SOMETHING'S UNCLEAR
- More than one patient record matches - don't message anyone. Post the
appointment details to [STAFF_CHANNEL] for someone to review, and stop.
- No mobile number on file - skip the text and post to [STAFF_CHANNEL]
asking staff to follow up by phone, whatever the outcome.
- The visit type is unfamiliar or you're unsure if it's sensitive - treat
it as sensitive and hand it to a person. When in doubt, a human calls.
- The strike-history lookup comes back empty or fails - treat it as a
first miss and send the warm text — the gentler default.
WHEN YOU'RE DONE
- Exactly one outcome ran for this patient (warm text, firmer text, or a
personal-call handoff).
- At most one text was sent (none for a sensitive visit), any flag that was
needed has been posted, and the summary line has gone out.
GUARDRAILS
- Try a failed step up to 3 times before stopping.
- Never send more than one text to the same patient in a run — no second
nudge.
- Never send an automated text for a sensitive visit; hand it to a person.
- Handle one patient at a time.
- When the run is finished, stop.Tools to select
Tools are the actions you let your agent take inside your apps.
| Role | What we used here | What it's for |
|---|---|---|
| Trigger | Missed appointment (from your EHR) | Starts the agent when a patient cancels or doesn't show. |
| EHR / scheduler | Cliniko — get patient, get appointments | Where the agent reads the patient, counts past misses, and checks how full the calendar is. |
| Patient SMS | Twilio — send SMS | Sends the rebook text. Use a HIPAA-ready SMS app for real patient texting. |
| Staff channel | Slack — send message | Posts the repeat, sensitive, and backfill flags, plus the run summary. |
Swap any of these for the equivalent tool your practice already uses.
What to fill in
These are the only things you change so the agent fits your practice. Everything else stays the same.
| Field | What to put | Example |
|---|---|---|
[YOUR_EHR] |
The EHR / scheduler you use | Cliniko |
[YOUR_SMS_APP] |
The HIPAA-ready SMS app you use | Twilio · Send SMS |
[STAFF_CHANNEL] |
The channel your front desk watches | #front-desk |
[REBOOK_LINK] |
Your public online-booking link | book.yourclinic.com |
[YOUR_SENSITIVE_TYPES] |
Any visit types your practice treats as sensitive | behavioral health, therapy, substance-use, oncology |
What it produces
Every time it runs, the agent sorts the patient into one of three outcomes, based on their miss history, how sensitive the visit is, and how busy the calendar is:
| Outcome | What the agent found | What the agent did | Why |
|---|---|---|---|
| Warm rebook text | Marcus had one miss in the last 12 months (a first miss), a routine physiotherapy visit, and an open calendar. | Sent one warm text inviting him to rebook, raised no flag, and posted a summary line. | A first miss on a routine visit with an open calendar just needs a friendly invitation back — there's nothing to flag or escalate. |
| Firmer text and backfill flag | Priya had three misses in 12 months (a repeat), a routine dental cleaning, and Dr. Khan's week was about 95% full. | Sent one firmer text, posted a repeat flag and a backfill flag, and posted a summary line. | A repeat miss needs a firmer nudge and a heads-up to staff, and a nearly-full calendar means the freed slot is worth offering to the waitlist — but still only one text goes out. |
| Personal-call handoff | Daniel's visit was a behavioral-health therapy session — a sensitive type — even though he was a repeat, the slot was in demand, and he had a mobile on file. | Sent no text, posted a "please call personally" flag, raised no backfill flag, and posted a summary line. | A sensitive visit is never handled by an automated text, no matter what else is true — a person makes that call. |
Warm rebook text — Marcus (verbatim)
SMS to +1-555-0182 (verbatim)
Hi Marcus, we missed you today and hope everything's okay. Whenever you're ready, you can pick a new time here: {REBOOK_LINK}. We'd love to see you back.
Staff summary (verbatim)
PATH A (warm rebook) — SMS sent to Marcus (id 5501). No backfill flag.
Firmer text and flags — Priya (verbatim)
SMS to +1-555-0199 (verbatim)
Hi Priya, we noticed this is the second appointment we've missed connecting on. Rebooking is easy here: {REBOOK_LINK}. If timing is hard, reply and we'll help find something that works.
Repeat flag (verbatim)
Repeat no-show — Priya (id 5610), 3 misses in 12 months. Firm rebook SMS sent.
Backfill flag (verbatim)
Open slot to backfill — 2026-06-26 14:00 with Dr. Amir Khan freed up. Offer it to the waitlist.
Staff summary (verbatim)
PATH B (firm rebook) — SMS sent to Priya (id 5610); repeat flag + backfill flag raised.
Personal-call handoff — Daniel (verbatim)
Sensitive flag (verbatim)
Sensitive-visit no-show — please call personally. Patient Daniel (id 5722), Behavioral Health – Therapy Session, missed 2026-06-26 11:00.
Staff summary (verbatim)
PATH C (escalate) — sensitive visit routed to #front-desk for a personal call. No SMS, no backfill.
Try a variation
- "Treat oncology and substance-use visits as sensitive too." (add them to
[YOUR_SENSITIVE_TYPES]) - "Only raise the backfill flag when the practitioner's next 7 days are over 90% full." (tighten the high-demand rule)
- "Send repeat-miss flags to a separate billing channel, not the front desk." (point that flag at a second
[STAFF_CHANNEL]) - "On a first miss, send the warm text only during clinic hours; otherwise post it for staff to send." (gate the warm text by time of day)
Make it yours
- Change the highlighted fields, not the rest. The three outcomes, the one-text-at-most rule, and the "sensitive visits go to a person" rule are what keep the agent safe — leave those as they are.
- Match your own apps. Swap Cliniko, Twilio, and Slack for the EHR, SMS app, and staff channel your practice already uses.
- Set your own sensitive-visit list. Add the visit types your practice never wants texted automatically — they go to a personal call instead.
- One message per run, ever. The agent never sends a second nudge. Backfill, repeat, and sensitive flags go to staff; only one patient text goes out, and none for a sensitive visit.
- Let it ask for help. When the agent can't tell who a patient is, or isn't sure a visit is safe to text, it hands the appointment to a person on purpose. Keep it that way — it rebooks and flags, it never diagnoses or guesses.
Helpful articles
- Create your first agent — the build flow from trigger to tools.
- Set up your agent's trigger — schedule vs event, and when to use each.
- Test your agent before publishing — how to read a run and confirm each step.
- Troubleshooting agents — what to do when a run loops, stalls, or a tool call fails.
- Patient intake → triage & routing — the sibling use case: read a new intake and send it to the right person.