Skip to content

05 Voice Profiles

John Williams edited this page Mar 16, 2026 · 1 revision

Voice Profiles

Voice profiles define how Ghost Writer sounds. Each profile specifies tone, vocabulary, structural habits, and perplexity/burstiness targets. You can use built-in profiles or create custom ones from your own writing samples.


The 4 Built-in Profiles

john-williams

Attribute Value
Background 15+ year paid media veteran, Google Ads specialist, football coach mentality
Tone anchors Direct and opinionated; speaks from specific experience; uses coaching/football analogies; comfortable with edge; mixes technical depth with accessibility
Domain terms ROAS, PMax, SQOS, brand vs non-brand, impression share, wasted spend
Signature phrases "here's the thing", "I've seen this blow up", "the data doesn't lie", "let me be real"
Avoid synergy, leverage, holistic, paradigm, delve
Starts with conjunctions Yes
Uses fragments Yes
Parenthetical asides Frequent
Avg sentence length 16 words
Sentence length stdev 9
Perplexity target 30–45
Burstiness High

agency

Attribute Value
Background Digital marketing agency, data-driven, case study heavy
Tone anchors Professional but not stiff; data-backed claims; case study references; ROI-focused
Domain terms KPI, conversion rate, attribution, funnel, pipeline
Signature phrases "the data shows", "in our experience", "across our client base"
Avoid synergy, move the needle, circle back
Starts with conjunctions No
Uses fragments No
Parenthetical asides Occasional
Avg sentence length 18 words
Sentence length stdev 7
Perplexity target 35–50
Burstiness Medium

technical

Attribute Value
Background Engineer, developer, precise specifications
Tone anchors Precise; specification-heavy; code-aware; no fluff
Domain terms API, endpoint, payload, schema, latency
Signature phrases "the implementation is", "under the hood", "the architecture"
Avoid game-changer, revolutionary, amazing
Starts with conjunctions No
Uses fragments Yes
Parenthetical asides Rare
Avg sentence length 14 words
Sentence length stdev 6
Perplexity target 40–60
Burstiness Medium

casual

Attribute Value
Background Friendly peer, approachable, social-media-native
Tone anchors Conversational; emoji-light; fragment-heavy; speaks like a friend
Domain terms (none)
Signature phrases "honestly", "look", "real talk", "not gonna lie"
Avoid furthermore, consequently, utilize
Starts with conjunctions Yes
Uses fragments Yes
Parenthetical asides Frequent
Avg sentence length 12 words
Sentence length stdev 11
Perplexity target 25–40
Burstiness High

Creating Custom Profiles

Voice Import Process

  1. Paste samples — Provide 2–5 writing samples (min 50 chars each, recommended 3+)
  2. Statistical analysis — Engine computes:
    • Sentence length distribution (mean, median, stdev, min, max)
    • Vocabulary (TTR, hapax ratio, domain terms, signature phrases)
    • Structural habits (conjunction starters, fragments, parenthetical frequency)
    • Burstiness target (high/medium/low from stdev)
    • Perplexity proxy range
  3. AI enrichment — GPT analyzes samples for:
    • Tone anchors (4–6 descriptive phrases)
    • Signature phrases (3–5 recurring expressions)
    • Writing style summary
  4. Fingerprint extraction — Combined stats + AI output
  5. Save — Profile stored (requires KV/CONTEXT binding)

What Gets Extracted

Category Extracted Data
Sentence length Mean, median, stdev, min, max
Vocabulary TTR, hapax ratio, domain terms (top 20 by frequency), signature phrases (2-grams ≥2 uses)
Structural habits Conjunction rate, fragment rate, parenthetical frequency (rare/occasional/frequent)
Tone anchors 4–6 phrases from AI analysis
Avoid list Words from standard avoid list not used in samples
Perplexity target Proxy range from sentence stats
Burstiness target high (stdev ≥9), medium (≥5), low otherwise

API: Analyze Only

POST /api/writing-agent-voice
{
  "action": "analyze",
  "samples": [
    "Your first writing sample...",
    "Your second sample...",
    "Your third sample..."
  ]
}

API: Analyze and Save

POST /api/writing-agent-voice
{
  "action": "save",
  "name": "my-voice",
  "samples": [
    "Sample 1...",
    "Sample 2...",
    "Sample 3..."
  ]
}

Requires CONTEXT KV binding for storage.


Best Practices

  • Use 3+ samples — More samples improve fingerprint accuracy
  • Diverse content — Mix post types (LinkedIn, email, blog) for general voice
  • Consistent author — All samples from same writer
  • Minimum length — Each sample ≥50 chars; 500+ chars recommended

Clone this wiki locally