Skip to content
← Back to projects
All Pau logo

All Pau

Privacy-first AI scribe — record any conversation, get structured notes (SOAP, sales, 1:1, interviews). Audio stays on-device; AI runs in your browser, on the free tier, or against your own API key.

Live ↗
typescript bun hono react vite tailwindcss sqlite dexie indexeddb whisper webgpu transformers-js better-auth nx pwa docker chainguard

“All pau” — Hawaiian Pidgin for completely finished. The job is to take any conversation and get it to pau: transcript closed, structured note filled, ready to ship. Shipped as Honu; the turtle stayed on as the mascot.

Record a session, get a clean transcript, and let AI fill whatever form fits — SOAP notes for clinicians, MEDDIC summaries for sales, 1:1 recaps for managers, interview write-ups for recruiters. Templates are user-extensible: build one in the visual editor (14+ field types) or describe it in a sentence and let AI generate it, then publish to the in-app marketplace.

The pitch is privacy. Audio, transcripts, notes, and rolling subject summaries all live in IndexedDB in your browser. You pick where the AI runs:

  • Free tier — All Pau’s server forwards to infer.offbyone.ai, capped at 10 calls/day.
  • Run locally — Qwen 3 (0.6B / 1.7B / 4B) in your browser via @huggingface/transformers, WebGPU-preferred with WASM fallback. Unlimited and fully offline.
  • Bring your own AI — any OpenAI-compatible endpoint with your own key, your own quota, your own BAA if you need HIPAA.

Recording falls through Web Speech API → server-side Whisper → on-device Whisper WASM/WebGPU so something always works, and a second “record browser tab” mode uses getDisplayMedia to mix meeting audio with your mic for Meet/Zoom/Teams calls. Transcripts are labelled with who said what, each session records which route transcribed it and what each AI run cost, and any run can be re-run against a different route. Note generation is three progressive steps — values, per-field confidence with source quotes, session-level insights — streamed to the UI so partial failures don’t block the rest.

Stack is Bun 1.3 throughout, React 19 + Vite 8 (rolldown) + Tailwind 4 on the frontend, Hono on the API, bun:sqlite for server data (better-auth with passkey/WebAuthn, plus rate-limit / audit / per-user limit tables), Dexie client-side, Sentry on both ends with PHI-scrubbing beforeSend, Nx + Bun workspaces, release-please for conventional-commit releases, and a Vite plugin that turns CHANGELOG.md into an in-app “What’s New” modal.

Deployed as a single self-contained binary from bun build --compile on chainguard/glibc-dynamic — smallest viable image, no Bun runtime in $PATH, no shell. It was the testbed for Four Ways to Deploy a Bun Server.