Inspiration
Your team ships more than ever, and so do your agents. Release notes, changelogs, a policy that changed, the summary an agent writes at the end of a run: it all gets written down, and almost nobody reads all of it. You won't open a changelog on a walk. You might listen to five minutes about it.
poddub was built that way too: one founder and a team of coding agents, first one after another, then in parallel lanes, every run ending in a written report. Those reports are exactly the kind of text poddub is for. So the idea is simple: hear what your agents ship.
What it does
poddub turns what shipped into a short podcast episode for the people who should hear it.
- Paste what shipped. Somebody pastes text or markdown into a team's source inbox: release notes, a memo, a policy, the notes your agents left behind.
- Pick the shape. Two hosts or one narrator, 5, 10 or 15 minutes, and one of eight languages: English, German, Spanish, French, Italian, Dutch, Portuguese or Swedish.
- The script waits for a person. poddub writes the script and stops. A reviewer reads it turn by turn, edits a turn, regenerates a turn or the whole script, and approves it. Nothing is spoken before that.
- Listen anywhere. The approved episode is rendered with generated voices and published with chapters and a transcript. It plays in the app, with the screen off and from the lock screen, and on a personal feed address that works in any podcast app that takes a feed by URL.
- The voices say they are generated. Every episode opens by saying its voices are AI-generated, and the same sentence is in its description, its feed and any public page. An organization can reword it.
- Give your product a voice. An owner or an admin can release an episode to the organization's public show, a page and a feed anyone can open, with a report control on every public page. Anyone can follow a public show by its address.
- Organizations and teams. Members, roles and invitations, show settings with the voices (each with a preview), the disclosure, the default language and the artwork, and a list of who listens.
- Followed shows. Owners and admins follow a public show for everyone in the organization, and every new organization starts out following poddub's own show.
Beyond work: a study group, a club, a family with a lot to share. Same app, same private feeds.
How we built it
- The app: Expo and React Native with Expo Router.
- The API and the site: Next.js on Vercel, Postgres on Neon through Drizzle, sign-in by an emailed code with Better Auth.
- The pipeline: a Vercel Workflow per episode: the script, the review, the rendering turn by turn, then mastering.
- The models: the script is written through the Vercel AI Gateway with the AI SDK. The voices come from Gemini and MAI Voice through OpenRouter, and from Grok, Fish Audio and OpenAI through the Gateway, chosen per show.
- Billing: RevenueCat's SDK in the app, and a server that keeps its own record of every entitlement from RevenueCat's webhook and reconciles it against RevenueCat's API.
- The way of working: one founder and Claude Code. Every task starts as a recorded design decision in an OpenSpec change and writes each test red before its code. Since mid-September the work runs as parallel agent lanes, each followed by a verifier that opens every file the lane names. Maestro flows drive the app on the simulator.
Challenges we ran into
- The voices. The first engine spoke the narrator in a different voice on every turn, and it streamed its audio with a placeholder length our parser read as a truncated file. So we built a small tool that plays two voices of the same sentence blind, A and B, and names them only after the rating. Seventy-two pairs later the ear had overruled the price list, and OpenRouter joined as a second router for the voices that won. A newer model later rated level with the one in production, and it stays out until it can run with zero data retention.
- Apple's calendar. The Paid Apps Agreement waited on a tax form, so the first release shipped with nothing to buy and the plans came with the second. The first review took five days, one hour and fifty-one minutes, from submission to release on September 28.
Accomplishments that we're proud of
- A script never becomes audio without a person approving it, and a turn can be regenerated alone.
- The disclosure is the first line of every episode.
- Minutes are charged only when a script is approved, at the episode's target length, and given back if rendering fails for good.
- The app asks for consent before any text reaches a provider, names every provider and where it runs, and lets you withdraw in Settings. Listening never needs it.
- Personal feeds that work in the podcast app you already use, with a link you can replace from Settings.
What we learned
- Write the decision down before the code. Every call is an entry with its sources and its alternatives, so a verifier can check the work against it, and so can we a week later.
- Blind listening beats a spec sheet. Price and vendor cannot lean on the ear when the ear does not know who is speaking.
- Ship the free version first. A store version with nothing to buy went through review while the paperwork caught up.
What's next for poddub
- Android, from the same Expo codebase, on Google Play.
- A direct way in for agents: an MCP server whose tools mirror the routes we already have, with approval staying with a person.
- Extra minutes bought beside a plan, and rating the voices of your language in the app.
Built With
- ai-sdk
- better-auth
- bun
- claude
- claude-code
- drizzle-orm
- expo-router
- expo.io
- gemini
- maestro
- mediabunny
- neon
- next.js
- openrouter
- postgresql
- react
- react-native
- revenuecat
- tailwind-css
- typescript
- uniwind
- vercel
- vercel-ai-gateway
- vercel-blob
- vercel-workflow

Log in or sign up for Devpost to join the conversation.