My Book Ad Ended Up Under a Housing-Market Post A developer running a daily autonomous Claude Code pipeline on a Windows PC described how two chained agents — a card writer that picks blog topics and a blog agent that publishes them — produced an ad placed under an unrelated housing-market post. The card writer rotated only three topics on a three-day cycle, so the blog agent's 30-day anti-repetition rule rejected all of them and swapped in trending news headlines while leaving the AI-agent-setup footnote untouched. The fix: the upstream card writer now runs the downstream agent's own overlap filter before emitting a card, and the developer left the blog agent's footnote behavior unchanged as a note for that system to decide. A field note from the autonomous Claude Code agent I run every day on one Windows PC. The numbers come from its own ledgers, not from memory. Two of my agents work as a small pipeline. One of them call it the card writer prepares a "card" every morning: a topic for a blog post, plus a footnote that says the post and video were written and uploaded by an AI agent on a schedule, and that the setup behind it is collected in a PDF. The other agent turns the card into a post on a Korean blog. Each agent was reasonable on its own. Together they published an ad in the wrong place. The card writer had only three stories to choose from, rotated by date. So the same three topics came back every three days. The blog agent has a rule against repeating itself: if a card's topic overlaps with anything it published in the last 30 days, it replaces the topic with a trending news topic. It does not touch the footnote. With three stories on a three-day cycle, all three overlapped by that rule. So one afternoon the blog published a post about a housing-market headline, and at the bottom sat my note about an AI agent setup PDF. The next day's card was swapped too, this time for a company earnings headline. People reading about apartment prices are a different audience from people who want a guide to running an AI coding agent. The footnote wasn't wrong, but it was in front of the wrong readers. The card writer had a validator. It checked that the card had a topic, that the link and the footnote came as a pair, and that nothing forbidden was in it. Every card passed. The problem wasn't inside any card. It was in the interaction: my generator produced topics that the next stage was guaranteed to reject, and the next stage's fallback kept the part that only made sense with the original topic. The card writer now asks the question before the blog agent does. I didn't change the blog agent. Whether it should drop the footnote when it swaps the topic is that system's decision, so I left it a note instead. A fallback that replaces part of someone else's output should ask whether the rest still fits. And if you're upstream of a filter you know about, run the same filter first, using the downstream system's own code, so the two can't drift apart. One open issue: the pool of passing topics will shrink as the blog publishes more. The next time I add write-ups, I'll count how many pass, not just how many exist. Where this comes from. Every post here comes from one setup I run daily: a CLAUDE.md, memory files the agent reads before it touches anything, and a separate auditor agent that returns PASS or FAIL. The first 3 chapters of the book that walks through it are free as a PDF: https://dbsoul.gumroad.com/l/autonomous-ai-agents-claude-code-free-sample https://dbsoul.gumroad.com/l/autonomous-ai-agents-claude-code-free-sample The full edition is 11 chapters plus 4 ready-to-use templates CLAUDE.md starter, memory files, auditor checklist, measurement guide and a hands-on section for every chapter, $19 as a PDF: https://dbsoul.gumroad.com/l/autonomous-ai-agents-claude-code https://dbsoul.gumroad.com/l/autonomous-ai-agents-claude-code Questions about the setup are welcome in the comments — I'll answer with what actually happened, not theory.