Skip to content

Psoriasis Progression Monitor

Psoriasis Progression Monitor is an adversarial two-agent chart review.

Core trick

One agent assembles evidence with verbatim-verified quotes and photo observations, while a second agent without chart access challenges claims against pharmacy fills.

Tags

Description

Psoriasis Progression Monitor is an adversarial two-agent chart review. Agent A builds the case that a patient's psoriasis is progressing, searching notes and clinical photographs, with every quote verified verbatim against the source. Agent B, a nurse-auditor who never sees the chart, cross-examines that case against a clinical rubric and the one thing the chart can't show: independent pharmacy fill records. Only claims that survive the debate become a verdict.
salabajr/psoriasis-tracker★ 00 forksPythonCreated Jul 18, 2026 · last push Jul 18, 2026

README excerpt

# psoriasis-tracker

Two-agent adversarial disease-progression monitor for plaque psoriasis.

**Agent A (assembler)** searches a synthetic patient chart — clinical notes
plus photographs, which A examines with a multimodal vision pass — and builds
an evidence packet against a 5-item rubric (note quotes verbatim-verified;
photo observations labeled and exact-match guarded).
**Agent B (reviewer)** sees only the packet + rubric — no chart — and
challenges unsupported attributions. The orchestrator runs up to 3
challenge/repair rounds and emits a terminal state:
`CONFIRMED_WORSENING | STABLE | INSUFFICIENT_EVIDENCE`.

## Layout

- `contracts.md` — frozen function signatures + JSON schemas (read first)
- `config.py` — model/temperature/rounds/corpus config (only place a model string lives)
- `rubric.json` — the 5 progression criteria
- `tools.py` — chart_search / rubric_lookup / verify_quote
- `agents.py`, `prompts/` — assemble / review / repair
- `orchestrator.py` — the adversarial loop; persists run_state to `runs/`
- `app.py`, `static/` — FastAPI + static HTML viewer (polls latest run_state)
- `corpus/patient1/` — synthetic chart (4 visits); `corpus/patient1_twin/` — adherence-clean twin
- `fixtures/` — hand-authored packet/challenges/run_state + tiny corpus for isolated testing
- `main.py` — entry point

## Run

```bash
uv venv && uv pip install -r requirements.txt
cp .env.example .env   # then put your key in .env as ANTHROPIC_API_KEY=...
python main.py --patient corpus/patie

Team