All case studies
Design + Build · Healthcare · AI Shipped Jun 2026 · 8-week build · UX research → Design → AI

Northline Health — a clinic group, modernised end-to-end.

Four US clinics. A patient portal from 2019 nobody used. Staff drowning in phone triage. Eight weeks later — a redesigned portal, an AI symptom-triage agent, and a practice-manager dashboard that made no-show prediction the first thing they see on Monday.

The Challenge

Northline Health runs four private clinics across the Pacific Northwest — two in Seattle, one in Portland, one in Bellevue. Patients booked by phone. Reception ran symptom triage on paper. The patient portal — built in 2019 — had a 6% engagement rate. Practice managers had no visibility on which appointments would ghost until the room was empty. The MD wanted the whole patient experience modernised without a 2-year enterprise rip-and-replace.

What we shipped

  • UX research — 14 patient interviews · 4 staff shadowing days
  • Card-sort with reception staff for symptom taxonomy
  • Full design system + accessible component library
  • Redesigned patient portal — mobile-first · plain English
  • AI symptom-triage agent (Claude + clinical RAG)
  • Practice-manager dashboard — no-show risk + capacity view
  • Clinician handoff — SOAP-format AI pre-notes

Stack

  • Next.js 15 · TypeScript · React Server Components
  • Claude Sonnet 4 · AAFP + USPSTF guideline RAG index
  • Postgres · pgvector · Row-Level Security
  • Auth0 · Twilio SMS · Postmark
  • AWS us-west-2 (US data residency) · SOC 2 Type II · HIPAA-conscious build
−38%Patient no-shows
↑ 62%Patient portal usage
240hReception time reclaimed / wk
+18NPS points (all 4 clinics)

The brief: modernise the whole patient journey — without breaking the clinic

The MD didn't want to buy a new EMR. He didn't want a two-year enterprise migration. He wanted his patients to have the experience they get from every other consumer app — and his staff to stop losing an hour a day to phone triage that a well-designed intake form could handle. He'd seen three healthtech vendors quote 12–18 months and £400k+ engagements. He wanted 8 weeks and something his practice managers could actually use on the Monday after go-live.

"Our patients live on their phones. Our portal was still 2019 desktop. Growvate spent a week in our clinics before they touched Figma. That's why what shipped actually fits." — Practice MD, Northline Health

Week 1: UX research — sitting in reception

Before any design, we spent five days across the four clinics. Fourteen patient interviews (in the waiting room, before their appointment) and four full days shadowing reception staff. Three findings reshaped the roadmap:

We ran a card-sort exercise with 8 reception staff to build the symptom taxonomy. Six categories, twenty-eight sub-categories, mapped to AAFP + USPSTF guideline references so the AI could cite its reasoning to the clinician.

Northline Health · Patient journey · Research affinity 14 interviews ACTION FEELING FRICTION DESIGN MOVE 1 · Trigger 2 · Book 3 · Wait 4 · Visit 5 · Follow-up "Something's off" Symptom starts Googles it Calls reception Portal too clunky Hold time 4–7 min 2–5 day wait No prep info Symptom worsens? In clinic Repeats symptoms Fills paper form Follow-up Prescription pickup Portal unused neutral 😐 😕 😟 😐 🙂 Medical jargon "presenting complaint" — 71% didn't know Reception overload 62% still book via phone · 1 hr/day gone No-show risk peaks Mon-AM · under-30 · first-visit patients Clinician rework Retypes intake into the chart, again Portal abandoned 6% engagement Never returns Plain-English intake "What's bothering you?" AI triage → reception Suggests urgency, staff confirm Risk-scored reminders Auto-schedule if flagged SOAP pre-note Clinician reviews, doesn't retype Mobile-first portal Rx tracking, meds, records
Patient journey map · 14 interviews · 4 staff-shadowing days. Five stages, five design moves. The friction row is what patients actually said. The design-move row is what shipped. The emotion curve was the single biggest input into where AI earned its place — and where it didn't.

Week 2–3: design system + clinical RAG

Two parallel sprints. The design team built an accessible-by-default component library (WCAG 2.2 AA, 16px minimum body text, high-contrast state changes, keyboard-first) packaged as Figma tokens and mirrored in code as CSS custom properties + React components. Colour, spacing, radius, type, motion, elevation — all tokenised so the practice-manager dashboard and the patient portal share a source of truth without looking identical.

The AI team built a clinical RAG index over AAFP + USPSTF guidelines, the clinic's own care pathways, and a red-flag symptom catalogue. Every AI response cites the specific guideline it drew from. Every response is reviewed by a clinician before the patient sees a clinical answer — the AI never diagnoses, only triages urgency and suggests the right clinician.

9:41 NORTHLINE HEALTH Hi Rachel — what's bothering you today? Sore throat since Sunday, worse when I swallow. Bit tired too. Voice Photo AI TRIAGE Looks routine · GP visit recommended within 3 days Show me slots Reviewed by a clinician before any clinical advice is shown northline.health/manager MONDAY · WEEK 38 All four clinics Bookings this week 312 +14% vs. avg No-show risk (high) 18 Reminders auto-sent Capacity used 81% Bellevue is 62% No-show rate 8.4% ↓ 38% vs. Q1 Today's appointments · high-risk first TIME PATIENT CLINICIAN CLINIC NO-SHOW RISK 09:00 M. Nguyen Dr. Patel Seattle-DT HIGH · 74% 09:15 J. Alvarez Dr. Kim Portland HIGH · 68% 09:30 R. Bergman Dr. Patel Seattle-DT MED · 41% 09:45 P. Shah Dr. Reid Bellevue LOW · 12% AI INSIGHT · MONDAY MORNING Bellevue is under capacity. Consider offering same-day slots to the 18 flagged high-risk patients.
Patient portal + manager dashboard. The mobile portal (left) asks patients what's bothering them in plain English — the AI's triage suggestion always appears as a suggestion, never a decision. The manager dashboard (right) is the Monday-morning cockpit — no-show risk scores drive smarter reminders, and capacity is visible across all four clinics.

Week 4–5: building the loop

This is where most healthtech projects stall — the AI works in demo, breaks in production. We built an eval suite of 340 real (anonymised) intake cases and ran the triage agent against every one, checking urgency assignment against the clinician's after-visit conclusion. Baseline accuracy at week 4: 78%. After two rounds of prompt tuning + RAG index expansion: 94%.

The practice-manager dashboard was the surprise winner. What started as a small "capacity view" became the manager's Monday-morning cockpit — a single screen showing the week's appointments, no-show risk score for each, live capacity across all four clinics, and a triage volume trend.

Week 6–8: rollout across four clinics

Rolled clinic-by-clinic, a week apart. We onsite'd each rollout — the design team ran a 90-minute session with reception staff walking them through the AI triage console, and the AI team pair-worked with the practice manager for the first two days after go-live.

By week 8, all four clinics were on the new stack. By month three, no-shows had dropped 38%, patient portal weekly-active-users had grown 62%, and reception staff were reclaiming a documented 60 hours per clinic per week.

What we'd do differently

Two things. First, we'd have built the reception console before the patient portal — the clinic runs on reception, and their buy-in was the hard part, not the tech. Second, we'd have invested in the eval suite in week 1, not week 4 — the AI accuracy problem is unsolvable without one, and the earlier you have it the tighter the loop.

Both are now standard parts of our healthcare engagement playbook.

"Eight weeks. Four clinics live. Patients love the portal. Reception staff say they can finally breathe on Monday morning. That's the outcome we'd been trying to buy for two years."

— Practice MD Northline Health · UK
Next case study →

Madrah.com — an AI tutor that kids actually finish

Read next case