PLACEHOLDER · DROP IMAGE HERE

Klaro hero · 3 phone screens (CHK-01 · CHK-05 · RES-01A)

Klaro - Symptom triage for the German DiGA track

A self-initiated concept app for symptom intake, calibrated escalation, and a doctor-ready SBAR handoff. (German DiGA / MDR Class IIa used as a design constraint.)

Timeline

2026

Solo · evenings & weekends

Role

Concept · Research

IA · UI · Design System

Constraint

DiGA / MDR Class IIa

used as design constraint

Problem

Symptom-checker apps in the German market either over-reassure users (sending real emergencies home with a "stay calm" screen) or hedge so hard that everyone gets pushed to the ER. Neither pattern serves patients or the system. There is no shared design language for calibrated medical confidence, and nothing that hands a doctor a clean structured summary at the end of the flow.

{This mattered to me because mis-calibrated triage is a real safety issue in DACH primary care - false reassurance kills, false alarm clogs ERs. The design constraint had to do real medical work.}

Outcome

A Transparent Triage Engine: every result shows its confidence band, calibrated escalation (Low / Moderate / Emergency) drives the CTA, and the session ends with an SBAR / SHBE summary the patient can hand to a doctor or call into 112. Self and Proxy modes, re-check loop, and a component library shaped by DiGA accessibility constraints round out the system.

THE PROBLEM

Four problem dimensions, four design responses.

Two are psychological and technical barriers unique to AI products. Two are clinical failure modes specific to symptom-checker apps. Each problem requires a different design move.

THE DESIGN QUESTION

How do you make an AI health assistant that feels calm and simple to use, still takes the clinical and regulatory rules seriously, and never uses slick design to cover up how unsure the model really is?

What I kept coming back to: be honest about what the model doesn't know.

AI · Psychological

The Black Box Trust Barrier

Users are naturally highly skeptical of medical diagnoses generated by algorithms. Raw machine-learning outputs without context cause anxiety and rejection.

DESIGN FOCUS

Explainable AI (XAI) · Progressive disclosure patterns that show the why behind every conclusion

AI · Technical

High-Input Friction vs. Model Accuracy

Accurate medical assessments require precise, highly granular user inputs. But long diagnostic intake forms spike user drop-off rates and feed the model worse data.

DESIGN FOCUS

Smart Contextual Conversational Intake · Breaking complex medical taxonomies into dynamic, one-question-per-screen UI steps

Clinical · Failure mode

False reassurance

A system that downplays a 0.5%-probability emergency. "Don't worry, it's probably tension" at 3 a.m. for a thunderclap headache is not a UX bug, it is patient harm.

DESIGN FOCUS

Calibrated escalation · Severity-override rules · MDR Class IIa auditable dismissals

Clinical · Failure mode

Over-escalation

A system that escalates every input to "see a doctor" to stay safe. Users abandon. The German healthcare system over-loads at exactly the moment it is already operating at capacity.

DESIGN FOCUS

Calibrated routing · Never "GP just in case" · Confidence Gap Warning over false top-3 lists

Regulatory constraints

Five constraints shaped the design: the IEC 62366-1 usability process, post-market surveillance with long-term retention of anonymous events, on-device data by default under GDPR, the DiGA Freischaltcode through statutory insurers, and emergency dismissals that record the user's deliberate choice.

My Research Approach

I couldn't recruit a clinical user panel for a solo concept project, so I designed the research around what I could honestly access. Desk research on the DiGA / BfArM fast-track requirements, a structured audit of seven existing symptom-checker apps (Ada, Symptomate, NHS 111 online, K Health, Babylon, MD live, Doc.com), and ~12 informal conversations with friends and family members who had recently used such tools or called the 116117 non-emergency line. This shaped the assumptions; I'm transparent in the case study about what's verified vs. what's a designed hypothesis.

User Research and Key Findings

Synthesised pain points across the audit and the informal interviews. Six themes kept reappearing - each became a design constraint for the Transparent Triage Engine.

1. Symptom intake felt like a quiz, not a conversation.

Existing apps used long, branching multiple-choice trees that broke flow and made people give up halfway. Users described it as "filling out a tax form while sick."

2. Results were either too scary or too soft.

Either every cough led to "see a doctor today" or a clear emergency got a "monitor at home." There was no calibrated middle, and no honest "we are X% sure" signal.

3. No one trusted a result they couldn't explain.

Participants said they would believe the app more if it showed *why* it landed on a diagnosis - which symptoms mattered, which it weighed less. Pure black-box scoring kept them on Google.

4. Caring for someone else broke the flow entirely.

Three of twelve interviewees were proxy users - checking on a parent, child, or partner. No app handled this cleanly; pronouns broke, history mixed, sex/age assumptions failed.

5. The doctor handoff was always manual and lossy.

After triage, users either screenshotted the result or re-typed everything into Doctolib. Nothing produced a structured summary a clinician could parse in under 30 seconds.

6. Re-checking later was punishing.

Symptoms evolve. Every app made you redo the entire intake - no delta questions, no awareness that you had triaged the same complaint two days ago.

What this changed in my approach

I stopped designing a “smarter symptom checker” and started designing a Transparent Triage Engine. The product is no longer the diagnosis - the product is the calibrated escalation, the explainability, and the handoff. Every screen had to earn the user’s trust by showing how confident it actually was, and every dead-end (proxy, re-check, emergency override) became a first-class flow instead of an afterthought.

RESEARCH & PERSONAS

Three personas.

Personas aren’t decorative on this product. Each one identifies a specific failure mode the design has to engineer against - a separate guardrail in the system.

N

Nadia, 34

Health-anxious researcher

ABOUT

34 y · Female · Berlin · Self-check

TOP RISK PRIORITY

Panic abandonment

“I’ll be up googling ‘thunderclap headache’ until 4 a.m. - Klaro has to tell me if this is the real thing or not.”

FAILURE MODE

Panic-driven abandonment. If the interface produces anxiety on top of an already-anxious user, the session ends and the next time she just goes to A&E.

DESIGN RESPONSE

Dark mode auto-activates via prefers-color-scheme. Cap at 3 conditions. Calibrated escalation - never “GP just in case”.

M

Marcus, 52

Pragmatic decider

ABOUT

52 y · Male · Hamburg · Self-check

TOP RISK PRIORITY

Missed emergency

"I trust apps that don't cry wolf. If you tell me to call 112, I expect you to mean it."

FAILURE MODE

Over-reliance. The cried-wolf effect - if Marcus has been escalated needlessly twice, he’ll ignore EMG-01 the third time, which may be the one that matters.

DESIGN RESPONSE

Two-step emergency dismiss writes acknowledgement to audit log. Severity colour mapping is rigid. Disclaimers only where they add information.

P

Priya, 28

Junior nurse · proxy mode

ABOUT

28 y · Female · Munich · Proxy-check

TOP RISK PRIORITY

Wrong clinical detail

"If I show this to her doctor and one detail is wrong, we'll lose hours. I need the export to be clinically correct, not friendly."

FAILURE MODE

Trust destruction if clinical logic is wrong. Priya is the smartest user; her mistake-tolerance is the lowest.

DESIGN RESPONSE

Proxy mode treated as a real use case, not bolted on. The SHBE export follows German anamnesis order. Events are logged so there's an auditable trail.

Quotes are illustrative - written to capture each persona’s situation, not transcribed from real interviews.

INFORMATION ARCHITECTURE

The full user flow.

Onboarding → Symptom Check → AI Engine → Results → one of four legitimate exits. Branch lines are coloured by clinical severity. The red dashed shortcut bypasses the engine entirely - client-side red-flag detection with zero network dependency.

01

The 2-hour Active Episode Gate

When a user attempts a fresh check within 2 hours of completing one, the app intercepts with time-since-last-check, previous result, and a direct link to 116 117. The user can still proceed, but the muted ghost-link styling tells them the system thinks they shouldn't.

02

The two-step emergency dismiss

Dismissing the EMG-01 warning requires both an acknowledgement checkbox and a separate tap on a now-muted CTA. The checkbox writes a structured event to the audit log. The user is free to disagree with the engine. The system is not free to forget that disagreement.

03

The probability cap at three conditions

Showing 8 to 10 possible diagnoses, common in earlier products, optimises for completeness and tends to raise anxiety. Klaro caps at three, always probability-ranked, never alphabetised. Anything below the threshold rolls up into a Confidence Gap Warning, which routes to 116 117 instead of listing more maybes.

Structural pivots

v1 used segmented progress dots, they broke when the engine added follow-up questions. Replaced with phase-based labels. v2 attempted pure conversational UI, users lost context, couldn't edit. Replaced with hybrid modular: one question per screen plus a Review screen with discoverable per-row edit. v3 introduced no-ghost-drafts: half-collected symptom data is worse than no data.

Ideation and

Conceptual Design

I sketched the entire flow on paper first - every screen, every escalation branch, every dead-end. Two complete attempts went in the bin before the calibrated-confidence model emerged. Below: the working pages where the Transparent Triage Engine got found. Focused on making sure the model could actually carry the result without lying.

Sarah, 34 · Female

Understanding your symptoms

How long have you had

this headache?

This helps us understand if it's a new or ongoing symptom.

Just started

Within the last hour

A few hours

Started today, a few hours ago

1–2 days

Started yesterday or the day before

3–7 days

Lasted most of this week

More than a week

Ongoing for over a week

Next

Skip this question

9:41

9:41

ANALYSING YOUR SYMPTOMS

Symptoms

AI Engine

Results

Comparing with clinical data...

Matching your symptoms against verified medical patterns

Analysing...

65%

✓ Symptoms logged and verified

→ Comparing with clinical data...

Preparing personalised results

Cancel check

9:41

Sarah, 34 · Female

Your Assessment

Based on: mild headache, slight fatigue

Low - Monitor at home, no immediate care needed

Most likely

58%

Tension Headache

(Spannungskopfschmerz)

A dull, aching head pain with a sensation of tightness. Common in people with stress or poor posture. Usually not serious.

Why this condition? →

Second possibility

Mild Dehydration

27%

Third possibility

Mild Viral Illness

9%

What you can do at home

💧

Stay hydrated

Aim for 2L of water today. Avoid caffeine.

🌡

Track your temperature

Check every 4 hours. Seek care if above 39°C.

😴

Rest in a quiet room

Dim lights, minimal screen time for 30 min.

Find open pharmacy near you

Enter PLZ

Location off - enter postal code

We'll check in with you in 24 hours

Continue monitoring at home

9:41

Class IIa SaMD · BfArM DiGA

Klaro

Understand your symptoms.

Know your next step.

Klaro analyses your symptoms, shows you the most likely causes with honest confidence scores, and guides you to the right level of care.


This is not a diagnosis. It is a decision support tool.

Get started

No account required. No login. No email.

9:41

<

Nadia, 34 · F

What's bothering you?

Describe your main symptom in your own words

headache

Headache

General head pain - tension, pressure or throbbing

+

Headache with nausea

Pain combined with feeling sick

+

Headache with visual changes

Pain with blurred vision or spots

+

Headache

×

Safety monitor active

Common symptoms

Headache

Stomach pain

Fever

Back pain

Sore throat

Cough

Continue

9:41

×

Doctor Conversation Guide

DE

EN

SHBE Format · Deutsch

S

Situation

Ich habe meine Symptome mit Klaro Triage geprueft. Die Einschaetzung ergab Migraene als wahrscheinlichste Ursache (72% Konfidenz).

H

Hintergrund

34 Jahre, weiblich. Symptome seit 3 Tagen. Kopfschmerzen linksseitig, Uebelkeit, Lichtempfindlichkeit. Schmerzstaerke 6/10.

B

Bewertung

Die Gesamtkonfidenz lag bei 72% (mittel). Weitere Moeglichkeiten: Kopfschmerzen vom Spannungstyp (18%) und Clusterkopfschmerz (10%).

E

Empfehlung

Ich bitte um Ihre Einschaetzung, ob Migraene zutrifft und ob weitere Untersuchungen notwendig sind.

Assessment used for this guide

Migraine (72%) · Tension Headache (18%) · Cluster (10%)

>

Severity: Moderate · Confidence: 72%

Share as text

Print (A4)

Copy to clipboard

Generated from Klaro Triage assessment. This is not a diagnosis.

This guide helps structure your conversation with a doctor. It does not replace professional medical judgment.

9:41

<

Re-check

Klaro checked in · Tap to update your status

Last check

Migraine (Most likely)

24 hours ago

Moderate

How are you feeling?

Since your last check 24 hours ago

Better or resolved

Symptoms have improved or gone away

>

About the same

No significant change

>

Worse

Symptoms have gotten worse

>

New symptoms

I have new or different symptoms

>

Remind me later (+4h)

This re-check expires in 48 hours. After that it will be archived.

Explored multiple approaches:

Three architectures got serious paper time. (a) Pure conversational chat - felt warm but lost the structured trail clinicians need. (b) Form-first quiz with scoring at the end - clinical-looking but cold and slow. (c) Hybrid intake → Comparing screen → calibrated result with explainability bars. The hybrid kept the structure auditable while letting the user see the model think.

Decision Taken:

Went with the hybrid: free-text symptom capture, structured follow-ups only when they change the answer, then a Result screen that always shows the confidence band, the top three matches, and a labeled escalation tier (Low / Moderate / Emergency) tied directly to the CTA. The model never collapses uncertainty into a single number.

Trade-off:

The hybrid is slower than a pure quiz and noisier than pure chat. Two extra screens in the average session. Acceptable cost - the calibrated result is the whole product, and skipping the explainability layer would have rebuilt exactly the problem I set out to fix.

PROCESS · WIREFRAME EVOLUTION

v1, v2, v3. What broke and what survived.

The clarifying-question screen (CHK-03) shifted twice on structural grounds, not aesthetic ones. Each pivot was triggered by a specific usability failure.

v1

Rejected

v1 screen mock

Segmented progress dots

Progress bar stalled when the engine added follow-up questions. Users interpreted it as a bug, then as confused AI, then as a reason to abandon.

v2

Rejected

v2 screen mock

Pure conversational chat

It looked clean on its own but fell apart once I thought through real use. Users lost context, couldn't edit, read AI questions as opinions. Produced no scannable record for the doctor at the end.

v3

Final

v3 screen mock (CHK-03-A)

Hybrid modular · phase labels

One question per screen. Phase eyebrow communicates progress honestly without committing to a step count. Review screen with per-row pencil-edit.

HIGHLIGHTS OF THE DESIGN

Transparent Triage Engine

RES-01A · Low

EMG-01 · Emergency

RES-01D · Confidence Gap

RES-01A · Moderate Result (hero)

PLACEHOLDER · drop hero Triage Result screenshot. Confidence band, top-3 differential, calibrated CTA.

Why I made this call

The single most important screen in the product. Every other DiGA-grade triage app I audited hides the model’s uncertainty behind a single label (“see a doctor” / “monitor at home”). That hides exactly the information the user needs to decide. The Triage Engine surfaces three things on one screen - the confidence band (Low / Moderate / Emergency), the top three differential matches with weighted probability, and a labeled escalation tier that drives the CTA directly. If confidence is low or matches are within a 10-point gap, the system shows a warning instead of pretending it knows. The CTA is never “Continue” - it’s always the exact action: “Continue monitoring at home,” “Book appointment via Doctolib,” “Call 112 now.”

KEY FLOWS, ANNOTATED

Calibrated escalation, end to end.

Five screens carry the model. Each one is doing a specific job the audited apps got wrong. Notes call out the moments where the design earns its keep.

CHK-01

Symptom Entry

Free-text first; structured follow-ups only when they change the answer.

CHK-01 screen

← Free text first - never a quiz. Plain language captures hedge words the model needs.

← Auto-suggestion chips appear under input - not above. They’re a safety net, not the path.

← Safety monitor pulse runs the whole session. Red-flag terms trigger emergency intercept before submit.

CHK-05

AI Processing

Show the model thinking. Never a spinner with no story.

CHK-05 screen

← Three labeled steps: Symptoms logged → Comparing with clinical data → Personalised result. The user sees the work.

← Progress bar maps to actual model state - not a fake timer. If matching takes longer, the bar slows honestly.

← Cancel-check escape route at the bottom. The model is never a hostage situation.

EMG-01

Emergency Override

Surfaces at the first red-flag term. Independent of triage tier.

EMG-01 screen

← Full-bleed red, single page - interrupts any flow the moment a red-flag term appears.

← Call 112 button never moves. Same position on every emergency state across the app.

← Two-step dismiss (checkbox + confirm) - accidental dismissal is the worst failure mode here.

SBR-01

SBAR / SHBE Doctor Guide

Structured handoff a clinician reads in 30 seconds.

SBR-01 screen

← Fixed SBAR sections: Situation / Background / Assessment / Recommendation. German clinical convention.

← One-tap share to Doctolib, email, or print - handoff is rarely a single channel.

← Confidence band re-appears here. The doctor sees exactly what certainty the app claimed.

RCK-03

Re-check, Delta Questions

Symptoms evolve. The app should not.

RCK-03 screen

← Only asks what changed. “Same headache, still 4/10? Any new symptoms?” - not the full intake again.

← Episode-aware: connects back to the original assessment so the doctor handoff shows a trajectory.

← If the re-check pushes confidence up a tier, the user sees the upgrade explicitly. No silent re-rating.

LOCALIZED FOR GERMANY

Designing for German infrastructure

This is where the German specifics mattered most: connectivity, local services, and the rules.

Low-connectivity scenarios

2 a.m. migraine, Berlin Altbau basement

Mobile signal one bar. User types "starker Kopfschmerz". The client-side red-flag scanner runs before any API call. If matched, EMG-01 launches with zero network dependency. If not, processing shows a clear network state with a 30s timeout fallback to ERR-02.

Rural Brandenburg, reading prior result

Past episodes stored locally with full results, severity chips, original SHBE export. Re-read and re-share without re-querying the engine. The Re-check loop stores incremental deltas locally - reporting changes after 24h is not starting from zero.

EMG-02 · Offline Emergency Survival View

When two 112 attempts fail in a row, the app shows a static, cached first-aid panel with numbered steps. If this shipped, that content would need clinical sign-off and versioned retention per MDR Article 10.

Localized ecosystem integration

Doctolib

RES-01A's "Arzttermin buchen" deep-links into Doctolib with symptom context pre-populated. On return, PES-02 adjusts re-check timing based on whether the appointment was booked, declined, or deferred.

116 117

After-hours hotline. CTA triggers tel: link with confirmation overlay. PES-01 asks the single question “Hast du mit der Bereitschaft gesprochen?” and routes accordingly - retry, passive tracking, or EMG-01 escalation.

DiGA Freischaltcode

16-digit prescription code at ONB-01B. Supports TK, AOK, Barmer, DAK, IKK at launch. No-code path leads to a free-tier demo without AI analysis - preserves educational value, gates the regulated medical-device functionality.

Apotheken-Notdienst

Pharmacy locator from the self-monitor path. GPS-aware with PLZ/city-input fallback. No degraded experience for privacy-conscious users; same pharmacies surface either way.

DESIGN SYSTEM & ACCESSIBILITY

Gambetta + General Sans. Severity as semantic colour.

Gambetta (display serif, ≥22px) paired with General Sans (everything else). Two-family pairing carries semantic weight - display serif marks a question or moment of clinical authority; sans serif carries body, UI labels, data.

Severity colour mapping - three differentiators, always

Every severity has colour, text label, and shape per WCAG 1.4.1. Colour never carries clinical meaning alone.

Low

Self-monitor

Moderate

GP appointment

High

116 117

Emergency

112 (full screen)

COLOUR TOKENS · LIGHT + DARK MODE PARITY

background

Page background

surface

Cards, sheets

primary

CTAs, confidence

link

Teal · text links

Banned phrases live in the system as enforceable specs

✗ Exclamation marks in clinical contexts

✗ “May possibly” / “könnte möglicherweise” - double hedge

✗ "Please note that…" / "Bitte beachte, dass…"

✗ Emojis on RES, EMG, CHK, SBR flows

✗ Duration shorthand: “4h” - use “4 Stunden”

✗ “This is not medical advice” alone - legally insufficient

PLACEHOLDER · COMPONENT LIBRARY

8 patterns + 2 interactive · Profile Pill · Severity Badge · Confidence Chip · Phase Eyebrow · Option Row · Continue CTA · Wrap Chip · Segmented Toggle

IMPACT

Clinical & Business Impact

This is a self-initiated concept - no live deployment, no validated KPIs. The impact below is the system’s design intent measured against the DiGA / MDR Class IIa fast-track criteria and the audited competitor baseline. Honest framing.

• Calibrated escalation:

Three explicit tiers (Low / Moderate / Emergency) tied directly to the CTA. Every audited competitor collapsed risk into a single label. The Triage Engine treats the calibration as the primary design surface.

• Explainability built in, not bolted on:

Confidence band, top-3 differential, and contribution weighting visible on every result. Designed to satisfy the BfArM transparency expectation without a separate "about this assessment" detour.

• Structured clinical handoff:

SBAR / SHBE output is part of the flow, not a feature. Estimated 30-second physician parse time vs. the ~3-minute screenshot-and-retype baseline observed in the user interviews.

• Episode continuity:

Re-check loop reuses the original episode state. Trajectory data goes to the doctor instead of disconnected snapshots - addresses the single biggest gap in the audited apps.

• Proxy as a first-class flow:

Caregiver mode (parent / partner / child) doesn't break pronouns, age inference, or history. Three of twelve interviewees couldn't use existing tools for the person they were actually checking on.

• DiGA-aligned by design:

Component library, copy, and data-handling patterns shaped against MDR Class IIa expectations from the first wireframe - not retrofitted at the compliance review stage.

TARGET KPIs · SUCCESS FRAMEWORK

What I'd put on the dashboard.

Since this didn't launch, none of these have data. They're the dashboard I'd want from day one. The numbers are targets, not results.

NORTH-STAR METRIC

Correctly-routed triage sessions per active user, per month.

It would optimise against both failure modes at once. "Correctly routed" means SHBE export reaching a physician plus a short post-session check on whether the user acted on the recommendation.

AI INPUT QUALITY

> 85%

Intake Completion

Minimizing cognitive fatigue during the dense symptom-gathering stage required to feed the AI model precise data.

AI TRANSPARENCY

< 15s

Time-to-Understanding

Ensuring the interface visualizes the AI's diagnostic reasoning quickly and transparently without overwhelming the user.

AI GUARDRAILS

100%

Deterministic Safety Routing

Instantly triaging high-risk language or symptoms directly to emergency physical care paths when AI confidence parameters are low.

ALSO WORTH WATCHING

< 12%

Drop-off per intake step

If people bail mid-intake, the model never gets enough to work with. The number I'd watch most closely early on.

≥ 40%

Re-check return rate

Of people with a non-emergency result, how many come back within 72h to update their status. A rough read on whether they trust it.

100%

Consent on file

Every active user with a stored, timestamped consent record. Not optional under GDPR, and a hard gate for any DiGA path.

Structured output following German clinical convention. One-tap share to Doctolib, email, or print. Confidence band re-appears so the clinician sees the exact certainty the app claimed.

4. Episode-aware Re-check Loop.

Re-check asks only delta questions, links back to the original episode, and surfaces tier upgrades explicitly. The doctor sees a trajectory, not isolated snapshots.

PLACEHOLDER · FULL SITEMAP

Drop the Klaro sitemap export from Figma node 387:2004

What I'd do Differently

→ Run a real moderated study, even small.

Twelve informal conversations is not a clinical user panel. The next version needs n=20+ DACH patients across both self and proxy modes, with the calibrated escalation tested against actual physician second-opinion.

→ Validate the calibration with a clinician.

The Low / Moderate / Emergency tiers are designed against the literature and German triage convention, but the actual thresholds need a GP or emergency physician in the loop.

→ Build the SBAR handoff against real Doctolib data.

The doctor-facing summary is designed against the SBAR / SHBE spec, but I haven't put it in front of a German GP to time the actual parse.

→ The trade-off I made:

Shipping the calibrated-confidence pattern means two extra screens on average vs. a pure quiz flow. I'd want to instrument session-time post-launch and confirm the slowdown doesn't push abandonment up.

THAT'S IT

Klaro · A self-initiated concept · 2026 · Solo, evenings & weekends · DiGA / MDR Class IIa used as a design constraint

CONTACT.INFO

Copy component

Copied

amannagina.de@gmail.com

SOCIAL MEDIA

CONTACT.INFO

Copy component

Copied

amannagina.de@gmail.com

SOCIAL MEDIA

CONTACT.INFO

Copy component

Copied

amannagina.de@gmail.com

SOCIAL MEDIA