Inspiration

I listen to a ton of podcasts. Business, tech, AI, marketing. Probably 10+ hours a week. And every single time, I'd hear something fire, a framework, a quote, a strategy, and think "I'll remember that." I never did. Nobody does. Then I started using AI assistants daily (Claude, ChatGPT, Gemini) and realized the problem wasn't my memory. The problem was that podcast content is trapped in audio. You can't search audio. You can't ask your AI "what did that guest say about pricing strategy from the latest episode?" The content just disappears into the void. I looked for a tool that would automatically transcribe my podcasts and make them searchable with AI. Nothing existed. So I built it.

What it does

Podify turns every podcast you listen to into searchable knowledge for your AI, automatically. Add any podcast. Spotify link, Apple link, RSS feed, YouTube channel, or just search by name. Podify handles the rest. It downloads the audio, runs it through ElevenLabs Scribe (with Deepgram as an automatic fallback), and uploads clean transcripts to a dedicated folder in your Google Drive. Every day it checks for new episodes. No clicking. No manual uploads. No babysitting. You subscribe once and your transcript library grows on autopilot. Then you open Claude, ChatGPT, or Gemini, connect your Drive, and suddenly you can search across hundreds of hours of podcast content in seconds. "What did Alex Hormozi say about guarantees?" "Summarize the last 3 episodes of My First Million." Done.

How I built it

Full-stack Next.js 15 with the App Router, React 19, and TypeScript end to end. PostgreSQL on Neon with Drizzle ORM for type-safe database access. The entire background processing pipeline (feed polling, audio downloading, transcription, Drive uploads) runs on Inngest for event-driven job orchestration with automatic retries. Transcription uses ElevenLabs Scribe as the primary engine with Deepgram as an automatic fallback. If one goes down, the other picks up. No dropped episodes. Google OAuth 2.0 handles Drive authorization, and all stored tokens are encrypted with AES-256-GCM. Authentication is JWT-based with httpOnly cookies. The frontend uses Tailwind CSS 4, Radix UI primitives, and SWR for client-side data fetching. Deployed on Railway. Monitoring through Sentry. Tests with Vitest and component docs in Storybook. I built the whole thing solo.

Challenges we ran into

Transcription reliability was the biggest headache. API rate limits, timeout errors on long episodes, audio formats that one service handles fine but the other chokes on. Building the dual-engine fallback system with Inngest retry logic took real iteration, but now if ElevenLabs hiccups, Deepgram catches it automatically and the user never knows anything happened. Google OAuth token management was another beast. Tokens expire, refresh tokens can get revoked, and you're storing credentials that access someone's personal Drive. Getting the encryption, refresh flow, and error handling bulletproof took serious attention. Daily auto-polling sounds simple until you're managing dozens of RSS feeds with different update schedules, deduplicating episodes, and making sure you're not re-transcribing content you already have. Lots of edge cases.

Accomplishments that we're proud of

Built a fully functional SaaS application solo from zero to deployed MVP. Not a prototype. Not a demo. A real application running on Railway that actually transcribes podcasts and puts them in your Google Drive. The dual transcription engine with automatic failover is probably the thing I'm most proud of technically. If ElevenLabs goes down or rate limits you, Deepgram picks up the job automatically. The user never sees an error. That kind of resilience usually takes a team to build. The daily auto-polling system just works. Add a podcast once and never think about it again. New episodes get detected, downloaded, transcribed, and uploaded to Drive without anyone touching anything. Set it and forget it, for real. The entire Inngest event-driven pipeline handles retries, error recovery, and job orchestration cleanly. No cron job hacks. No failed jobs disappearing into the void. Every job is tracked, retried on failure, and recoverable. Also proud of the security layer. OAuth tokens encrypted at rest with AES-256-GCM, JWT auth with httpOnly cookies, Zod validation on every API input. This isn't a hackathon project that cuts corners on security. It's built like production software because it is production software. And honestly, the fact that it solves a problem I actually have every single day. I use this. That's the best accomplishment.

What I learned

Event-driven architecture changes everything. Before Inngest, I was trying to handle transcription synchronously and it was a mess. Timeouts, failed jobs with no recovery, zero visibility. Moving to an event-driven model with automatic retries and dead-letter handling made the entire pipeline reliable overnight. I also learned that building for AI consumption is a different design problem than building for human consumption. The transcripts need to be clean, consistently formatted, and organized in a way that AI assistants can actually navigate. That's not the same as just dumping raw text into a file.

What's next for Podify

Getting the word out and Stripe subscription billing is the immediate next step. The app works, now it needs to be seen. After that: AI-powered episode summaries so you get key takeaways without reading the full transcript, speaker diarization to identify who said what, and semantic search across your entire transcript library. Longer term, team plans, API access, and integrations with Notion, Obsidian, and Slack. The vision is simple: you should be able to ask your AI anything about any podcast you've ever listened to, and get an answer in seconds. Podify makes that real.

Slide Deck URL Below

Built With

Share this project:

Updates