Intelligent Visibility Product demo

Intelligent Visibility · AI agent demo for primary care

VisitFit pre-screening assistant

Patients text or call the clinic the way they always have. VisitFit asks seven short questions in English or Spanish, then gives the front desk the right visit length, the likely E/M level and the ICD-10 range before anyone books.

The problem

This is not another appointment scheduling system. VisitFit doesn't pick appointment times and doesn't replace the front desk. It helps the person answering the phone book the right type of visit, which is harder than it sounds.

65%

of patients in a Phreesia survey of about 14,000 said they prefer to schedule by phone. 18% preferred online.

3.88

problems handled per visit for patients over 65 in a study of family physicians. 4.60 for patients with diabetes.

2 in 3

primary care visits strayed from their scheduled length by five minutes or more, across 21 million visits. Short slots overran most.

The front desk isn't clinical, yet from "I need to see the doctor about my sugar, and my knee's been bad" they have to choose between a short follow-up, a longer problem visit or a wellness visit. A wrong choice costs time, because a complex older patient in a 15 minute slot puts the doctor behind for the afternoon. It also costs money. Office visit codes have depended on medical decision making since 2021, and a problem raised during a Medicare Annual Wellness Visit can be billed as a separate visit that carries a copay. Somebody has to know about the knee before the visit, not during it.

Sources: Phreesia patient survey (2019); Beasley et al., Annals of Family Medicine (2004); Neprash et al., Medical Care (2021); CMS office/outpatient E/M fact sheet (2021).

How it works

1

Patient texts or calls

SMS, rich chat or the clinic's phone line, in English or Spanish. One short question at a time, and the patient can switch from text to a call halfway through.

2

Deterministic scoring

The language model only collects answers. A clinical knowledge base turns them into a visit length, an E/M level, ICD-10 codes and flags. Emergency words stop the intake on any message.

3

Handoff in Amazon Connect

A finished text intake becomes a Connect task; a finished call is transferred live. Either way the scheduler sees the full pre-screen, and the patient gets a confirmation.

Try it

Fictional patients only. Please don't type real health information.

Try opening with

Riverside Family Medicine
Text message

Intake progress

    What the scheduler sees

    Finish the conversation and the pre-screen shows up here, the same way it opens in the scheduler's Amazon Connect workspace.

    Conversation flow

    Every conversation follows the same menu of questions. Steps the patient's record already answers are skipped, and two checks run on every single message, before the AI model sees it: the SMS keywords and the emergency words.

    flowchart TD
      start(["Patient texts the clinic"]) --> kw{"STOP, HELP
    or RESTART?"} kw -- yes --> kwr["Fixed reply
    opt out · help · start over"] kw -- no --> em{"Emergency or
    crisis words?"} em -- yes --> safety["Fixed safety script
    call 911 or 988"] --> urgent["URGENT task
    call the patient back"] em -- no --> consent["First message only:
    consent and STOP line"] --> q1["Q1 · First visit, or seen here before?"] q1 --> rec{"Already on file?"} rec -- "missing details" --> q1a["Q1a · Roughly how old are you?"] --> q1b["Q1b · How long since your last visit?"] --> q1c["Q1c · Any ongoing conditions?"] --> q2 rec -- "record complete" --> q2["Q2 · Main reason for the visit"] q2 -- "still vague after one follow-up" --> esc["Callback task
    scheduler takes over"] q2 -- "lab draw or nurse visit" --> q7 q2 --> q3["Q3 · Anything else at the same visit?"] --> q4["Q4 · New problem or follow-up?"] --> q5["Q5 · How long has it been going on?"] --> q6["Q6 · Urgent, or can it wait a few days?"] --> q7["Q7 · Recap: does that look right?"] q7 -- "fix something" --> q2 q7 -- yes --> done["Handoff to the scheduler
    slot · E/M · ICD-10 · flags"]
    StepWhat VisitFit asksExample answerWhat it changes
    Q1Is this your first visit with us, or have you been seen here before?"I've been coming for years"New patients always get a longer slot
    Q1a to Q1cAge, time since the last visit, ongoing conditions. Only when the record doesn't have them."I'm 80", "about two years", "diabetes"Age 75+, 12+ months away and 3+ chronic conditions each add time and raise MDM
    Q2What's the main reason you'd like to come in?"A new itchy rash on my arm"Complaint category, ICD-10 range, baseline complexity
    Q3Is there anything else you'd like to address at that visit?"My diabetes medication"Each extra concern adds time; three or more means high complexity
    Q4Is this something new, or a condition you've been managing?"It's new"A new problem raises MDM to moderate at least
    Q5How long have you been dealing with this?"About two weeks"Over four weeks without a workup adds time
    Q6Does this feel urgent, or are you okay waiting a few days?"It can wait"Urgent visits are flagged for the earliest slot
    Q7A recap in plain words, then: does that look right?"Yes, that's right"Nothing is sent to the clinic until the patient confirms

    Example conversations

    Under the hood

    Text

    AWS End User Messaging (SMS, RCS, WhatsApp), SNS, an SQS FIFO queue per patient and a Lambda worker. The intake agent runs on Amazon Bedrock AgentCore Runtime with Claude Haiku 4.5 and AgentCore Memory.

    Voice

    An Amazon Connect AI agent with Claude Sonnet 4.6 and a Lex bot for English and Spanish. It calls the same clinical tools through AgentCore Gateway as MCP tools.

    Handoff

    EventBridge, a dispatcher Lambda, Amazon Connect tasks and live transfers into a Scheduling queue, a custom agent workspace view, and SES confirmation emails in the patient's language.