Case study
104,000 people are waiting for an organ.
Whether you live or die depends less on your biology than on your zip code, your bank account, and whether anyone told you the system is navigable.
The problem
About 17 people will die today waiting for an organ transplant. Not because the organ did not exist (donors die every day) but because the match never happened, or happened too late, or happened at the wrong center in the wrong region. That is not a shortage problem. It is a logistics and information problem, and it has been treated as the former for so long that most people do not realize the latter is even a category.
There are roughly 104,000 people on the US organ transplant waitlist. Median wait times vary fivefold by geography: under two years in some regions, over seven in others. The variation is not random. It is driven by OPO boundaries, donor registration rates, transplant center acceptance criteria, and the demographics of who is dying in which counties. The system is navigable. The navigation requires analysis. And the analysis has historically been available only to people who can pay for it. Wealthy patients hire epidemiologists and transplant consultants: people who know how to pull from SRTR, OPTN, CDC, and CMS, synthesize the variables, and tell a patient which city gives them the best shot. Everyone else walks into the nearest transplant center and waits, usually without knowing the wait time at that center is twice the national median.
This is the kind of structural inequity that tends to be invisible until you look for it. The system is not designed to exclude anyone. No one decided that geographic arbitrage should be a privilege. It simply emerged that way, as it often does when knowledge is difficult to synthesize and only some people can afford synthesizers. The deeper ethical stakes of that arrangement turn out to be harder to reason about than they first appear: more total people survive if patients have access to better information, but the benefit flows first and most completely to patients with resources and mobility. Whether that is a reason to withhold the information or to equalize access to it is a question the transplant community has not settled.
TransPlan exists to make the analysis free. Not simplified. The real analysis, with the uncertainty modeled, the policy scenarios accounted for, and the organ-specific differences exposed. The premise is straightforward enough to fit on a single sentence: if this analysis can help patients, and the data to run it is public, then the only reason it should not exist is that no one has built it yet.
How it evolved
The first version was a deterministic scoring model: eight weighted categories, 22 cities, public data from SRTR, OPTN, CDC, and CMS. Each city received a point estimate. The limitation was obvious almost immediately. With 50-plus noisy variables going into a single score, the number hides everything interesting. You do not need to know that Pittsburgh scores 74. You need to know what 74 means when any of the inputs might be off by 20 percent, and whether Pittsburgh is reliably better than Cleveland or just nominally so within the noise.
Phase 2 added Monte Carlo simulation: 1,000 iterations per city, log-normal wait-time distributions, competing risks modeling that handles the two ways a patient leaves the waitlist (receiving an organ or dying while waiting). Phase 3 introduced cause-of-death multipliers, because the type of trauma affects which organs survive: car crashes tend to preserve kidneys but may not preserve hearts. The organ-specificity insight, that the best city for a kidney patient is not necessarily the best city for a liver patient, sounds obvious in retrospect, but it does not appear in any of the resources patients typically encounter. Phase 4 added configurable category weights, UNOS policy scenario modeling, and post-transplant outcomes from SRTR survival data, because getting an organ sooner matters less if the center performing the transplant has worse long-term outcomes. Phase 5 built a 12-node Bayesian Belief Network for exact inference (roughly 30 milliseconds per query versus two seconds for Monte Carlo) and introduced a Clayton copula to model the correlation structure between competing risks.
Each phase was a direct response to a clinical limitation discovered in the previous one. The methodology behind these choices follows the same logic used by the consultants TransPlan is trying to replace: start with the dominant variables, add complexity only where the simpler model breaks down, and never add a parameter you cannot source to a public dataset.
Deterministic Scoring
8 weighted categories, 22 cities, point estimates
Monte Carlo Simulation
1,000 iterations, log-normal distributions, competing risks
Organ Specificity
Cause-of-death multipliers, per-organ city rankings
Policy Modeling
UNOS scenarios, post-transplant survival data
Bayesian Inference
12-node belief network, Clayton copula, 30ms queries
Architecture
Two decisions shaped the architecture. The first is that all data is public and auto-refreshed. A GitHub Actions workflow runs weekly, pulling from EPA, BLS, CMS, and CDC APIs, then committing updated JSON to the repository. The app works offline with hardcoded defaults and degrades gracefully if the backend is unavailable; the Phase 1 deterministic scores still render without the Python API. The motivation is trust: if a patient or clinician wants to verify a number, every source is traceable to a public URL. There is no proprietary data, no black-box weighting, and no reason to take TransPlan's output on faith.
The second decision is that the scoring is purely additive, not multiplicative. Each of eight categories produces a 0-to-100 score, weighted and summed: Medical Compatibility at 25 percent, Wait Time at 20 percent, Donor Availability at 18 percent, Hospital Quality at 15 percent, Geographic at 10 percent, Health Demographics at 7 percent, Policy at 3 percent, Socioeconomic at 2 percent. Additive models are auditable in a way multiplicative models are not. You can look at any city's breakdown and immediately see which categories are dragging the score down. The Socioeconomic category was rebuilt from scratch after the original version used wealth-correlated proxies that effectively penalized cities with large low-income populations. The replacement measures transplant-specific support infrastructure: patient housing near transplant centers, financial aid programs, support groups, caregiver resources. Cleveland went from 81 to 92 after the rebuild. San Francisco dropped from 95 to 85. The direction of those changes is not a coincidence; it reflects the difference between a city that is expensive and a city that is equipped.
Scoring breakdown
Results
The deterministic model's most consistent result is that medical factors and wait time together account for roughly 45 percent of the composite score, which means geography and policy matter far less than patients assume. People tend to anchor on the idea that being listed at a prestigious coastal center is an advantage. The data tends to contradict this: center quality scores are clustered tightly enough that the difference between the 80th and 90th percentile hospital is smaller than the difference in regional donor availability. The biggest levers are blood type, clinical acuity, and which OPO boundary you happen to fall inside.
The Monte Carlo simulation surfaces something the point estimates obscure: uncertainty varies dramatically by organ type. Kidney wait times range from 1.8 to 4.2 years across the simulation distribution, a spread wide enough that city rankings shift when you draw from different parts of it. Heart wait times range from 0.25 to 0.8 years, tighter and faster, driven more by clinical acuity matching than by geography. Policy scenario modeling shows that UNOS continuous distribution and DCD expansion shift city rankings by 10 to 20 percent for specific organs. The cause-of-death multiplier produces genuinely different optimal cities for kidneys versus hearts versus livers, confirming what the Phase 3 hypothesis predicted.
The current build passes 586 automated tests (112 in Jest for the frontend, 474 in pytest for the Python backend) and is live at transplan.vercel.app with full methodology documentation. The test suite is not comprehensive; it is designed to catch regressions in the scoring logic and the data pipeline rather than to cover every edge case in the simulation. The honest characterization of what TransPlan produces is a well-sourced starting point, not a clinical recommendation.
Explore the model
Monte Carlo Convergence
Each sample simulates a composite city score from 6 uncertain factors. Watch the distribution stabilize as N grows.
Distribution of simulated scores
Select a sample size and hit Run to begin.
Composite city score (abstract units)
Monte Carlo methods work by running the same stochastic process thousands of times and measuring the distribution of outcomes. With enough samples, noisy estimates become stable enough to rank.
Open questions
The biggest data gap is OPO boundary resolution. Pittsburgh and Philadelphia are in the same state but different OPOs with meaningfully different operations, different donor registration rates, and different acceptance criteria. TransPlan currently uses state-level donor registration rates as a proxy for both, an approximation that may be sufficient at the city level but breaks down when a patient is trying to decide between two centers in the same state. SRTR program-specific survival rates are not API-accessible and require manual PDF extraction, which means they go stale between updates. The supply-wait elasticity exponent (currently 0.65, meaning a 10 percent increase in donor availability produces roughly a 6.5 percent decrease in wait time) is sourced from transplant economics literature but may need to vary by organ type or OPO.
The longer-term question is one that touches the project's entire reason for existing. Should TransPlan become FDA-cleared Software as a Medical Device used directly by clinicians, or should it remain a patient-facing decision support tool? That distinction changes the equity calculus considerably. A clinician-facing tool might produce better outcomes on average but could also become one more resource that flows toward patients whose doctors know about it. A patient-facing tool preserves individual agency but places the burden of interpretation on people who may not have the context to use it well. The final article in the Transplant Problem series takes up this question directly. It does not resolve it, because it probably cannot be resolved without a clearer account of what the transplant system is actually trying to optimize for.
Related writing
The Transplant Problem / 3 parts / 53 min
There are roughly 104,000 people on the US organ transplant waitlist. About 17 will die today. The part that should make you angry: whether you live or die depends less on biology than on your zip code, your bank account, and whether anyone told you the system is gameable.
A billionaire who needs a kidney calls an epidemiologist. That epidemiologist looks at car crash rates, donor registration density, center acceptance criteria, and a dozen other variables most patients have never heard of. Here is exactly what that analysis looks like.
Two worlds. In World A, 999 people wait the same time for a kidney and one rich person waits half as long. In World B, 500 wait shorter than anyone in World A, and 500 wait longer. World B has less total suffering. World B also has more inequality. Which world do you want to live in?