Clinics, practices and hospitals

The agent operating system for care teams.

Health Loops handle the patient contact around a visit: the reminder, the check before the day and the follow-up call after it. Your booking and patient systems start each loop, and your team sees every step it took.
Teams that already run on Ollie
The problem

Where the time goes

“No-shows cost us slots every week.”

Reminders go out, but nobody confirms, reschedules or fills the gap.

“Discharge is where we lose people.”

Follow-up calls wait for a nurse to find time, so the patients who most need one often wait longest.

“Intake happens at the front desk.”

Patients fill in forms in the waiting room that could have been done the day before.

“Our staff are the integration.”

Details get copied by hand between the booking system, the patient file and the phone.
How the loop works

How a loop works around a visit

  1. Your system starts it. The booking or patient system calls the loop with the patient, the appointment or the discharge.
  2. It contacts the patient. A text timed to the appointment, a scan link before the visit, or a call that asks what your team would ask.
  3. It checks what it hears. Described symptoms go through a fixed red-flag list, so urgency follows rules. When a flag fires, the patient gets their country’s emergency number and your team is told.
  4. It hands over to people. A summary lands with your team in your own system, with the call transcript attached.
  5. It keeps the record. Who was contacted, what was said and what happened next, for every patient.
pre-visit-check.tsTypeScript
interface Visit { patientId: string; visitId: string }

export class HealthLoop extends Workflow {
  async run(event: HealthEvent<Visit>, step: HealthStep) {
    const { patientId, visitId } = event.body;

    // The trigger response carries the scan link for your reminder message.
    await step.do("Open pre-visit scan", async ({ ctx }) => {
      const patient = await ctx.USER.getUser({ id: patientId });
      await ctx.FACIAL_SCAN.create({
        user: patient,
        steps: {
          consent: true,
          intake: { fields: ["age", "heightCm", "weightKg"] },
        },
        metadata: { visitId },
      });
    });

    const scan = await step.waitForScan({ timeout: "1 day" });
    const report = await step.do("Report link", () => scan.pdfUrl());

    await step.do("Attach to the visit", async () => {
      await fetch(`${this.env.PRACTICE_API}/visits/${visitId}/documents`, {
        method: "POST",
        body: JSON.stringify({ title: "Pre-visit snapshot", url: report }),
      });
    });
  }
}
Channels and integrations

What the loop works with

Phone calls. Outbound calls to a phone number, or a browser call from your app. Each call ends with a transcript and a summary.
SMS. One message or up to 500 at once, with opt-out checks and timed delivery.
Wellness scans. A phone-camera scan at home before the visit, or on a tablet in your waiting room, with a consent screen and a PDF report.
Your own systems. Loops call your endpoints to read data and send results back. Your systems start loops with one authenticated API call.
Data and compliance

How data is handled

Your own data plane. Each organisation’s loops, runs, members and keys live in that organisation’s own store, apart from every other customer.
Consent first. The scan opens on a consent screen before any reading is taken, and the intake asks only for the fields you choose.
A record of every run. The trigger, each step and its result, every tool call, every log line and every error are kept for your team to review.
Keys you control. An API key only reaches loops in the organisation that made it, and you can revoke it at any time. Secrets are encrypted and only admins can see them.
FAQ

Questions

What can Health Loops do for a clinic or hospital?

Health Loops runs the patient contact around a visit as health agents written as code: appointment reminders, pre-visit checks, post-discharge calls and ongoing follow-up. Loops call and text patients, run wellness scans and write outcomes back to your systems.

Does it replace our practice management system?

No. Your booking and patient systems start loops through an API, and loops send results back to them. Patients and appointments stay in the systems you already use.

What happens when a patient describes a worrying symptom?

A loop can check the patient’s own words against a fixed red-flag list. When a flag fires, it gives the patient the right emergency number for their country and alerts your team. It never says what the cause is.

Can patients reply to a text from a loop?

Texts from a loop are one way. When a journey needs a conversation, the loop places a call or opens a chat instead.

Can patients do the scan in the clinic?

Yes. The same scan runs on the patient’s own phone or on a tablet in your waiting room, and the results are filed under the patient either way.

Show us the journey costing you the most. We’ll show you the loop.