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

A kidney has perhaps 24–36 hours of viability on ice and degrades throughout. 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.

02The constraint that inverted the product

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

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.

03The 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 section 04 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.
The same run from a transplant centre. Three states that used to look alike: on the clock, elapsed without a response, and placed elsewhere. “Your list — 7 of 8 eligible” answers the centre’s actual first question before they open anything.
05 · the other sideThe same run from a transplant centre. Three states that used to look alike: on the clock, elapsed without a response, and placed elsewhere. “Your list — 7 of 8 eligible” answers the centre’s actual first question before they open anything.

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.

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

05Two things I only caught by looking again

Both of these shipped, looked fine, and were wrong. Drag to compare — the images are the real build before and after.

Before: before
After: after
before after drag anywhere
One cell was setting the height of every row. The progress legend wrapped to a second line whenever a run had a fourth status, so rows measured 62 / 48 / 48 — and it printed zero counts, which is what forced the wrap. Two columns went with it: “Centers” restated a figure the legend beside it already summed, and “Donor status” read Out to centers on every row, because a run only exists once a donor is distributed.
Before: before
After: after
before after drag anywhere
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.

06Three times the evidence said I was wrong

The useful part of checking your own work against the literature is not confirmation. It is the reversals.

reversed

My caution argued against the patient it should have helped

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 — the sliding scale separates cPRA 80 and 89 by about two points, and 90 and 100 by more than 195. 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.

reversed

I nearly retired a feature on half a finding

I had concluded that the left/right laterality preference was over-modelled — outcomes are equivalent, so why let a centre rank them? True of long-term graft survival. The first six months are not: right kidneys carry higher delayed graft function (28% against 25.8%) and more technical failure, because the right renal vein is short and the anastomosis is harder [19].

And I had the actor wrong. The ranking is set by the centre's coordinator — the one whose surgeon has to sew that vein. When two kidneys go to two centres, a stated preference beats a coin-flip and leaves a record.

The feature stayed. What it was missing was its reason, which it now carries — both halves, because right runs worse without and the difference is gone by six months turns a preference into a refusal.

reversed

My own screens got cluttered and I didn't notice

Twenty changes went in without stepping back. Every one was defensible alone, and the screens still ended up crowded — because a band, a column or a caption added in week three does not know about the two added in weeks one and two.

Rows in one table measured 62 / 48 / 48, because a legend wrapped inside a single cell. The open board's only action sat behind a horizontal scrollbar. Three stacked bands put 213px of chrome before a single row.

The one underneath the rest: the signed-in coordinator's shift was seeded to end 25 minutes after load so the demo would reach the handover prompt. The prompt fires inside thirty minutes — so it was on from the first render of every run she held, and the product's normal state was never once visible. A warning that is always showing is not a warning.

07What this is not

What I think is genuinely good: the derived-not-stored discipline, so the numbers cannot lie to each other; the constraint-as-layout idea on the assignment screen; the honesty rules — no fake registry, no fake proof-of-handover.

What honestly limits it:

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.

08Sources

  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. 19Outcomes From Right Versus Left Deceased-Donor Kidney Transplants: A US National Cohort Study — PMC
  6. 24Improving the Recruitment and Retention of Organ Procurement Coordinators: A Survey Study — American Journal of Transplantation

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 →