Healthcare & Clinical Systems

Nabz — your OPD notes, written for you

A multi-tenant SaaS for outpatient consultants in Pakistan. Patients are registered and queued by the assistant; the doctor types or dictates in shorthand, Claude drafts the structured note, and the patient leaves with a copy on the clinic’s own letterhead.

React PWA PHP 8.2 MySQL Claude API v1 Complete

The 36-second tour

Demo clinic with fictional patients and doctors. The note shown was generated live by Claude from the shorthand.

Forty patients, no time for notes

A busy OPD consultant sees dozens of patients in a sitting. Notes end up as a line of shorthand on a prescription pad — or nothing at all — which means no usable history at the next visit, nothing to hand a referring colleague, and no record if something goes wrong.

Shorthand in, clinical note out

Nabz runs the whole clinic visit: the assistant registers and queues patients, the doctor opens the visit and writes the way they already do — shorthand in English, Urdu or Roman Urdu, or a voice recording — and Claude turns it into a structured note with history, examination, investigations, impression, plan and follow-up. Uncertain readings and missing sections are flagged for the doctor before signing. Signed notes lock; the patient copy prints on the doctor's own generated header or pre-printed letterhead.

Built for clinical data from day one

Three layers of tenant isolation
A clinic-scoped data layer that refuses unscoped SQL, composite (clinic_id, id) foreign keys so no row can reference another clinic's data, and tests covering both.
Encrypted at rest
Clinical text, note flags and two-factor secrets are encrypted with libsodium before they reach the database.
De-identified before AI
Names, phone numbers and ID numbers are stripped out before anything is sent to Claude.
Signed means signed
A signed note is immutable; later changes become dated addenda, and every view, edit and print is audited.
Assistants never see clinical content
The server — not just the interface — withholds clinical text from assistant accounts.
Voice, kept private
An optional Mac companion app (forked from Imla) transcribes consultations locally; audio is deleted from the server afterwards.

Under the hood

FrontendReact + TypeScript (Vite), Tailwind v4, installable mobile-first PWA
BackendPlain PHP 8.2 REST API, no framework; server-side sessions
DatabaseMySQL 8
AIClaude, called only from the server, on de-identified input
VoiceTauri companion app with whisper.cpp on the doctor's own Mac

Where it stands

Version 1 of the web app and API is feature-complete — all six build phases done — and awaiting deployment.

← PreviousNarrateRad Next case studyLiverVol →

Want your clinic's notes written properly — without more typing?

If documentation is the part of clinic that never gets done well, it's a solvable problem.