-
The race-free result: 17 months of possible missing transplant wait time, plus a creatinine slider in the header.
-
Race-adjusted vs race-free eGFR over time, and every care milestone marked on time, late or hidden.
-
On-device AI reads a photo of a lab report. The formulas check each printed eGFR before anything is added.
-
A letter to the care team that cites the OPTN policy and asks which date the wait time counts from.
-
Clinic mode: screen a patient panel from a CSV and get a call list ranked by wait time to review.
-
Why this matters: the 2009 formula's x1.159 race term, and what changed from 2021 to 2023.
Inspiration
For more than 20 years, the standard formulas that turn a creatinine blood test into an eGFR (how well your kidneys filter) raised the score of every patient recorded as Black: by 15.9% in CKD-EPI 2009 and 21.2% in MDRD. A higher eGFR looks like healthier kidneys. So the same blood test could keep a Black patient above the line for a chronic kidney disease diagnosis, a specialist referral, or the kidney transplant wait list, where wait time starts counting at an eGFR of 20.
In 2023 the OPTN, which runs the US transplant system, required kidney programs to review their registered Black candidates and request wait-time changes for anyone affected. By early 2024, more than 14,000 people had their wait time changed. But that fix depends on someone finding you. People who switched clinics, aren't listed yet, or only have old paper results can be missed, and no policy gives back a late diagnosis or referral.
What it does
Check my labs. Photograph an old lab report, or type in creatinine results (or just the "eGFR if African American" line from older reports). Recount recalculates every result without the race multiplier and shows:
- how much transplant wait time may be missing, or that the race-free number already qualified you
- each care milestone (CKD diagnosis, metformin limits, specialist referral, wait list, kidney failure) marked on time, late, or hidden
- a timeline of race-adjusted vs race-free eGFR
- a letter to your doctor or transplant center that cites the OPTN policy and asks them to review your wait time
Screen a panel. Dialysis units, community health workers and transplant navigators can drop in a CSV export and get a ranked call list of who may be owed wait time.
Why this matters. Plain-language background, and the same pattern in other clinical tools (spirometry, the VBAC calculator, pulse oximeters).
How we built it
React, TypeScript and Vite, deployed as a static site on GitHub Pages. The three equations (CKD-EPI 2009, MDRD, and the race-free CKD-EPI 2021) live in a small module with unit tests checked against hand calculations. The wait-list logic follows OPTN's rule of using any race-neutral calculation.
The photo reader runs Tesseract's LSTM OCR model in a Web Worker inside the browser, served from our own site rather than a CDN. A parser pulls out date of birth, sex, creatinine, the printed eGFR lines, and results-history tables, and corrects common OCR slips.
AI ethics by design
A biased formula caused this harm, so we drew a hard line: AI reads, formulas decide. The OCR model only reads text. It never computes a medical number; every eGFR is recalculated from creatinine with the published equations. Where a report prints both creatinine and eGFR, Recount recomputes the eGFR and flags any mismatch. That catches OCR misreads and also identifies which formula the lab used. Nothing goes into the form until the person confirms it.
Health data never leaves the device. There is no server, no accounts and no analytics, and a lab-report photo is never uploaded.
Challenges we ran into
- Getting the wait-list logic right in edge cases, such as a single lab result, or a wait-time start date that's already on file.
- The two old formulas give almost the same number at low kidney function, so Recount only names the lab's formula when the evidence clearly favors one. Otherwise it says it isn't sure.
- Reading tilted, poorly lit phone photos without guessing. Rows the reader can't make sense of are left out, not invented.
Accomplishments that we're proud of
- 28 unit tests covering the equations, wait-list edge cases, input validation and the report parser.
- The photo reader reads our sample report in about 3 to 4 seconds on a laptop, entirely on the device.
- A design built around a real artifact, the lab report: race-adjusted numbers are struck through and replaced, like a corrected result.
What we learned
The policy fix already exists. The bottleneck is finding the people it missed, and giving them something concrete to bring to their care team.
What's next for Recount
- Review by a nephrologist and a transplant navigator.
- Spanish translation and support for more lab-report layouts.
- A workflow for community health workers to screen paper records at community events.
Recount is an educational and advocacy tool, not medical advice. Only a care team or transplant center can confirm someone's eGFR history and wait time.
Built With
- github
- react
- tesseract.js
- typescript
- vite
- vitest
- webassembly
Log in or sign up for Devpost to join the conversation.