Open app
Moonborn — Developers

Multi-locale brand persona

One canonical brand voice, six locale variants. Lineage governance, distinctiveness floors against the canonical, audit-trail in every market.

The brand team problem at scale: as you expand into new markets, the brand voice gets translated, localized, and inevitably diluted. Six months in, your EN tone feels sharp and your DE tone reads like a press release. Moonborn solves this with one canonical persona + N locale variants in a tracked lineage tree.

When this fits

  • Multi-market launches where the brand voice must stay recognizable in every locale.
  • Content marketing teams producing per-locale copy at scale (newsletters, social, support content).
  • Customer-support voice across geos.
  • Legal-sensitive communication where the difference between "we believe" and "we know" can have compliance weight per market.

What Moonborn provides

  • Lock-mode forks — preserve Soul + Self + Mask, refine Surface for locale.
  • Distinctiveness floor — every variant must score above a configurable distance from the canonical so it doesn't drift into generic copy.
  • Audit trail — every refine is a version in the lineage tree, diffable in the product UI and (via Git sync) in your repo.
  • Webhook eventspersona.audit_failed fires if a variant's audit drops below threshold post-refine.

The pattern

  1. Canonical persona: the brand voice as you most authoritatively want it. Refine it until audit ≥ 4.5/5.
  2. Locale forks: one per market. Lock Soul + Self + Mask; refine Surface with language + cultural details. See Fork brand variants tutorial.
  3. Tone forks (optional): formal vs casual variants of each locale.
  4. Distinctiveness gates: configure consistency.distinctiveness.min_score per variant relative to the canonical baseline. Too far = warning. Too close to another variant = warning.
  5. Voice fingerprint drift in production: monitor persona.audit_failed for each variant; route to your brand QA pipeline.

Custom baselines

The default distinctiveness baseline is chatgpt-default. For brand governance, set the canonical persona itself as the baseline:

await client.config.setItem({
  key: 'consistency.distinctiveness.custom_baseline_persona_id',
  value: canonicalBrandId,
  scope: 'workspace',
  scopeId: 'ws_...',
});

Now every variant is scored against your brand instead of against a generic assistant. A score of 0.85 means "very close to the brand"; a score of 0.40 means "drifting toward generic." Set min_score = 0.65 to require variants stay close to the brand DNA.

Pricing context

Multi-locale brand work is typically Team or Enterprise — lineage governance, custom baselines, audit retention, and SSO/SCIM all matter at this scale. See Pricing.

Honest scope

Moonborn produces brand voice at the persona layer. Translation quality at the content layer — the actual emails, posts, support replies — is still a human/LLM workflow. The persona keeps that workflow from going off-brand; it doesn't replace the writers.

Next