←  work / case-studies
case study · kidney placement

Coordinating a transplant, against the clock.

A coordination layer for the part of organ allocation that still runs on the phone — the scramble after the ranked centres say no, which is where kidneys are actually saved or lost.

open the live product ↗ the real build, seeded and running — switch roles at the foot of the sidebar and watch the clock move
lead designer · sole designer designed and built in code client under NDA · rebuilt to be publishable

01The problem

Roughly one in four deceased-donor kidneys recovered for transplant in the US is never transplanted [1]. Not because it was unusable when recovered, but because the search for a recipient outran the organ's shelf life.

On ice, a kidney degrades by the hour: delayed graft function runs about one in five when cold ischemia stays under 16 hours, and more than one in three past 32 [6]. When the ranked centres decline, what happens next is a coordinator on the phone, one centre at a time, reading the same donor details aloud. Fax, email, portal logins, a spreadsheet. When they run out of time or centres, the organ is discarded.

Five things are wrong with that:

The metric is organs not discarded. Response time, acceptance rate and average ETA are instrumentation for that one outcome.

02What the decisions rest on

The research here came in four kinds, and a fifth column lists what nobody did. The first column is the original client engagement, described without names; the rest was done for the rebuild. Every item says what it found, and which part of this page it changed.

Asked the original engagement

29 working sessions with the clientOver five months, most of them recorded. The client's lead is a transplant surgeon, so the domain questions went to someone who does the work.→ 03 · the constraint
A call with the registry's integration teamThere is no API for third-party products, and that is by design. The original architecture did not survive the call.→ 03 · how it was found
Prototype feedback, second-handThe client sent the prototype to two procurement organisations and relayed what came back: doctors at transplant centres replied, and administrators said the coordinators, not they, would use it. No notes, no tasks.→ 08 · what is not done

Read for the rebuild

28 peer-reviewed and policy sourcesThey corrected two things I had from memory: the discard rate is about one in four, not one in five, and the cold-ischemia caution belongs at 12 hours, not 18.→ 09 · sources
Studies of out-of-sequence placementThe fast path is concentrated in a few organisations and centres, and oversight of it is tightening.→ 05 · the decision

Mapped the work

Seven roles, then twoThe original design spans seven roles. v1 of the rebuild builds the two that carry a placement from donor to dispatch.→ 04 · one run, two roles
A feature list and a workflowTwenty-three rows across the two roles: thirteen built screens, two app shells, eight designed empty states. Nine places where one role's screen writes something the other has to live with.→ 04 · one run, two roles

Checked my own work

A design audit: 45 findingsFourteen wrong, twelve gaps, nine opportunities, ten confirmed, each read against the running build.→ 07 · corrections
Walkthroughs of the running buildThe defects you only find by using it: a row menu that closed every second, "3 of 2 kidneys placed", a warning that was never off.→ 07 · corrections

Not done said plainly

No interviews with coordinators or surgeons by the team
No observation of a live placement
No usability test of the original or the rebuild
No clinician review of the rebuild's thresholds

03The constraint, and how it was found

The national registry provides no API to third-party products. The original architecture — offers flowing in through a registry integration — was impossible.

How the team found out, in weeks of the original engagement:

  1. week 2Centres key patient data into the registry by hand. The team sets out to read its API documentation.
  2. week 3Manual offers are added alongside automated ones, and developer access to the registry's sandbox is requested.
  3. week 5A call with the registry's integration team: no API for third-party products, by design.
  4. week 7Screen work pauses until the data picture is clear.
  5. week 10The product is reframed around the procurement organisation: kidneys first, donors entered by hand.
  6. week 17Registry and match IDs become typed fields on the donor form, and the open board is designed.

That is not a footnote, it is the design. The product became a layer that runs beside the registry rather than through it: the registry stays the legal system of record, its IDs are typed in as reference fields, and the procurement organisation enters the donor and alerts centres directly.

And the reason it works: the scramble was always manual. A digital layer over a manual process is not a compromise forced by a missing API. It is a truer fit than the integration would have been.

the integration call, week 529 client sessions

04One run, two roles

Two artefacts come out of the thread before a screen is drawn: a feature list, one tab per role, and a workflow diagram that puts the list, the information architecture and the user flow in one picture. Here they are one component, read two ways. Neither is a client file — both are drawn against my own rebuild, from its running build and its router, so what is in them is checkable rather than remembered.

One run, two roles, and a clock neither of them can stop9 crossings · 23 rows · one dataset

Pick a crossing, or step through all nine. Each names what one role's screen writes and opens the feature-list rows of the screens it joins. The counts under "every screen" are derived from the rows, not typed.

05The decision I'd defend

The practice this digitises — expedited, out-of-sequence placement — is not an uncontroversial good. It is under active criticism and increasing regulatory oversight [4].

the problem

The core mechanic has a documented equity problem

Of out-of-sequence placements, 3 organisations performed 64% and 2 transplant centres received 25% of the kidneys [3].

When a process relies on informal relationships between organizations, there is potential for exacerbating existing inequity in access to transplantation by excluding some candidates when certain transplant centers are favored over others. [2]

The brief I was working from listed, as a feature: “favourite centres drive prioritisation.” That is the exact mechanism the research criticises, shipped as a selling point.

the reframe

The objection describes the absence of this product

The criticism is fundamentally that out-of-sequence placement happens on the phone, with no record, between people who know each other. A system that logs who was offered, in what order, and why anyone was skipped converts an informal favour network into an auditable process — which is what a regulator tightening oversight is asking for.

So the pitch is not “place organs faster”. It is place organs faster, and make the fast path defensible.

Concretely: the favourites list is gone. Centres declare their own criteria in advance — KDPI ceiling, HCV and DCD appetite, distance limit — and the fast list is computed per donor. Nobody is picked by hand, and every centre not on the list says why.

[2][3][4]the design audit

DON-26-0031 KDPI 34%type DCDHCV NAT negative142 rd mi

Seven centres, one donor, both mechanisms. The eligibility test is the same in each — only the way the list is chosen changes. Centre names and criteria are demo data from my own rebuild.

06The thread, screen by screen

Everything below is the running build, not a mockup. The clocks are live, the data is seeded, and you can open any of it in the demo.

Every donor the organisation is holding, and the only column that matters on a bad night — OR / CIT, counting from cross-clamp in red once the organ is out. “Ready to alert” and “Out to centers” are record states; the tab above them is a bucket of work. No word does both jobs.
01 · donorsEvery donor the organisation is holding, and the only column that matters on a bad night — OR / CIT, counting from cross-clamp in red once the organ is out. “Ready to alert” and “Out to centers” are record states; the tab above them is a bucket of work. No word does both jobs.

A coordinator does not arrive at a screen wanting to browse. They arrive holding a donor and losing time. So the list leads with the clock and the distribution state, and the primary action — alerting centres — is one click from the row.

Three ways to distribute, and a widening plan set once. The reach of each later wave is computed from this donor, so the plan is an opinion rather than an empty form — and the caption states the overlap the chosen wait produces.
02 · alertThree ways to distribute, and a widening plan set once. The reach of each later wave is computed from this donor, so the plan is an opinion rather than an empty form — and the caption states the overlap the chosen wait produces.

This is the screen the equity argument lives on, and the decision above is about the middle of it. The panel underneath it is the part I would show first in an interview: it is the difference between a product that helps you work and one that works when you have stopped.

Seven centres, each on its own thirty-minute window, in match-run order. The row is the audit trail: who was asked, when, what they said, and how long they have left. Opening a row shows the patients that centre put forward.
03 · the runSeven centres, each on its own thirty-minute window, in match-run order. The row is the audit trail: who was asked, when, what they said, and how long they have left. Opening a row shows the patients that centre put forward.

The response table is the record. Not a report generated beside one — the thing the coordinator works in all night is the same object a regulator would read afterwards. That is the whole answer to the equity objection, and it only works if it is the primary surface.

Two kidneys, one decision. Left and right can go to patients at different centres, and the rail on the right is the constraint made visible: what is placed, what is not, and who is queued if a placement falls through.
04 · assignmentTwo kidneys, one decision. Left and right can go to patients at different centres, and the rail on the right is the constraint made visible: what is placed, what is not, and who is queued if a placement falls through.

Most of the hard decisions in this product are about what the other side sees. A centre that accepted and was not chosen used to find out by nothing arriving.

07Checked, and corrected

Three calls reversed on a second look: twice by the literature, once by the running build. Each one changed the product, not just this page.

I had the eligibility rules raise an amber caution at cPRA ≥ 80%: “crossmatch risk is high.” Wrong twice over.

80% is not a line allocation recognises — on the sliding scale a candidate at 80 gets about 2.5 priority points and one in the low 90s under 7, while one at 100 gets more than 200 [29]. And the framing pointed the wrong way: KDPI's association with graft survival is not modified by how sensitised the recipient is, so there is no benefit in holding out for a better kidney on their behalf — while a compatible offer may not come again for years.

The fix was not a new threshold. It was noticing that “cautions” is a rhetorical category, not a severity level: everything in it argues against acting. A high cPRA is a reason the offer matters more. The verdict now carries a third list, rendered muted rather than amber.

[29]the build's eligibility rules

Before the fix.

The eligibility rules raised an amber caution at cPRA ≥ 80% reading “crossmatch risk is high”. Amber on this page means weigh this against acting — and a high cPRA is a reason the offer matters more, not less. It now reads as muted context: sensitised. Allocation priority climbs steeply from here. Same fact, opposite instruction.

08Where it landed

Shipped

The live build. A whole placement — donor, alert, run, patients, assignment, dispatch, arrival — walks end to end across both roles, with the clock running.

What I'd defend

The numbers are derived, never stored twice, so they cannot disagree with each other. The assignment screen makes the constraint the layout instead of a validation. And the honesty rules: no fake registry, no fake proof of handover.

Not done

It has never met a user. Nobody has watched a coordinator use it under a running clock, and the prototype feedback from the original project came second-hand. The 3am path is undesigned: the offer that expires while you're on another call, the centre that accepts then withdraws, two coordinators editing one donor.

First test

A coordinator placing a kidney while the clock runs, watching for the moment the order of the form stops matching the order information arrives in.

One constraint sits under all of it: the user turns over every three years. Coordinator attrition runs 17–28% annually and mean tenure is under three [24], so expertise never accumulates, and nothing here can rely on a practised user.

This is a coherent, well-argued design that has never met a user. For a portfolio piece that may be exactly right. For a product it is step one of three.

09Sources

  1. 1Does a changing donor pool explain the recent rise in the United States kidney nonuse rate? — American Journal of Transplantation
  2. 2Out-of-sequence placement of deceased donor kidneys is exacerbating inequities in the United States — medRxiv
  3. 3Deceased donor kidneys allocated out of sequence by organ procurement organizations — American Journal of Transplantation
  4. 4Changes in Deceased Donor Kidney Recovery and Transplantation following Increased Regulatory Oversight of Allocation Out of Sequence — PMC
  5. 5Cold ischemia time exceeding 12 hours is a risk factor for delayed graft function and increased mortality — Transplant International
  6. 6Cold Ischemia Time, Kidney Donor Profile Index, and Kidney Transplant Outcomes: A Cohort Study — Kidney Medicine
  7. 19Outcomes From Right Versus Left Deceased-Donor Kidney Transplants: A US National Cohort Study — PMC
  8. 24Improving the Recruitment and Retention of Organ Procurement Coordinators: A Survey Study — American Journal of Transplantation
  9. 29Calibration of Priority Points for Sensitization Status of Kidney Transplant Candidates in the United States — Clinical Journal of the American Society of Nephrology

Every clinical threshold in the build carries its citation in the code, so a reviewer can check it rather than trust it.

←  back to selected work talk about this one →