Skip to content

// Insights · 2026-05-07T00:00:00.000Z

Zero AI tells — how we ship copy that does not read as machine-generated

Milan · 3 min read · last reviewed 2026-05-07T00:00:00.000Z

const{Fragment:e,jsx:t,jsxs:n}=arguments[0];function _createMdxContent(r){const a={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",hr:"hr",p:"p",pre:"pre",strong:"strong",...r.components};return n(e,{children:[t(a.h1,{children:"Zero AI tells — how we ship copy that does not read as machine-generated"}),"\n",t(a.p,{children:'Open any agency website built in the last 18 months. The phrases stack up: "leverage cutting-edge AI to unlock seamless transformative growth." "We empower operators to dive into the future of automation." "In today\'s fast-paced landscape, robust solutions matter more than ever."'}),"\n",t(a.p,{children:"Every one of those is a tell. Buyers read past them. LLMs cite past them. Search engines downrank them."}),"\n",t(a.p,{children:"We block them at the CI layer."}),"\n",t(a.h2,{children:"The two layers of the tell"}),"\n",t(a.p,{children:"There are two ways copy reads as machine-generated. Catching both takes two passes."}),"\n",t(a.h3,{children:"Lexical layer"}),"\n",t(a.p,{children:'Specific tokens that betray a model\'s training set. Some are obvious: leverage, unlock, empower, robust, seamless, transformative, game-changer, synergy, dive into, "in today\'s fast-paced." Others are subtler: every paragraph opening with "Whether you\'re..." every section labeled "Solutions," "Level 1 / Level 10" framing, the phrase "thought leader."'}),"\n",n(a.p,{children:["Our ",t(a.code,{children:"zero-tells"})," script (",t(a.code,{children:"tests/scripts/zero-tells.mjs"}),") scans every TSX, MDX, and TS file in the codebase and exits non-zero if any banned token appears in shipping copy. The list is in the locked Voice Codex in our brand vault. New patterns get added when we spot them."]}),"\n",t(a.p,{children:"CI fails. PRs do not merge. Pages do not ship."}),"\n",t(a.h3,{children:"Structural layer"}),"\n",t(a.p,{children:"This is the deeper tell. Copy that has no banned tokens can still read as a model's. Four patterns:"}),"\n",n(a.p,{children:[t(a.strong,{children:"1 · Sentence-rhythm cliff."})," Models flatten cadence. We grade against 65% of sentences under 12 words, 25% between 12-22, 10% over 22. Anything over 30% in the long bucket fails."]}),"\n",n(a.p,{children:[t(a.strong,{children:"2 · Em-dash density."})," Models use em-dashes at 2-3x human rate. We cap at one em-dash per paragraph."]}),"\n",n(a.p,{children:[t(a.strong,{children:"3 · Repeating openers."}),' Three or more consecutive sentences starting with the same word — usually "It," "This," "We" — fail the gate.']}),"\n",n(a.p,{children:[t(a.strong,{children:"4 · Comma-fragment density."})," A sentence with three commas is rarely a thinking sentence. It is usually a model padding. We cap that ratio at 25% of paragraphs."]}),"\n",n(a.p,{children:["Our ",t(a.code,{children:"zero-tells-structural.mjs"})," script enforces all four. It runs on every PR."]}),"\n",t(a.h2,{children:"Why this matters past stylistic preference"}),"\n",t(a.p,{children:"Three reasons."}),"\n",n(a.p,{children:[t(a.strong,{children:"1 · Buyer trust."})," Mid-market operators read marketing pages with a heuristic: does this sound like a person who has done the work, or a model that has read the work? The lexical and structural tells tip the answer toward the model. The trust hits the floor before the prospect books a call."]}),"\n",n(a.p,{children:[t(a.strong,{children:"2 · LLM citation behavior."})," ChatGPT, Perplexity, Google AI Overviews cite sources that read with editorial weight. Templated AI-agency copy gets summarized into the long tail. Operator-grade prose gets quoted directly. The citation rate compounds."]}),"\n",n(a.p,{children:[t(a.strong,{children:"3 · Search rank."})," Helpful Content updates have started weighting structural rhythm and named-author signals. Pages with single named authors and a ",t(a.code,{children:"lastReviewed"})," date with non-templated copy outrank pages without. The gap is widening every quarter."]}),"\n",t(a.h2,{children:"What the gate looks like in CI"}),"\n",t(a.pre,{children:t(a.code,{className:"language-yaml",children:"# .github/workflows/quality.yml (excerpt)\n- run: npm run test:zero-tells\n- run: npm run test:zero-tells-structural\n- run: npm run test:non-ai-first\n- run: npm run test:brand-integrity\n- run: npm run test:word-floor\n- run: npm run test:internal-links\n- run: npm run test:schema\n"})}),"\n",t(a.p,{children:'Seven gates. Every PR. No exceptions. No "we\'ll clean it up later." The work is small enough to run in 30 seconds and important enough that we run it twice — pre-commit hook + CI.'}),"\n",t(a.h2,{children:"The cost of the gate"}),"\n",t(a.p,{children:"Writing past the gate takes longer than not. The first draft of any page on this site is rejected by the gate roughly 30-40% of the time. The second pass usually clears."}),"\n",t(a.p,{children:"The cost is real. So is the proof. Read this page back. Does it read as a person who shipped this, or a model that read about it?"}),"\n",t(a.p,{children:"That is the bar. Every page on this site clears it before it ships."}),"\n",t(a.hr,{}),"\n",n(a.p,{children:["If your team is shipping AI-generated marketing copy that buyers are already filtering past, the fix is small enough to ship in a sprint. ",t(a.a,{href:"/diagnostic",children:"Book a 30-min Diagnostic"})," — we send back the audit within 24 hours, whether you sign or not."]})]})}return{default:function(e={}){const{wrapper:n}=e.components||{};return n?t(n,{...e,children:t(_createMdxContent,{...e})}):_createMdxContent(e)}};

30 minutes. We listen. You leave with a written assessment.

Whether you hire us or not. A clear written plan, a real timeline, and the names of the exact systems we would build for you.

Book a Free Diagnostic

Free · 30 minutes · you leave with a written plan whether you hire us or not.