What is Scribe?
Scribe is your in-person meeting recorder. Press a button on your iPhone, have your meeting, walk away. A few minutes later, the transcript is here on this site โ with each person's words labeled by name, a clean summary, and the action items pulled out.
Think of it like the Teams transcript you already love, but for the real world โ coffee shops, client offices, your kitchen table.
๐ฌ The 30-second feel
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ฑ YOU โ
โ Press the side button on your iPhone โ
โ Voice Memos opens โ tap red dot โ talk โ tap stop โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ๏ธ YOUR PHONE โ
โ iCloud quietly sends the recording to your Mac โ
โ (no app, no upload button, no buttons to push) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ฅ๏ธ YOUR MAC STUDIO โ
โ Notices the new recording โ
โ Writes down every word โ
โ Figures out who said what โ
โ Pulls out the action items โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ THIS WEBSITE โ
โ New transcript appears at /info/meetings โ
โ Your Mac beeps you a notification when ready โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ A 30-minute meeting is ready in about 7 minutes. A 5-minute hallway chat is ready in about a minute.
๐ Teach Scribe who you are (one time, 5 minutes)
Before your first real meeting, you'll record 60 seconds of yourself talking. Scribe uses it like a voice fingerprint โ after that, whenever you speak in a meeting, the transcript labels it Topher instead of Speaker A. Do this once for yourself, once for Jaime, and you're set forever.
Step 1 โ record
- Open Voice Memos on your iPhone (the white app with the red waveform icon).
- Find a quiet room. Tap the red record button.
- Read the script below at normal pace โ like you're talking to someone, not reading a contract. ~60 seconds.
- Tap stop. Rename the recording to Topher Seed (or whoever's recording).
The script (read this aloud)
"My name is Topher Otten, and I'm recording this so my own AI assistant learns what my voice sounds like. Today is a Thursday in May, and the weather outside is warmer than I'd like. This year has felt like one long sprint between businesses โ Aspire Digital, the bowling lanes, the HOA board, the rentals down in Florida, and somehow making time for Jaime, the kids, and a workout if I'm lucky. The hardest part isn't the work itself, it's choosing which thing matters most on any given day. I'm hoping this little experiment with local transcription gives me back twenty minutes after every client meeting that I'd otherwise spend rewriting my own notes. We'll see whether the wheels stay on. Either way, the river keeps running, and I'd rather be in the boat than on the bank watching it go by."
Jaime's script is in the 2026-05-12 chat with Aria. Same idea, different content (the content doesn't matter โ your voice is what gets learned).
Step 2 โ register it
Voice Memos automatically syncs to your Mac Studio. Once you see the recording on the Mac (Voice Memos app, takes ~30 seconds), open Terminal and run this one line:
cd ~/projects/scribe uv run scribe enroll "Topher" ~/Library/Group\ Containers/group.com.apple.VoiceMemos.shared/Recordings/Topher\ Seed.m4a
Same command for Jaime, just swap the name and file. If you want to be sure it worked: uv run scribe speakers โ it'll list everyone Scribe knows.
That's it for setup. You'll never do this again unless you want to add someone new (Eric, Linq, a client you meet with often). For anyone you don't enroll, transcripts just say "Speaker A", "Speaker B" โ still readable, just no name.
๐๏ธ Recording a meeting (every time)
Start the recording
Open Voice Memos and tap the red dot. Even faster: set your iPhone's Action Button (the side button under the silent switch on Pro models) to open Voice Memos โ one press from any screen. See the "Action Button setup" below.
Set the phone in the middle of the table
The closer everyone is to the microphone, the cleaner the recording. For most coffee-shop or kitchen-table conversations, just laying the phone face-up on the table is fine.
Have your meeting
Don't think about the phone. Voice Memos won't get killed by anything โ phone calls pause it and resume, screen-locking is fine, putting the phone in your pocket is fine.
Tap stop. Walk away.
That's the whole job. Your Mac will take it from here. In a few minutes you'll get a notification: "Scribe ready: [meeting title] ยท 4 speakers ยท 27 min."
๐ Where your transcripts live
Every transcript becomes its own page on this site, in chronological order. To browse them all, go to:
๐๏ธ Your Meetings โ /info/meetings
Searchable list of every recording, newest first. Each one is its own page with the summary, action items, and full word-by-word transcript color-coded by speaker.
You can also tap the notification when a meeting finishes โ it deep-links straight to the page.
โก Action Button setup (iPhone 15 Pro / 16 Pro โ optional but recommended)
The Action Button is the side button on Pro iPhones โ by default it toggles silent mode. Rebinding it to open Voice Memos saves you about three taps and means recording starts with a single physical press from any screen, even the lock screen.
- On your iPhone, open Settings โ Action Button.
- Swipe through the options until you see Shortcut.
- Tap Choose a Shortcut.
- Tap + to create new. Add one action: Open App โ Voice Memos. Name the shortcut Scribe.
- Press your Action Button. Voice Memos should open. Tap the red dot to record.
Bonus: hands-free trigger
Once the Scribe shortcut exists, open it in the Shortcuts app, tap the (i) info icon, and turn on "Add to Siri." Record the phrase "Hey Siri, start Scribe." Now you can start a recording without touching your phone โ useful when you're driving, walking, or your hands are full.
๐ก๏ธ What you don't have to worry about
๐ Privacy
The audio never leaves your house. It goes from your phone, through iCloud, to your Mac Studio in your office. No third-party company ever hears it. The transcripts live behind a login on this site โ only you and Jaime can read them.
๐ฐ Cost
$0/month, forever. No subscription. No "you've used your free minutes" message. Apps like Otter cap you at about 20 hours of meetings a month for $17. Scribe has no cap because your Mac is doing the work.
โฑ๏ธ Limits
Record a 5-minute hallway chat or a 4-hour board meeting โ same flow, same result. As long as the phone has battery, Scribe handles it.
๐ง Getting smarter
Every time you record someone new (Eric, a client), you can add their voice to Scribe with one command. The voice fingerprints are yours โ they live on your Mac, they don't reset, and they can never be taken away by a vendor.
๐ฉน If something goes sideways
My transcript shows "Speaker A" instead of my name
Either your voice isn't enrolled yet (run the enroll command above), or the recording was too noisy for the match to be confident. Re-enroll with a cleaner sample โ Voice Memos in a quiet room, holding the phone normally, reading the script naturally.
The transcript never appeared
Two likely causes. First: the Mac Studio might be asleep โ wake it up, the watcher catches up automatically. Second: iCloud might be slow โ wait 5 minutes and check Voice Memos on the Mac. If the recording is on the Mac but no transcript appeared, ask Aria to look at the Scribe logs (she knows where).
The transcript got the words wrong
Whisper (the transcription engine) is excellent but not perfect. It struggles with: industry jargon it hasn't heard before, heavy accents in noisy rooms, and people talking over each other. There's no way to "fix" a transcript in Scribe directly โ you'd edit the underlying file. For now, treat the transcript as 95% accurate and human-edit the action items if needed.
I want to share a meeting with someone outside the family
Right now, only you and Jaime can read these pages (Cloudflare Access locks them down). To share a specific meeting, you can: copy the text into an email, screenshot the summary, or ask Aria to make a public link for that one transcript (she'd put it on madebyotten.com behind a hard-to-guess URL).
My client doesn't want to be recorded
Ohio is a one-party-consent state โ legally you don't need permission to record a conversation you're part of. But ethically and for trust, you should still tell the room. A casual "hey, mind if I throw a transcriber on this so I don't miss anything?" at the start is usually enough. If they say no, you don't.
๐ Where to find this page later
This page lives at cc.madebyotten.com/info/scribe. You can also get here from:
- The top nav on any Command Center page (๐๏ธ Scribe)
- The home dashboard tile
- The All Info Pages directory under "Aria Tools"
๐ง Engineering notes (for verifying what's under the hood โ skip if you're using it day-to-day)
The stack
- Transcription: MLX-Whisper (Apple's port of OpenAI Whisper Large-v3) โ runs natively on Apple Silicon at ~5-12x realtime
- Speaker diarization: pyannote 3.1 โ the open-source state of the art (DER ~11-19% on benchmarks)
- Voice fingerprints: pyannote/embedding (512-dim ResNet vectors), local SQLite storage with cosine similarity matching
- Summarization: Llama 3.1:8b (smoke) / Llama 3.3:70b (production) via local Ollama
- File watcher: Python
watchdogdaemon under launchd, watching the Voice Memos iCloud sync folder - Publishing: Atomic Astro page emission into the command-center repo, then standard CF Pages deploy
Verified working end-to-end
- 50s synthetic 2-speaker meeting โ 17s wall-clock end-to-end on M3 Max
- 167s 2-speaker meeting โ 41.6s end-to-end
- Speaker matching verified: enrolled "Fred" voice auto-labeled across all 4 of his turns
- 31 unit tests + 1 e2e smoke test, all passing
- ruff lint + pyright type-check, both clean
- Astro pages build cleanly into the site
- launchd daemon plist validates and loads/unloads correctly
- Watcher idempotent โ same file dropped twice gets processed once
- Watcher resilient โ survives missing Voice Memos folder (polls for it to appear)
Bugs UAT caught and fixed
- Doctor only checked 1 of 4 gated HuggingFace models โ now probes all 4
- Missing
omegaconftransitive dependency - Embedding dimension hardcoded 192, actual 512 โ now auto-detected with consistency enforcement
- CLI showed a Python traceback on corrupted audio โ now graceful error + exit 1
- Watcher crashed if Voice Memos folder didn't exist โ now polls every 30s
- pyannote 3.1+ returns
DiarizeOutputnotAnnotationโ now unwraps both shapes - 15 ruff + 16 pyright errors after second look โ all cleaned
raise typer.Exitmissing exception chain โ fixed
Where the code lives
~/projects/scribe/โ Python repo, separate from aria-secondbrain~/projects/scribe/docs/IOS_SETUP.mdโ phone setup deep-dive~/projects/scribe/docs/OPERATIONS.mdโ daemon ops, logs, troubleshooting~/projects/scribe/docs/ARCHITECTURE.mdโ system diagram + design rationale~/Library/LaunchAgents/com.topher.scribe-watcher.plistโ daemon definition (installed, paused; load withlaunchctl load <path>)
Tracked in Linear
OPS-42 โ closed Done 2026-05-14 PM after the speaker-ID auto-label verification.