How to do it
- Open Brand memory In the app, open Brand memory.
- Write a voice summary and rules One line on who you write for, then short rules such as 'No hype adjectives' or 'Name the thing that shipped'.
- Add products List each product with a line on what it is, so agents describe them correctly.
- Add banned topics These also act as a guardrail: drafts that match are rejected.
- Add a model key for rewrites Save an OpenAI, Anthropic, OpenRouter, or OpenAI-compatible key. It is encrypted and never shown again.
- Apply insights When analytics suggests a rule, apply it to add it to your voice rules.
How agents use it
Agents call get_brand_memory through MCP before drafting. Only the owner key can change it with update_brand_memory, so an agent cannot loosen its own rules.
Rewrite in your voice
The inbox has a rewrite action. With a model key saved, it rewrites the draft to follow your voice rules. Without a key, it falls back to a deterministic edit that applies simple rules. Your key is used only for your rewrites and is stored encrypted.
Supported providers:
- OpenAI
- Anthropic
- OpenRouter
- Any OpenAI-compatible endpoint, such as a local model server
Keep it in your repo
Voice and banned topics can also live in .socialhandoff/policy.json:
{
"voice": {
"summary": "Plain, specific, and short.",
"rules": ["No hype adjectives.", "Name the thing that shipped."]
},
"guardrails": { "bannedTopics": ["unreleased customer names"] }
}Apply it with pnpm socialhandoff policy apply. The change is written to the audit log.
Voice score
Drafts show a voice score. It is a heuristic, not a measurement. Use it to spot drafts worth a closer read.
See the brand voice glossary entry.