Medical Wayfinder
Voice-first · multilingual · on the patient's phone

Navigation got you to the parking lot.
We're getting you to the doctor.

Google Maps gets you to the parking lot. Indoor wayfinding kiosks start at the front door. The walk in between is where patients get lost and miss their appointment. Medical Wayfinder closes that gap with a fine-tuned Gemma 4 E2B that runs on the patient's phone. It speaks English and Spanish and works at any facility without an enterprise contract.

Gemma 4 E2B, fine-tuned Runs offline, no PHI leaves the device English & Spanish, accessibility-default
↓ scroll

Two audiences. Two ways in.

Pick your door.

What the app does

Voice in. Steps out.
In their language. On their phone.

Tap the mic. Say it however you'd say it — "the kids' doctor," "lo del corazón," "where they take blood." The model figures out which department you mean. A plain shortest-path algorithm then walks the facility map (no LLM involved in the routing). The model writes the resulting steps back in the patient's language with landmark and accessibility cues.

That split is deliberate. Routing is a solved problem and we don't ask the model to solve it. The model handles the parts only a model can — figuring out what someone meant, replying in their language, and holding to a strict JSON contract. It also turns down medical questions outside its scope.

▸ Model output · five-block contract// validated client-side; drops invalid blocks silently
[
 {
 "type": "destination",
 "department": "Lab / Blood Draw",
 "building": "Atrium",
 "floor": "1"
 },
 {
 "type": "steps",
 "steps": [
 {
 "text": "Enter via the main entrance, 800 Washington St.",
 "accessibility": "automatic_doors"
 },
 {
 "text": "Walk past Au Bon Pain; right at Information.",
 "accessibility": null
 }
 ]
 },
 {
 "type": "arrival",
 "check_in": "Kiosk at the front desk; bring photo ID."
 }
]
Inside one turn

Voice. Model. App. Re-routed in a second.

Watch the same pipeline handle two turns of one session. The first locates the patient at the main entrance. The second handles a real-world wrinkle: they got distracted and ended up at the cafeteria. Everything below happens on the device, no round-trip to a server.

Turn 01 First query · arriving at the main entrance
Turn 02 Re-orientation · lost, near the cafeteria
01 Speech
"I need to find the blood lab."
"Hey, I'm lost. I'm near the cafeteria now."
SFSpeechRecognizer Apple framework · offline dictation
02 Model
// model output
[
 { type: "destination",
 department: "Blood Draw",
 building: "Atrium",
 floor: "1" },
 { type: "steps",
 steps: [{
 text: "Main entrance,
 800 Washington.",
 accessibility: "automatic_doors"
 }, … ] }
]
// re-orient detected,
// origin = cafeteria_node
[
 { type: "guide_text",
 text: "Got it from the
 cafeteria you're three
 minutes out." },
 { type: "steps",
 steps: [{
 text: "Exit cafeteria,
 turn right at the
 elevator bank.",
 accessibility: "elevator"
 }, … ] }
]
Gemma 4 E2B · cp78 LoRA llama.cpp · Q4_K_M · ~3.2 GB on disk
03 Render
Blood Draw · Atrium 1F
Main entrance, 800 Washington.
▸ automatic doors
Re-routed from cafeteria
Exit cafeteria, right at the elevators.
▸ elevator
ResponseParser · Shortest-path Dart strict validator · Flutter

The model figures out what the patient meant (English or Spanish, colloquial or clinical) and emits a five-block JSON contract. The actual routing runs on a shortest-path algorithm over the facility's 11–30-node map. Keeping the model out of the routing is what makes the whole thing small, fast, and reliable.

Evidence

Four numbers that frame the problem.

Hospital wayfinding is an under-measured cost, and it lands hardest on the patients nobody designs navigation for. Each number below comes from a peer-reviewed study or federal data.

$220K
per-year wayfinding cost at one tertiary-care hospital. 4,500+ staff hours lost giving directions.¹
Zimring 1990 · Ulrich HERD 2008
29.6M
US residents with Limited English Proficiency. ~62% speak Spanish at home.²
US Census ACS, 2023
70M
US adults (28.7%) report a disability. 44% of adults 65+ the demographic most likely in a hospital.³
CDC BRFSS 2022
15
LEP languages, by state, that covered entities must post a Notice of Availability in (Section 1557).
HHS OCR Final Rule 2024
The third leg · Wayfinder Atlas

Any clinic can author their building.

Atlas is the tool a clinic uses to map its own building. It runs in a browser — Vite + React + TypeScript on the frontend, FastAPI and Redis on the backend, GitHub OAuth for sign-in, plus a Street View edge-walker for ground-truth checks.

Atlas facilities dashboard with 5 cards
01 · Browse

5 facilities · 99 nodes · 79 edges · 60 departments. Mini-map cards, region filters, status pills.

Atlas in-app preview
03 · Preview

App-faithful render of the model contract before publish. Closes the loop without round-tripping a Flutter build.

Apples-to-apples · 100-case held-out suite · cross-family judge

The fine-tune lifts every dimension that matters.

Same production prompt, only the LoRA toggles. Every delta is attributable to the fine-tune alone, not to prompt engineering. Judge model is gpt-oss-120b, JSON-schema-constrained, scoring five criteria 1–5.

Configuration Mean (1–5) Strict pass Soft pass English Spanish
Base Gemma 4 E2B + production prompt 3.62 28% 47% 3.57 3.92
+ LoRA (cp78), same prompt 3.98 38% 56% 3.94 4.17
Δ · attributable to fine-tune alone +0.36 +10 pp +9 pp +0.37 +0.25
Both languages move up on the fine-tune: English 3.57 to 3.94, Spanish 3.92 to 4.17. After it, they sit within 0.23 points of each other. Closing that gap is the number that matters for the 29.6 million Americans who speak English "less than very well".
Open source

Everything ships.

Training pipeline, eval suite, Flutter app, Atlas dashboard, facility data, deck, this site. Built to be forkable.

github.com/jmdevita/medical-wayfinder

A monorepo with three pieces that stay in sync through a shared system prompt and a strict five-block JSON contract.

Flutter Gemma 4 E2B Unsloth LoRA llama.cpp Ollama (dev) Vite + React FastAPI Redis Docker Compose
Code MIT · fork it, ship it
Submission & content CC-BY 4.0 · required by competition
Base model Apache 2.0 · Gemma 4, Google DeepMind
Teacher model Apache 2.0 · Qwen 3.5 122B