The pun is lifted from a 1978 REO Speedwagon album title, which dates me with some precision. But the correction is the honest thesis of this post: I spent months trying to tune a generative product, and failed in a way that taught me more than succeeding would have.

Years ago, a line from Neal Stephenson's Fall; or, Dodge in Hell lodged in my head and never left: "The personal daemon was a semi-autonomous piece of software that lived in your system and acted as your agent, going out into the Cloud to do things for you." That concept is the reason my Research Curation Daemon exists — a weekly pipeline that scouts news across AI, cloud, grid technology, and industrial security, and turns it into a podcast I actually want to listen to.

The early plumbing was fairly mechanical: Perplexity queries for breadth, Claude for scouting and synthesis, ChatGPT to compose the output briefing — and then the briefing went to NotebookLM, which narrated it as a two-host podcast. This is the story of what that last hop taught me, the hard way, over months. There's also an audio version: episode 060 is this same saga as a special edition, produced by the very machinery it describes — scripted verbatim, fact-gated, and voiced in part by a clone of me. The meta-hook writes itself.

The seduction

The first time I encountered NotebookLM was coverage of a bone-dry public regulatory filing, and my honest reaction to the content was: "So the PR department hired these two voice actors?" Discovering that the voices were synthetic — the banter, the interruptions, the little laughs — was the hook. Hours of listening later, I'd caught only rare, minor glitches. Whatever else happened next, that became the delivery bar.

And for a while it was great. Take a stack of AI, cloud, gridtech, and security stories and weave them into something genuinely worth my commute. The daemon worked.

The tell

Then the rut. As weeks became months, the stories changed but the conclusions didn't. Every "connecting the dots" segment, every "why this matters" wrap-up, converged on the same thesis: explosive AI growth on a collision course with data-center capacity and the aging grid infrastructure to power it all. Cute the first dozen times. After that, it's FUD on a loop.

I did the responsible things first. Freshness filters. Evolving the source queries over time. Repeat detection and suppression — because there is a hard ceiling on how many times one person should hear about the same utility's $73-billion grid investment. And I A/B-tested my own prompts at every stage, specifically to make sure I didn't have a thumb on the scale somewhere, forcing this narrative myself. Week after week I revisited the prompts and detuned harder. The thesis kept shipping.

The autopsy

Eventually I stopped tweaking and did a start-to-finish audit of the pipeline. The finding: the leak wasn't in my prompts at all. The briefing text going into NotebookLM was clean. The render layer was re-authoring the thesis on its way out.

Two receipts. First, the smoking gun: my customization prompt banned the collision framing by name — the exact sentence. The very next render opened with "We're looking at a massive collision between the digital world and the physical one… and that's our mission today." Banned by name; paraphrased back to life.

Second, the one that actually made me angry: an AWS incident scoped to a single data center in one availability zone got narrated as a region-wide failure teaching listeners that "multi-AZ design is insufficient" — which inverts the actual lesson of the event. In fairness, the forensics showed part of that scope drift began in-house, at my own scout and synthesis stages, before NotebookLM dramatized it further. And the "28-Hour Meltdown" retrospective partly vindicates the number in the story — just not the scope claim.

One more correction, caught embarrassingly late: for weeks the pipeline cited that piece as "AWS's own" retrospective, because it lives at an aws.com URL. It's actually an independent builder's analysis hosted on AWS's community Builder platform — worth reading, but not AWS-sourced. Even my fact-checking layer had an attribution bug. Honesty cuts every direction here, including at me.

But the pattern was now legible. You can tune a piano because the strings obey the wrench. You can't tune a generative product, because its dramaturgy isn't a setting — it's a trained prior. NotebookLM's customization box is soft steering laid over that prior, and when the two disagree, the prior wins. A prohibition doesn't remove the behavior; it just makes the model find a paraphrase you didn't ban yet.

Verify, don't trust

If steering can't be trusted, verification has to do the work. So I built a fidelity gate: transcribe the rendered audio back to text with WhisperX, then have an LLM judge claim-check the transcript against the source stories — scope, causation, named specifics — not a lexical diff, an argument diff. Add a growing "litmus library" of known distortions, and a BLOCK/WARN/PASS verdict that gates publication.

Retro-run against the back catalog, the gate BLOCKs the old episodes — both for the invented collision thesis and for the AWS scope inflation. The rut I'd been hearing for months was now a failing test.

Take the pen

The gate solved trust, but it left a choice: keep rejecting renders until one passes, or stop letting the product write at all. I took the pen. An LLM now authors the full two-host script verbatim from the briefing, and the gate checks the script — before a single render dollar is spent. Total editorial control.

And with it, a loss I want to be honest about: the engagement engine is gone. There's a real steelman here — maybe the dramaturgy was the product's magic, the thing that made a regulatory filing listenable. The trade, as I see it now: the human-sounding, maybe-a-little-click-bait-y NotebookLM delivery, or a "just the facts, ma'am" version I can actually stand behind. For now, fidelity to the source wins over listen-ability. This podcast is just for me — I don't have listeners I have to worry about alienating. But I do hope to claw the engaging part back, which brings us to the new problem.

The render frontier

Verbatim scripts need voices, so the bake-off began: ElevenLabs, with a Pro Voice Clone of me plus a stock co-host — Billy Headroom and Elise Decibelle, if you please.

A side note on cloning your own voice. You know how hearing your own voice recorded never sounds like you, because of the acoustics inside your head? Imagine that experience — but with words you never spoke. It's… an odd experience.

The engine details matter. ElevenLabs v3's conversational API has the interplay — real back-and-forth, even [laughs] tags — but it mangles the clone, and produced the wildest bug of the whole project: it flipped Elise's accent mid-episode depending on which voice she was batched with. The v2 API, driven one turn at a time, keeps the clone faithful and enables per-voice loudness alignment (the clone measured 6.2 dB quieter than Elise; now corrected in-render), at a real cost in prosody. A full episode runs about 8–11k credits.

Then the twist ending. Google's Gemini multi-speaker TTS — NotebookLM's own lineage, via gemini-3.1-flash-tts-preview — read the same verbatim script with delivery I'd rate as arguably better than NotebookLM. Mind-blowing, and not yet settled: it has its own quirks, like clipped word endings, still under investigation. But for the first time, the north star — NotebookLM-grade delivery plus full editorial control — was touched. Once. By the engine I least expected.

Don't take my word for any of this. Every variant below opens with the identical verbatim cold-open, so these ~42-second clips are a true same-words A/B across engines and voices, in story order.

01 — The benchmark. NotebookLM improvising from the briefing: the delivery magic, with content that can't be gated.
02 — The clone, solo. ElevenLabs v2, just my Pro Voice Clone reading verbatim. Sounds most like me; least engaging.
03 — v3 dialogue, clone + Elise. Real interplay at last — but the clone reads its lines mechanically.
04 — v3, two stock voices. The pairing that flipped Elise's accent mid-episode.
05 — The v2 per-turn breakthrough. Clone fidelity and dialogue in the same render.
06 — First live weekly on the verbatim path. Claude Opus-authored script, episode 058 era.
07 — The current weekly stack. Claude Fable-authored script with per-voice loudness alignment.
08 — The Gemini moment. Verbatim script, near-NotebookLM delivery, voices Puck and Kore.
09 — Gemini, directed. Voice casting plus a 'measured, no melodrama' direction in prose.
10 — Episode 060 itself. The current de-facto mix, telling this very story.

Mid-journey, honestly

This post ends where the project actually is, not where a tidy arc would put it. The current mix is good. The north star has been touched exactly once, by an unexpected engine, and there's open work in every direction: more voice-clone training data (with natural breathing this time — audio processing belongs at the output layer, not baked into the training audio), the Gemini quirks to chase down, and a question that's less technical than it sounds — whose judgment the host voice carries, not just whose larynx.

The one-line version, if you want it: verify instead of trust, and when steering fails, take the pen. You can tune a piano. The product, you have to replace — one section at a time, while it's still playing.

For the full audio telling — fact-gated, verbatim, half-voiced by my clone — episode 060 is here.