MedTech Concept · Ophthalmology · Safety-First IA

Aegis Clinician: A Cockpit Where Every Safety Claim Is a Working Control

A one-week ophthalmology concept, rebuilt end-to-end in 2026 into a live workstation where every safety claim — identity, laterality, sign gates — is a working control, not a mockup.

  • Identity disappeared on scroll
  • Abnormal results had no owner
  • AI drafts could reach signing unreviewed
Duration
1-week concept sprint → end-to-end rebuild, 2026
Role
Staff Product Designer · Systems & Narrative — direction, arbitration, clinical honesty rules
Partners
Informal clinical review: ophthalmologist (retina) + RN (original sprint)
Built with
Claude Code (system build + verification) · ChatGPT (external research + critique) · Figma
Proof
339KB demo · 26 tokens · ±3px parity — evidence classes below
Open the clinical workstation demo Try it now

A working ophthalmic workstation — identity relay, sign-blocking gates, AI scribe, and a fully procedural 3D eye — running in your browser. Every workflow claim on this page is inspectable there. Implementation claims are labeled with their evidence source.

All patient data is fictitious · Best on desktop; responsive with browser and GPU fallbacks

Aegis clinical workstation demo: patient header with allergy chain, laterality tabs, procedural 3D eye, test results queue, and a sign gate footer
The workstation as it loads: Jane Miller’s chart, the left-eye pterygium plan, an unacknowledged IOP result, and a blocked sign button.
Domain
MedTech · Ophthalmology · Clinical Safety
Deliverables
Live workstation demo · Design system: 26 tokens, 17 text styles · Case narrative
Scope
Systems design · Procedural 3D anatomy · Verification protocol

From sprint to system

Rebuilding a concept until it can defend itself

The original Aegis was a week of IA arguments — identity cockpit, results as a task queue, Draft→Review→Accept→Sign — validated only by an informal clinical review. A concept can claim anything; a working system has to survive its own claims. The 2026 rebuild kept the invariants and replaced every illustration with a control that enforces them.

V1 static design frame beside the 2026 live workstation demo with three numbered callouts marking identity, results, and signing
The V1 frame, left, beside the live 2026 demo. ① Identity: a card that scrolls away became a header relay that cannot. ② Results: passive Verify chips became a claim-and-acknowledge queue. ③ Signing: ungated notes became a blocked pen.

Trade-off 1

Identity relay: the patient never leaves the screen

Name and allergy chain persist at every scroll position, handing off into the header with zero vacuum frames. I rejected a sticky banner: it taxes every screen to protect one failure mode. The relay costs nothing until the moment identity would vanish — which is the only moment that matters.

Workstation scrolled deep into the plan with name, MRN, clinic, and allergy chain held in the header
The relay, live: the plan scrolls, the header picks up name, MRN, clinic, and the Penicillin · Anaphylaxis chain, then hands back on return.

Trade-off 2

Laterality: OD on the left, and the deletion of “Both”

The layout follows the examiner’s view — OD displayed left — and a “Both” state was deleted; a later Compare tool was refused on the same grounds. Whatever merging saves in clicks, it spends in laterality ambiguity, and wrong-eye errors are not a cost I was willing to price in.

Overview panel with the Right (OD) tab active and the right eye showing a quiet prior excision site caption
OD selected: the right eye renders with its own record, a quiet prior excision site. There is no “Both” tab to choose.

Trade-off 3

Closed-loop signing: unacknowledged results block the pen

Claim→Acknowledge gates feed a sign-blocking footer whose reasons deep-link to the exact unfinished item. I rejected warning-and-proceed: a warning is a liability transfer, not a safeguard. After signing, the record freezes and every frozen control explains itself; identity is re-verified at the pen.

Sign-blocking footer reading Signing blocked with links for one unacknowledged abnormal result and one AI section pending review
One pass through the gate: deep-link to the unacknowledged IOP, claim, acknowledge, accept the AI section, re-verify identity at the pen, sign. The chart freezes read-only.

Trade-off 4

Calm motion: attention is spent once

The motion system runs on four duration tiers and three curves under one charter: no idle loops in a chart. Hotspots announce themselves with a one-time halo and then hold still; auto-rotate defaults off. I rejected showroom motion because a chart is not a showroom — attention is spent once, then the record sits still.

The settled record after load: eye stage still, hotspot markers quiet, result dots at rest
Cold load: dots enter in waves, the hotspot halo fires once, and then the record sits still.

The procedural eye

Anatomy owned in code

Why I rejected external models

A licensing investigation — an unlicensed viral repo, then a CC-BY model — ended with rebuilding the anatomy in pure code: anatomically zoned vessels with rectus insertion clusters and a perilimbal clear zone, a nasal feeder corridor into the pterygium wedge, hazel iris with collarette, glass cornea. Three hotspots each map to a charted finding with a record cross-reference; fake cross-section and layers tools were refused, because a surface model has no interior and the tool would render fiction with clinical confidence.

Zoomed procedural eye with the nasal pterygium hotspot popover open, ending in a see A&P cross-reference
Hover, zoom, select: the pterygium hotspot opens its finding and its “see A&P” cross-reference.
Zoomed procedural eye close-up showing scleral vessels, the nasal feeder corridor, and the pterygium wedge
Zoomed three steps in: vessel zones, the nasal feeder corridor, the pterygium wedge, all generated at runtime.

How I specified anatomy

Building it was its own experiment in directed AI work. I convened four specialist lenses — a color engineer, a graphic designer, a 3D modeling expert, and an ophthalmologist — and had them argue the eye into specification: exact sRGB ranges for a healthy sclera, vessel-coverage budgets with an anatomical map, corneal curvature in millimeters.

How the assertion loop failed and improved

Claude Code built to those numbers and then verified against them, screenshotting its own renders and asserting pixel ranges — sclera warmth, exactly one dominant highlight, wedge legibility at three camera angles — under a hard four-round cap. The loop caught what eyes miss and what pride hides: when a silent texture failure shipped a black eye behind a healthy-looking poster, the fix wasn’t a patch, it was doctrine — every build step now fails loudly or proves itself. When the render drifted from the style I wanted, I didn’t tune hex values; I set a new target and let the panel translate taste into assertions.

“Every build step now fails loudly or proves itself.”
Three eye poster generations in a row: warm ivory ball, vessel network pass, final render
Three generations of the eye: the warm-ivory ball, the vessel-network pass, the final render.
sclera (lit)225–248 sRGB · R>G>B
vessel coverage6–14% · perilimbal clear zone = 0 ink
dominant glintexactly 1 · aspect ≥ 2
iris hue60–105 · collarette detectable
wedge legibilityΔR ≥ +18 vs adjacent sclera · 3 camera angles
verdict4-round cap · fail → escalate with evidence
Assertion excerpt from the eye’s verification loop. measured, in-file

Human-led, AI-amplified

The panel, the arbiter, the record

The rebuild ran as a directed system, not a prompt-and-hope loop.

Research partner

ChatGPT worked outside the build as research and review partner: reference audits, structured critique, the master rebuild prompt.

Builder & verifier

Claude Code worked inside it as builder and verifier — driving the Figma plugin API with pixel-parity assertion loops (137 text nodes within ±3px, measured in-file) and building the demo through role-based agent teams that included a standing medical-UI reviewer, plus a visual QA protocol where the procedural eye asserts pixel ranges on its own renders.

Arbitration owner

Recurring expert panels — ophthalmology, clinical IA, motion, accessibility, color engineering, 3D, performance, compatibility — argued in the open, and I arbitrated every conflict with recorded rationale. When the 3D and motion seats wanted the eye to auto-rotate on load, the medical seat objected, and I ruled for the chart: rotation defaults off, with a one-time attention halo instead. Direction, taste, arbitration, and the clinical honesty rules stayed with me. The tools amplified judgment; they never supplied it.

ConflictThe 3D and motion seats wanted the eye to auto-rotate on load.
ObjectionThe medical seat objected.
RulingFor the chart: rotation defaults off, with a one-time attention halo instead.
The auto-rotate ruling, as recorded.
“The tools amplified judgment; they never supplied it.”

The system underneath

26 tokens, one blue, four tiers of motion

26 tokens and 17 text styles in shadcn-style conventions as the design→code bridge, hardened over six system frames and two hand-tuned passes. measured, in-file One-blue doctrine — action blue is reserved for the commit action and the focus ring; even pressed toggles use ink. WCAG 2.2 depth: roving tabindex, focus-not-obscured, screen-reader parity on the 3D stage, 320px reflow.

Board with 26 color tokens listed beside 17 named text styles for the Aegis design system
The 26 color tokens and the 17 text styles, one board. measured, in-file
Filmstrip of six Aegis system frames from V2 to V8 with the two hand-tuned passes flagged
Six system frames, V2 → V8; the two hand-tuned passes are flagged. Machine loops converged on fidelity; the hand passes changed what “right” was. measured, in-file

Outcomes

Verifiable outcomes

This is concept work: no deployment metrics exist, and none are claimed. Every number carries its evidence class; every workflow claim is inspectable in the live demo; implementation claims carry their evidence source.

  • 339KB total transfer including the 3D scene. asserted, in-demo (DevTools Network)
  • Zero external 3D assets; the anatomy is generated at runtime. asserted, in-demo (view source)
  • Patient identity + allergy chain on screen at every scroll position, 8 viewports. designed invariant asserted, in-demo
  • Signing blocked until every abnormal result is acknowledged; each reason deep-links. designed invariant (try to sign)
  • 137 Figma text nodes within ±3px of the shipped demo. measured, in-file
  • Dynamic aria on the identity handoff; keyboard rotation and screen-reader parity on the 3D stage; prefers-reduced-motion honored. asserted, in-demo
  • WebGL context-loss recovery; three GPU tiers, self-benchmarked in 20 frames. asserted, in-demo
  • Post-sign freeze: frozen controls explain themselves. asserted, in-demo
  • Deployment, clinical outcomes, physician time saved. not claimed

Build record, screenshots, and the deviation list → /proof

Reflection

What the rebuild taught me

  • My QA rotted from the outside. The first visual-QA protocol compared against external references that broke; verification that depends on outside artifacts decays. The rebuilt protocol is self-verifying — pixel assertions on the eye’s own renders — with a hard four-round cap, because unbounded self-checking burns budget without converging.
  • The strongest safety moves were subtractions. I shipped “Both eyes,” then deleted it; nearly shipped Compare; refused cross-section. The clinical-honesty rules were discovered by deletion mid-build when they should have been charter on day one.
  • An ophthalmologist agent is a lens, not a user. The laterality convention and hotspot rules are defensible reasoning, not validated practice. Production needs real clinician review, EHR integration, and a safety case — this demo proves craft, not clinical fitness.

Try the workstation

The original one-week concept is mine. The design system and live demo were rebuilt in 2026 in collaboration with Claude Code and reviewed with ChatGPT, on fictitious patient data throughout; direction, arbitration, and every final call are the author’s.