AI in medicine · 2026

Alumni system

An offline desktop app that finds where the faculty's graduates went and what they've published. I programmed it with AI coding agents, and I kept AI out of the decisions: a person approves every match.

Role
Programmer
Years
2026
Built with
  • Python
  • FastAPI
  • pywebview
  • PyInstaller
  • AI coding agents
The alumni system's search page for a fictional demo class of 240 graduates. Filters for specialty and country sit above the results, where each name shows its confidence and status.

Searching a class year by specialty and country. The cohort is fictional.

01

The problem

The faculty keeps its graduates as name lists, one for each class year. A list like that can't tell you which of them became cardiologists, where they work now or what they've published.

02

What I built

Prof. Dr. Ehab El Refaee and I came up with the idea for the alumni system together, and I programmed it with AI coding agents. They worked through the plan one task at a time, and I checked each step before the next one began. More than 500 automated tests run on what they built. The result is a desktop app for macOS and Windows that runs without a server. You bring in a class list and search for each doctor online, and every fact you keep shows where it came from. Inside the app I kept AI out on purpose. A fixed rule suggests each match, and a person decides.

A review card that puts a name from the class list beside a candidate from OpenAlex and gives the reasons for the match. Below them are buttons for the reviewer's answer.

The review queue. A person decides whether the online record is the same doctor.

03

How it works

  1. Everything lives in one encrypted file on the computer. The app opens in its own window, in Arabic first with English beside it.
  2. Class lists come in from Excel or CSV. You map the columns and look over the rows before anything is saved, and bringing in the same list twice never duplicates anyone.
  3. The online search starts with OpenAlex. After that it moves on to the other research databases, PubMed among them.
  4. Each possible match gets a score from a fixed rule. Half of it comes from the name. A quarter comes from a link to Kasr Al Ainy, and specialty and timing make up the rest. The name check knows the usual English spellings of 212 Arabic names, and it learns a new one each time someone accepts a match.
  5. Every possible match waits in a review queue. Someone looks at the name on the list next to the online record and decides whether it's the same doctor, or leaves it as unsure. However high the score, nothing is linked on its own.
  6. Each doctor's card shows the source of every fact, the date it was added and how confident we are in it.
  7. The pictures here come from a demo cohort that is fictional from start to finish.
One card in the review queue

On the class list

Medhat Mahmoud El-Kady

Class of 2006

OpenAlex candidate

Medhat El-Kady

Riyadh Crescent Medical City

0.95Match score

  • The name matches closely.
  • His first paper came out in 2011, which fits a 2006 graduate.
It's themNot themUnsureWaiting for a person

This doctor is from the fictional demo cohort. However high the score, nothing is linked until someone says yes.

A table of facts about a fictional graduate. Each fact has its source list and date beside it, with how confident we are and who entered it.

Every fact keeps its source, its date, how sure we are and who entered it.

The import screen for a demo list of 240 rows, which walks through four steps from choosing the file to a preview.

Bringing in a name list takes four steps, and the file is deleted once the import is done.

04

What it changed

0
Matches linked without a person saying yes.
500+
Automated tests run on the app.
2
Builds: one for macOS and one for Windows.