VetScribe records a consultation, transcribes the conversation, and produces a clean, structured SOAP note in under a minute — on web or on the iPhone in your scrub pocket.
Audio → Deepgram transcription → Claude Sonnet 4.6 → structured note. Roughly 30–45 seconds end to end.
VetScribe is shipped, used in real appointments, and shaped by ongoing feedback from practicing vets.
Native iOS recording with offline queueing, plus a web recorder for clinic workstations. Auto-recovery if anything crashes mid-visit.
Subjective, Objective, Assessment, Plan — generated to the format clinics actually use, with veterinary terminology preserved verbatim.
One household, one appointment, separate notes per pet. Claude is prompted to disambiguate which animal each finding belongs to.
Drop in prior records or referral packets. The app extracts history, prior diagnoses, and medications into searchable summaries.
One-tap polish, rewrite, or expand any SOAP section. Generate client-friendly discharge instructions from the same source.
Invite associates, share patient history, track per-user usage. Role-aware admin tooling for clinic owners.
Every visit moves through the same pipeline. Every step is observable, costed, and re-runnable from the visit detail page.
Tap record at the start of the appointment. Audio is captured locally with automatic chunking and crash recovery so an unexpected reload doesn't lose the visit.
On stop, audio uploads to a streaming Deepgram Nova endpoint. The transcript is cleaned with a domain-specific pass before any clinical reasoning happens.
Claude Sonnet 4.6 generates a structured SOAP note from the cleaned transcript using a prompt tuned on real veterinary visits — preserving drug names, dosages, and exam findings.
The vet reviews, optionally requests refinements (shorter, more clinical, expand the plan, etc.), and can spin off a client-friendly discharge summary from the same source.
One TypeScript codebase covers a Next.js web app, a Next.js API layer, and a React Native client — all shipped continuously.
A scribe app is only as useful as it is reliable. These are the constraints the product was designed around.
Every model call is logged with token counts and dollar cost, surfaced in a per-user Usage page. The clinic can see what each visit cost to process — and so can I.
Recording state is persisted client-side every few seconds. If the browser or app dies mid-visit, the next launch detects the orphan and offers to recover and upload.
Vet feedback button → tagged in admin dashboard → fix → EAS Update OTA → in the user's hands within hours, often without a TestFlight rebuild.
All patient data is partitioned by user and team via Supabase Row-Level Security. Admin tools use a service role only at clearly delineated boundaries.
I designed, built, and continue to operate VetScribe end to end — product, infrastructure, AI pipeline, mobile, web, and the conversations with the veterinarians using it every day.