-
Notifications
You must be signed in to change notification settings - Fork 1
05 Voice Profiles
John Williams edited this page Mar 16, 2026
·
1 revision
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.
| 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 |
| 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 |
| 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 |
| 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 |
- Paste samples — Provide 2–5 writing samples (min 50 chars each, recommended 3+)
-
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
-
AI enrichment — GPT analyzes samples for:
- Tone anchors (4–6 descriptive phrases)
- Signature phrases (3–5 recurring expressions)
- Writing style summary
- Fingerprint extraction — Combined stats + AI output
- Save — Profile stored (requires KV/CONTEXT binding)
| 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 |
POST /api/writing-agent-voice
{
"action": "analyze",
"samples": [
"Your first writing sample...",
"Your second sample...",
"Your third sample..."
]
}POST /api/writing-agent-voice
{
"action": "save",
"name": "my-voice",
"samples": [
"Sample 1...",
"Sample 2...",
"Sample 3..."
]
}Requires CONTEXT KV binding for storage.
- 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