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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.