I’ll admit it up front: I’m thrifty. Not “skip the coffee” thrifty. “Why would I pay $15 a month for that when a free option takes an afternoon to set up” thrifty. Every subscription my businesses carry has to survive one question: could a free tool plus an hour of configuration do this better?
Lately the answer keeps coming up yes, and Claude Code is the reason. This is my favorite thing about it, and almost nobody talks about it: Claude Code is not just a coding tool. It is the world’s best installer, configurator, and glue layer for open-source software. Nearly every expensive SaaS incumbent has a scrappy open-source alternative with rough edges, and Claude Code sands the edges off in one session. You describe what you want, it reads the docs, installs the pieces, wires them together, and you keep the subscription money.
Here’s the latest example. I replaced my paid AI notetakers (I was running Fathom and Granola) with an open-source app, roughly 40 lines of bash, and a scheduled Claude Code job. Every meeting I take now ends up as a Claude-written summary in my Obsidian vault, with action items, key decisions, and a consistency check against everything else I know. I never touch it. Total running cost: $0 a month on top of a Claude subscription I already had.
The money was the trigger. The bigger reason was privacy.
The problem with paid AI notetakers
I was paying for AI notetakers and I didn’t trust their summaries. App-generated summaries are generic, miss context, and don’t know anything about my business. I wanted three things:
- Raw transcripts I own: plain files on my machine, not someone’s cloud
- Summaries written by an AI that knows my company: not a generic template
- A memory that catches contradictions: if a client says one thing in March and another in July, I want to be flagged
No notetaker on the market does the second and third things, because no notetaker knows your business. A model with your company wiki as context does.
Why the data lives on my machine
Think about what is actually in a meeting recording. Client pricing. What a prospect said about their current vendor. An employee issue somebody raised at the end of a call. Health details, in the practices I work with. Deal terms. The stuff you would never paste into a random web form is exactly the stuff a notetaker captures by default, verbatim, on every call.
With a hosted notetaker, all of that lands on a company’s servers, indexed and retained under a policy that can change with a version bump of the terms. That company gets acquired, changes its retention window, adds a feature that trains on customer data, or has a breach, and my clients’ words are in it. I never agreed to that on their behalf, and honestly they never agreed to it either. They agreed to talk to me.
So the design rule was simple: the recording and the transcript never leave my laptop. Anarlog transcribes on device with local models, and the output is plain markdown in a folder I control, backed up how I choose, greppable with tools I already use. There is no vendor dashboard holding my archive hostage, no export flow to beg for if I leave, and no third party to notify if a client asks me to delete everything. Deleting a meeting is deleting a file.
Being straight about the exception, because pretending otherwise would be exactly the kind of vendor talk this post is complaining about: the summarization step sends transcript text to Anthropic when Claude writes each note. That is one known boundary I chose, with a company whose data policy I have actually read, instead of an accumulating pile of vendors I have not. If even that is too much for a particular meeting, the pipeline degrades gracefully: skip the summary step, keep the local transcript, and you still own everything. And when a fully local model is good enough at this job, the prompt file is the only thing that has to change.
The stack (total cost: $0/month)
- Anarlog: an open-source (MIT) meeting notetaker, successor to Hyprnote. On-device transcription with local models. The free plan is $0 forever; you only pay if you want their cloud transcription and models.
- Claude Code: runs headless (
claude -p) to process transcripts - Obsidian: my company wiki vault, where the notes land
- launchd: macOS’s native scheduler, runs the pipeline hourly
How the pipeline works
Every hour at :15, a launchd job runs a small bash script:
- Find new meetings.
anarlog meetings list --json, diffed against aprocessed_ids.txtstate file. - Hand them to Claude. The script pipes new meeting IDs into
claude -pwith a prompt file. - Claude does the real work for each meeting: it pulls the full raw transcript via the Anarlog CLI (paginated, 500 words at a time), explicitly ignores Anarlog’s own summaries and writes its own from the raw transcript, then writes a note to
wiki/meetings/YYYY-MM-DD Title.mdwith YAML frontmatter, a 30-second summary, checkbox action items with owners, and key decisions. It adds wikilinks to people, clients, and concepts that already exist in the vault. - Conflict detection. After writing each note, Claude cross-checks the meeting’s facts against the rest of the vault: pricing, dates, scope, ownership, reversed decisions. Contradictions get logged to
Conflicts.mdwith quoted evidence from both sources, plus a macOS notification so I actually see it. - Fail-safe. If the Claude run fails, IDs aren’t marked processed, so it retries next hour. Failures also fire a notification.
The calendar trick (how to skip the $15/month)
This is the part that makes the thrifty version work. Anarlog’s direct Google Calendar integration is Pro-only. But its Apple Calendar integration is free, and Apple Calendar can carry any account your Mac knows about. So:
- System Settings → Internet Accounts → add your Google account → enable Calendars
- In Anarlog, connect Apple Calendar (one local permission prompt)
Google Calendar events now flow through macOS into Anarlog: meeting titles, times, participants, and join links, without touching the Pro tier. I verified it against Anarlog’s local SQLite database. All my Google calendars synced, work meetings with links included. Same data, $0.
The design decisions that matter
Local capture, deliberate boundaries. Transcription happens on device, the archive lives in a folder I control, and exactly one step reaches the internet by design rather than by default. That is the whole privacy posture, and it is worth more to me than the $15 a month.
Claude writes the summaries, not the notetaker. The transcription app is just a capture device. The intelligence layer is a model with my entire company wiki as context. It knows who my clients are, what we’ve quoted them, and what we decided last month.
The vault is the memory. Because notes land in the same vault Claude reads from, every meeting makes the next summary smarter. Contradiction checking falls out of this almost for free. This is the same thesis behind Brain, our company knowledge base product: an AI is only as useful as the business context it can reach. My Obsidian vault is the solo-founder version; Brain is the version for a whole team, with permissions and a query API.
Flag, don’t fix. Claude never edits existing notes to resolve a conflict. It only logs the contradiction with evidence and pings me. Humans decide which version of reality is true.
Idempotent and boring. State file, daily logs, exit quietly if anything’s missing. It ran silently for a day while a dependency was missing, then just started working when the dependency appeared. No babysitting.
The pieces
~/.meeting-pipeline/
├── run.sh # ~40 lines of bash: list, diff, hand off to claude -p
├── prompt.md # the instructions Claude follows for each meeting
├── processed_ids.txt # state
└── logs/ # one file per day
The launchd plist just calls run.sh hourly. The prompt file is where all the behavior lives: changing how notes are written is editing markdown, not code.
Steal this pattern
The pattern generalizes to almost anything: capture tool → CLI → claude -p with a prompt file → your notes system, on a scheduler, with a state file. The whole thing is about 40 lines of bash and a prompt.
And the meta-pattern generalizes further. Before you renew any SaaS subscription, ask two questions: whether an open-source alternative exists that Claude Code can set up for you, and where your data ends up in each version. The answer to the first is yes more often than the incumbents would like, and the answer to the second is usually the better reason to switch.
If you’d rather have someone build this class of automation for your business (meeting pipelines, workflow automation, or a full company brain), that’s literally what we do. Get in touch and bring the subscription you resent most.