Spaces:
Sleeping
title: Clarke
emoji: π©Ί
colorFrom: blue
colorTo: yellow
sdk: docker
app_port: 7860
Clarke
AI-powered NHS clinic letter generation: from consultation audio to structured clinical document in under 60 seconds.
Clarke is an ambient clinical documentation system that converts doctor-patient audio consultations into structured NHS clinic letters. It coordinates three HAI-DEF models as autonomous agents in a unified agentic pipeline: medical speech recognition, EHR context retrieval via FHIR, and context-enriched document generation.
Built for the MedGemma Impact Challenge on Kaggle, targeting the Agentic Workflow Prize.
| Resource | Link |
|---|---|
| Live demo | yashvshetty-clarke.hf.space |
| Source code | github.com/yvs-tinker/clarke |
| Evaluation report | evaluation/EVALUATION.md |
| LoRA adapter | yashvshetty/clarke-medgemma-27b-lora |
| Demo video | Coming soon |
Results
Clarke was evaluated across five NHS outpatient consultations spanning endocrine, cardiology, respiratory, heart failure, and mental health. Full methodology and per-patient breakdowns are in the evaluation report.
| Component | Metric | Score |
|---|---|---|
| MedASR (speech-to-text) | Word Error Rate | 13.28% across 1,438 words |
| EHR Agent (record retrieval) | Fact Recall | 100% (70/70 facts retrieved) |
| EHR Agent | Precision | 98.6% (1 hallucination in 71 facts) |
| Document Generation (base) | BLEU-1 / ROUGE-L | 0.54 / 0.44 |
| Document Generation (after QLoRA) | BLEU-1 / ROUGE-L | 0.71 / 0.47 (+31% BLEU-1) |
QLoRA fine-tuning on just 5 gold-standard NHS clinic letters improved lexical accuracy by 31%, trained in 15 minutes on a single A100 GPU. The adapter is published at yashvshetty/clarke-medgemma-27b-lora.
The Problem
NHS doctors spend 73% of their working time on non-patient-facing tasks, with only 17.9% on direct patient care (Arab et al., QJM 2025; TACT study, 137 doctors, 7 months). Documentation alone consumes approximately 15 minutes per patient encounter. Across a typical 10-12 patient clinic, that is 2.5-3 hours of writing per session (clinician survey, n=47). At the scale of 190,200 FTE doctors in England (NHS Digital, Aug 2025), the impact compounds: 7,248 unfilled medical vacancies, 7.31 million patients on the waiting list (BMA/King's Fund, Nov 2025), and 61% of trainees at moderate-to-high burnout risk (GMC NTS, 2025).
Ambient AI scribes have shown promise, reducing clinician burnout from 51.9% to 38.8% within 30 days (Olson et al., JAMA Netw Open 2025). But every existing solution (Heidi Health, DAX Copilot, Tortus) generates documents from conversation audio alone. None retrieves EHR context, meaning clinicians must still manually add lab values, medication lists, and allergy checks. All are cloud-dependent, closed-source, and costly: Heidi alone would cost an estimated 226M GBP/year at NHS scale.
Clarke closes both gaps: ambient documentation fused with intelligent EHR retrieval, fully open-source, designed for local deployment.
Clinician Validation
A 47-respondent clinician survey confirmed the problem. Respondents reported spending substantial time on documentation, identified clinical letter writing as the most time-consuming task, and expressed strong interest in AI-assisted documentation tools with EHR integration.
Architecture
Clarke orchestrates three HAI-DEF models in a five-stage agentic workflow. Each model operates as an autonomous agent, making its own decisions about what to process, retrieve, or generate:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CLARKE PIPELINE β
β β
β βββββββββββββββ β
β β Audio Input β Upload or record consultation audio β
β ββββββββ¬βββββββ β
β β β
β βΌ β
β βββββββββββββββββββββββββββββββββββββββββββ β
β β 1. MedASR (google/medasr) β β
β β Medical speech recognition agent β β
β β Audio -> clinical transcript β β
β ββββββββ¬βββββββββββββββββββββββββββββββββββ β
β β β
β βΌ β
β βββββββββββββββββββββββββββββββββββββββββββ ββββββββββββββ β
β β 2. MedGemma 4B IT β<-->β FHIR Serverβ β
β β (google/medgemma-1.5-4b-it) β β Patient β β
β β EHR context retrieval agent β β records β β
β β Patient ID -> structured context β ββββββββββββββ β
β ββββββββ¬βββββββββββββββββββββββββββββββββββ β
β β transcript + patient context β
β βΌ β
β βββββββββββββββββββββββββββββββββββββββββββ β
β β 3. MedGemma 27B Text-IT β β
β β (google/medgemma-27b-text-it) β β
β β Document generation agent β β
β β Transcript + context -> NHS letter β β
β ββββββββ¬βββββββββββββββββββββββββββββββββββ β
β β β
β βΌ β
β βββββββββββββββ β
β β Draft Letterβ Clinician review, edit, and sign-off β
β βββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Why three models, not one? Each HAI-DEF model contributes a distinct capability that no single model can replicate. MedASR provides medical-domain speech recognition optimised for clinical terminology. MedGemma 4B understands FHIR resources natively, retrieving and synthesising relevant patient history. MedGemma 27B generates clinically accurate prose grounded in both the conversation and the medical record. The pipeline produces documents that reference actual lab values, include current medication lists, and cross-check for consistency. No conversation-only scribe can achieve this.
Features
- End-to-end ambient documentation from patient selection through letter sign-off.
- Three-model agentic pipeline with MedASR, MedGemma 4B, and MedGemma 27B operating as coordinated agents.
- FHIR-backed context enrichment retrieving demographics, conditions, medications, lab results, allergies, and diagnostic reports.
- Structured NHS clinic letter output following standard clinical correspondence format.
- QLoRA fine-tuning with a published LoRA adapter achieving 31% BLEU-1 improvement.
- Privacy-preserving architecture designed for local deployment; no patient data leaves the hospital network.
- Deterministic safety architecture in the EHR agent ensures 100% fact recall by design.
- Human-in-the-loop review with mandatory clinician sign-off before any document is exported.
- Mock-safe local development enabling the full pipeline to run without GPU or gated model access.
Models
Clarke uses three models from Google's Health AI Developer Foundations (HAI-DEF) collection:
| Role | Model | What it does |
|---|---|---|
| Speech recognition | google/medasr |
Converts consultation audio to text with medical vocabulary optimisation |
| EHR retrieval | google/medgemma-1.5-4b-it |
Queries FHIR records and synthesises structured patient context |
| Document generation | google/medgemma-27b-text-it |
Generates NHS clinic letters from transcript + EHR context |
Additionally, a QLoRA fine-tuned adapter is published at yashvshetty/clarke-medgemma-27b-lora (173.4 MB, LoRA rank 16, trained on 5 NHS clinic letter examples).
Evaluation Summary
Full methodology, per-patient results, error taxonomy, and limitations are documented in the evaluation report. Headline findings:
MedASR (Word Error Rate: 13.28%) Most clinical terms transcribed correctly. Errors concentrated on patient names (resolved from EHR, not transcript) and rare medical terms. Downstream agents correct most transcription errors using authoritative EHR data.
EHR Agent (100% recall, 98.6% precision) Every allergy, medication, lab result, and diagnosis was retrieved across all five patients. One borderline hallucination occurred (a clinically correct trend annotation). The deterministic query architecture guarantees no stored fact is missed.
Document Generation (BLEU-1 0.71 after QLoRA) The base model scored BLEU-1 0.54. After QLoRA fine-tuning on 5 gold-standard NHS letters (15 minutes of training, single A100), BLEU-1 rose to 0.71 (+31%). All generated letters correctly captured diagnoses, medications, lab results, and management plans.
QLoRA Fine-Tuning
Clarke includes a QLoRA fine-tuning pipeline for adapting MedGemma 27B to NHS letter conventions.
| Parameter | Value |
|---|---|
| Method | QLoRA (4-bit base + LoRA rank 16, alpha 32) |
| Target modules | q_proj, k_proj, v_proj, o_proj |
| Training data | 5 gold-standard NHS clinic letters |
| Training time | ~15 minutes on A100 40 GB (Google Colab) |
| Framework | Unsloth |
| Adapter size | 173.4 MB |
| Result | BLEU-1 improved from 0.54 to 0.71 (+31%) |
Training scripts are in finetuning/. The adapter is published at yashvshetty/clarke-medgemma-27b-lora.
Quick Start
Run in mock mode (no GPU required)
git clone https://github.com/yvs-tinker/clarke.git
cd clarke
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
USE_MOCK_FHIR=true MEDASR_MODEL_ID=mock MEDGEMMA_4B_MODEL_ID=mock MEDGEMMA_27B_MODEL_ID=mock python3 app.py
Open http://localhost:7860.
Run with real models (requires A100 GPU + HuggingFace access)
Create a .env file:
MEDASR_MODEL_ID=google/medasr
MEDGEMMA_4B_MODEL_ID=google/medgemma-1.5-4b-it
MEDGEMMA_27B_MODEL_ID=google/medgemma-27b-text-it
HF_TOKEN=hf_xxxxxxxxxxxxxxxxxxxx
FHIR_BASE_URL=http://localhost:8080/fhir
APP_HOST=0.0.0.0
APP_PORT=7860
Then launch with python3 app.py. Requires NVIDIA A100 80 GB for the full three-model pipeline.
Repository Structure
clarke/
βββ app.py # Application entry point (FastAPI + Gradio)
βββ backend/
β βββ api.py # FastAPI REST endpoints
β βββ orchestrator.py # Pipeline coordinator
β βββ config.py # Environment and settings
β βββ schemas.py # Pydantic data models
β βββ models/
β β βββ medasr.py # MedASR transcription wrapper
β β βββ ehr_agent.py # MedGemma 4B EHR retrieval agent
β β βββ doc_generator.py # MedGemma 27B letter generation agent
β βββ fhir/
β β βββ client.py # FHIR server client
β β βββ queries.py # FHIR resource queries
β β βββ tools.py # Agent tool definitions
β β βββ mock_api.py # Mock FHIR server for development
β βββ prompts/ # Jinja2 prompt templates
βββ frontend/
β βββ ui.py # Gradio interface builder
β βββ components.py # UI screen components
β βββ state.py # Session state management
β βββ assets/ # CSS, logo, static files
βββ data/ # Demo audio, transcripts, synthetic FHIR bundles
βββ evaluation/ # Evaluation scripts and report
β βββ EVALUATION.md # Full evaluation report
β βββ eval_medasr.py # Word Error Rate evaluation
β βββ eval_ehr_agent.py # EHR fact recall evaluation
β βββ eval_doc_gen.py # BLEU/ROUGE-L evaluation
β βββ gold_standards/ # Reference letters for scoring
βββ finetuning/ # LoRA training scripts and adapter
βββ tests/ # Unit, integration, and end-to-end tests
Development
Clarke was built by a solo 4th-year medical student over the competition period. Development used Claude (Anthropic) for architectural design, evaluation methodology, and technical problem-solving, and Codex (GitHub) for code implementation via pull requests.
Key technical decisions documented in the evaluation report:
- Deterministic EHR retrieval over agentic tool-calling after prototyping showed MedGemma 4B's agentic queries were unreliable.
- Full bfloat16 precision for inference after discovering 4-bit quantisation breaks weight tying in MedGemma 27B.
- Multi-agent error correction where each pipeline stage compensates for upstream errors.
Licence
- Code: Apache 2.0
- Models: Subject to HAI-DEF Terms of Use and HuggingFace gating requirements.
Acknowledgements
- MedGemma Impact Challenge by Google Health AI
- HAI-DEF model releases
- Synthea for synthetic patient data
- HAPI FHIR server ecosystem