Case Study

Clinical Trial Research

A Python pipeline that monitors public clinical-trial registries and medical literature for configurable pediatric cancers, and turns them into a calm daily dashboard, a printable brief for the oncologist, and draft outreach letters. An information tool — not medical advice.

Live · refreshes every 4 hours

The problem

Tracking a rare pediatric cancer means manually watching several registries and literature databases that each speak a different format and change without warning.

A trial that just started recruiting, a new site opening within driving distance, a changed contact — these surface late, or not at all. The signal that matters is buried in noise, the sources don't talk to each other, and the stakes are as high as they get. This is a monitoring problem dressed up as a research problem.

What I built

A pipeline that watches the public sources on a schedule, detects only what actually changed, rates how relevant it is, and renders it as calm, readable output: a daily dashboard, a printable brief for the treating oncologist, and draft outreach letters the physician can choose to send.

Each pediatric cancer is a saved “watch,” added with a single command and validated before it goes live, with a site switcher to move between them. A new watch starts as a quiet baseline so it never opens with a wall of old results. The example watch on the live site is Pediatric sarcomas.

Architecture

Sources

ClinicalTrials.gov API v2 · PubMed E-utilities (NCBI API key) · WHO ICTRP (monthly export, data terms followed)

↓

Pipeline · every 4 hours on GitHub Actions

SQLite memory persisted on a data branch. A diff reports only new or changed studies — now recruiting, status, contacts, sites, ages, phases, dropped off — keyed on NCT ID / PMID / DOI.

↓

AI · Claude (Anthropic API)

Rates relevance High / Medium / Low, writes plain-English summaries, and drafts one paragraph per outreach letter. It never supplies facts or contacts.

↓

Trust layer — the gate everything passes

Grounding checker + provenance checks. Nothing reaches the page until it clears here.

↓

Outputs · static site, keys server-side

Daily dashboard · printable oncologist brief · physician-led draft letters. Noindex, no tracking, every row links to its source.

The trust layer

This is the signature of the project. An AI that reads medical sources is only useful if it can never invent a fact, a contact, or a promise. Two independent checks enforce that.

Results, in numbers

Every 4h

Automated refresh on GitHub Actions

8 / 8

Grounding checker tests passing

0

Provenance problems in latest checks

3

Public sources unified into one view

< $10/mo

Hard cost ceiling — cached AI calls, per-run and daily caps

NCT · PMID · DOI

The keys every change is tracked on

What I'd do next

How it was built

I designed and built it end to end in about two days, with Claude as my AI pair programmer. I vibe code, and I say so openly.

The engineering that matters here isn't the line count — it's the trust layer that decides what the AI is allowed to say, and the provenance discipline that makes every contact traceable to its source.

This is an information tool, not medical advice, and not a substitute for a clinician. ParqueMedia is not a medical provider. All data comes from public sources and is used under their terms. No patient data is stored.