Experiment

The Listening Index

A searchable record of ideas from the podcasts I listen to.

I listen to a lot of podcasts, and a week later I usually can't remember which episode an idea came from. I built this to fix that. After I finish an episode, a script finds or makes a transcript. A model reads it and writes down the ideas I may want to find later.

The model uses a profile of my work in AI consulting to decide what to keep. That means there's a lot here about agents and evaluation, and less about subjects I already know. Search by topic, show, or speaker, or browse all shows.

1,214Takeaways
151Episodes
22Shows
144Speakers
142Hours of audio

A model wrote every takeaway here from the episode transcript, and I haven't checked them all against the audio. The model also infers speaker names from context. It usually works when one person does most of the talking, but it can be wrong when two people talk on equal footing. If a takeaway attributes something to the wrong person, email me and I'll fix it.

← Back to all experiments

How I built this

Every episode here is one I listened to. After that, the process is automated. A script finds or creates the transcript, Claude writes and scores the takeaways, and code sorts them and checks every quote. The labels below separate my input, model output, and code.

  • My input
  • Model output
  • Code
  1. 219 Episodes I finished From my Apple Podcasts library
  2. 151 Transcripts collected Publisher transcripts, video captions, or Whisper
  3. 1,707 Takeaways written The whole transcript, one model call per episode
  4. 1,214 Takeaways published Code sorts them, checks the quotes, and keeps scores 3 to 5

Getting a transcript

I look for a publisher transcript first, then video captions, then run Whisper locally.

Automatic captions and Whisper can mishear names, drop punctuation, and make up the occasional word, so some excerpts read a little rough. I leave them as transcribed.

Across all 151 episodes it comes to about 1,633,119 words.

151 transcripts, by where the text came from

10 88 53
  • 10 from the publisher. A few shows put a transcript right in the feed, and that text is exact.
  • 88 from video captions. A person wrote 13 of them and the rest are automatic.
  • 53 from Whisper. When there's nothing else, I transcribe the audio on my own machine.

Matching an episode to a video

A podcast feed and a video upload of the same episode often have different lengths and titles. Feeds insert ads the upload doesn't carry, so a 23 minute episode turns up as 19, and shows list an interview by topic in one place and by guest in the other.

The matcher follows two rules.

I've found three wrong transcripts so far, all of them by spot-checking the output. Reading the code wouldn't have helped, since it was doing exactly what I told it to.

The same episode, two lengths

In the feed 23 min As a video 19 min

The shaded blocks are ads the feed adds and the upload doesn't have.

Length only counts when it's distinctive

On a daily show where every episode runs 28 minutes, a 28 minute video doesn't tell you anything. The code only trusts length when at most two other episodes of that show sit within 2% of the runtime.

One video serves one episode

Once a video has been claimed, a later run can't hand it to a second episode.

What Claude writes

I use Claude Opus 5 at high effort. It reads the whole transcript in one call, selects the ideas likely to be new or useful to me, writes the headline and supporting paragraph, pulls an excerpt, and scores each takeaway from 1 to 5.

I didn't write these takeaways, and I haven't checked all 1,214 against the audio.

What each takeaway contains

Headline

Claude

Supporting paragraph

Claude

Excerpt

Claude selects, code verifies

Speaker

Claude infers from context

Topics

Claude

Episode details

Podcast feed

Sorting and quote checking

Both started as prompt instructions. I moved them into code after the model got them wrong.

Sorting by score

I asked for them strongest first and one episode came back 5, 3, 4, 4, 2, so the sorting happens in code now.

Checking the quotes

The code checks every excerpt word by word against the transcript it came from and drops anything that doesn't appear. Across 151 episodes it's dropped 2 excerpts.

Most of the work went into the quotes it rejected by mistake. The model tidies as it copies, so the transcript says "close to using up um regularly" and the quote comes back without the "um". That threw out eighteen real quotes across two episodes before I normalized both sides the same way.

The prompt

The prompt combines writing rules with a reader profile built from my blog and consulting site. I reviewed and edited the profile by hand.

  1. My own writing Everything on this blog, plus my consulting site
  2. A draft reader profile An agent finds the subjects and language I use most
  3. The profile I use Reviewed and edited by hand
  4. The episode prompt Writing rules and the profile, for every episode

Most of it is about what to leave out:

Anything he has heard forty times. He listens to a daily AI news show; the fortieth "context matters more than the model" is not a takeaway.

The cache key is a hash of both prompt files and the model name. Change any one of them, and the next run processes every episode again.

Filtering by score

The model scores every takeaway from 1 to 5 for how useful it's likely to be to me. This page keeps the 1,214 that scored 3 to 5, out of 1,707.

The score also sets the order. I don't show it on a takeaway because it reflects my interests and could read like a rating of the episode.

Every takeaway the model wrote, by the score it gave

51
4307
3906
Scores of 1 and 2 stay off the page
2481
112

Quotes and attribution

Every takeaway includes one short excerpt, credits the speaker when the model can identify one, and links to the original episode.

If you make one of these shows and want a takeaway changed or removed, email me and I'll take care of it.

Quote volume

  • 1,213 excerpts, one per takeaway. Each one is credited and links to the show's own episode page.
  • 28 words on average. That's about 2.6% of a transcript on average and 7.1% at most.