Duarte O.Carmo

Blog | About | Consulting | Resume | Talks | Photos | Newsletter

Limpa: Ad-Free podcasts powered by LLMs

[Listen]

I get up feeling sleepy. I lace up my running shoes and head out the door. I fire up my favourite podcast. "This show is brought to you by..." I hate ads.

I understand the attention economy. Companies are capitalizing more and more on everyone's time. I have nothing against it. But I'm also a big fan of protecting my time. A Pi-hole under my desk, uBlock Origin, SponsorBlock, I run them all. My time is mine, unless I tell you otherwise.

And I spend a lot of time listening to Podcasts. And what are podcasts at the end of the day? Just mp3 files. Once you download them from the server, they're yours.

So I built Limpa1

Limpa screenshot

Limpa is a simple yet powerful web app. You paste in the RSS feed of your favourite podcast, and it will give you back an ad-free feed that you can plug into your favourite Podcast app.

It's a simple Django app with htmx on the front-end. A stack I love since it has few moving pieces. Every time a podcast gets added, I transcribe the latest episode using NVIDIA's Parakeet v3 running on Modal. Once I extract the transcript with timestamps, I can prompt an LLM to get the exact timestamps of the ads that should be cut out. I then pass those to ffmpeg and voilà: ad-free podcasts.

Django's new Tasks framework has also been a joy to use. No more Celery, no more Flower, just a simple database to run background tasks. The fewer moving pieces, the fewer mistakes my agents are prone to making.

If you're wondering - no - I'm not planning on hosting this service to others. I'm not interested in discussing the nuances and implications of providing this as a service to others.2. The project's simple and well documented, and so it should be easy for you to run it for yourself.

Feel free to fork, and build on top of it!

  1. It means "clean" in Portuguese
  2. That might be illegal, and you probably shouldn't do it

January 5, 2026
Subscribe via Email