Overview
One-time per-client setup: collect samples, LLM analyzes voice characteristics, output 1-page fingerprint YAML stored in version control. Per-content-task: pull live samples via Scavio + apply fingerprint.
Trigger
On-demand (one-time per client, plus quarterly refresh)
Schedule
Quarterly (refresh) + on-demand (per task)
Workflow Steps
Collect 50-100 sample artifacts (posts, emails, transcripts)
Real client output, not aspirational.
LLM analyze: sentence length, vocabulary, signature openers, tone descriptors
Output structured YAML.
Save fingerprint to ./brand-voices/{slug}.yaml
Version control for auditability.
Per content task: Scavio pulls 3 live recent samples
site:CLIENT.com OR site:linkedin.com/in/CLIENT for currency check.
LLM compose with fingerprint + samples + brief
Static + dynamic anchor.
QA: spot-check 1-of-5 against fingerprint
Catches drift over time.
Python Implementation
import requests, os, yaml
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def live_samples(slug):
r = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'query': f'site:linkedin.com/in/{slug}'}).json()
return r.get('organic_results', [])[:3]
def compose_for_client(slug, brief):
fp = yaml.safe_load(open(f'./brand-voices/{slug}.yaml'))
samples = live_samples(slug)
return f'Fingerprint: {fp}\nSamples: {samples}\nBrief: {brief}'JavaScript Implementation
// Same in TS.Platforms Used
Web search with knowledge graph, PAA, and AI overviews