- Business problem
- Publishing a daily show is not one task but a chain of them: topic, script, audio, video, podcast host, video platform, newsletter, short-form clip. Each step depends on the last, each runs on a different service, and missing a day is visible to the audience.
- Architectural challenge
- The publishing steps are not idempotent. Podcast and video platforms mint a new identifier on every upload rather than updating in place, so a naive retry does not fix a bad episode, it publishes a second one. That rules out the usual answer of making every step safely repeatable. The pipeline instead has to be resumable at the step boundary, and has to put a human decision between production and anything irreversible.
- System created
- A config-driven orchestrator that runs an episode end to end, recording the status and outputs of each step so a rerun resumes rather than restarts. Production happens a day ahead and pauses at an approval gate; a person reviews the audio and the copy in a dashboard, and only after approval do the scheduled publishing steps run. Per-show behaviour lives in configuration, not in forked code.
- Result
- Three shows publish daily on a fixed schedule, with a human approving each episode before anything reaches an audience.
- Technologies
- Python, ElevenLabs, Google Gemini, FFmpeg, HeyGen, Buzzsprout, YouTube Data API, Windows Task Scheduler