Case study · 2024 → 2026 · Dental21 / P21

The calm
in clinical software.

A design system and seventeen products, shipped under one quiet language — for our own clinics and the external practices that license the suite.

48pages
Figma library
A single source of truth for color, type, components and surfaces — versioned 1.0 → 1.1.
1,352frames
Documented states
Hover, pressed, focus, disabled and dark variants for every interactive surface.
4,376×
Aqua 800 in use
The most-used token in the file — a brand color earned by repetition, not declaration.
17products
One language
Front-desk, chairside, booking, ratings, anamnesis, staff and marketing — all on the same system, internal and external.
The brief

The reception was running on five spreadsheets, three sticky notes and a phone that never stopped ringing.

Dental21 had grown fast — first inside its own clinics, then through a long tail of external practices buying the software. Each one had a different idea of what the front desk should look like. Patients waited; receptionists improvised; the brand slipped a little every time. My job was to design a system calm enough to hold the whole network — internal and external — and quiet enough to disappear behind the work.

01 — Listen

Eight clinics, two weeks, one notebook

I sat at the front desk in Berlin-Mitte, Hamburg-Eppendorf, Frankfurt and four others. I watched calls, check-ins, room hand-offs. I learned what "Calmaster" actually meant.

02 — Audit

Tear the old system down to studs

I mapped every screen, every button, every shade of green being used. The audit found 38 distinct greens. We kept three.

03 — Build

Tokens first, then components, then screens

Color, type, spacing and elevation tokens shipped to engineering before a single component was final. Components followed. Screens came last.

04 — Govern

Make the system harder to break than to follow

Lint rules in Figma. Component contracts in code. A weekly office hour. The system gets stronger every Friday at 16:00.

The system

Tokens for everything. Decisions for the few things that matter.

Every surface in P21 is built from the same four primitives — color, type, spacing, elevation — plus one signature shape: the fully-pill button. The rest is restraint.

Color · 11 ramps

Aqua 800 is the brand. The other ten ramps exist to keep it readable.

One primary (aqua), one secondary (orange, used sparingly), three semantic (success, warning, error), three extended (analogous blue, triadic blue, triadic purple) and a full grey.

900
800
700
600
500
400
300
200
100
75
50
900
800
700
600
500
400
300
200
100
50
0
Type · Lato + DM Serif Text

One family for product. A serif for one breath of warmth in marketing.

Buttons are always Bold 14/20 with 0.25px tracking. Body is Regular 15/24 with 0.25px. The display weight is Light — the brand whispers, it doesn't shout.

Display L · 80/100
The front desk,
Headline · 24/32
Patients today
Body M · 15/24
Three rooms in use, six patients up next.
Label M · 14/20 · 700
ADD PATIENT
Spacing · 4px base

Nine canonical steps. No fractions, no improvisation.

4, 8, 12, 16, 24, 32, 48, 72, 80. Every padding in P21 is one of these.

Radii · the signature

Pill buttons. 12-16px cards. 8px inputs.

The fully-pill button is the most recognisable element of the brand — it appears on every product surface, identical, every time.

Pill · 100px
Elevation · 1 → 10

Two-layer shadows. No glow, no halo.

Layers 1-5 use grey-tinted shadows for resting cards and modals. 6-10 are for menus and overlays.

1
2
3
4
5
Iconography · 24px outlined

Material Symbols at 400 weight, plus a clinical set drawn in-house.

Filled variants are reserved for selected and active states. We never use emoji or unicode glyphs — every mark is a real SVG, every time.

group phone calendar_month task_alt meeting_room notifications help search add edit description check_circle
Motion · 150–200ms

Short fade. A 4 — 8px rise. Ease-out. Nothing bouncy.

Cards lift on hover from shadow-2 to shadow-4 with no translation. Lists add and remove with 150ms fade and 8px slide. The brand has a calm pulse — animations follow it.

Surfaces

Seventeen products. One language.

The same tokens, the same components, the same writing voice — across every screen a patient, dentist or front-desk colleague ever sees, in our own clinics and in the external practices that license the suite.

01
Claire
The front-desk operating system. Patients today, calls, rooms — the flagship surface and the one I personally led.
1,420Frames · 71 screens
02
CalMaster
The calendar and capacity engine that sits underneath Claire. Treats every chair, room and dentist as one bookable resource.
340Frames
03
Shift Planner
Weekly rotas for receptionists, assistants and dentists. Drag-to-fill, gap detection, stand-in suggestions.
180Frames
04
Clea
The praxis management system — billing, insurance, KV codes, treatment plans. The unglamorous backbone every clinic runs on.
920Frames
05
Health Assistant
Chairside software for assistants and clinicians. Treatment plans, charts, room status — calmer than Claire by design.
680Frames
06
Availy
The patient-facing online booking. Slot picker, appointment confirmation, reschedules — embedded into every clinic site.
120Frames · responsive
07
Digital Anamnesis
The pre-appointment health questionnaire. Replaces the clipboard. Patient-mobile and tablet-on-arrival, both responsive.
210Frames
08
Happy
The rating tool — post-visit emails to patients, monthly pulse to dentists. The friendliest surface in the system.
88Frames · email + web
09
my21
The staff app. Shifts, payslips, internal news, holiday requests — for every receptionist, assistant and dentist in the network.
260Frames · iOS + Android
10
Dental21 · website
The marketing site. The one place we let DM Serif Text breathe. Photographic, warm-neutral, never illustrated.
38Pages
+ Seven internal tools running on the same system
Recruiter portal Onboarding Lab Connect Inventory Finance Console Training Partner API docs
Voice & content

Clinical, but warm. The product never shouts at the receptionist.

Voice is a design decision. We wrote and rewrote every string in the system — twice in German, once in English — and pinned the rules to a one-page content guide every PM, designer and engineer reads on day one.

Buttons → verb-first, sentence case

Add patient · Save · Start shift · See design guideline

Add A New Patient · Click to Save · Start the Shift Now!

Address the user as "you", never "I"

Claire will remind you before 18:00.

I'll send a reminder at 5pm 😊

Numbers are numerals — even at the start of a stat

3 rooms · 21 patients today · 2 callbacks outstanding

Three rooms · seventeen products today

No exclamation marks in transactional copy

Saved.

Saved successfully!

"After we shipped Claire, the receptionists stopped sounding apologetic on the phone. That was the metric I cared about."
— Field note, Berlin-Mitte clinic, week six
How it shipped

Fourteen months, four releases, one rollback.

Q1 · 2024

Field research and audit

Eight clinics, 40+ shadowing hours, 38 greens identified. Output: a 60-page audit and the case for a single system, signed off by founders.

Q2 · 2024

Tokens v0.1 → v1.0

Color, type, spacing, elevation. Shipped as CSS custom properties to engineering before any component was final. Earliest tokens are still in production untouched.

Q3 · 2024

Component library v1

Buttons, inputs, cards, status pills, avatars. Every component documented with hover, pressed, focus, disabled. Pseudocode JSX for every spec.

Q4 · 2024

Claire alpha · Berlin-Mitte

One clinic, one shift, one receptionist. We watched her use it. We rewrote eleven strings the same evening.

Q1 · 2025

Rollout to fourteen clinics

Phased over six weeks. One rollback (a calls panel that didn't translate well to the Hamburg workflow). Re-released ten days later.

Q2 · 2025 → 2026

System v1.1 · governance

Availy, Happy, my21 and the marketing site adopted the system. Friday office hours started. Lint rules went live in Figma. External practices started licensing the suite this quarter.

Other projects.

All projects ↗