10,000 listeners in 30 days. AI hosts, real guests.Read the field note
Changelog

Longer Sessions, Tighter Audio, and a Security Deep Dive

Co-host sessions can now run up to 45 minutes. Custom intro music no longer cuts over the host. And a full security audit locked down cross-tenant access, SSRF vectors, and admin routes.

Cover Image for Longer Sessions, Tighter Audio, and a Security Deep Dive

This week was about polish and protection. Co-host sessions went from an 8-minute ceiling to 45 minutes. The episode generation pipeline got quieter, more reliable audio. And a deep security audit closed several cross-tenant holes before they could cause trouble.

New features

Co-host sessions up to 45 minutes

The co-host used to cap at 8 minutes. Recording worked fine past that point, but the assembly step would reject the audio with a 422 error. That's fixed. You can now pick 8, 12, 20, 30, or 45 minute sessions, and the assembly pipeline handles all of them. Behind the scenes, longer sessions are stitched in per-segment chunks to stay within memory limits, then concatenated into the final episode.

Co-host recording setup showing the duration selector with options from 8 to 45 minutes

Intro and outro directions in prompt-mode episodes

When you generate an episode from a custom prompt, you can now include directions for how the intro or outro should sound. Write something like "open with a cold-open teaser about the surprise statistic" or "close with a teaser for next week" in your episode brief, and the AI will follow those instructions. Directions override the default intro/outro style but never break the word limit, host-label format, or anti-AI-speech rules. If you don't include any guidance, the defaults kick in as before.

Episode generation form in prompt mode with a topic that includes intro and outro directions

Redesigned co-host curation review

After a co-host session, the assembly review screen got a visual overhaul. Each segment now shows a numbered take card with talking points, an include/exclude toggle, and the AI's reasoning for why it kept or set aside each segment. A tone-graded episode shape bar at the top shows the runtime breakdown. The fixed proceed bar at the bottom updates live as you toggle segments in or out.

Improvements

Intro music no longer cuts over the host

Custom intro music used to start playing right as the host began speaking, so the first words got buried under the music. A 400ms silent lead-in now separates the intro asset from the first spoken segment. The gap is tunable via environment variable if you need more or less breathing room, and it only applies when dialogue follows the intro.

Podcast settings showing the production section with intro, outro, and transition audio controls

Jingle loudness balanced against voice

Custom intro, outro, and transition audio files are now normalized to match the loudness of the TTS voice tracks before stitching. Previously, the final program-level normalization couldn't fix the relative mismatch, so jingles often sounded too loud or too quiet compared to the host. Each asset is cached per feed, and normalization fails open so a missing audio file never blocks generation.

Faster transcription

Episode transcription now runs chunk-by-chunk in parallel instead of sequentially. The whole transcript pipeline also moved to its own background job, so episode generation no longer blocks at 92-96% waiting for speech-to-text to finish. You'll see the progress bar complete faster, and the transcript arrives shortly after.

Co-host pacing and transition fixes

The AI co-host got better at knowing when to move on. A veto system prevents premature topic transitions if the segment is less than 60% covered. Transitions fire at the agent's natural turn boundary instead of interrupting mid-sentence. The co-host also introduces itself properly now, greeting the creator by name and previewing the episode arc before jumping into the first topic.

Episode structure as a single source of truth

The section order for episodes (intro, Q&A call-to-action, segments, Q&A, outro) used to be duplicated across five separate call sites. It's now defined once in a tested function and consumed everywhere. This eliminates a category of bugs where the order could drift between the generation pipeline and the assembly step.

Bug fixes

Scheduled episode generation no longer dies at 95% when transcription takes too long. The transcript timeout was raised, and if the single-shot transcription still fails, it falls back to the chunked path instead of killing the entire run. Episodes that took 30 minutes to generate no longer get thrown away because of a timeout in the last 5%.

Episodes now track transcript status directly. If transcription fails after exhausting retries, the failure is recorded in the database instead of disappearing into Sentry. Auto-publishing to Buzzsprout and Mato now waits long enough for the transcript to finish, and double-checks the database after the timeout window closes.

A stale normalized jingle cache could cause a replaced jingle to keep playing the old audio. Changing your intro or outro music now clears the cached version so the new file gets re-normalized.

The generation progress dialog no longer gets stuck when a job fails with a null error message. Canceling a job that finishes right before the cancel arrives now closes cleanly instead of showing an error toast.

A security audit identified and fixed several issues: test and debug API routes are now blocked in production, admin cover-template endpoints require super-admin access, RSS and URL scraping are protected against server-side request forgery, and HTML sanitization strips control characters before checking for dangerous URL schemes.

© 2026 Mato. All rights reserved. English · Multiple languages available