I wrote it as a quality signal. The prospect read it as a rejection.

The “Note on timelines” block on /contact had been there for months. The copy said: not taking on rushed work, minimum two weeks’ notice, if you need something fast, probably not the right person.

I wrote it to signal quality. The implicit message was: I work to a standard, and the pace of work is part of that standard.

In July, I re-read it from the outside. A prospect who has found the contact page and decided to reach out has already done the hard part. They’re not declaring a three-day emergency. They’re making an approach. The copy doesn’t meet that person. It pre-empts a conversation they haven’t started, with a refusal to a request they haven’t made. “Probably not the right person” doesn’t read as a quality signal. It reads as: I probably won’t help you.

The fix was to flip it. Same underlying message about pace and standards, framed as the strength it is rather than the gatekeeping it sounded like.

That was one fix. Four more this year followed the same pattern.

The same failure, five times

Each one followed an identical shape. The author knows something. The copy describes what the author knows. The reader doesn’t have that knowledge, so they read a different thing.

The learning hub. The /learning page h1 changed to “Engineering thinking.” in July, with the sub and the JSON-LD description carrying the same framing: courses that teach how an engineer reasons, covering the decisions and the priorities, not just the syntax. That’s what the catalogue was. But the previous h1 hadn’t said it. A reader landing on the page saw a list of topics; the author knew those topics added up to a coherent stance. The change made the stance explicit.

The sub-brand name. The music content across /creative and the singles pages had been running the label “Creative AI Series.” The actual process: lyrics and production decisions originate here, melodies built in Logic, vocals and instrument textures rendered by Suno. AI is a tool in the chain, not the author. “Creative AI Series” doesn’t say that. A reader doesn’t know whether this is human-authored work that uses AI tools or a series of AI-generated output. Renaming it “Creative AI Assisted Series” closes the gap. One word added; the reader now knows what the author knew.

The NAPA SEASON blurb. The album body copy had contained: “Suno for the production and vocals.” That’s wrong, and it assigns Suno the authorship of the record. The actual situation is that lyrics and production decisions originate here; Suno renders the vocals and instruments. The author knew the distinction. The prose hadn’t drawn it. A reader seeing “Suno for the production” reasonably concludes Suno made the music. The fix was to correct the credit line to reflect actual authorship.

The Tasogare placeholder. The /creative page had held a “first track lands soon” placeholder in the Music Production section. When Tasogare shipped to YouTube, the fix replaced the placeholder with a featured card: real title, real description, real embed. The placeholder read as hedging. The author knew the track was there. The copy didn’t say it.

The shape of the failure

None of these were dishonest. That’s worth stating. The timelines note accurately described how I work. The learning catalogue was about engineering reasoning. “Creative AI Series” reflected something true, and the NAPA SEASON credit was an approximation rather than an invention.

The failure was a different kind. Each piece of copy was written from inside the author’s full understanding of the context. From that vantage, every sentence was accurate. The reader doesn’t arrive with that context. They read the surface. And on the surface, “probably not the right person” is a refusal, “Creative AI Series” is ambiguous about authorship, and “Suno for the production” gives Suno a credit it doesn’t own.

The correction in each case wasn’t a rewrite from scratch. It was reading the copy again from the first-pass position: a person with no prior context, scanning, drawing an inference from whatever is on the surface.

That reading is mechanical once you know to trigger it. Open the published page in a clean tab, no editor open, navigate from the top. The session-state difference is small. The framing difference is not. When the tab isn’t connected to the intent behind the copy, the copy has to carry its own meaning, and five times this year, it wasn’t.

What the audit misses

The default review mode asks: does this say what I mean? The answer is almost always yes, because you wrote it. The question that catches these failures is different: what does a person who found this from a search result, with no prior knowledge of the site, read from this sentence?

The questions sound similar. They produce different answers. The first is internal verification: checking that the output matches the intent. The second is external simulation: checking that the output produces the right inference in a reader who doesn’t share the intent.

The second question is harder to sustain as a habit. You know too much. The knowledge is sticky. You read the timelines note and you know it’s a quality signal, so you read it as a quality signal. The only reliable trigger I’ve found is time — returning to the page after enough distance that the author’s intent has faded and the reader’s first-pass reading is what’s left.

Where this leaves things

Five fixes, eight months, one root cause. The build log at docs/devlog.md in the captain_random repo has the entry for each one: what changed, why the original was wrong, what the fix corrected. The record is there because the pattern is worth tracking.

If a sixth fix surfaces and traces to the same failure, I want to know that quickly rather than in month ten.

All writing →