Tutorial

How to Preserve Brand Voice Across Multiple Clients with an LLM

An r/DigitalMarketing post asked how agencies keep client tones distinct under LLM use. Walk-through with voice fingerprint + Scavio reference.

An r/DigitalMarketing thread asked how agencies keep client brand voices distinct when LLMs are in the loop. This walks the per-client fingerprint + Scavio live-reference approach.

Prerequisites

  • LLM API key (Claude, GPT, Gemini)
  • Scavio API key
  • 10-100 sample artifacts per client (posts, emails, transcripts)
  • 1 hour per client to build the fingerprint

Walkthrough

Step 1: Collect 50-100 sample artifacts per client

Real posts, emails, transcripts.

Text
// ./brand-voices/<client-slug>/<sample-1.md>, sample-2.md, ...

Step 2: Generate the voice fingerprint via LLM analysis

One-page deliverable.

Text
// LLM prompt:
// Analyze the attached samples. Output a fingerprint:
// - Sentence length range (median, p90)
// - Vocabulary preferences (3-5 words/phrases used 3+ times)
// - Don't-use list
// - Signature openers and closers
// - Tone descriptors with evidence samples

Step 3: Save fingerprint as a 1-page YAML/MD per client

Version-controlled.

// brand-voices/client-x.yaml: { sentence_length_median: 12, vocab_preferences: [...], dont_use: [...], signature_open: ..., signature_close: ..., tone_adjs: [...] }

Step 4: Per-content-task: Scavio fetches live recent samples

Not last-month-cached.

Text
// site:instagram.com/CLIENT (recent captions)
// site:linkedin.com/in/CLIENT (recent posts)
// site:CLIENT.com/blog (latest articles)

Step 5: Compose with fingerprint + live samples in the LLM prompt

Both static and dynamic anchor.

Text
// LLM prompt:
// Write a post for <client> using the fingerprint AND matching the tone of these 3 recent samples:
// Fingerprint: <YAML>
// Recent samples: <Scavio top-3>
// Brief: <today's content brief>

Step 6: QA: spot-check 1-of-5 against the fingerprint

Manual sanity check.

Text
// Quick checklist: signature opener? sentence length OK? tone adjectives match? any forbidden vocabulary?

Python Example

Python
# Per-client-month: 30 posts × 1 LLM + 1 Scavio reference = ~$1-3. Setup: 1-2h per client to build fingerprint.

JavaScript Example

JavaScript
// Same in TS.

Expected Output

JSON
Distinct, recognizable per-client posts that don't drift to default LLM tone. Fingerprint is auditable code; recent-samples grounding catches voice drift over months.

Related Tutorials

Frequently Asked Questions

Most developers complete this tutorial in 15 to 30 minutes. You will need a Scavio API key (free tier works) and a working Python or JavaScript environment.

LLM API key (Claude, GPT, Gemini). Scavio API key. 10-100 sample artifacts per client (posts, emails, transcripts). 1 hour per client to build the fingerprint. A Scavio API key gives you 500 free credits per month.

Yes. The free tier includes 500 credits per month, which is more than enough to complete this tutorial and prototype a working solution.

Scavio has a native LangChain package (langchain-scavio), an MCP server, and a plain REST API that works with any HTTP client. This tutorial uses the raw REST API, but you can adapt to your framework of choice.

Start Building

An r/DigitalMarketing post asked how agencies keep client tones distinct under LLM use. Walk-through with voice fingerprint + Scavio reference.