All posts
#webdev#javascript#typescript#productivity

I Built a Podcast Discovery Engine in One Night (and It Actually Works)

April 1, 20265 min readby Jacobo

I have a podcast problem. Not the kind where I listen to too many — the opposite. I wantto listen to great episodes about specific topics, but I never know where to look. Spotify's discovery is optimized for shows, not topics. Apple Podcasts is basically a search engine from 2014. And Twitter recommendations are hit or miss.

So I built PodDigest.

The pitch is simple: type a topic, get the best podcast episodes about it, with AI summaries and key quotes. Subscribe if you want a weekly digest. Done.


The Problem (That Everyone Has)

I wanted to go deep on AI agents last week. I knew great conversations existed — on Lex Fridman, Acquired, My First Million — but finding which episode, on which show, about that specific topic, without wasting an hour? Basically impossible.

The core insight: podcast content is indexed for shows, not ideas. You can subscribe to Lex Fridman. You can't subscribe to “Lex Fridman episodes about autonomous AI systems.”

That gap is PodDigest.


The Stack

Next.js 15 + Tailwind v4 + shadcn/ui + TypeScript. My standard setup at this point. Dark mode default — it's a media consumption product, dark is the right call.

For podcast data, I built a scoring engine with realistic episode data. In production you'd wire this to Listen Notes API or Taddy — both have solid podcast search APIs. The architecture doesn't change; you just swap the data layer.

The interesting technical piece was the digest subscription flow. I went with email input → localStorage persist → weekly send simulation. Clean, no backend needed for the MVP.

TypeScript

// Episode search with topic scoring
const scoreEpisode = (episode: Episode, topic: string): number => {
  const keywords = topic.toLowerCase().split(' ');
  const titleMatch = keywords.filter(k => 
    episode.title.toLowerCase().includes(k)
  ).length;
  const descMatch = keywords.filter(k => 
    episode.description.toLowerCase().includes(k)
  ).length;
  return (titleMatch * 3) + descMatch + (episode.popularity * 0.1);
};

The Design Decision I'm Most Proud Of

Empty states are where most apps fall apart. You open the thing and it's either a blank void or a “no results found” message that makes you feel like you did something wrong.

PodDigest's empty state is the hero of the product. When you haven't searched yet, you get:

  • A glowing headphone icon with violet light
  • "What are you curious about?"
  • Five clickable topic pills: AI agents, Stoicism, Startups, Climate tech, Sleep science

Those pills do real work. They remove the blank page anxiety. They show you what's possible. And they make the first interaction frictionless — you can start discovering in one click.


What Surprised Me

The AI summary format took a few iterations. My first attempt was too long — 3-4 sentences that nobody would read. The second was too short — felt cheap, like a tweet.

The format that works: one punchy paragraph that tells you why this episode matters right now, followed by a key quote that makes you want to hit play immediately. The quote is the hook. The summary is the justification.

“An agent that can do a month of work in a day isn't science fiction anymore. We shipped it.” — Sam Altman, The Knowledge Project

What I'd Do Next

  1. 1Wire up Listen Notes API — the demo data is realistic but real data is better
  2. 2Actual email delivery — ConvertKit or Resend for the weekly digest
  3. 3Personalization — save your topics, track what you've listened to, weight the algorithm toward your listening history
  4. 4Clip sharing — let users share a quote card from any episode on social. That's the viral loop

Try It

The app is live at poddigest.limed.tech.

Search anything. Subscribe to a topic. See what good podcast discovery actually feels like.

If you build on top of this or have ideas, I'm @sid0w on Telegram.

— Jacobo