brand.json
The stable machine projection of the Genome.
Updated on January 1, 1970
Privacy and analytics
We use necessary technical cookies and, only with your consent, analytics and marketing pixels to improve the website and measure campaigns.
The stable machine projection of the Genome.
Updated on January 1, 1970
brand.json (nomad-brand/1) is the stable machine projection of the Genome: identity, offer, voice, claims and visual system in a flat format. The Genome page, Nödo, the MCP server and the API hand out the same bytes. Every member is always present; unknown values are an empty string, an empty list or null.
Schema: https://docs.nomad.ooo/schemas/brand/1.json. A valid Genome always yields a valid brand.json. Changes within nomad-brand/1 only add members.
| Field | Type | Always present | Description |
|---|---|---|---|
format | "nomad-brand/1" | Yes | Format identifier. Always nomad-brand/1. |
name | string | Yes | Brand name (metadata.displayName). |
revision | integer ≥ 0 | Yes | Genome revision it was generated from; 0 when unknown. |
generatedAt | string | Yes | When the Genome strategy was generated (ISO 8601); empty when unknown. |
language | string | Yes | BCP 47 tag of the brand's primary language; empty when unknown. |
industry | string (enum) | "" | Yes | Industry code; empty when unknown. |
identity | object | Yes | Who the brand is. |
identity.whatItSells | string | Yes | What the brand sells. |
identity.essence | string | Yes | Essence in one sentence. |
identity.purpose | string | Yes | Why the brand exists. |
identity.positioning | string | Yes | Positioning statement. |
identity.promise | string | Yes | Brand promise. |
offer | object[] | Yes | What the brand sells, by name. |
offer[].name | string | Yes | Name the brand uses for it. |
offer[].description | string | Yes | What it is and for whom. |
offer[].kind | string (enum) | null | Yes | Kind of offering. One of product, service, subscription, experience, bundle. |
offer[].role | string (enum) | null | Yes | Role in the offer. One of flagship, core, complement. |
offer[].price | string | null | Yes | Price exactly as published; null when not published. |
voice | object | Yes | How to write as the brand. |
voice.signature | string | Yes | The voice in one sentence. |
voice.address | string (enum) | null | Yes | Default form of address. One of tu, usted, vos, mixto. |
voice.addressNotes | string | null | Yes | Exceptions to the form of address. |
voice.tone | object | Yes | Tone scales, integers from 1 to 10. |
voice.tone.formality | integer 1–10 | No | 1 = street colloquial, 10 = institutional. |
voice.tone.closeness | integer 1–10 | No | 1 = distant, 10 = intimate. |
voice.tone.energy | integer 1–10 | No | 1 = calm, 10 = explosive. |
voice.tone.technical | integer 1–10 | No | 1 = everyday language, 10 = specialist vocabulary. |
voice.tone.irony | integer 1–10 | No | 1 = literal, 10 = sarcastic. |
voice.rules | string[] | Yes | Writing rules. |
voice.conventions | string[] | Yes | Style conventions. |
voice.sayDontSay | object[] | Yes | Say X, not Y. |
voice.sayDontSay[].say | string | Yes | What the brand says. |
voice.sayDontSay[].dontSay | string | Yes | What it avoids instead. |
voice.forbiddenWords | string[] | Yes | Words the brand never uses. |
voice.examples | object[] | Yes | On-brand and off-brand examples. |
voice.examples[].context | string | Yes | Situation. |
voice.examples[].onBrand | string | Yes | How the brand writes it. |
voice.examples[].offBrand | string | Yes | The generic version to avoid. |
voice.channels | object[] | Yes | Voice per channel. |
voice.channels[].channel | string | Yes | Channel. |
voice.channels[].guidance | string | Yes | How the voice adapts there. |
voice.languages | object[] | No | Voice per secondary language. Absent in exports made before it existed. |
voice.languages[].locale | string | Yes | Language code (BCP 47). |
voice.languages[].address | string | Yes | Form of address and register in that language. |
voice.languages[].tone | string | Yes | How the voice moves in that language compared with the primary one. |
voice.languages[].signatureLine | string | null | Yes | Signature line transcreated for that language. |
voice.languages[].sayDontSay | object[] | Yes | Substitutions specific to that language. |
voice.languages[].sayDontSay[].say | string | Yes | What the brand says. |
voice.languages[].sayDontSay[].dontSay | string | Yes | What it avoids. |
voice.languages[].culturalNotes | string[] | Yes | Cultural codes the voice respects there. |
voice.languages[].avoid | string[] | Yes | What sounds wrong or is misread there. |
voice.emoji | object | Yes | Emoji use. |
voice.emoji.frequency | string (enum) | null | Yes | How often the brand uses emojis. One of never, rare, moderate, frequent. |
voice.emoji.preferred | string[] | Yes | Emojis that represent the brand. |
voice.emoji.forbidden | string[] | Yes | Emojis that do not fit the brand. |
claims | object | Yes | What the brand may and may not claim. |
claims.allowed | string[] | Yes | Claims the brand may make, with proof. |
claims.forbidden | string[] | Yes | Claims the brand must not make. |
claims.sensitiveTopics | string[] | Yes | Topics that need special review. |
visual | object | Yes | How the brand looks. |
visual.colors | object[] | Yes | Brand colours without duplicates. |
visual.colors[].name | string | Yes | Colour name. |
visual.colors[].role | string (enum) | Yes | Role in the palette. One of primary, secondary, accent, background, foreground, neutral, unspecified. |
visual.colors[].hex | string | Yes | Upper-case sRGB hex, #RRGGBB. Pattern ^#[0-9A-F]{6}$. |
visual.accessiblePairs | object[] | Yes | Every brand colour against the others and against white and black, keeping pairs with a contrast of at least 3, highest first. |
visual.accessiblePairs[].foreground | string | Yes | Name of the text colour. |
visual.accessiblePairs[].background | string | Yes | Name of the background colour. |
visual.accessiblePairs[].ratio | number ≥ 3 | Yes | WCAG 2.2 contrast ratio, rounded to two decimals. |
visual.accessiblePairs[].level | string (enum) | Yes | AAA (≥ 7), AA (≥ 4.5, body text) or AA large (≥ 3, large text and interface shapes). |
visual.typography | object[] | Yes | Typefaces, one per family and role. |
visual.typography[].family | string | Yes | Font family. |
visual.typography[].role | string | null | Yes | Role, for example heading; null when not set. |
visual.typography[].weights | string[] | Yes | Weights available. |
visual.logos | object[] | Yes | Logo files. |
visual.logos[].name | string | Yes | File name. |
visual.logos[].url | string | Yes | Delivery URL of the logo. |
visual.logos[].primary | boolean | Yes | Whether it is the primary logo. |
visual.logos[].form | string | null | Yes | Logo form; null when unknown. |
visual.logos[].theme | string | null | Yes | Background it is meant for; null when unknown. |
visual.distinctiveAssets | object[] | Yes | Distinctive assets with their Library files. |
visual.distinctiveAssets[].asset | string | Yes | Description of the asset. |
visual.distinctiveAssets[].type | string (enum) | "" | Yes | Kind of asset; empty when unknown. |
visual.distinctiveAssets[].files | object[] | Yes | Library files that embody it. |
visual.distinctiveAssets[].files[].id | string | Yes | Library file id. |
visual.distinctiveAssets[].files[].name | string | Yes | File name. |
visual.distinctiveAssets[].files[].url | string | Yes | Delivery URL of the file. |