I hate hitting delete on a podcast episode I never played.
It’s a small thing. The episode sits in the queue for three weeks, I know I’m not getting to it, and eventually I swipe it away and pretend that’s fine. It isn’t fine. I subscribed to that show because I wanted what was in it, and deleting it unplayed means I got nothing. So I stopped trying to keep up.
The morning I couldn’t remember the name of an app
A few weeks ago I was driving and listening to an AppStories+ episode where Federico and John went through email clients. They compared a bunch of them. One of them sounded like exactly what I wanted, and I made the mistake every driver makes, which is telling myself I’d remember it later.
I did not remember it later.
So I went to the show page for the episode. It has a list of every app mentioned: Spark, Shortwave, Airmail, SaneBox, MimeStream, Hay. That list told me nothing. Six clients with similar names, no indication of which one was the one that made me perk up in the car, and no way to tell without listening to the episode again.
Then I remembered I had my own note for that episode. I opened it, went to the Products section, and there it was:
Spark — The speakers discuss using Spark for organizing emails and managing folders during specific events like WWDC. Also noted for its CLI capabilities that map the app’s UI hierarchy, offering features beyond a typical Gmail CLI.
That was the one. The CLI part is what caught me in the car. The show page gave me a name. My note gave me the name plus the reason it came up, which is the only part I actually needed.
I didn’t write that note. My Mac did, at nine in the morning, while I was at work.
What actually happens every morning
At 7:00 a.m. a script checks the RSS feeds for the shows I follow and downloads anything new.
At 9:00 a.m. a second script picks up whatever downloaded, transcribes it locally with Whisper, sends the transcript to a language model running on my own machine, and writes a markdown note into my Obsidian vault. Then it deletes the audio file, because I don’t need a 90MB MP3 sitting around once the text exists (as well as I don’t listen to the episode from the computer).
The note has four parts. An overview of the episode in a few sentences. A list of key points. A list of every product, app, book, or tool that the hosts actually discussed, each one linked, each one with a sentence explaining why it came up. I also have the link to the show notes in case the LLM gets something wrong.
Nothing leaves my house. No API key, no subscription, no per-minute transcription bill. If you want the background on getting a model running on your own Mac in the first place, I wrote that up in Running LLMs locally on Apple Silicon. The model runs on hardware I already owned locally. I also do not post or share these anywhere, this is a system built for me and only me, but I’m going to show you what to steal.
Why I trust it
This is the part where I’m supposed to hedge and tell you the summaries are a rough approximation and you should really listen to the episode.
I’m not going to do that, because it isn’t how I use it.
For a show like The Rest Is History, I often have no idea what the topic even is. Tom Holland and Dominic Sandbrook will do six parts on Elizabeth I and the Catholic plots, and I genuinely don’t know going in whether that’s something I want four hours of. The summary tells me what the episode is about in a paragraph. Sometimes that’s enough and I move on. Sometimes it makes me want the whole thing, and I go listen to all four hours.
Either way I got something. Before, an episode I skipped was just gone.
It’s either the summary or nothing. Those are the real options, and once you see it that way the accuracy bar stops being “as good as listening” and starts being “better than deleting it unplayed.”
For the record, the summaries have been right about what was actually said. My complaint list is short and petty. Whisper heard “Claude Code” as “cloud code” in this episode, so the overview claims something launched in February 2025 that didn’t, and the product list picked up the misheard version as if it were a separate app.
I deleted that line. Took about four seconds, because the note is a plain markdown file in a folder I own. That’s the part I’d defend hardest if someone tried to sell me a hosted version of this: when the model gets something wrong, I fix it and it stays fixed.
If you want to build one
The rest of this post is the whole build, and I’ll tell you up front that the architecture is the easy part. It’s three scripts and a scheduler. I could describe it in a paragraph and you’d still lose a Saturday, because none of what breaks is in the design.
It’s in the details. A transcript that repeats one sentence forty times and quietly ruins an hour of processing. A run that transcribes an episode perfectly for 33 minutes and then throws all of it away over a single malformed bracket. A product list where the top three entries are the ads you were trying to skip.
I hit six of those. Every one cost me a morning.
Below is the prompt I’d hand someone to build this from scratch, with all six already written into it as requirements, plus which model you actually need for the summarizing and what to do the first time it breaks anyway. You paste it into a coding agent, answer four questions about your setup, and it writes the pipeline against your folders and your feeds.

