4.9/5 on Clutch — 13 verified reviews
Industry
Healthcare & Medtech
Delivered
SMS + Streaming Web Chatbot
Client
Top Health AI
Approach
Retrieval-Only, Zero Hallucination

Top Health AI · Document-Grounded Chatbot

Patients Ask. It Answers Only From Your Pamphlet

Patients text questions at 9pm that the front desk already answered a hundred times, from a pamphlet that never left the exam room. We turned that pamphlet into a chatbot, reachable by text or on the web, that answers only from what the provider uploaded, and says so plainly when it can’t.

9:14 PMOnline
TH
Top Health AI
Riverside Family Practice
Sourced
Today
Ask about your aftercare…
Answers only from your provider's documents
85%
Of questions answered from the pamphlet

The rest get the safe fallback, by design rather than by accident

25%
Less staff time on repeat questions

Time the front desk gets back for the patients who need a person

30%
Of conversations happen after hours

Three in ten patients ask when the office is closed

12%
Fewer front-desk calls on pamphlet topics

Routine questions stop competing with scheduling and billing

The problem

Patient Education Pamphlets Don’t Answer Questions After 9pm.

Every practice hands out physician-approved pamphlets on aftercare, medication, and procedures. They’re accurate, but static. The moment a patient has a follow-up question at home, the pamphlet can’t answer it, so the call goes to a front desk that’s already fielding the same handful of questions all day.

A generic AI chatbot looks like a fix until it invents an answer the pamphlet never gave. In healthcare, that’s not a bad user experience, it’s a liability. Most chatbot options on the market are either a basic FAQ box with no real understanding, or a full EMR integration far beyond what a practice needs to answer “can I shower with this bandage on.”

The brief wasn’t “build a chatbot.” It was “build one that is structurally incapable of guessing about a patient’s health.”

Kodexo Labs project team

What we built

A Pamphlet That Talks Back, and Only About What’s Actually in It.

A provider uploads their approved pamphlets once. From then on, patients ask questions in plain English by text or on the web, and every answer is pulled from that provider’s own documents, never generated from scratch.

01 · Patient Q&A

Ask by Text or on the Web, Get an Answer From the Pamphlet.

A patient texts the provider’s number, or asks on the web and watches the answer stream in word by word. No app to download, no keywords to guess. The system reads the question, finds the matching section of the pamphlet, and replies in a sentence or two.

02 · Safety controls

If It’s Not in the Pamphlet, It Says So.

Every question is checked against the approved content before an answer is written. Nothing outside it gets a guess; the patient is pointed back to their provider instead. More on this below.

03 · Provider & admin tools

Every Provider Runs on Their Own Private Set of Pamphlets.

An admin brings a new provider on with an emailed invite, uploads that provider’s pamphlets, and the provider gets a dashboard showing every patient conversation, so nothing happens out of view.

Swipe →

Built so it can never guess

The Chatbot Doesn’t Know Anything the Provider Didn’t Hand It.

Most chatbots answer from everything a language model has ever read, which is exactly the wrong instinct for medical information. This one is wired the other way: it can only draw on the pamphlets a provider has uploaded and approved. Ask it anything outside that, and it isn’t allowed to improvise.

When a question falls outside the pamphlet, the system says so in one consistent line, every time, with no partial guesses, no “it depends” filled in from elsewhere; “I don’t have information about that. Please consult your healthcare provider.”

1

Strict content boundary

Answers can only be built from the uploaded pamphlets, with no fallback to general knowledge.

2

Out-of-scope detection

Every question is checked against the pamphlet content before a response is written, not after.

3

One consistent fallback

The same safe message every time a question falls outside scope, never a partial or invented answer.

The solution

Four Parts, and Not One of Them Guesses.

The build is deliberately small. Four moving parts, each one chosen so a patient can get a fast answer at home without anyone inventing medical advice along the way.

01

Upload Once

A provider hands over their approved PDF pamphlets. The system reads them, including scanned ones, splits them into small passages, and indexes every passage so it can be found by meaning later. No re-typing, no tagging, no keyword lists.

02

Ask in Plain English

A patient writes the way they would speak. The system finds the closest matching passages in that provider’s own pamphlets and writes a short answer, one or two sentences, from those passages only.

03

Refuse When Unsure

Every question is checked against the pamphlet content before a reply is written. If nothing matches closely enough, the patient gets the same safe line every time and is pointed back to their provider.

04

Available All Day

It runs in the cloud, so patients reach it from home, the waiting room, or a phone at 9pm. Each provider’s documents and conversations stay separate from every other provider’s.

Swipe →

How it works

Three Flows, From a Doctor’s Pamphlet to a Patient’s Phone.

No jargon, just the path a question takes from a patient’s thumb to a safe, sourced answer.

1
Patient Q&A: How a Patient Gets an Answer
1
Patient Texts a QuestionTo the provider’s own number
2
Provider Is IdentifiedOpens only their pamphlets
3
Best Match Is FoundSearched by meaning, not keywords
4
Reply Is WrittenGrounded only in that content
5
Answer Texted BackAnd logged for the provider
2
Safety Net: How It Decides What to Say
1
Question Comes InBy text or on the web
2
Checked Against the PamphletBefore any reply is drafted
3
Content FoundAnswer built only from it
4
Nothing FoundSafe fallback message sent instead
3
Onboarding: How a Provider Gets Set Up
1
Admin Adds the ProviderEmail plus a dedicated number
2
Provider Sets a PasswordVia an encrypted invite link
3
Pamphlets Uploaded & IndexedKept private to that provider
4
Dashboard Shows Every ChatBy patient, in full

System architecture

The Whole System on One Page.

The plain-language walkthrough is above. This is the same system named properly: clients, the service layer, the ingestion and query pipelines, and the two data stores.

CLIENTSAdmin panelProvider CRUD, document uploadPatient channelsSMS and web chatProvider dashboardChat history by provider IDTwilio SMSWebhook in, SMS outAPPLICATIONFastAPI serviceRoutes → controllers → services → repositoriesASYNC PYTHON · JWT · SSEINGESTION PIPELINEQUERY PIPELINE · GET /askExtraction & OCRAzure Document IntelligenceClean & chunk500 tokens, 100 overlapEmbedOpenAI text embeddingsIndex by provider IDTenant isolation at the indexVector searchtop_k 5, score threshold 0.7Prompt assemblySystem prompt + chunks + historyGenerationGPT-4o, temp 0.2, streamedOut-of-scope guardBelow threshold → fixed fallbackSTORAGEAzure Cognitive SearchVector index, scoped per providerMongoDB AtlasProviders, sessions, chat history

Under the hood

The Tools We Used, and What Each One Does.

Pamphlets are chunked, embedded, and stored per provider; a retrieval step pulls only the closest matches before the model is allowed to answer.

Production stack

OpenAI GPT + EmbeddingsAzure Cognitive Search (RAG)Azure Document Intelligence + OCRTwilio SMSFastAPI (Python)MongoDB AtlasCloud container deployment

Provider-isolated data

Each provider’s pamphlets and chat history are kept separate from every other provider’s.

Encrypted onboarding

Provider invitations and password setup run over encrypted links, end to end.

24/7 cloud access

Patients reach it from home, the waiting room, or a mobile device, any time.

Full conversation record

Every exchange is saved against the patient and provider, for the provider to review.

Swipe →

The outcome

The Pamphlet Now Answers at 9pm, and the Front Desk Gets Its Afternoon Back.

Nothing about the clinical content changed — every answer is still the provider’s own approved text. What changed is when a patient can reach it, and how much staff time gets spent repeating it.

200

Patients per provider at once

Concurrent sessions handled without slowing down, so a busy practice never queues behind itself.

12 hrs

From PDF upload to searchable

A new provider’s pamphlets are live in about a business day and a half, extraction and indexing included.

24/7

Availability with no staff on shift

Reachable by text or on the web from home, the waiting room, or a phone, with no one rostered to answer.

Staff answer the hard questions

The repetitive, pamphlet-covered questions go to the chatbot, which leaves clinical staff available for the calls that actually need a person.

No answer the provider didn’t approve

Because a reply can only be built from uploaded content, there is no path for the system to invent medical advice — it says it doesn’t know instead.

Every provider stays separate

Pamphlets are indexed per provider, so one practice’s content never surfaces in another’s answers, and onboarding a new one adds no work to the existing ones.

Swipe →

Frequently asked

Common Questions About a Chatbot Like This

Have Patient Content That Should Be Talking Back?

30 minutes, and you’ll know whether a document-grounded assistant fits your pamphlets.

Book a Discovery Call

Related work

More AI Systems Built for Real Products

See Our Work