Reflex Case study

Reflex: Turning dead‑end feedback into owned, routed tickets

Hospitals were already collecting patient feedback. Reflex is what makes it matter, turning every negative response into an owned, routed, resolved ticket.

Role
Founding Product Designer
Research · Information architecture · Interaction & UI · Design system
Client
A multi-center hospital group
Platform
Multi-tenant SaaS
Surfaces
Web console + WhatsApp
reflex / experience dashboard
The Experience dashboard: NPS and CSAT for IP and OP, with how fast the loop closes (example data)
reflex / ticket
A ticket's workspace: the patient's answers, its deadline and Close the Loop (example data)
Scroll to read the case study

Impact

Reflex shipped and is now in daily use across 139 hospitals and clinics. The numbers below are from the live platform since launch, not projections. The short version: feedback that used to die in a monthly report now becomes owned, routed work, and the operation got measurably faster at closing the loop.

316K Patients reached on WhatsApp Across the hospitals and clinics running Reflex, in their own language.
572K Feedback requests delivered Surveys that actually reached a patient's phone, the signal the whole system runs on.
40,985 Tickets opened automatically from feedback Every completed response filed as an owned, routed ticket. No coordinator triages by hand.
97% Of those tickets closed 21,047 were auto-flagged as bad experiences, given a deadline, and escalated if missed.

From weeks to about a day

The clearest sign the workflow holds up: as teams adopted the routing, SLAs and escalation, the time to close a complaint collapsed. A ticket that took months in the first weeks is now closed in about a day.

~25 hrs Median time to close now, fertility chain Down from about 106 days for its first month of tickets (Jan to Oct 2026).
36 hrs Median time to close now, maternity chain Down from 122 hours at launch (Jun 2025 to Feb 2026).

Recommendation scores moved the same way while Reflex was live. On the maternity chain, where response volume was high enough to trend reliably, the recommend score (NPS) climbed from about +3 to +29 over its first eight months. On the fertility chain, 77% of patients rate their overall experience "Excellent".

The qualitative shift is the bigger story:

  • Leadership moved from monthly reporting to daily decision-making, because the data finally became trustworthy and actionable.
  • Negative feedback stopped dying in reports and started becoming owned, tracked work.
  • Every hospital unit gained clear accountability.
  • RCA and CAPA turned one-off fixes into institutional memory: more than 19,000 tickets have been closed with a structured outcome, root-cause and preventive-action record.

Context

Large hospital groups increasingly compete on patient experience, not just clinical outcomes. A poor billing interaction or a slow nurse response can cost a repeat visit, a referral, and a review. So the client did the sensible thing: they collected feedback from every patient.

The tool in place: EasyRewards

The team ran on EasyRewards, their survey platform. Here's the life of one complaint in it:

1
Survey sent Goes out after the visit.
2
Response stored Saved, and that is where it stops.
3 slow
Found by hand Dug out of a slow, outdated interface staff avoided.
4 manual
Routed by hand Forwarded one at a time, if at all.
5 gap
No clear owner Nothing makes sure it reaches the right person.
6 late
Monthly report Leadership sees it weeks later, with no dashboard to act on.

The feedback was collected, then went nowhere. That gap is what the brief missed.

Reframing the brief

The brief I was handed was "redesign the interface." Very early, I pushed back on that framing. The interface was a symptom. The real problem was that feedback was a dead end: a patient could say exactly what went wrong, and that signal would land in a report nobody acted on until the end of the month.

So I reframed the goal: from redesign the dashboard to redesign the feedback operation, from the moment a patient responds to the moment the hospital has learned something.

Discovery

I walked the workflow with the people who lived in it: coordinators who triaged complaints, the heads who owned resolution, and leadership who reviewed the numbers. Four findings shaped everything:

Leadership didn't trust the data. Slow, lagging dashboards turned feedback into a monthly summary.

In the product A live dashboard fast enough to open every morning.

Feedback, but no insight. No way to see which department, doctor or journey was slipping.

In the product Scores broken down by department, doctor, zone, and OP vs IP.

Negative feedback never became action. Tickets assigned by hand, owners unclear.

In the product Every negative response files an owned ticket on its own.

"Resolved" meant nothing. No record of why it happened, so it happened again.

In the product Closing a ticket requires an outcome, a root cause and a fix.

The insight that reorganised the product

The single discovery that restructured the whole product came from watching operations, not from survey data:

Outpatient (OP) and Inpatient (IP) are not one workflow. They are two fundamentally different patient journeys.

Outpatient (OP): one visit, one ask.

1
Visit The patient comes in.
2
Treatment Seen by the doctor.
3
Bill generated Pays, and leaves.
4 ask
Feedback asked Once, right after the bill.

Inpatient (IP): an admission, asked along the way.

1
Admitted The stay begins.
2 ask
6 hours in The first check-in.
3 ask
24 hours in A second check-in.
4 ask
72 hours in A third check-in.

The old platform flattened both into one survey and one report, which is why the data lacked context. Reflex models two journeys, not one, and that became the backbone of its information architecture.

Constraints

Designing this well meant designing within the realities of a hospital enterprise, not around them.

WhatsApp is the patient channel. But silence could mean an unhappy patient, or a message that never arrived.

So the design had to Tell delivery apart from satisfaction.

Multi-tenant by default. One platform, many hospitals.

So the design had to Make the hospital you're in unmistakable, before anything else.

The org chart is the data model. Hospitals think in units, doctors, zones and heads.

So the design had to Map every metric and ticket to that structure.

Three very different users. Leadership, experience teams, frontline resolvers.

So the design had to Give each of them their own screen, not one for all.

A design system built for a different job. My own system had no ownership, SLA or escalation states.

So the design had to Extend it with those states, on the same colour, type and components.

Design principles

Before touching layouts, I wrote down the principles I'd make every decision by. Each one shows up somewhere specific below:

01 Feedback is only valuable when it becomes work No owned task means the system failed. Automatic tickets
02 One screen, one question More data on one dashboard is clutter, not clarity. Three analytics tabs
03 Ownership must be unambiguous Every issue has exactly one owner, always. One ticket per team
04 Check the survey arrived A low score might just be a message that never landed. Message Tracker
05 Every closure makes the hospital smarter Closing leaves a record, not just a status change. Close the Loop
06 Two journeys, not one OP and IP are modelled apart wherever they differ. OP / IP split

Designing the solution

Rather than starting from features, I started from the three questions the operation needed answered every day, and built a dedicated screen to answer each one:

ScreenThe one question it answersWhat's on it
Experience dashboard"How is patient experience doing, and where is it slipping?"NPS and CSAT, broken down by department, specialization, doctor and zone
Message & Response Tracker"Did our surveys actually reach patients and get answered?"sent → delivered → responded counts, and response time
Ticket workspace"What do I fix next, and what's the full context?"the complaint, its history, and the Close-the-Loop panel

What follows is how those questions became design decisions. Each screen appears as evidence for a decision, not as a stop on a tour.

Split analytics into three surfaces, not one dashboard

The obvious move was a single powerful dashboard with everything on it. I deliberately didn't. Each question has a different owner and a different failure mode, and mixing them creates a specific danger: a leader could see a low response rate and misread it as falling satisfaction, when it actually means messages aren't being delivered. So analytics became three deliberately separate surfaces, one per question, and they sit as three tabs across the top of the live console:

DashboardFeedback AnalyticsPerformance

Tradeoff: three surfaces mean more navigation than one. I accepted it because it protects the integrity of the decision made on each screen. Un-confusable metrics were worth one extra click.

Shape the dashboard like the hospital, not like a survey

The leadership dashboard is organised around the hospital's own structure, so a leader moves from "something is wrong" to "here is where it's wrong" in seconds. It surfaces NPS and CSAT, the OP vs IP split, and performance broken down by department, specialization, doctor and zone, alongside overall patient sentiment. The goal was a screen a leader opens every morning and acts on, not a report they read once a month.

The live RefleX Analytics dashboard: feedback summary cards and an NPS overview with a donut score, trendline and a by-specialization breakdown 1234
1 Three tabs, one question each
2 IP and OP counted apart
3 How fast the loop closes
4 Broken down the way the hospital runs
The live dashboard: the three tabs, feedback totals split by journey, and the IP NPS overview.
The OP NPS overview: a score donut, a trendline and NPS by specialization, with the IP-CSAT distribution beginning below
OP and IP are scored separately: the outpatient NPS overview, with CSAT trends and distribution following underneath.
Department-wise and specialization-wise CSAT tables with overall, IP and OP columns
CSAT broken down the way the hospital is run: by department and by specialization, each split into overall, IP and OP.
Zonal performance table with NPS, CSAT and complaint-spike reason, plus positive and negative sentiment word clouds
Zone performance alongside positive and negative sentiment word clouds, so the words patients actually use sit next to the numbers.
Doctor-wise feedback table with CSAT, feedback count and top phrases per doctor
Down to the individual clinician: doctor-wise CSAT, feedback count and top phrases (doctor and hospital names are anonymised examples).

Separate the collection pipeline from the experience

Because every survey goes out over WhatsApp, the health of collection is its own question. It gets its own tab, Feedback Analytics, so a low number is read correctly and never mistaken for falling satisfaction.

The Feedback Analytics tab: counts for total patients, triggered, delivered, read and filled, with day-wise and time-of-day funnel charts 1234
1 Its own tab, apart from the scores
2 Delivered: did it reach the phone?
3 Filled: the true response rate
4 When patients actually read
Feedback Analytics: the collection funnel from triggered to filled, by day and by hour (example data).
Form-wise and unit-wise breakdown tables with triggered, delivered, read and filled counts
The same funnel by survey form and by hospital unit, so a weak link has an address (example data, anonymised units).

Meet patients in their own language

A survey in the wrong language is really just another non-response, so the WhatsApp form asks the patient to pick their language first. On the fertility chain, nine are live: about two-thirds answer in English, roughly one in seven in Hindi, and the rest spread across seven more.

Englishहिंदी Hindiதமிழ் Tamilಕನ್ನಡ Kannadaతెలుగు Teluguবাংলা Bengaliമലയാളം Malayalamગુજરાતી Gujaratiमराठी Marathi

Make negative feedback create work automatically

The heart of Reflex: no coordinator has to read a report and decide to act. The act of complaining is the act of creating accountable work.

1
Patient replies Submits feedback on WhatsApp.
2
Ticket filed Owned by its centre and department.
3 auto
Negative? Flagged a bad experience; priority jumps.
4 auto
Clock starts Routed to the right team, deadline running.

Tickets are routed by what the complaint is about:

Cleanliness → CX / Housekeeping
Nursing → Nursing Operations
Billing → Billing Team
Doctor communication → Clinical Leadership

A deadline on every ticket, then an automatic climb

Routing to an owner means nothing if the ticket can quietly sit there. So it can't:

1
Ticket assigned Deadline set by the owning department.
2 late
Deadline missed No resolution in time.
3 critical
Escalates The next person up is notified; it turns Critical.
4
Fresh deadline The clock restarts, up to five levels.
The department that owns a ticketDeadline before it escalates
Customer experience (CX)24 hours
Medical operations (MedOps)48 hours
Nursing24 hours
Non-medical operations (NonMedOps)24 hours

The ladder is a safety net, not the main path, and how heavily a programme leans on it varies widely:

How tickets resolvedFertility chainMaternity chain
Closed before any escalation74.9%35.6%
Needed at least one escalation25.1%64.4%

At the fertility chain about one ticket in ten ever reached the top of the chain; at the busier maternity programme nearly one in three did.

One patient, many problems, many tickets

The most consequential decision, and the least obvious. The intuitive design is one ticket listing every issue. I chose the opposite: one patient with three complaints gets three independent tickets.

Ticket 1 · Housekeeping Room cleanliness
Ticket 2 · Billing A billing delay
Ticket 3 · Nursing Nurse responsiveness

One shared ticket has no clear owner and can't be worked in parallel. Separate tickets give each team clear ownership, get fixed at the same time, and keep each team's SLA honest.

Tradeoff: more tickets to manage. I mitigated it with a consolidated repository (below), and because each ticket is smaller and single-owner, per-ticket effort drops even as the count rises.

A triage-first workspace that kills context switching

For the people who resolve issues, the enemy is context switching: the complaint in one place, the history in another, the fix in a third. The ticket workspace puts all of it on one screen.

The live ticket workspace: a task queue on the left, the patient feedback and responses in the centre, and the Close the Loop form on the right 1234
1 Task queue, most urgent first
2 Deadline countdown on every ticket
3 The patient's answers stay in view
4 Close the Loop, right beside them
The live triage workspace, in one screen (patient and hospital names are anonymised examples).

Make "closed" mean "learned"

Marking a ticket "Closed" teaches the organisation nothing. The Close the Loop panel requires a real record for every resolution:

The Close the Loop form: a required final-outcome choice, plus RCA and CAPA comment fields 123
1 Outcome: what was actually done
2 RCA: why it happened
3 CAPA: how it won't happen again
All three are required before a ticket can close.

Every resolved ticket becomes a standardized audit trail and, over time, institutional memory the hospital can mine to stop recurring failures. It reframes closure from an administrative act into a learning one.

Because every completed response is filed as a ticket, many close quietly: a good visit that only needed acknowledging. But across the 19,000+ closures that carry a completed form, the record shows the full range of what "resolved" actually meant:

What the resolution wasShare of documented closures
Reviewed, no action needed46%
Explanation given to the patient18%
Issue fixed12%
Invalid or duplicate9%
Patient could not be reached8%
Escalated to a department7%

Give leadership one consolidated source of truth

Individual tickets are for resolvers. Leadership needs the whole board. The Ticket Repository is a searchable, filterable, exportable table spanning patient, feedback, centre, NPS, assigned owner, status, escalation level, created date and resolution, tuned for weekly operational reviews. It also surfaces the numbers that matter at a glance: total, auto-resolved, escalations, average resolution time and SLA breaches.

The live Ticket Repository: columns for patient, feedback, centre, NPS, owner, status and escalation, with totals and SLA metrics above
The live Ticket Repository: the master table (patient, feedback, centre, NPS, owner, status, escalation) with totals, auto-resolved, escalations, resolution time and SLA breaches across the top.

Prove the pipeline before you trust the numbers

Patient-experience data is only credible if delivery is. The Message & Response Tracker monitors the entire WhatsApp pipeline: messages sent, delivered, responses received, response rate and average response time. Its most important job is to let a hospital tell these two situations apart:

"Patients didn't respond."   vs.   "Patients never received the survey."

Those look identical in the raw numbers and demand completely different fixes. Separating them is what earns leadership's trust back.

The live Message and Response Tracker: counts for messages sent, delivered, responses received, response rate and average response time 123
1 Delivered: did it reach the phone?
2 Actually answered
3 Failed or submitted, per patient
The live Message & Response Tracker: a low number is never a mystery.

Establish tenant context before anything else

Because Reflex is multi-tenant, every hospital enters through its own dedicated tenant domain. The login is deliberately minimal, and its real job isn't authentication, it's context: it guarantees an administrator is inside the correct organisation before they act, which in a multi-hospital system is a safety feature, not a nicety.

Tradeoffs, in one place

Three analytics surfaces, not one. Cost: more navigation.

Why it was worth it Every decision is made on data that can't be confused.

Many small tickets, not one big one. Cost: more tickets.

Why it was worth it Clear owners, fixes in parallel, honest SLAs.

Structured closure, not one-click "Closed". Cost: a few seconds per ticket.

Why it was worth it The hospital learns, and failures stop recurring.

Automatic routing, not manual triage. Cost: rules need edge cases.

Why it was worth it Near-zero triage time and instant ownership.

Reflection

Looking back, this project was never really about redesigning a hospital feedback platform. It was about redesigning how a hospital responds to its patients.

The most valuable thing I did wasn't a screen. It was reframing the brief, from "make the dashboard nicer" to "make feedback impossible to ignore," and holding the product to that idea through every decision: automatic tickets, unambiguous ownership, structured closure, pipeline trust, and an information architecture honest about the fact that outpatients and inpatients live different journeys.

As LeapHealth's founding designer I had already built the company's design system and language from scratch. Reflex is where that foundation got tested: I defined this product end to end, from understanding hospital operations and shaping the IA to designing the interfaces that serve leadership, experience teams and frontline staff. It now runs as the live feedback operation at the hospitals that adopted it, which is the part I am proudest of: the reframing survived contact with real wards, real tickets and real deadlines.

Thanks for reading.