Moonborn — Developers
Multi-locale brand persona (workflow)
Step-by-step brand workflow for the canonical-plus-locales pattern. Who does what, in what order, with what gates.
The Multi-locale brand persona use case covers the why. This guide is the how — week-by-week ownership.
Week 1 — canonical
Owner: brand director.
- Write the canonical brief — 200-300 words. Mention the brand's promise, its anti-pattern, its three signature phrases.
- Generate the persona:
const canonical = await client.personas.createPersona({ intent: brief, workspaceId }); - Audit must score ≥ 4.5/5. Refine until it does.
- Lock the canonical: archive on revisions is preferred over edit (preserves lineage).
Week 2 — pin distinctiveness baseline
Owner: brand director + ops.
await client.config.setItem({
key: 'consistency.distinctiveness.custom_baseline_persona_id',
value: canonical.id,
scope: 'workspace',
});
await client.config.setItem({
key: 'consistency.distinctiveness.min_score',
value: 0.65,
scope: 'workspace',
});Every variant now scores against the canonical, not chatgpt-default.
Week 3 — locale forks
Owner: regional brand lead.
For each locale (DE, FR, ES, PT, ...):
const de = await client.personas.fork({
id: canonical.id,
refine: {
mode: 'lock',
lockLayers: ['soul', 'self', 'mask'],
edits: { 'surface.language': 'de', 'surface.location': 'Berlin, Germany' },
},
});Constraints:
- Soul + Self + Mask are locked. Only Surface (language + locale details) changes.
- Run the audit per locale; ≥ 4.0/5 required.
- Distinctiveness vs canonical: 0.20-0.40 ideal. Below 0.20 = the variant is the canonical translated. Above 0.40 = the variant escaped the brand.
Week 4 — tone variants (optional)
Owner: per-locale marketing.
Forks of a locale, refining Mask for register (formal / casual / support / sales).
Week 5+ — monitoring
Owner: brand ops.
- Webhook subscription on
persona.audit_failed. - Periodic provocation suite (Team+).
- Quarterly distinctiveness sweep — re-score every variant vs the canonical. Anything that drifted past 0.40 enters the review queue.
Anti-patterns
- Editing Soul in a variant: produces a sibling, not a variant.
- Skipping the canonical: every locale ends up generic — there's no anchor.
- No webhook: drift goes uncaught for months.
Tier
Team and up (custom baseline + distinctiveness gates).