Rishikesh Ranjan — rishikeshranjan.com

// 9-phase lifecycle

Humanize

/ttm-humanize

Mandatory final-step humanizer. Detects and rewrites AI writing patterns (inflated symbolism, em-dash overuse, rule-of-three, AI vocab, passive voice, filler phrases) and matches the user's voice from BRAND.md samples. Runs on every audience-facing asset before write. Also runnable ad-hoc on any file or pasted text.

mandatoryauto-invocable
allowed-tools:ReadWriteEditGrepGlobAskUserQuestion

Overview

ttm-humanize is the mandatory final-step humanizer. It detects and rewrites the AI-writing patterns that make copy read like a model wrote it (inflated symbolism, em-dash overuse, the rule of three, AI vocabulary, passive voice, filler phrases) and calibrates the rewrite to the user's voice declared in .taketomarket/BRAND.md, while preserving the positioning invariant in .taketomarket/POSITIONING.md. Every audience-facing asset passes through it before write, so nothing ships with the AI fingerprint intact.

There are two invocation modes. In Mode A (auto), other producing skills call ttm-humanize with the draft path as input; the skill rewrites in place and returns control. In Mode B (manual), you run ttm-humanize <file> or paste text directly, and the skill either writes back or prints the result.

Think of it as a code formatter that targets LLM-prose anti-patterns the way Prettier targets whitespace. It runs after verify and before review, only on assets flagged for tone tuning. The skill reads its pattern catalog from ${CLAUDE_PLUGIN_ROOT}/references/humanizer-patterns.md, the voice profile from .taketomarket/BRAND.md, and the must-not-say terms from .taketomarket/POSITIONING.md.

How it works

Step 0: First-run inline education

Read .taketomarket/CONFIG.md. Parse first_run_seen (object) and inline_education (boolean, default true).

If inline_education is false, skip this step. Else if first_run_seen.ttm-humanize is not true, print the explainer below verbatim, then mark this skill as seen:

node "${CLAUDE_PLUGIN_ROOT}/bin/ttm-tools.cjs" first-run mark ttm-humanize

Use this exact check (bash) to decide whether to print: node "${CLAUDE_PLUGIN_ROOT}/bin/ttm-tools.cjs" first-run check ttm-humanize --raw -- the JSON seen field is true once the explainer has run before.

This skill is backed by the helper script ${CLAUDE_PLUGIN_ROOT}/bin/ttm-tools.cjs, which handles the first-run flag and ISO timestamp generation referenced throughout the workflow.

Explainer for ttm-humanize

ttm-humanize rewrites AI-flavored prose into something that sounds like a person wrote it: varied sentence rhythm, fewer hedges, specific verbs, no "furthermore" or "in today's fast-paced." It runs after verify, before review, and only on assets flagged for tone tuning.

Why it matters: detection models and human readers both pattern-match on the same tells, and AI-fingerprinted copy converts worse and damages trust. Think of humanize as a code formatter that targets the LLM-prose anti-patterns the way Prettier targets whitespace.

(Canonical source: references/inline-education-blurbs.md. Embedded verbatim because workflows do not @-resolve files at runtime.)

Purpose

Humanization workflow for ttm-humanize. Detects and rewrites the AI-writing patterns cataloged in references/humanizer-patterns.md against an audience-facing asset, calibrated to the brand voice declared in .taketomarket/BRAND.md and constrained by the positioning invariant in .taketomarket/POSITIONING.md. Every audience-facing asset in takeToMarket passes through this workflow before write -- no asset ships with the AI fingerprint intact.

Required reading: @${CLAUDE_PLUGIN_ROOT}/references/humanizer-patterns.md and @${CLAUDE_PLUGIN_ROOT}/references/context-loading.md.

Constraints

POSITIONING.md is READ-ONLY

Humanization rewrites style and rhythm. It must not change positioning anchors, proof points, ICP framing, or any must-not-say term enforcement. If a humanization rewrite would contradict POSITIONING.md, abort the rewrite for that span and flag it instead.

BRAND.md voice is authoritative

The asset's voice MUST match .taketomarket/BRAND.md. If the source asset already deviates from BRAND.md, humanization is not the place to fix it -- flag the deviation and recommend ttm-positioning-check or a manual brand review.

Meaning is preserved

Humanization rewrites the surface. Claims, numbers, proper nouns, citations, and CTAs are preserved verbatim unless they are themselves AI-pattern instances (vague attribution, knowledge-cutoff disclaimer, sycophantic opener).

Process

Text-Mode Detection

Text mode (--text flag): Set TEXT_MODE=true if --text is present in $ARGUMENTS or if the runtime is not Claude Code. When TEXT_MODE is active, replace every AskUserQuestion call with a plain-text numbered list.

if echo "$ARGUMENTS" | grep -q -- '--text'; then TEXT_MODE=true; fi

If the AskUserQuestion tool is not available in the current runtime, set TEXT_MODE=true.

Step 1: Resolve Target Asset

takeToMarket > LOADING ASSET

Parse $ARGUMENTS. Strip the --text flag if present. The remaining token is the target:

  • A file path (absolute or repo-relative ending in .md): treat as TARGET_PATH. Read it.
  • A campaign slug followed by an asset id (e.g., pricing-q2 02): resolve to .taketomarket/CAMPAIGNS/${SLUG}/ASSETS/${NN}-*.md.
  • A bare campaign slug: read .taketomarket/CAMPAIGNS/${SLUG}/MANIFEST.json and humanize every asset listed. Process the hero first, then derivatives.
  • No argument and stdin/clipboard text present: treat as inline mode -- humanize the pasted text and print the result; do not write to disk.

Store the source text as DRAFT. Store the resolution mode as MODE (file | campaign | inline).

Step 2: Load Voice Context

takeToMarket > CALIBRATING VOICE

Read full content (Tier 2 per context-loading.md):

  • .taketomarket/BRAND.md -- voice, tone, vocabulary, must-not-say terms
  • .taketomarket/POSITIONING.md -- anchors, proof points, must-not-say terms (positioning)

If the asset belongs to a campaign (MODE is file under CAMPAIGNS/${SLUG}/ASSETS/ or MODE is campaign), also read:

  • .taketomarket/CAMPAIGNS/${SLUG}/BRIEF.md -- campaign-specific hook, proof points, channel constraints

From BRAND.md, extract a voice profile:

  • Sentence length pattern (short/punchy, long/flowing, mixed)
  • Word-choice register (casual, technical, formal, mixed)
  • Paragraph openers (jump straight in vs. set context first)
  • Punctuation habits (dashes, parentheticals, semicolons, fragments)
  • Recurring phrases or verbal tics declared in BRAND.md
  • Transition style (explicit connectors vs. abrupt cuts)
  • First-person stance (uses "I"/"we" vs. third-person only)

If BRAND.md does not declare these explicitly, infer them from any sample passages it contains. If no samples exist, set VOICE_PROFILE=default (varied rhythm, opinionated, first-person allowed, no AI tells -- see "Signs of soulless writing" in references/humanizer-patterns.md).

Step 3: Scan for AI Patterns

takeToMarket > SCANNING FOR AI PATTERNS

Walk DRAFT against every section in ${CLAUDE_PLUGIN_ROOT}/references/humanizer-patterns.md:

  1. CONTENT PATTERNS (sections 1-6) -- significance inflation, notability puffery, superficial -ing analyses, promotional language, vague attributions, formulaic challenges sections.
  2. LANGUAGE AND GRAMMAR PATTERNS (sections 7-13) -- AI vocabulary, copula avoidance, negative parallelism, rule of three, elegant variation, false ranges, passive voice.
  3. STYLE PATTERNS (sections 14-19) -- em-dash overuse, boldface overuse, inline-header lists, title-case headings, emojis, curly quotes.
  4. COMMUNICATION PATTERNS (sections 20-22) -- chatbot artifacts, knowledge-cutoff disclaimers, sycophantic tone.
  5. FILLER AND HEDGING (sections 23-29) -- filler phrases, excessive hedging, generic positive conclusions, hyphenated word-pair overuse, persuasive authority tropes, signposting, fragmented headers.

For each hit, record:

  • Section number from the reference (e.g., 7, 14)
  • The offending span (a short quote)
  • The rewrite shape suggested by the section's Before/After pair

Store the list as HITS. If HITS is empty AND the draft does not fail the "soulless writing" check from the reference, skip to Step 6 -- the asset is already clean.

Step 4: Rewrite

takeToMarket > REWRITING (${N} pattern hits)

For each hit in HITS, rewrite the offending span using:

  • The Before/After template from the matching section of humanizer-patterns.md
  • The voice profile from Step 2 -- match the asset's brand cadence, not a generic "natural" tone

Rules:

  • Preserve claims, numbers, proper nouns, citations, and CTAs verbatim.
  • Do NOT introduce new claims or facts. If a vague attribution cannot be replaced with a real source from POSITIONING.md proof points or the campaign brief, delete the attribution rather than inventing one.
  • Do NOT remove a span that is load-bearing for positioning (anchor phrase, proof point, differentiator) even if it pattern-matches. Flag it and leave it.
  • If the brand voice is itself terse and bullet-heavy, don't rewrite inline-header lists into prose paragraphs -- match the brand.
  • Soulless output is a failure mode. After mechanical fixes, do one personality pass using the "How to add voice" guidance in the reference: vary rhythm, allow opinion, let some mess in, be specific.

Store the rewritten text as DRAFT_V2.

Step 5: Final Anti-AI Audit

takeToMarket > FINAL AUDIT

Run one more pass against DRAFT_V2:

  1. Re-scan against humanizer-patterns.md. Record any remaining tells as a short bulleted list REMAINING_TELLS (cap at 5 items -- the goal is signal, not exhaustiveness).
  2. Apply one more revision targeting REMAINING_TELLS specifically. Most often this means tightening rhythm, breaking up tidy parallel structure, or replacing a remaining abstract noun with a concrete one.

Store the result as DRAFT_FINAL.

Step 6: Output

Behavior depends on MODE.

MODE = file or campaign (write back): Write DRAFT_FINAL to the original asset path. Overwrite without prompting -- the previous draft is recoverable via git. For campaign mode, after writing the asset, append a line to .taketomarket/CAMPAIGNS/${SLUG}/MANIFEST.json under the asset's entry: "humanized_at": "${ISO_TIMESTAMP}" (use node "${CLAUDE_PLUGIN_ROOT}/bin/ttm-tools.cjs" timestamp --raw).

MODE = inline (print only): Print DRAFT_FINAL to the conversation. Do not write to disk.

Step 7: Display Summary

takeToMarket > HUMANIZATION COMPLETE

Asset: ${TARGET_PATH or "inline"}
Pattern hits found: ${HITS.length}
Top patterns rewritten: ${top 3 section numbers from HITS}
Remaining tells after audit: ${REMAINING_TELLS.length}

[If MODE = file or campaign:]
Asset rewritten in place. Diff is visible via `git diff`.

[If MODE = campaign:]
Manifest annotated with humanized_at timestamp.

[If any positioning-load-bearing spans were flagged-but-not-rewritten:]
WARNING: ${N} span(s) pattern-matched but were preserved because they carry positioning
or proof-point load. Review manually if voice still feels off.

Success criteria

  • Source asset resolved (file, campaign asset, or inline text)
  • BRAND.md voice profile loaded and applied to rewrites
  • POSITIONING.md anchors and proof points preserved verbatim
  • Every hit from the pattern scan addressed -- rewritten or flagged with reason
  • Final anti-AI audit completed with remaining tells listed (or empty)
  • Soulless-writing check passed (rhythm varied, voice present, not just clean)
  • Output written to disk (file/campaign mode) or printed (inline mode)
  • Manifest updated with humanized_at when in campaign mode

Output

  • File/campaign mode: rewritten asset at the original path
  • Campaign mode: humanized_at timestamp added to MANIFEST.json asset entry
  • Inline mode: rewritten text printed to the conversation

What if this doesn't fit?

Looks like ttm-humanize can't do that yet.

  • Want a new skill? ttm-request-skill
  • Existing skill needs work? ttm-improve-skill

Humanizer patterns

Source: Adapted from blader/humanizer v2.5.1 (MIT licensed). Original credit: blader. Derived from Wikipedia's "Signs of AI writing" guide maintained by WikiProject AI Cleanup.

Why this reference exists

This file is the canonical pattern catalog consumed by ttm-humanize. Every audience-facing asset in takeToMarket passes through humanization before write. The patterns below are the ones humanization must detect and rewrite.

The catalog is faithful to the blader source so that pattern definitions, "words to watch" lists, and Before/After examples remain auditable against Wikipedia's "Signs of AI writing" page. Workflow procedure lives in workflows/lifecycle/humanize.md; this file is reference-only.

How to use the catalog

When scanning an asset:

  1. Read top to bottom. The catalog is grouped by family (CONTENT, LANGUAGE AND GRAMMAR, STYLE, COMMUNICATION, FILLER AND HEDGING).
  2. For each section, scan the Words to watch or pattern signature against the asset.
  3. When a match is found, the Before / After pair is the rewrite template -- match the shape, not the exact words.
  4. Some patterns are absolute (curly quotes, sycophantic openers). Others are dosage-dependent (em dashes, rule-of-three) -- flag only on overuse, not single occurrences.

CONTENT PATTERNS

1. Undue Emphasis on Significance, Legacy, and Broader Trends

Words to watch: stands/serves as, is a testament/reminder, a vital/significant/crucial/pivotal/key role/moment, underscores/highlights its importance/significance, reflects broader, symbolizing its ongoing/enduring/lasting, contributing to the, setting the stage for, marking/shaping the, represents/marks a shift, key turning point, evolving landscape, focal point, indelible mark, deeply rooted

Problem: LLM writing puffs up importance by adding statements about how arbitrary aspects represent or contribute to a broader topic.

The Statistical Institute of Catalonia was officially established in 1989, marking a pivotal moment in the evolution of regional statistics in Spain. This initiative was part of a broader movement across Spain to decentralize administrative functions and enhance regional governance.

Before

The Statistical Institute of Catalonia was established in 1989 to collect and publish regional statistics independently from Spain's national statistics office.

After

2. Undue Emphasis on Notability and Media Coverage

Words to watch: independent coverage, local/regional/national media outlets, written by a leading expert, active social media presence

Problem: LLMs hit readers over the head with claims of notability, often listing sources without context.

Her views have been cited in The New York Times, BBC, Financial Times, and The Hindu. She maintains an active social media presence with over 500,000 followers.

Before

In a 2024 New York Times interview, she argued that AI regulation should focus on outcomes rather than methods.

After

3. Superficial Analyses with -ing Endings

Words to watch: highlighting/underscoring/emphasizing..., ensuring..., reflecting/symbolizing..., contributing to..., cultivating/fostering..., encompassing..., showcasing...

Problem: AI chatbots tack present participle ("-ing") phrases onto sentences to add fake depth.

The temple's color palette of blue, green, and gold resonates with the region's natural beauty, symbolizing Texas bluebonnets, the Gulf of Mexico, and the diverse Texan landscapes, reflecting the community's deep connection to the land.

Before

The temple uses blue, green, and gold colors. The architect said these were chosen to reference local bluebonnets and the Gulf coast.

After

4. Promotional and Advertisement-like Language

Words to watch: boasts a, vibrant, rich (figurative), profound, enhancing its, showcasing, exemplifies, commitment to, natural beauty, nestled, in the heart of, groundbreaking (figurative), renowned, breathtaking, must-visit, stunning

Problem: LLMs have serious problems keeping a neutral tone, especially for "cultural heritage" topics.

Nestled within the breathtaking region of Gonder in Ethiopia, Alamata Raya Kobo stands as a vibrant town with a rich cultural heritage and stunning natural beauty.

Before

Alamata Raya Kobo is a town in the Gonder region of Ethiopia, known for its weekly market and 18th-century church.

After

5. Vague Attributions and Weasel Words

Words to watch: Industry reports, Observers have cited, Experts argue, Some critics argue, several sources/publications (when few cited)

Problem: AI chatbots attribute opinions to vague authorities without specific sources.

Due to its unique characteristics, the Haolai River is of interest to researchers and conservationists. Experts believe it plays a crucial role in the regional ecosystem.

Before

The Haolai River supports several endemic fish species, according to a 2019 survey by the Chinese Academy of Sciences.

After

6. Outline-like "Challenges and Future Prospects" Sections

Words to watch: Despite its... faces several challenges..., Despite these challenges, Challenges and Legacy, Future Outlook

Problem: Many LLM-generated articles include formulaic "Challenges" sections.

Despite its industrial prosperity, Korattur faces challenges typical of urban areas, including traffic congestion and water scarcity. Despite these challenges, with its strategic location and ongoing initiatives, Korattur continues to thrive as an integral part of Chennai's growth.

Before

Traffic congestion increased after 2015 when three new IT parks opened. The municipal corporation began a stormwater drainage project in 2022 to address recurring floods.

After

LANGUAGE AND GRAMMAR PATTERNS

7. Overused "AI Vocabulary" Words

High-frequency AI words: Actually, additionally, align with, crucial, delve, emphasizing, enduring, enhance, fostering, garner, highlight (verb), interplay, intricate/intricacies, key (adjective), landscape (abstract noun), pivotal, showcase, tapestry (abstract noun), testament, underscore (verb), valuable, vibrant

Problem: These words appear far more frequently in post-2023 text. They often co-occur.

Additionally, a distinctive feature of Somali cuisine is the incorporation of camel meat. An enduring testament to Italian colonial influence is the widespread adoption of pasta in the local culinary landscape, showcasing how these dishes have integrated into the traditional diet.

Before

Somali cuisine also includes camel meat, which is considered a delicacy. Pasta dishes, introduced during Italian colonization, remain common, especially in the south.

After

8. Avoidance of "is"/"are" (Copula Avoidance)

Words to watch: serves as/stands as/marks/represents [a], boasts/features/offers [a]

Problem: LLMs substitute elaborate constructions for simple copulas.

Gallery 825 serves as LAAA's exhibition space for contemporary art. The gallery features four separate spaces and boasts over 3,000 square feet.

Before

Gallery 825 is LAAA's exhibition space for contemporary art. The gallery has four rooms totaling 3,000 square feet.

After

9. Negative Parallelisms and Tailing Negations

Problem: Constructions like "Not only...but..." or "It's not just about..., it's..." are overused. So are clipped tailing-negation fragments such as "no guessing" or "no wasted motion" tacked onto the end of a sentence instead of written as a real clause.

It's not just about the beat riding under the vocals; it's part of the aggression and atmosphere. It's not merely a song, it's a statement.

Before

The heavy beat adds to the aggressive tone.

After

The options come from the selected item, no guessing.

Before (tailing negation)

The options come from the selected item without forcing the user to guess.

After

10. Rule of Three Overuse

Problem: LLMs force ideas into groups of three to appear comprehensive.

The event features keynote sessions, panel discussions, and networking opportunities. Attendees can expect innovation, inspiration, and industry insights.

Before

The event includes talks and panels. There's also time for informal networking between sessions.

After

11. Elegant Variation (Synonym Cycling)

Problem: AI has repetition-penalty code causing excessive synonym substitution.

The protagonist faces many challenges. The main character must overcome obstacles. The central figure eventually triumphs. The hero returns home.

Before

The protagonist faces many challenges but eventually triumphs and returns home.

After

12. False Ranges

Problem: LLMs use "from X to Y" constructions where X and Y aren't on a meaningful scale.

Our journey through the universe has taken us from the singularity of the Big Bang to the grand cosmic web, from the birth and death of stars to the enigmatic dance of dark matter.

Before

The book covers the Big Bang, star formation, and current theories about dark matter.

After

13. Passive Voice and Subjectless Fragments

Problem: LLMs often hide the actor or drop the subject entirely with lines like "No configuration file needed" or "The results are preserved automatically." Rewrite these when active voice makes the sentence clearer and more direct.

No configuration file needed. The results are preserved automatically.

Before

You do not need a configuration file. The system preserves the results automatically.

After

STYLE PATTERNS

14. Em Dash Overuse

Problem: LLMs use em dashes more than humans, mimicking "punchy" sales writing. In practice, most of these can be rewritten more cleanly with commas, periods, or parentheses.

The term is primarily promoted by Dutch institutions, not by the people themselves. You don't say "Netherlands, Europe" as an address, yet this mislabeling continues, even in official documents.

Before

The term is primarily promoted by Dutch institutions, not by the people themselves. You don't say "Netherlands, Europe" as an address, yet this mislabeling continues in official documents.

After

15. Overuse of Boldface

Problem: AI chatbots emphasize phrases in boldface mechanically.

It blends OKRs (Objectives and Key Results), KPIs (Key Performance Indicators), and visual strategy tools such as the Business Model Canvas (BMC) and Balanced Scorecard (BSC).

Before

It blends OKRs, KPIs, and visual strategy tools like the Business Model Canvas and Balanced Scorecard.

After

16. Inline-Header Vertical Lists

Problem: AI outputs lists where items start with bolded headers followed by colons.

- User Experience: The user experience has been significantly improved with a new interface.

- Performance: Performance has been enhanced through optimized algorithms.

- Security: Security has been strengthened with end-to-end encryption.

Before

The update improves the interface, speeds up load times through optimized algorithms, and adds end-to-end encryption.

After

17. Title Case in Headings

Problem: AI chatbots capitalize all main words in headings.

## Strategic Negotiations And Global Partnerships

Before

## Strategic negotiations and global partnerships

After

18. Emojis

Problem: AI chatbots often decorate headings or bullet points with emojis.

Launch Phase: The product launches in Q3

Key Insight: Users prefer simplicity

Next Steps: Schedule follow-up meeting

Before

The product launches in Q3. User research showed a preference for simplicity. Next step: schedule a follow-up meeting.

After

19. Curly Quotation Marks

Problem: ChatGPT uses curly quotes instead of straight quotes.

He said “the project is on track” but others disagreed.

Before

He said "the project is on track" but others disagreed.

After

COMMUNICATION PATTERNS

20. Collaborative Communication Artifacts

Words to watch: I hope this helps, Of course!, Certainly!, You're absolutely right!, Would you like..., let me know, here is a...

Problem: Text meant as chatbot correspondence gets pasted as content.

Here is an overview of the French Revolution. I hope this helps! Let me know if you'd like me to expand on any section.

Before

The French Revolution began in 1789 when financial crisis and food shortages led to widespread unrest.

After

21. Knowledge-Cutoff Disclaimers

Words to watch: as of [date], Up to my last training update, While specific details are limited/scarce..., based on available information...

Problem: AI disclaimers about incomplete information get left in text.

While specific details about the company's founding are not extensively documented in readily available sources, it appears to have been established sometime in the 1990s.

Before

The company was founded in 1994, according to its registration documents.

After

22. Sycophantic/Servile Tone

Problem: Overly positive, people-pleasing language.

Great question! You're absolutely right that this is a complex topic. That's an excellent point about the economic factors.

Before

The economic factors you mentioned are relevant here.

After

FILLER AND HEDGING

23. Filler Phrases

Before -> After:

  • "In order to achieve this goal" -> "To achieve this"
  • "Due to the fact that it was raining" -> "Because it was raining"
  • "At this point in time" -> "Now"
  • "In the event that you need help" -> "If you need help"
  • "The system has the ability to process" -> "The system can process"
  • "It is important to note that the data shows" -> "The data shows"

24. Excessive Hedging

Problem: Over-qualifying statements.

It could potentially possibly be argued that the policy might have some effect on outcomes.

Before

The policy may affect outcomes.

After

25. Generic Positive Conclusions

Problem: Vague upbeat endings.

The future looks bright for the company. Exciting times lie ahead as they continue their journey toward excellence. This represents a major step in the right direction.

Before

The company plans to open two more locations next year.

After

26. Hyphenated Word Pair Overuse

Words to watch: third-party, cross-functional, client-facing, data-driven, decision-making, well-known, high-quality, real-time, long-term, end-to-end

Problem: AI hyphenates common word pairs with perfect consistency. Humans rarely hyphenate these uniformly, and when they do, it's inconsistent. Less common or technical compound modifiers are fine to hyphenate.

The cross-functional team delivered a high-quality, data-driven report on our client-facing tools. Their decision-making process was well-known for being thorough and detail-oriented.

Before

The cross functional team delivered a high quality, data driven report on our client facing tools. Their decision making process was known for being thorough and detail oriented.

After

27. Persuasive Authority Tropes

Phrases to watch: The real question is, at its core, in reality, what really matters, fundamentally, the deeper issue, the heart of the matter

Problem: LLMs use these phrases to pretend they are cutting through noise to some deeper truth, when the sentence that follows usually just restates an ordinary point with extra ceremony.

The real question is whether teams can adapt. At its core, what really matters is organizational readiness.

Before

The question is whether teams can adapt. That mostly depends on whether the organization is ready to change its habits.

After

28. Signposting and Announcements

Phrases to watch: Let's dive in, let's explore, let's break this down, here's what you need to know, now let's look at, without further ado

Problem: LLMs announce what they are about to do instead of doing it. This meta-commentary slows the writing down and gives it a tutorial-script feel.

Let's dive into how caching works in Next.js. Here's what you need to know.

Before

Next.js caches data at multiple layers, including request memoization, the data cache, and the router cache.

After

29. Fragmented Headers

Signs to watch: A heading followed by a one-line paragraph that simply restates the heading before the real content begins.

Problem: LLMs often add a generic sentence after a heading as a rhetorical warm-up. It usually adds nothing and makes the prose feel padded.

## Performance

Speed matters.

When users hit a slow page, they leave.

Before

## Performance

When users hit a slow page, they leave.

After

Signs of soulless writing (even if technically "clean")

Removing AI patterns is only half the job. Sterile, voiceless writing is just as obvious as slop. Good writing has a human behind it. Watch for:

  • Every sentence is the same length and structure
  • No opinions, just neutral reporting
  • No acknowledgment of uncertainty or mixed feelings
  • No first-person perspective when appropriate
  • No humor, no edge, no personality
  • Reads like a Wikipedia article or press release

How to add voice

  • Have opinions. Don't just report facts -- react to them. "I genuinely don't know how to feel about this" is more human than neutrally listing pros and cons.
  • Vary rhythm. Short punchy sentences. Then longer ones that take their time getting where they're going. Mix it up.
  • Acknowledge complexity. Real humans have mixed feelings. "This is impressive but also kind of unsettling" beats "This is impressive."
  • Use "I" when it fits. First person isn't unprofessional -- it's honest. "I keep coming back to..." or "Here's what gets me..." signals a real person thinking.
  • Let some mess in. Perfect structure feels algorithmic. Tangents, asides, and half-formed thoughts are human.
  • Be specific about feelings. Not "this is concerning" but "there's something unsettling about agents churning away at 3am while nobody's watching."

The experiment produced interesting results. The agents generated 3 million lines of code. Some developers were impressed while others were skeptical. The implications remain unclear.

Before (clean but soulless)

I genuinely don't know how to feel about this one. 3 million lines of code, generated while the humans presumably slept. Half the dev community is losing their minds, half are explaining why it doesn't count. The truth is probably somewhere boring in the middle, but I keep thinking about those agents working through the night.

After (has a pulse)

Source

This catalog is based on Wikipedia: Signs of AI writing, maintained by WikiProject AI Cleanup. The patterns documented there come from observations of thousands of instances of AI-generated text on Wikipedia.

Key insight from Wikipedia: "LLMs use statistical algorithms to guess what should come next. The result tends toward the most statistically likely result that applies to the widest variety of cases."