End-to-end workflow
web search + artifact capture"] C --> C2["persona-pack.json"] R3 --> D["Writer room planner_agents
sequential reply-linked turns"] C2 --> D D --> S1["script.json
lineId speaker respondsToLineId timing"] D --> S2["script.txt"] S1 --> T["TTS ElevenLabs
per-line render"] T --> ST["stems/*.mp3"] ST --> M["Mix with overlap rules"] M --> OUT["episode-mix.mp3"] subgraph DEV["Local mode EPISODES_STORE fs"] OUT --> L1["output/episodes/{episodeId}/"] L1 --> LE["/local-episodes/{episodeId}/{file}"] LE --> API1["/api/episodes from FS"] end subgraph PROD["Production mode EPISODES_STORE postgres"] OUT --> P1["Upload to S3
audio + artifacts"] P1 --> P2["Index in Neon
podcast_episodes table"] P2 --> API2["/api/episodes from Postgres"] end API1 --> UI["Website UI /podcast/"] API2 --> UI