Notes
Disclosure: author used Claude Fable to draft this article from a voice profile, ran automated checks, then edited manually.
Claims about model tells: author's own analysis of 300,000 words across AI models found ChatGPT, Claude, and Gemini each overuse different words depending on writing type. Claims AI's favorite words are appearing in online writing both via unedited AI drafts and because authors' own styles have been influenced by AI. Author (self-described) got annoyed by writing that "echoes Claude."
The "four horsemen" of AI writing problems:
- Sounds like AI (stock words/constructions)
- Doesn't sound like you (reads like no one in particular even after cleanup)
- Doesn't make your actual argument (model approximates your point)
- Makes things up (facts, quotes, links must be checked)
This article covers only #1 and #2; the rest deferred to a follow-up. Cutting tics alone leaves copy "hollow" — must also add your voice back. Claimed payoff: "75-85% of the way to something publishable," but a final human editing pass is always required.
Step 1: Find model-specific tics
Have a coding agent (Claude Code, Codex) generate ~10 500-word drafts on your usual topics with no style instructions, then run a script reporting: every word used >2x (excluding prepositions, articles, pronouns, connective tissue); every 2–4 word phrase >2x; counts of em dashes, semicolons, and question-mark sentences. Rank by frequency, show one example sentence per item. The author recommends running your own analysis rather than using generic "AI tells" lists, since tics vary by model and niche.
Step 2: Build a voice guide from your own writing
Run the same fingerprint method on your last 10–20 published pieces. Output: a draft voice profile of 8–12 concrete markers, each a specific checkable habit with two example sentences from your work ("If you can only support eight markers with evidence, give me eight; don't pad the list"). Edit the profile yourself — cut coincidences, keep recognized habits. Then convert the profile into a voice guide that adds per-marker frequency limits from your actual rates ("about once per section" / "in roughly a third of paragraphs"), with this rule at top:
"apply these markers at their natural rate and never all at once. A draft that uses every marker in every paragraph fails, the same as a draft that uses none of them."
Step 3: Package into a reusable Skill
In Claude, a folder with a SKILL.md; in other tools, saved system prompt/custom instructions. Two named modes:
- Write mode: voice guide applied, tics list as hard bans. Key instruction: "don't write the tic and then patch it" — a patched sentence "usually keeps the AI rhythm."
- Check mode: report every tics hit with its surrounding sentence and flag missing/over-used voice markers, without rewriting (a model that fixes while checking introduces new problems). If no mode is named, the Skill must ask which one.
Step 4: Iterate until a draft passes
Draft (write mode) → check → regenerate on failure, cap at five attempts. Show draft + final check report + attempt count; if nothing passes in five, show closest draft and failing checks. Recommendation: use the most capable model, not the cheapest — author drafts with Fable (Anthropic's most capable model; "expensive or it will be when it's no longer part of my plan") because it reaches a clean draft in the fewest tries. Cites Anthropic docs: "start with the most capable model" and trade down only if a cheaper one suffices.
Token-burn warning (five loop-guards)
- Cap attempts (five max; "a draft that can't pass in five tries won't pass in fifteen").
- Stop on repeat failure — same check failing twice = broken check, usually a conflict between lists.
- Keep judgment checks out of the loop — "only mechanical checks converge"; save "does this sound like me?" for a human read.
- Revise, don't regenerate, after the second failure — fix only failing sentences.
- Put the hard stop outside the model — drive the loop from a script, or cap with Claude Code's
--max-turns flag.
Context and caveats
Author writes from an ESL-friendly, neurodiverse-friendly stance: ESL writers use AI to render native-language writing into global English; neurodiverse writers use AI to organize thoughts. Author admits using AI to keep the Substack going when schedule was unworkable. Limits acknowledged: does nothing about hallucinations; the process still demands a manual editing pass; results vary by style and niche (author's tech space is "generally pretty forgiving" of AI content). Plans a follow-up comparing different human writers' stylistic fingerprints.
Full text · 11,272 chars
How to generate AI drafts that sound more human (a 4-step process)
My thoughts (and some new advice) one year after I wrote a guide to editing AI-generated copy
Disclosure: I used Claude Fable to write the first draft of this article based on a voice profile, ran a series of automated checks, and then edited the resulting draft manually.
TL;DR: Newer AI models make it easier to generate writing that sounds like you. You can now use AI to analyze your writing, create a voice guide based on the results, and build a “voice checking” Skill to score AI writing against your voice standards, so AI-generated drafts arrive in better shape. But none of this eliminates the need to carefully edit your AI draft before you publish. (And it does nothing about hallucinations.)
Last year, I wrote an article about editing AI copy. At the time, a lot of my freelance work involved editing AI-generated drafts for businesses that were struggling to build AI-first content practices. And most of the advice I shared then still applies today.
But I’ve learned a lot over the past year. The models have gotten better, and I’ve seen signs that AI’s favorite words are appearing in online writing both because people are publishing more AI-generated drafts and because authors’ own writing has been influenced by AI.
I’ve also heard from ESL writers who use AI to translate writing in their native language into global English, and from neurodiverse writers who use AI to organize their thoughts.
Overall, I’d say I’ve become a lot less judgmental of AI writing, and more sympathetic to the writers who use it. I’ve even used it myself to keep my Substack going over the past few months, when a mix of work and family stuff made it virtually impossible to maintain my publishing schedule and still write everything by hand.
The problem, of course, is that AI writing done badly is just slop. And I personally get annoyed by writing that echoes Claude, largely because I’m so familiar with how that model tends to write.
The four horsemen of AI-generated writing
The four main issues I see with AI-generated writing are:
- It sounds like AI. Stock words and constructions give it away.
- It doesn’t sound like you. Even after you clean it up, it reads like no one in particular.
- It doesn’t make your actual argument. The model approximates your point instead of making it.
- It makes things up. Facts, quotes, and links all have to be checked.
This article focuses on the first two issues, which are closely related. (I’ll write about the other two next month.)
The standard fix for the first problem is to edit out the AI tics, the stock words and phrases that mark machine writing.
But, while cutting the tics can make your draft cleaner, it can also leave it feeling hollow. To close the gap, you also have to add your own voice back in.
The system below does both, in four steps, and it ends with a setup that can draft and check itself. You can get 75-85% of the way to something publishable, although you’ll have to do a final editing pass yourself.
Step 1: Find the AI writing tics your specific model makes
The tics you need to cut depend on which model you use and what you write about. For example, my recent analysis of 300,000 words written by different AI models found that ChatGPT, Claude, and Gemini each have words they tend to overuse in different types of writing.
So, rather than relying on my study or a list of generic AI tells, it’s better to run your own analysis. To find the model tics that will make the most different in your drafts, have a coding agent like Claude Code or Codex:
- Generate about ten drafts on topics you normally cover, with no style instructions.
- Analyze which words and phrases appear more than twice
- Produce a list of AI tics ordered by the frequency at which they appear. This list should exclude prepositions, articles, and other generic connective tissue.
Give this to your coding agent
Write ten 500-word drafts, one for each of these topics: [list ten topics you normally cover]. No style instructions, and don’t try to sound like anyone in particular. Save each draft as its own text file.
Then write and run a script that analyzes all ten files together and reports three lists: every word that appears more than twice, excluding prepositions, articles, pronouns, and other generic connective tissue; every phrase of two to four words that appears more than twice; and counts of em dashes, semicolons, and sentences ending in question marks.
Rank each list by frequency and show one example sentence per item.
Step 2: Build a voice guide based on your own past writing
Once the AI tics are gone from your draft, you’ll have clean copy that may sound a bit bland or hollow. So, in addition to knowing how your model tends to write for your niche, you also need to understand the unique characteristics of your own writing.
To quantify your own word and style choices, use a coding agent to run Step 1 on your last 10 to 20 published pieces. Gather them into one folder and use this prompt:
Give this to your coding agent
I’ve put 10 to 20 of my published pieces in this folder: [folder path]. Read all of them, then do three things.
First, catalog my recurring, distinctive habits: the words I repeat, how I open and close, whether my sentences run long or short, what my punctuation does, and the kinds of examples I reach for.
Second, write and run a script that counts word frequency across the whole set, excluding prepositions, articles, pronouns, and other generic connective tissue. That’s the fingerprint method from Step 1, pointed at me.
Third, combine the two passes into a draft voice profile of 8 to 12 concrete markers, each one a specific, checkable habit with two example sentences pulled from my work. If you can only support eight markers with evidence, give me eight; don’t pad the list.
Remember to review edit the AI-generated voice profile before you use it. Cut anything that looks like a random coincidence and keep the habits that you recognize.
Then hand the finished profile back to your AI and have it turn the profile into a voice guide with drafting instructions for applying your signature words and constructions at roughly their natural rate.
Use this prompt to build your guide:
Give this to your coding agent
Here is my edited voice profile: [paste the profile].
Turn it into a voice guide I can include in drafting instructions.
For each marker, add a frequency limit based on its actual rate in my published pieces, in the form “about once per section” or “in roughly a third of paragraphs.”
Put this rule at the top of the guide: apply these markers at their natural rate and never all at once. A draft that uses every marker in every paragraph fails, the same as a draft that uses none of them.
Step 3: Package the AI tics list and the voice guide into a reusable Skill
A Skill (some tools call it a saved custom instruction) is a set of directions the model applies to every draft automatically, so you stop re-explaining your rules at the start of each session.
In Claude, that’s a folder with a SKILL.md file inside; in other tools it’s a saved system prompt or a set of custom instructions.
Give the Skill two modes, and name them at the top of the file:
- Write mode: Draft new copy with the voice guide applied and the AI tics list treated as hard bans. The instruction I use is “don’t write the tic and then patch it,” because a patched sentence usually keeps the AI rhythm even after the flagged word is gone.
- Check mode: Take an existing draft, run it against both lists, and report every hit with the surrounding sentence. No rewriting in this mode. You want a report you can act on, because a model that fixes your draft while checking it will also introduce new problems.
The Skill file itself is also one more thing your coding agent can write:
Give this to your coding agent
Here are my AI tics list and my voice guide: [paste both].
Turn them into a Skill file I can save and reuse.
Paste both into the file in full; don’t summarize or shorten them. At the top, define two modes.
In write mode, draft new copy with the voice guide applied and every item on the tics list treated as a hard ban; don’t write a tic and then patch it, rebuild the sentence.
In check mode, run a supplied draft against both: report every tics-list hit with its surrounding sentence, and flag any voice marker that is missing or used past its frequency limit, without rewriting anything. Add one last instruction: if I haven’t named a mode, ask which one I want.
Step 4: Let the model iterate until a draft passes
Once you’ve set up the Skill, you can hand the whole cycle to the model.
It drafts in write mode, checks the result against the Step 1 and 2 lists, and regenerates whenever a check fails, until a draft comes back clean.
In prompt form:
Give this to your coding agent
Using my Skill, draft [topic, length, audience, and the points to cover] in write mode. Then switch to check mode and run the draft against every check. If anything fails, regenerate in write mode and check again, up to five attempts. When a draft passes, show me the draft, the final check report, and how many attempts it took. If nothing passes in five, show me the closest draft with the failing checks listed.
Ideally, the model you iterate with should be the most capable one you can get, not the cheapest.
Lately, I’ve been drafting with Fable, which is Anthropic’s most capable model. It’s expensive (or it will be when it’s no longer part of my plan), but in my experience the best model reaches a clean, publishable draft in the fewest tries.
Anthropic’s own guidance is consistent with this approach. For work where quality is the priority, their docs say to “start with the most capable model” and only trade down later if a cheaper one turns out to be good enough. Writing that has to sound like you is that sort of work.
Of course, your results may be different depending on your preferred style and the type of writing you do.
Warning: Don’t let your model iterate forever (and spend all your tokens)
A loop with no stop condition will regenerate indefinitely, and every attempt costs tokens. Five ways to prevent this includes:
- Cap the attempts. The prompt above stops at five; a draft that can’t pass in five tries won’t pass in fifteen.
- Stop on a repeat failure. The same check failing twice in a row means a broken check, usually a conflict between your lists.
- Keep judgment checks out of the loop. Only mechanical checks converge; save “does this sound like me?” for your human read.
- Revise instead of regenerating. After the second failed attempt, have the model fix only the failing sentences.
- Put the hard stop outside the model. Drive the loop from a short script that counts the rounds itself, or cap the run at the tool level with Claude Code’s --max-turns flag.
What works for you?
This article came out of my own experience writing with AI in a tech space that’s generally pretty forgiving of AI-generated content, so your mileage may vary. I’d love to hear how you approach writing with AI.
And, if you try the ideas outlined in this article, please tell me how it goes. (I’m thinking about a follow-on article looking at different human writers’ stylistic fingerprints.)