BlindSpot: clinical answers from a server that never sees your patient

The drug-safety AI clinicians can use on real patients: cited answers from the FDA label, from a server that never sees the patient.

See it
answer

8 passages fetched · the server can't tell which

  • Answers from FDA drug labels
  • DailyMed
  • NLM MedlinePlus
  • Connects to SMART on FHIR
  • HL7 v2
  • Cryptography from USENIX Security '23
  • ASIACRYPT '17
  • SOSP '23
  • Runs on the clinician's laptop

See it work

Ask about your patient. Get the label's answer.

Real
app
The real app with a synthetic patient. The 40-second private search is sped up, and marked.
  1. 01Pick the patient

    Charts come from your EHR over SMART on FHIR, and stay on the laptop.

  2. 02Ask, by voice or text

    A local AI model answers from the FDA label passages it fetched, and cites every claim.

  3. 03Nothing readable leaves

    One encrypted question and eight private fetches. Zero readable bytes, checked after every answer.

Does it work?

A chatbot passed 1 of 23. BlindSpot passed 23 of 23.

23 drug-safety questions that the FDA label answers. The same AI model on the same laptop, once answering from memory like a chatbot, once through BlindSpot.

1/23

questions the chatbot got right, answering from memory. It failed the other 22.

23/23

questions BlindSpot got right, every one with a citation to the label.

9/9

times the chatbot answered a question no source covers. BlindSpot said it couldn't, 3 of 3.

The question:

Nadia, 27, synthetic patient, takes tizanidine. Urgent care prescribes ciprofloxacin for a UTI. Is it OK with her other medicines?

Same model, no sources

“Ciprofloxacin is generally safe to take with these specific medications.”
qwen3.5:9b on the laptop, given the same chart and the same answer prompt, without the library.
Wrong
3 of 3
runs

BlindSpot

“Ciprofloxacin is contraindicated with tizanidine 1. It is not OK.”
1 Ciprofloxacin FDA label, section 4.2: “Concomitant administration with tizanidine is contraindicated.” What left the laptop: one encrypted query and eight private fetches.
Right
and
cited

Case studies

Six more of the 23, with what each one said and the label line that settles it.

Contraception

She starts Zepbound next week. Does anything change about her birth control?

Nadia, 27, on a combined pill

Raw model, wrong 3 of 3“No adjustment to your birth control regimen is needed.”
BlindSpot, right and citedSwitch to a non-oral method or add a barrier method for 4 weeks after starting, and for 4 weeks after each dose increase. 1

1 Tirzepatide (Zepbound) FDA label

Contraception

She tested positive for COVID. Does Paxlovid affect her pill?

Nadia, 27, on a combined pill

Raw model, wrong 3 of 3“There is no evidence that Paxlovid significantly reduces the effectiveness of this type of birth control pill.”
BlindSpot, right and citedPaxlovid lowers ethinyl estradiol levels. Use an additional non-hormonal method during the 5 days of treatment. 1

1 Paxlovid FDA label, drug interactions

Cardiology

Bad heartburn this week. Can he take Prilosec OTC?

Walter, 71, on clopidogrel

Raw model, wrong 2 of 3“Omeprazole is generally compatible with your current medications.”
BlindSpot, right and citedAvoid omeprazole with clopidogrel: it significantly reduces clopidogrel's antiplatelet effect. 1

1 Clopidogrel FDA label

Kidney function

Nitrofurantoin for a bladder infection. Is that OK for him?

Walter, 71, eGFR 42

Raw model, wrong 3 of 3“Nitrofurantoin is generally safe and appropriate.”
BlindSpot, right and citedContraindicated when creatinine clearance is under 60 mL per minute. 1

1 Nitrofurantoin FDA label

Breastfeeding

She's nursing a 2-month-old. Can she take hydroxyzine for hives?

Postpartum, breastfeeding

Raw model, wrong 3 of 3“Hydroxyzine is generally considered compatible with breastfeeding.”
BlindSpot, right and citedHydroxyzine should not be given to nursing mothers. 1

1 Hydroxyzine FDA label

Pregnancy

Is atorvastatin contraindicated in pregnancy?

A label that changed

Raw model, out of date 3 of 3“Yes, atorvastatin is strictly contraindicated during pregnancy.”
BlindSpot, right and citedThe current label lists only liver failure and hypersensitivity as contraindications, and says to stop when pregnancy is recognized. 1

1 Atorvastatin FDA label, current version

Synthetic patients. Chatbot arm: qwen3.5:9b answering from memory with the same chart. Graded against the quoted FDA label text. Read the full evaluation.

Why it matters

Big Brother is always watching.

To answer, every clinical chatbot reads the question, the chart and what you looked up, and keeps them in someone else's logs. So hospitals ban it, clinicians use it anyway, and questions go unasked. BlindSpot is the one place it can't see.

0.57

questions raised per patient seen. Only about half are ever looked up, mostly for lack of time.

JAMA Intern Med, 2014
81%

of US physicians now use AI in their practice, up from 38% in 2023.

AMA survey, 2026
86%

of physicians call data privacy critical to adopting AI more widely.

AMA survey, 2026
89%

of generative-AI data-policy violations in healthcare involve regulated data.

Netskope Threat Labs, 2026
Clinicians should not rely on HIPAA compliance as a proxy for fulfilling their duty to maintain patient confidentiality.
Mason Marks and Claudia Haupt, JAMA, 2023

Can I trust it?

Don't trust us. Check us.

The three questions a privacy review asks, answered by the app itself, after every answer.

What leaves the laptop?

One encrypted question and eight private fetches: about 500 KB, and 0 readable bytes. A live ledger lists every request the laptop makes. Anything off the allowlist is blocked before it connects.

0 B
readable

Who can read it?

Only the laptop. The server ranks and fetches passages on ciphertext, and a relay hides who is asking.

One question, start to finish The laptop sends a sealed question through a relay to the BlindSpot server, which ranks every passage without reading it and sends back sealed scores. The laptop then makes 8 private fetches and gets 8 passages back, without the server learning which. Only the laptop can read anything. Charts come in from the hospital EHR and never go out. Tavily and Exa crawl FDA and government health sites to rebuild the server's library every 6 hours. The laptop the only place anything is readable Cipro with her tizanidine? Secret key, never leaves A local AI model writes the cited answer. The proof replays what the server saw, every time. Relay hides who is asking 1Sealed question330 KB 2Sealed scoresonly the laptop opens them 38 private fetches176 KB 48 passages backthe server can't tell which The server does all the work, blind Ranks all 4,222 passages against a question it can't read (Tiptoe) Hands back 8 of them without learning which (SimplePIR) FDA drug labels and MedlinePlus pages Hospital EHR charts come in, never go out Tavily + Exa crawl FDA and .gov sites rebuilt every 6 hours, the same for everyone Tomato means sealed. Only the laptop can open it.
One question, start to finish. Every component, explained.

Can you prove it?

After every answer, BlindSpot replays exactly what the server received and tries to read it.

  1. No secret key left this laptop

    The one-time key upload holds only public and evaluation keys.

    Pass
  2. The server can't decrypt your question

    Decrypting the encrypted query with everything the server holds fails.

    Pass
  3. Your words never left in readable form

    Every byte sent is decoded and searched for words from the question and the chart. Found: zero.

    Pass
  4. The server can't tell which passages you read

    Each fetch query touches all 20,000 passages and looks uniformly random.

    Pass
4 of 4
pass

These checks catch mistakes. The guarantee itself comes from the math: Tiptoe for the search, SimplePIR for the fetch.

The product

Built for the minute before you prescribe.

A clinician workspace that runs on the laptop: patients from the EHR, questions by voice or text, answers with sources, and a receipt for every byte that left.

Ask about the patient

Pick the patient and keep the chart items you want. Ask by typing or speaking. Answers cite the passages they draw on, and say when the sources don't cover something.

A verdict first

Avoid, caution or no warning found, then the reasons, each with a numbered source.

The chart counts

Her fluid is already low-normal, so the answer says so, cited to the chart itself.

The real app with a synthetic patient.

See what left the laptop

A live ledger lists every request the laptop made: where it went, how big it was, and whether it was readable. Readable bytes: zero.

An allowlist, enforced before the socket

The client can only reach the relay and the local model. Anything else is blocked before a name is resolved, and the block shows up here.

Two requests per answer

/score carries the encrypted question. /fetch carries eight private-fetch queries. Nothing else leaves.

The rest is public

The manifest, the 4 MB fetch hint and the safety feed are the same bytes for every user, so downloading them reveals nothing.

0 B
readable

Check the proof

After every answer, BlindSpot replays the server's side using only the bytes the server received, and tries to read them. Four checks, in the app.

Replayed from the real bytes

The checks use only what the laptop sent to the relay for this answer, kept in memory and never written to disk.

Searched for your words

Every field is base64-decoded and searched for phrases from the question and the chart. Found: zero.

Tests catch mistakes. Math is the guarantee.

The same checks run as a script against a recorder in front of the real server.

4 of 4
pass

Know the patient

Charts arrive from the EHR and labs over HL7 v2, onto the laptop only. The medicine-pair grid shows which combinations have been checked, and how they came out.

Pairs, tagged from saved consults

Avoid, caution, no warning found, or not checked yet. One click checks a pair privately.

Connect your sources

FHIR R4 with SMART sign-in (PKCE), an HL7 v2 lab feed over MLLP, FHIR Bundle and HL7 file import, and a sandbox of synthetic patients.

Mapped on the laptop

An HL7 v2 lab result, mapped segment by segment to FHIR Patient, DiagnosticReport and Observation resources.

And everything else a clinic needs

  • Voice, on the laptop

    Dictate the question and watch the words appear. Whisper transcribes on the laptop as you speak, and the audio never leaves.

  • Your EHR, read locally

    SMART on FHIR sign-in with PKCE. Charts are sealed on disk, and the context the model sees drops name, birth date and MRN.

  • Lab results as they land

    An HL7 v2 listener receives results over MLLP, acknowledges them, and merges them into the chart.

  • FDA safety alerts

    One public feed of FDA safety notices, the same for everyone, matched on the laptop against each patient's medicines.

  • A library that stays current

    Rebuilt from FDA labels and MedlinePlus, checked, then hot-swapped. Label changes reach answers without retraining anything.

  • Web search, reviewed first

    When the library has no good match, a local model splits the question into generic searches plus decoys, scores the leak, and sends nothing until you approve.

  • Saved consults, sealed

    Every answer is saved as an encrypted file on the laptop, never synced. Pick 30-day, 1-year or no expiry. Export as FHIR DocumentReference.

  • Says when it doesn't know

    If the sources don't cover a question, BlindSpot says so instead of guessing, and offers a reviewed web search.

How it works

How it works

The server does all the heavy lifting on ciphertext. Three layers each close a different leak: Tiptoe hides the question and the scores, SimplePIR hides which passages you read, and a relay hides who asked.

  1. 01 On the laptop

    Encrypt the question

    The question and chart context become 384 numbers, encrypted for Tiptoe search. The secret key never leaves.

    bge-small-en-v1.5 · Tiptoe
  2. 02 On the server

    Score every passage, blind

    The server multiplies the encrypted question by every passage and returns encrypted scores. It never sees one.

    20,000 passages · 7.3 s
  3. 03 Laptop and server

    Fetch the top 8, privately

    The laptop picks the best 8 and fetches them with SimplePIR. Each query touches every passage.

    LWE n = 1024 · q = 2³² · σ = 6.4
  4. 04 On the laptop

    Answer, with citations

    A local model writes the answer from those 8 passages and the chart, citing each claim.

    Ollama · qwen3.5:9b

Who sees what

Laptop

Everything. The only place the question, the chart, the scores and the answer exist in readable form.

Relay

The laptop's IP, ciphertext sizes and timing.

Never the question, the embedding or the results.

Server

Sizes, timing, and that a query happened.

Never the question, the scores, the chosen passages or who asked.

Tavily & Exa

Our crawl of public .gov health pages, to build the library.

Never a clinician's question.

Measured

0 B

readable bytes sent per question. Checked after every answer.

  • 7.3 s

    encrypted search over 20,000 passages, on one laptop. The same top 8 as unencrypted search.

  • ~1 MB

    uploaded per question, plus a one-time 35 MB key upload per session.

  • 8 of 8

    fetches every time, whatever the question, so the count can't leak how good the matches were.

  • 128-bit

    security estimate for the private fetch, from the SimplePIR parameters.

Would anyone use it?

For care where the question itself is sensitive.

Health systems

Approve AI your compliance team can verify.

Instead of reviewing a vendor's privacy policy, read the egress ledger: every byte that left, and a replay of what the server saw.

Sensitive-care clinics

Reproductive health, HIV, substance use, mental health.

Where a query log is a liability, BlindSpot's server has nothing readable to hand over: no questions, no charts, no record of what was read.

Pharmacists and urgent care

Medication safety at the counter.

A third of clinicians' questions are about drug treatment. BlindSpot answers from the label, for this patient, in seconds.

Why not just use…

Cloud AI under a BAA fast · accurate · private

The vendor receives and reads the question, and usually stores it. A business associate agreement assigns blame after a breach. It doesn't prevent one.

A model on the laptop fast · private · accurate

Answers from memory frozen at training time. When no source covered a question, it answered anyway, 9 times out of 9.

Looking it up by hand accurate · private · fast

Correct, but it takes minutes the visit doesn't have. Clinicians pursue only about half of the questions they raise.

BlindSpot fast · accurate · private

Cited answers from current FDA and NLM sources, in seconds, from a server that holds no key to read the question.