Skip to main content
Auto-memory
Retell + Twilio
MCP ecosystem
Founder Pres.
Obsidian + QMD
Review pass
Claude / Codex
Convex
75K+ sold
SwiftUI CloudKit
Next.js + Vercel
1,350+ locations
Shopify
Session notes
Founder
MCP forks
<60s response
Operator chapters
QMD retrieval
121+ skills
Six figures raised
Founder office
back to grid
Projects2026

Boswell

A private macOS app that turns meeting audio or a pasted transcript into a clean, speaker-checked Obsidian note.

One surface
Shortcut + script handoffs gone
Any input
record · import · paste
AI speaker audit
labels checked, words preserved
Vault first
save new note or append
§01The workLive system

A private Mac app for one job: meeting audio or text into a clean, speaker-checked Obsidian note.

Boswell
SwiftUI · AppKit window

A private Mac app for clean meeting notes.

Boswell turns recordings and transcripts into speaker-checked Obsidian notes without bouncing between Shortcuts, scripts, and manual cleanup.

Boswell's Record screen showing the tape-deck recorder, live input graph, VU meter, transport controls, capture settings, and recent jobs.
Boswell's History screen showing a searchable rack of saved, draft, review, and ready transcript cards.
The workRecord screen. Live capture with source backup, input metering, and transport controls. / History screen. Searchable archive of saved, draft, review, and ready jobs.
§02The pipelineEnd-to-end flow
01

Capture

Record live audio, import an existing audio or video file, or paste a transcript that is already written.

record · import · paste
02

Transcribe

Local Models or Gemini return the transcript, and Boswell opens it for review before any note is written.

Local Models / Gemini
03

Check speakers

A Codex pass can fix speaker labels, but only when the diff changes labels and leaves the spoken text alone.

Codex + local fallback
04

File

Save the reviewed transcript as a new Obsidian note or append it to an existing note.

Obsidian save / append
§03What I builtPieces that compound

What's actually in the app.

Speaker labels only.

The Codex audit can change speaker labels but cannot touch the spoken text, and it only applies a fix at high confidence.

labels only, high-confidence

It names the transcription path.

Transcription runs locally or through Gemini, and the app tells you which path handled the run. Credentials live in Keychain; settings and history stay on disk.

Local Models · Gemini

A recorder, not an assistant persona.

I wanted the name to feel like a record keeper, not a chatbot. James Boswell is the reference: a biographer and diarist known for keeping the record. This app does the practical version. It captures the conversation, keeps speakers straight, and files the note where I can find it again.

James Boswell · diarist
§04Build rulesPersonal-use scope · macOS 14

The rules I held the build to.

Selected rules6 of the working set · macOS 14
  1. Recording writes a source backup before transcription, so a bad run never costs the audio.
  2. The transcript opens in a review-and-edit step before any note hits the vault.
  3. A Codex correction changes speaker labels and leaves the spoken text alone.
  4. With no Codex available, a local heuristic audit runs instead.
  5. Keys stay in the Keychain, kept out of config files and the repo.
  6. Finder opens the app only when the whole .app is signed.
§05StackEvery tool earns its line
SwiftUI / UIAppKit / Window + menusLocal Models / Gemini / TranscriptionCodex CLI / Speaker auditAVFoundation / Record + playbackObsidian / Vault outputKeychain / SecretsCore Text / Bundled fontsmacOS 14+ / Target
§06ArtifactsReceipts and public proof

The app, the build script, and the workflow it replaced. All private, nothing published.

Boswell.app

The installed Mac app. Local, private, ad-hoc signed.

local · ad-hoc signed
build_and_run.sh

One command that compiles the SwiftPM target, stages dist/Boswell.app, signs the whole bundle, and launches it.

SwiftPM → dist/Boswell.app
The workflow it replaced

A Shortcuts recorder, a folder of .command launchers, a Python transcription script, and a by-hand speaker-label cleanup. Four pieces I kept in sync by hand.

private tool · personal use