UX Case Study · Healthcare · 0→1 internal tool · Ultramed

QuestFlow

Onboarding a new hospital meant sending them a 250-page PDF and an Excel sheet, then waiting weeks for question-by-question feedback to trickle back. One clinician called it the “PDF from hell.” QuestFlow turns that questionnaire into a clean, reviewable web app — spotted, designed, and built solo into a dev-ready prototype that testers scored 6–7 out of 7 for ease of use.

Role
Sole designer & builder — concept to prototype
Domain
Healthcare SaaS · internal tooling
Timeline
Feb 2026 — ongoing
Stage
Tested prototype · dev hand-off next
Methods
Stakeholder interviews · prototyping · moderated usability testing
Built with
Next.js · Tailwind · Postgres · AI-assisted
RoleSole designer & builder — concept to tested prototype
ProblemOnboarding a hospital meant sending a 250-page “PDF from hell” plus an Excel sheet, then reviewing it question-by-question over weeks of back-and-forth email.
What I didTurned the questionnaire into a sectioned web app where the most-requested edits — remove, reword, make required — are one click, behind a single shareable review link.
ResultModerated testers scored it 6–7 / 7 for ease of use and reached to switch from the tools they use today; now heading into developer hand-off.
250pg
“PDF from hell” replaced by one review link
~1,000
change requests in a single pass — the trigger
6–7/7
ease-of-use in moderated usability sessions
0→1
spotted, designed & built solo
01 — Context

How a hospital’s questions get built

Ultramed is a UK healthcare-software company. Its products are built on top of a legacy form-builder — think a heavily extended version of Google Forms — that the internal team uses to configure the questionnaires hospitals send their patients before surgery.

The flagship of these is the standard pre-operative questionnaire: roughly 150+ questions across a dozen clinical sections, covering everything from heart and lung history to anaesthetic risk. When a new hospital trust comes on board, one of the first implementation steps is deciding which of those questions to keep, cut, reword, make required, or branch — tailored to how that trust actually operates, without compromising clinical safety.

That tailoring conversation is where the friction lived.

02 — The problem

The “PDF from hell”

Because the questions only lived inside the legacy form-builder, the one way to show a trust the full standard questionnaire was to export it — as a ~250-page PDF. It wasn’t a clean document: every page carried the layout scaffolding — section frames, headers, bounding boxes — with the actual questions buried inside. No clinician or implementation lead could comfortably read it, let alone reason about it.

“It’s a PDF from hell — I’d do anything to spare the next customer from it.”

— feedback from a clinical and digital team, and the moment that kicked this project off.

The workflow built around that PDF had quietly accreted for years:

  1. Send two files. The trust received the 250-page PDF and a separate Excel sheet for logging changes.
  2. Cross-reference by hand. They’d read the PDF and the Excel side by side — finding a question, copying it across, and writing out the change they wanted and why.
  3. Route it internally. Account managers passed requests to the two-person form-builder team and head of product; clinical officers then weighed each one against patient risk and clinical safety.
  4. Email, repeat. What was and wasn’t possible went back to the trust by email — and round it went until the questionnaire was signed off.

The cost showed up everywhere: an unreadable source document, redundant copy-paste steps, and a slow multi-party email loop. The breaking point came as a Slack message — one trust returned over 1,000 change requests in a single pass. One person joked they were drafting their resignation. Filtered down, it was ~400–500 real requests, and the overwhelming majority were the same handful of actions: remove this, edit this, make this required.

The opening

If a few actions accounted for most of the work, the review didn’t need a 250-page document and a spreadsheet. It needed the questions themselves, made readable, with the common actions one click away.

03 — Approach

A weekend prototype, then a real one

I’m drawn to problems like this — a real, daily pain that a small intervention could lift for a lot of people, while smoothing the path for every future client. So I started building over a weekend rather than writing a proposal.

The first question was how to get the questionnaire out of the legacy tool in a usable shape. I prototyped around a structured CSV, and when I showed the rough cut, our developers confirmed they could reliably export the questionnaires to CSV. That export became the feed for the whole tool: upload a CSV, and the app renders every question — its text and its input type — as a clean, ordered list a non-technical reviewer can actually work through.

Early reactions from account managers, the form-builder team, and the wider group were encouraging enough to keep going and shape it into something real.

04 — Key decisions

Three choices that shaped the tool

QuestFlow grew through a handful of deliberate decisions, each one answering a specific thing the old workflow got wrong.

01

Make the questions readable first

The whole problem started with an unreadable document, so the first job was legibility. CSV in, structured question list out — each card shows the question text and what the patient would do with it (text box, radio, multi-select), grouped back into its clinical sections. The 250-page PDF becomes a browsable, sectioned form.
02

Turn the most-common actions into one click

The 1,000-request incident was the clue: most feedback was remove, edit, or make required. So every question card carries those as direct actions — Mark Required, Delete, Add Question, Add Suggestion — instead of asking reviewers to describe the change in prose and paste it into a spreadsheet.
03

Constrain feedback on purpose

A richer mode let reviewers suggest changes to any property of a question. In the wider review, leadership raised a real risk: more customisation invites more change requests, and more internal work. So I deliberately scoped feedback down to a short, structured suggestion per question — enough signal to act on, without reopening the 1,000-request floodgate. Where to draw that line is still an open, deliberate trade-off.
05 — The solution

One link, the whole review

QuestFlow has two sides: an internal workspace where the team manages master questionnaires and trusts, and a shared review link the trust opens in a browser. No PDF, no Excel, no install.

The internal workspace

The team uploads each master questionnaire as a CSV. To start a review, they create a trust, add the people involved (internal or external), choose which forms to share, and copy a link to send over.

Fig 01 · Internal dashboard
QuestFlow internal home dashboard showing questionnaire and trust counts, a trust overview table, and a live feed of latest suggestions
The internal home: an at-a-glance view of questionnaires, active trusts, pending suggestions, and a live feed of incoming feedback — the bird’s-eye replacement for chasing an email thread.
Fig 02 · Master questionnaires
Questionnaires screen listing master questionnaire templates with status, question counts and creation dates, plus an Upload CSV button
Master questionnaires are uploaded once as CSVs, then reused. Each carries its own question count — the largest runs to 600+ — so a trust review always starts from the canonical, current set.
Fig 03 · Trusts
Trusts screen listing trust instances and the forms shared with each, with shared dates and per-form actions
Each trust is an instance of one or more master forms. Sharing is a copied link — the friction of attaching and emailing large files disappears.

The trust’s review experience

When a reviewer opens the link, they land on the sectioned questionnaire — not a wall of text. Each section card shows its question count, how many are conditional, the topics inside, and whether it’s been reviewed. A progress bar tracks the whole thing, and the review can only be submitted once every section is done.

Fig 04 · Section overview
Trust-side review landing showing the questionnaire broken into section cards, each with question and conditional counts, topic chips and a not-yet-reviewed status, with a progress bar and submit-review gate
The questionnaire broken into reviewable sections. Testers singled this out — instead of “reams and reams” of PDF, the work feels scoped and finishable.

Inside a section, each question is a card with the four direct actions. A reviewer can mark a question required, suggest its removal, propose a new one, or leave a short suggestion — without leaving the page or opening a spreadsheet.

Fig 05 · The question card
Two question cards, each showing the section breadcrumb, the question text, an input preview, and four quick-action buttons: Mark Required, Delete, Add Question, Add Suggestion
The payoff of the 1,000-request insight: the most-requested actions live on the card itself. The breadcrumb keeps each question anchored to its section and page.
Fig 06 · In-section review
In-section review screen with search and category filter, question cards showing different input types, and a right-hand suggestion panel with an empty state inviting the first suggestion
Searching and filtering within a section, with a focused suggestion panel on the right. Empty states point reviewers to the next action rather than sitting blank.

Making the logic legible

The old PDF buried conditional logic — which question appears when, and off what answer — inside its layout boxes. QuestFlow surfaces it two ways: a plain-language “shown when…” line on each conditional card, and a visual flow graph that traces the dependency from trigger answer to dependent question. It also encodes patient-safety guardrails: questions that are clinically required are locked from edits, with a clear explanation rather than a silent block.

Fig 07 · Conditional logic, visualised
The Flow view rendering a question's conditional logic as a node graph: a trigger question, the chosen option, and the dependent question it reveals
The Flow view turns “shown when X is answered No” into something you can see — trigger, chosen answer, dependent question. The structure stops being guesswork.
Fig 08 · Granular control — and its limit
Expanded suggestion panel for a selected question, showing settings tabs, question metadata, suggest-changes controls, and a clinically-required field locked from editing for patient safety
The deeper, per-property suggestion mode — and the design tension in one frame. The clinically-required lock shows the tool enforcing patient-safety rules; how much of this control to expose is the open question from Decision 03.
06 — Usability testing

What happened when people used it

I ran moderated sessions on Userlytics with people who review forms in their day jobs — across schools, the civil service, financial services, and corporate ops. To keep client data confidential, I reframed the medical questionnaire as a neutral employee-onboarding form; the interaction being tested was identical.

The headline: reviewers found it easy and fast. Ease-of-use scores landed at 6–7 out of 7, and most reached unprompted for the tools they use today — Microsoft Forms, Google Forms, PDFs full of scattered comments — as the worse comparison.

“It looks like a nice, polished platform that’s ready to use.”

— events manager, corporate hospitality

  • The sectioning was the most-praised idea — one reviewer contrasted it with “reams and reams” of text and said it never felt overwhelming.
  • The on-card actions read as intuitive: “it’s all there” — no hunting behind menus.
  • “Having all of the suggestions in one place” beat juggling ten reviewers’ emails with conflicting edits — named by a civil-service platform manager.
  • Progress tracking and the green section ticks were called a genuine improvement over reviewing a long document “blind.”
  • Asked if they’d use it for real work, reviewers said yes — one would “strongly advocate we switch to” it.

More useful than the praise was the friction. A few issues recurred clearly across sessions — and several were worth fixing before going further.

Testing surfaced
  • The right-hand panel didn’t keep pace — after an action it kept showing a different question, so people thought it was broken.
  • The Mark Required button gave too little feedback; reviewers clicked twice, unsure it had registered.
  • Adding a question offered no input-type choice — people expected to set radio / text / multi-select.
  • The conditional “blue bar” indicator was understood only after a beat.
  • The “Suggestions” tab was misread as suggestions made to them, not by them.
What I changed
  • Fixed. The panel now follows the question you’re acting on and holds position as you move.
  • Addressed. Clearer action-state UI (pending a final code check on my end).
  • Rebuilt. Add-question is now an inline flow with input-type choices and above / below placement.
  • Queued. A clearer logic indicator — consciously deprioritised as non-blocking.
  • Queued. Renaming the tab to reflect “my suggestions.”

One finding pointed straight at the next build: reviewers wanted an audit trail — a deleted or reverted suggestion shouldn’t vanish without a trace, so the team never re-litigates the same change. That, and how suggestions are captured and surfaced back to the internal team, is what I’m working on now.

07 — Where it stands

From prototype to hand-off

QuestFlow is a tested, documented prototype. The load-bearing usability issues are fixed; the rest are triaged and queued rather than forgotten. Right now I’m building the internal side of the review — how suggestions are captured, audited, and presented back to the team that has to act on them.

  • Now: suggestion capture, audit trail, and the internal review view.
  • Next: developer hand-off — documentation is done — for security, compliance, and a production build.
  • Then: a pilot with real trusts before going live.

Built as a Next.js app with Tailwind and shared components; data on Postgres (migrated from a Supabase test setup). AI-assisted throughout — this is also a proof that I can take a problem from spotting it to a working, tested build, not just a Figma file.

08 — Reflection

What I took from this

The best briefs aren’t handed to you

Nobody asked me to fix the PDF. A throwaway line of frustration was the brief — and acting on it, rather than waiting for permission, is what made it real.

Let the data shape the interface

The 1,000-request incident wasn’t just a horror story; it was a frequency analysis. The most-common actions became the primary UI, which is why reviewers found it intuitive without being taught.

Constraints can be a feature

Leadership’s “more control invites more work” concern pushed me toward deliberately limiting feedback. Knowing what not to let users do mattered as much as the features I added — and it’s a line I’m still tuning.

Testing earns its keep in the friction

The warm scores were reassuring, but the value was in the snags — the panel that lost focus, the button that gave no feedback. Those findings, not the praise, are what shipped next.

Select any text to annotate
Copy this and paste it back into the chat