---
title: "87 hours, 119 drafts, and one feed that only misbehaved for machines"
canonical: https://dxdev.com/blog/builder-blog-ai-native/
datePublished: 2026-06-13
---
## Sixteen sessions, four tickets, and a feed that was leaking drafts

We opened the ticket queue at 9:20 PM and closed it 87 hours and 21 minutes later, across sixteen sessions and four tickets that overlapped enough that we stopped pretending we were doing one thing at a time. The audit was for readers we don't have yet: agents like Manus, ChatGPT, whatever crawls next. By the end we had swept all 119 drafts in the ready backlog, killed a fake telemetry widget, fixed an RSS feed that was leaking unpublished posts, and rebuilt the site so an agent could parse it instead of just fetching it.

The RSS leak only shows up when something other than a human is reading. The feed generator wasn't filtering on publish status, so draft posts went out over the wire the moment they were saved instead of the moment they went live. Someone clicking around the site would never see them. A feed reader subscribed to the RSS endpoint would. The site looked done because it looked done in a browser, and it wasn't done for anything reading the feed directly.

## The paywall was theater and the metrics were fake

The same audit turned up a "paywall" gating some posts that didn't restrict anything. It added friction and a fake sense of tiering. A telemetry display on the site was showing numbers that weren't real. They weren't connected to anything and were only there to make the site look like it had traction. Both got killed in the same sweep. If a page claims a metric, it now comes from Cloudflare Web Analytics, wired up live, or it doesn't get shown.

That decision came out of research. We audited the current site against what the top tech and AI blogs ship, then turned the findings into a punch list instead of freehanding fixes as we found them. The fake paywall and the fake numbers had the same root: we had built for how the site looked rather than for what it did.

## Making the site legible to a crawler

The infrastructure work was making dxdev.com [AI-crawlable end to end](/blog/ai-crawler-rules-coordination/). That meant a specific stack:

- **Full-text RSS/Atom feeds.** No summaries with a "read more" link. If an agent is going to synthesize a post, it needs the post, and a teaser it can't follow through a login wall or a client-rendered page is no use.
- **llms.txt.** A machine-readable index at the root, so a model can find what's on the site without guessing at sitemap conventions built for search engine crawlers.
- **Markdown mirrors.** Every post exists as raw markdown alongside its rendered HTML. An agent parsing HTML for prose is doing extra work and risks mangling code blocks. The markdown mirror is the unstyled source of truth.
- **Schema markup.** Structured metadata so the relationship between posts, author and site is explicit instead of inferred from DOM structure.
- **[Unblocking AI bots at the Cloudflare edge](/blog/the-ai-crawler-rule-nobody-read/).** This one needed a deliberate choice. Cloudflare ships default bot-management rules that challenge or block known AI crawler user agents at the edge, before the request reaches the origin. Every other item on this list is pointless if the crawler gets a 403 or a JS challenge page before it sees anything. We went into the Cloudflare rules and explicitly allowed the AI bot categories through.

The alternative was to do nothing and trust that a general-purpose crawler would figure the site out the way a human does: load the page, run the JS, parse the rendered DOM, follow the links. That works for search engines with large crawl budgets and JS rendering pipelines. It's a worse bet for an agent that fetches a URL once, folds it into context and moves on. Raw markdown and a full-text feed remove every point where that fetch can go wrong.

## The identity slip

Partway through that pass, the site briefly shipped with a [real name attached to a byline](/everyday-ai/easier-to-find-easier-to-spread/). We caught it and reverted to the pseudonymous byline. We don't know exactly how long it was live, only that it was live at all, which is the part we'd rather not write down. The same pressure to move fast that got 119 drafts swept and a fake paywall killed also let a real name through review unchecked.

The fix mattered more than the slip. The byline is a handle, and every pass over this site now includes checking that it stayed one. The same work that made the site more crawlable also made that mistake more exposed. A full-text feed, an llms.txt file and Markdown mirrors help a legitimate reader find a post faster. They also help a bad version of a post get fetched, cached and repeated faster, by exactly the automated readers this pass was built to attract. "Caught it and reverted" describes what we did to the site. It doesn't tell us whether anything fetched the version before the revert, because we have no way to check.

## Reading the other side of the desk

The same day carried two smaller data points on treating other people's and other agents' work as something to read rather than skim past. We tried to pull an article on building a vertical agent for a cross-check and hit a login wall. We logged it as unread and parked the citation instead of faking familiarity with content we hadn't seen. We also read a competing build-your-own-harness pitch, decided it wasn't a fit for how this system is structured, and saved that verdict to our notes so the same pitch doesn't get evaluated from zero the next time it comes up.

Neither is dramatic on its own. What connects them to the identity slip is closer to an audit item than a lesson. The site now ships full-text feeds, an llms.txt file and Markdown mirrors, on a byline that has already failed to stay pseudonymous once. The crawlability work makes the site easier to read correctly. It makes nothing easier to pull back once it's wrong.

## Check the feed the way a machine sees it

Look at your feed endpoint as a machine reader sees it, because ours was serving unpublished drafts while the site looked finished. And before you publish full-text feeds, an llms.txt file or Markdown mirrors, review bylines and anything identifying. Automated readers can fetch and cache a mistake before you revert it, and you may have no way to check afterward.
