ASK KNOX
beta
LESSON 363

Drafting in Your Voice (Voice Profiles)

Generic AI prose is detectable in seconds — a voice profile is the spec that tells the model to write like you, not like everyone else who uses the same model.

10 min read·Your First AI Content Pipeline

Introduction

Here is a test you can run right now. Take any AI-generated article and read the first three sentences. Does it start with "In today's rapidly evolving landscape"? Does it use the phrase "delve into"? Does every paragraph end with a summary sentence that restates what was just said?

That is . It is recognizable, forgettable, and indistinguishable from ten thousand other articles published the same day by the same model.

The goal of the DRAFT stage is not to produce AI-sounding content. It is to produce your content — your sentence rhythm, your word choices, your depth level, your willingness to say something direct instead of hedging everything.

This lesson covers how to build a voice profile that actually works, how to structure the drafting prompt, and how to tune your editing pass so reviews stay at 15 minutes rather than becoming full rewrites.

Core Concept

What a Voice Profile Is

A voice profile is the set of instructions and examples you give the model so it writes like you. It has two parts:

1. Examples. Three to five of your best existing articles, pasted directly into the system prompt. Not summarized. Not paraphrased. The actual text. The model learns your cadence, your sentence length variation, your vocabulary, your structural patterns from seeing the real thing. This is the highest-leverage input in the entire voice profile.

2. Explicit rules. A list of constraints that make your style concrete. Positive rules ("use short paragraphs, two to four sentences each") and negative rules ("do not use the word 'leverage' as a verb, do not start with rhetorical questions, do not use transitional summaries at the end of each section").

The combination of examples and rules is what separates a voice profile from a generic style instruction like "write conversationally." Conversational means nothing to a model. Three of your articles and a list of what to avoid means a great deal.

Anatomy of an Effective System Prompt

Here is the structure used in the jeremyknox.ai pipeline:

ROLE:
You are a technical writer producing content for jeremyknox.ai.
The author is Jeremy Knox — an engineering manager and AI operator.
Write in first person, as Jeremy Knox.

VOICE PROFILE:
The following are three example articles. Study them carefully.
Write the new article in the same voice, structure, and depth.

[ARTICLE 1 — full text]
[ARTICLE 2 — full text]
[ARTICLE 3 — full text]

STYLE RULES:
- Sentences are direct. Avoid hedging phrases ("it could be argued", "one might say").
- Lead with the concrete, not the abstract. Example before principle, not after.
- Paragraphs are 2-4 sentences. No walls of text.
- No transitional summaries at the end of sections.
- Do not use: "delve", "leverage" (as verb), "rapidly evolving", "in today's X landscape".
- Technical depth: assume the reader writes code but is not a specialist in this specific topic.
- Use "you" directly. Speak to the reader peer-to-peer, not up or down.

ARTICLE STRUCTURE:
## Introduction
## [Main concept section — 2 to 3 subsections]
## Practical Application
## Common Mistakes
## Summary (bullet list)
## What's Next

TASK:
Write a [word count] word article on the following topic:
[topic record from gather.py]

This prompt is long. That is correct. A short prompt produces generic output. A detailed prompt produces voice-consistent output.

Calling the Model

The DRAFT stage is the only stage where the AI model itself does the work — and the wiring is about ten lines of code. draft.py reads the topic record from SOURCE, assembles the system prompt above, makes a single API call, and writes the draft to disk:

import json, pathlib
from anthropic import Anthropic

topic = json.loads(pathlib.Path("topic.json").read_text())
system_prompt = build_voice_profile_prompt()  # the structure shown above

client = Anthropic()  # reads ANTHROPIC_API_KEY from the environment
response = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=4096,
    system=system_prompt,
    messages=[{
        "role": "user",
        "content": f"Write the article for this topic record:\n{json.dumps(topic)}",
    }],
)

pathlib.Path("draft.mdx").write_text(response.content[0].text)

That is the entire integration: topic.json in, one model call with the voice profile as the system prompt, draft.mdx out. The provider is interchangeable — the OpenAI and Gemini SDKs follow the same pattern (client, system prompt, user message, text out). What is not interchangeable is the voice profile: the quality of the draft tracks the quality of the system prompt, not the brand of the model.

Updating the Voice Profile

A voice profile is not a one-time artifact. As your writing evolves — as you develop new stylistic habits, cover new subject areas, adjust your technical depth — the profile needs to reflect that.

The practical rule: every three months, review the examples in the profile. Swap out any article that feels dated or off-brand. Add a recent article that represents your current voice accurately. Update the rules if you have caught the model making the same mistake repeatedly.

If a specific mistake keeps appearing — the model uses "leverage" as a verb, or consistently writes four-sentence openings that feel like blog templates — add a rule explicitly prohibiting it. Rules that come from observed failure are the most effective ones.

Practical Application

Here is a concrete before-and-after that shows the difference a voice profile makes.

Without a voice profile (generic prompt: "Write a 1000-word article about AI memory systems for technical readers"):

In today's rapidly evolving AI landscape, memory systems have emerged as a critical component of sophisticated agent architectures. As we delve into this complex topic, it is important to understand the foundational concepts before exploring the practical implications...

With a voice profile (full system prompt with examples and rules):

Most AI agents have no memory. They start fresh every session, process your input, and exit without remembering a thing. This is fine for one-shot tasks. It is a problem for anything that runs across multiple sessions, accumulates context, or needs to know what it decided last Tuesday.

Same topic. Same model. Completely different output character.

The second version leads with concrete reality, uses direct second person, has no hedging, and does not start with a trend-framing opener. That is the voice profile doing its job.

The Editing Pass

Even a well-tuned voice profile produces drafts that need a review pass. The goal of the editing pass is not to rewrite — it is to make 10 to 15 targeted corrections:

  • Fix any factual claims the model got wrong
  • Cut any paragraph that restates what was just said
  • Sharpen any sentence that hedges when it should assert
  • Verify links and examples are real and current
  • Check that the article actually delivers on the angle promised in the topic record

If your editing pass consistently takes more than 20 minutes or requires structural changes, the system prompt needs work, not the draft. Track the failure mode: is the model getting the structure wrong? The depth wrong? The tone wrong? Each has a different fix.

Common Mistakes

Using style adjectives instead of examples. "Write like a senior engineer who is also a good teacher" tells the model almost nothing. Paste three articles that sound like what you want. Examples beat descriptions every time.

No negative rules. Most prompts tell the model what to do. Few tell the model what not to do. The most reliable way to eliminate a recurring bad pattern (transitional summaries, rhetorical openings, passive constructions) is an explicit "do not" rule.

Using the same three articles for years. Your writing voice evolves. Articles from three years ago may not represent how you write today. Stale examples pull the model toward an outdated voice. Refresh the profile.

Treating draft quality as fixed. If every draft needs heavy editing, the instinct is "AI writing is just not good enough." Usually the real problem is an under-specified prompt. Spend two hours improving the system prompt before concluding the approach does not work.

Not specifying audience technical level. "Write for technical readers" is too vague. Specify: "Assume the reader writes production Python or JavaScript, understands APIs, and is not a specialist in this specific topic." The more precise the audience spec, the better the model calibrates depth.

Summary

  • A voice profile has two parts: concrete examples (your actual articles) and explicit rules (what to do and what never to do).
  • Examples are higher-leverage than style descriptions — paste the full text, do not summarize.
  • Negative rules (what to avoid) are as important as positive rules; they eliminate recurring failure modes.
  • The editing pass should take 15 to 20 minutes; if it takes longer, fix the prompt, not the draft.
  • Voice profiles need maintenance — refresh examples every three months as your writing evolves.

What's Next

The next lesson covers the IMAGE stage — generating a hero image for every article, why you need a provider fallback chain, and how to validate your image model at pipeline startup so you know before the cron runs whether image generation is functional.