CirrusMD · Director of Product Design · 2015–2019

Reconnecting Patients
and Physicians in
90 Seconds or Less

Four years building the design function at a pre-Series A enterprise telemedicine company — from a six-person team with outsourced design to a HIPAA-compliant design practice serving Kaiser Permanente, Aetna, and 12 large-scale healthcare customers, with 46% faster clinical encounters and $25M in funding contributed to.

46%
Less time per clinical
encounter via AI support
90s
Patient-to-physician
connection time
$25M
Funding contributed to
across Series A & B
12+
Enterprise health plan
customers including Kaiser & Aetna
Role
Director of Product Design
Tenure
2015–2019 (4 years)
Team
1 senior hire + 3 freelancers
Platforms
iOS, Android, Web
CirrusMD telehealth platform

The Problem

Healthcare had built walls between patients and doctors. CirrusMD was built to tear them down.

Most people avoid care until things get bad enough to justify it. The friction is the problem — scheduling, copays, referrals, driving somewhere. CirrusMD's premise was that 80% of acute care needs can be addressed via text, by an actual physician, faster than it takes to find parking at a clinic.

I joined pre-Series A. Design was fully outsourced — every change ran through an agency at hourly rates. The product team was six people: one designer, one PM, one iOS dev, one Android dev, two web engineers. Moving fast, no design system, no research practice, no way to scale.

My mandate

Build the design function from the inside out. Create a system that could support white-label deployments for enterprise health plans like Kaiser Permanente and Aetna. Design the Advanced Provider Support tools that would make physician encounters 46% faster. And do it all within the constraints of HIPAA compliance, ADA accessibility, and the highest-stakes user context in any industry — someone's health.

$25M
In funding contributed to across Series A & B
12
Large-scale healthcare customers including Kaiser & Aetna
40
Employees hired during tenure as design org scaled
$400K
MRR gained during the design leadership period

Building Foundations

No design system. No process. No research infrastructure. Fixed all three.

The most urgent problem wasn't a feature. It was that design decisions were evaporating in transit. One designer, three platforms, no shared components, no documented design language. Features left design with full context and arrived in engineering weeks later stripped of it. I couldn't build new things until handoff worked.

⚙️
Design System
Built a full component library and design system that enabled consistent engineering output across iOS, Android, and web — and made white-label theming for enterprise customers structurally possible.
Design Documentation
Created a documentation practice that preserved design decisions across long engineering cycles. When a feature shipped six months after design, the context was intact. The needle and thread that held cross-functional work together.
🧪
HIPAA-Compliant Research
Navigated the complex regulatory constraints of healthcare user testing — finding compliant paths to record and analyze sessions without capturing personally identifiable information. Built a research practice where none had existed.

The documentation piece mattered more than it sounds. In most products, design hands off and it ships in days. In healthcare, a feature could sit in the engineering queue for three months. By the time someone picked it up, the rationale was gone. Documentation was the only way to keep the original decision intact across that gap.


Advanced Provider Support

AI-powered contextual data that got physicians to the "aha moment" 46% faster.

Physicians were spending part of every encounter asking questions they shouldn't need to ask. Medical history, recent procedures, past diagnoses — all of it already existed in the record. None of it was surfacing at the right moment. Every redundant question was time not spent on the actual problem.

APS used keyword detection to pull relevant context before the physician asked for it. Patient mentions "chest pain" or "hysterectomy" in their first message — the system cross-references their history and has the relevant context ready. I worked out how to surface this without disrupting clinical flow. Additive, not interruptive.

The result

Armed with relevant contextual data upfront, physicians could get to a faster clinical decision with 46% less back-and-forth Q&A. Faster encounters meant more patients served per physician, lower cost per visit, and — most importantly — patients getting answers in less time when they needed care most.

The design challenge was surfacing this intelligence without disrupting the clinical flow. Physicians are operating under time pressure, managing multiple concurrent encounters, making judgment calls that affect patient outcomes. The AI support had to be additive — enhancing existing clinical judgment, not replacing it or adding cognitive load.

Step 1 — Patient starts chat
Step 1. Patient starts chat. Keyword triggers contextual data retrieval in background.
Step 2 — Provider digs in with contextual data
Step 2. Provider digs in. Relevant history surfaced — recent hysterectomy + pneumonia keyword triggers deeper context.
Step 3 — Provider explains diagnosis
Step 3. Provider reaches diagnosis faster. Contextual data compressed the discovery phase significantly.
Step 4 — Provider reassures and confirms urgency
Step 4. Provider reassures and confirms urgency. ER referral made with confidence and clinical backing.
Patient chat interface on iPhone X
Patient-side chat interface. Real-time text exchange with a physician. The simplicity of the patient experience belies the clinical intelligence operating beneath it.

Accessibility & White Labeling

Color Math: a system that made enterprise theming and WCAG compliance work simultaneously.

White-labeling for Kaiser or Aetna sounds simple until you're actually doing it. Each customer's brand colors were designed for print and marketing — strong hues, untested against UI contrast ratios. Applying them naively to CirrusMD produced interfaces that failed WCAG. Sometimes badly.

The structural problem was that we had a three-color analogous system — light blue, medium blue, dark blue — that had no mechanism for arbitrary input. I needed a system that could accept any brand color and reliably generate a compliant, on-brand palette without manual intervention per customer.

Color Math: dynamic HSL-based color generation that creates WCAG-compliant interfaces from any input color.

The answer was to treat colors as mathematical relationships, not fixed values. We built Color Math — input a primary brand color, and the system uses HSL manipulation to generate a dark and a light variant that meet WCAG contrast ratios. Any hue, any starting value. The math does the compliance work.

What started as a white-labeling constraint became the accessibility foundation for the whole product. Every enterprise deployment was WCAG-compliant by default. No per-customer design work required.

Then we automated the deployment itself. Color Math gave engineering a clean input-output model. We built a pipeline that accepted a customer's brand variables at contract signing and spun up a fully branded, compliant instance without any manual steps.

Primary
Dark
Light
Kaiser Primary
Kaiser Dark
Kaiser Light

Deployment Automation

Color Math didn't just solve white-labeling — it eliminated $10M in operational costs.

The original enterprise deployment process was manual, expensive, and slow. Every new customer — Kaiser, Aetna, and every health plan after — required a 5-person team working 160 hours to deploy a branded, compliant instance of CirrusMD. That's roughly a full month of work per customer, before a single patient could be seen.

Color Math changed the economics entirely. Because brand theming was now mathematical and automated — not manual — design and engineering used it as the foundation for a fully automated deployment pipeline. The system accepted a customer's brand variables at contract signing and generated a fully compliant, white-labeled instance without any manual design or engineering intervention.

The result: what took a 5-person team 160 hours now took a single technical PM 2 hours. The pipeline triggered automatically at contract signing. Customers went live the same day they signed.

Deployment transformation
Before
160h
5-person team
Manual per deployment
~1 month per customer
After
2h
1 technical PM
Automated at contract signing
Live same day
$10M
Operational savings across
50 customer deployments
98.75%
Reduction in deployment
time per customer
Day 0
Customer go-live from
contract signing
"What started as a white-labeling design problem became an automated deployment system that directly accelerated revenue recognition and contributed to investor confidence across two funding rounds."

Mobile SDK Kit

A white-label SDK that gave CirrusMD full UX control inside any host app.

One of CirrusMD's primary distribution channels for enterprise customers was the mobile SDK — an integration that let health plans embed the CirrusMD experience directly inside their flagship apps (Kaiser's app, Aetna's app) without redirecting users to a separate product. The challenge: when you're embedded in another app, that app's navigation controls your navigation. You inherit their UX decisions, their chrome, their interaction patterns.

The SDK redesign solved this by building a navigation layer that sat on top of the host app — removing the dependency on the host's navigation entirely. A single entry point, a single exit point, and full UX control within that container. The Encounter Stream — a persistent view of past and ongoing medical chat encounters — became the SDK's home base, with iOS modal interactions for individual encounter details that kept the experience feeling native without sacrificing CirrusMD's clinical UX standards.

Color inheritance was handled through Color Math, so the SDK automatically adopted the host app's brand identity on load — invisible to the patient.

Host app integration
Host App Entry
Encounter stream first visit
1st Visit Stream
New encounter modal
New Encounter
Encounter queue
Encounter Queue
Provider response
Provider Response
Progress note
Closed Encounter
Progress note details
Visit Summary
Active encounter stream
Active Encounter
Two concurrent active encounters
Concurrent Encounters
Mobile SDK — integrated into Kaiser host app. Color system inherited from host app via Color Math. Full encounter lifecycle: entry, queue, active chat, provider response, closed encounter, visit summary.

Patient Onboarding

Registration designed for the moment someone needs care — not the moment they're filling out paperwork.

Someone registering for CirrusMD is probably already worried about something. Standard healthcare registration — long forms, insurance verification, confusing fields — is the wrong experience for that moment. I cut it to the minimum required to connect them to a physician. Birth date and member ID. That's it.

CirrusMD patient registration screen
Patient registration. Minimal required fields — birth date and member ID — with immediate app store links. Registration to first encounter as fast as possible.

Outcomes

Four years. A design practice built from zero. Healthcare delivered at text speed.

Four years. Design function built from nothing. Series A closed. Fifty enterprise health plans deployed. The work required a kind of precision I hadn't needed before — HIPAA compliance, ADA requirements, clinical flow constraints, and users who were scared. Every shortcut had consequences. That discipline carried into everything I did after.

46%
Reduction in clinical encounter time via Advanced Provider Support. Less back-and-forth Q&A, faster diagnosis, better patient outcomes.
$15M
Series A closed — design-led work was central to the investor pitch and enterprise customer story. Joined pre-funding when the company nearly ran out of money.
$10M
Operational savings across 50 enterprise deployments. Color Math automated a 160hr/5-person process down to 2hrs/1 technical PM — triggered at contract signing.
50
Enterprise health plan customers deployed — including Kaiser Permanente and Aetna — each live same day as contract signing via the automated Color Math pipeline.
2hr
Time to deploy a fully branded, WCAG-compliant enterprise instance. Down from 160 hours. Design and engineering built the system together — Color Math was the foundation.
Color
Math
A dynamic HSL-based color generation system that made every enterprise deployment WCAG-compliant by default — and became the engine of the automated deployment pipeline.
View all work
Back to portfolio
View all case studies →