Skip to content

Oct 2026

Nwoma

Bilingual clinical document extraction and coding, English and French.

My role: Solo project

The Nwoma review screen: a French lab report on the left, the extracted patient fields and coded test results on the right
Reviewing a French lab report in the Nwoma demo. The documents are synthetic.

What it is

Reads lab reports and referral letters in English or French, digital or scanned, extracts 16 field types, suggests LOINC and ICD-10-CM codes, flags fields for human review and exports a FHIR R4 Bundle. It transcribes; it never diagnoses.

What I did

  • Fine-tuned a multilingual XLM-R token classifier that runs on CPU in about 0.15 s per document, with Tesseract OCR for scans and a rule-based validator.
  • Built a cascade that calls Gemini only when the validator rejects the local result, so 33% of documents reach the LLM.
  • Built a coding agent with four tools and hybrid retrieval (keyword plus multilingual embeddings) over LOINC and ICD-10-CM.
  • Wrote an MCP server that exposes extraction, coding and FHIR export to AI assistants.
  • Deployed the API as an AWS Lambda container through AWS SAM and GitHub Actions OIDC, with a budget alarm that switches it off. 142 tests; nothing is stored.

Outcome

  • Cascade F1 0.955 on 500 held-out synthetic documents, half French and half scanned, against 0.920 for the local model alone.
  • The agent raised top-1 coding accuracy from 64% to 85.2% for LOINC and from 49% to 93.0% for ICD-10-CM.
  • Published an evaluation report, a model card and architecture decision records.

Built with

  • Python
  • XLM-R
  • FastAPI
  • React
  • TypeScript
  • AWS Lambda
  • AWS SAM
  • MCP