Brand profile

Overview
An AI draft only sounds like your brand if the AI knows how your brand sounds. The brand profile records exactly that — per brand: what it is about, how it writes, who it addresses, what it talks about and what must never appear. Plus sample texts, the visual style and the articles that matter.
Every AI generation under Content and Marketing uses the profile: the draft of a post, the series, the search engine metadata, rewriting a field, the featured image, ads, emails, SMS, WhatsApp templates and the strategy. Without a brand, the profile of the default brand applies.
Behind the profile stands the brand knowledge — what the system itself knows about the brand: your products with photos and sales figures (top sellers, margin, stock, new arrivals), your best posts and ads with their figures, the learnings from tests, your competitors and the upcoming occasions. Every AI task receives this too. What the system knows shows this state.
You do not have to start from scratch: Suggest from website reads your website and suggests the profile. And if a draft does not fit, write feedback in plain words — "less formal" — and the AI works it into the profile. Both are suggestions: only what you confirm is adopted.
Core tasks
1. Create the profile
Content → Brand profile (also as a card under Content → Overview). If the brand has no profile yet, Create brand profile creates it; the website address comes from the brand. With several brands, choose the brand at the top right.
2. Suggest from the website
Check the website address and choose Suggest from website. The system fetches the page through its secured outbound channel — it never fetches internal addresses —, reads title, description, headings and text and lets the AI suggest description, tone, audience, topics, taboos, samples and visual style from it.
The suggestion shows the current and the new value per field. Only fields that are still empty are preselected — content you already maintain is only replaced if you tick it. Adopt and save writes the selected fields and records the analysis as of (time and address).
3. Correct by hand
Every field can be edited directly; Save at the top right. Enter topics and taboos as single entries (Enter adds), sample texts as separate paragraphs.
4. Work in feedback
Under Feedback, describe what should change — "less formal", "no exclamation marks", "more examples from the trade". Work into profile shows only the fields that change because of it; they are preselected. From adoption on, every AI generation writes that way.
5. Appearance and products
Logo and colours come from the brand (Settings → Brands) — they are maintained there, and the colours go into every image request. If the Articles module is active, choose up to 20 key articles under Products and services; their name and description go into every text request.
6. Competitors
Competitors lists the rivals the brand is measured against — per competitor a name, website and a note ("strong in video, no shops"). Suggest from website also suggests competitors; in the suggestion they are preselected and are added to the list on adoption — the suggestion never replaces maintained entries. Review the list: remove what does not fit (bin) and add more with Add competitor. The AI sets texts apart from the competitors; it never names them and never copies them.
7. Occasion calendar
The occasion calendar knows holidays and retail occasions per country — New Year, Valentine's Day, Carnival, Easter, Mother's Day, Father's Day, Halloween, Singles' Day, Black Friday, Cyber Monday, Advent, St Nicholas, Christmas, New Year's Eve and more — with the next date and a lead time: that many days ahead, suggestions work towards the occasion. Movable occasions (Easter, Mother's Day, Black Friday) are calculated by the system for every year.
- Calendar country: without a choice, the brand's country (address). Own calendars exist for
Germany, Austria, Switzerland, the United Kingdom, the USA, France, the Netherlands, Italy and Spain; every other country gets the general occasions.
- Deselect: untick an occasion that is none for the brand — it stays visible and can be switched
on again.
- Own occasion: name, date (yearly as
MM-DD, once asYYYY-MM-DD) and lead time (0–90 days),
Add, then Save. A past one-off occasion drops out.
8. What the system knows
On the right, What the system knows shows the state every AI task receives (only with the permission Maintain brand profile, because it shows sales figures):
- Products — key articles, the top sellers of the last 90 days, new arrivals (up to 30 days old)
and articles with overstock (stock lasts longer than 180 days), each with units sold, revenue, margin, stock and the number of photos. Sold-out articles are marked and never promoted; inactive articles never appear in the knowledge.
- Best own posts and best own ads with their figures, learnings from tests with winner and
loser.
- Upcoming occasions of the next 90 days; "Lead time running" means: now is the time.
- How the AI reads it expands the block exactly as the AI reads it.
Sales figures only come where a module provides them: revenue from invoices, cost and stock from the warehouse. Without these modules the columns stay empty — the system estimates nothing. Revenue, margin and stock only steer the choice; they never appear in a text.
Fields in detail
The page reads and writes the profile via /v1/content/brand-profiles; it fetches suggestions via POST /v1/content/brand-profiles/{ulid}/suggestion. The grey name after the label is the API field.
Profile
| Field | Required | Values / format | What it does |
|---|---|---|---|
Brand brandId | yes, on creation | one of your brands | Whose voice the profile describes. Each brand has at most one profile; the brand of a profile never changes. |
Website address websiteUrl | no | http(s) address, at most 500 characters; without a scheme https:// applies | What Suggest from website reads. Without an entry, the brand's website applies. |
What is the brand about? description | no | text, at most 2000 characters | Offering, stance, what sets the brand apart. Goes into every AI request as "brand". |
Tone of voice tone | no | text, at most 1000 characters | Form of address, sentence length, attitude. The AI writes every draft, series and rewrite in this tone. |
Target audience audience | no | text, at most 1000 characters | Who the texts address — industry, role, concerns. |
Topics topics | no | up to 20 entries, at most 80 characters each | What the brand talks about. Duplicate and empty entries are dropped. |
Taboos taboos | no | up to 20 entries, at most 160 characters each | Words, topics or promises that must never appear — in images too. |
Sample texts examples | no | up to 5 texts, at most 1500 characters each | Show the AI how the brand sounds. The first three go into every request. |
Visual style imageStyle | no | text, at most 1000 characters | Subjects, light, mood. Goes into every image request together with the brand colours and the taboos. |
Key articles productUlids | no | up to 20 articles; only with the Articles module active | Name and description of these articles go into every text request. Deleted articles drop out silently. |
Competitors competitors | no | up to 10 entries with name (required, at most 120 characters), website (http(s) address) and note (at most 500 characters) | Rivals to set texts apart from — the AI never names them. Without a name ⇒ error; equal names drop out. |
Calendar country occasionCountry | no | two-letter country code, e.g. DE, AT, US; empty = the brand's country | Which country the occasion calendar is calculated for. |
Deselected occasions occasionsOff | no | list of occasion keys, e.g. halloween, singles_day | These occasions stay visible in the calendar but trigger nothing. |
Own occasions customOccasions | no | up to 20 entries with name, date MM-DD (yearly) or YYYY-MM-DD (once) and lead time 0–90 days (default 14) | Adds the brand's own occasions (anniversary, in-house fair). An unreadable date ⇒ error. |
Shown read-only alongside: name, logo and colours of the brand (brandName, logoPath, primaryColor, secondaryColor, accentColor), the brand's website (brandWebsite), the resolved articles (products, productCatalogAvailable), the analysis as of (analyzedAt, analyzedUrl) and the occasion calendar: the effective country (occasionCountryEffective), the countries with an own calendar (occasionCountries) and per occasion the next date with lead time and switch (occasions).
What the system knows reads GET /v1/content/brand-profiles/{ulid}/knowledge (permission content.profile.manage in the brand): appearance, products (with imageFileUlids, unitsSold, revenueCent, marginPercent, stock, soldOut, isNew, overstock, reasons), posts, ads, learnings, competitors, occasions and promptBlock.
Suggestion
| Field | Required | Values / format | What it does |
|---|---|---|---|
Source source | no | website (default) · feedback | What the suggestion is based on: the website (including competitors) or feedback. |
What should change? feedback | yes with feedback | text, at most 1000 characters | The feedback in plain words. The suggestion names only the fields that change because of it. |
The response carries the suggestion in suggestion. Without a suggestion, aiUsed is false and notice names the reason: aiInactive (no AI configured — the website is not even fetched then), invalidUrl, blocked (internal or blocked address), unreachable, notHtml, empty, noAnswer or unchanged (the feedback changes nothing). This is information, not an error.
Only via API and automation
| Field | Values / format | What it does |
|---|---|---|
analysisAdopted | yes/no | true on saving records the analysis as of — time now, address = saved website. The page sets it when adopting a website suggestion. |
Settings & permissions
- Reading the profile is allowed for anyone who sees posts in the brand (
content.item.view). - Maintaining — creating, changing, requesting suggestions — requires **Maintain brand
profile (content.profile.manage) in this brand**; out of the box the Sales role has it. A permission in another brand is not enough.
- Suggestions need a configured AI (
ai.gateway). Without it the profile can still be maintained by
hand and takes effect as soon as the AI is switched on. The AI task is called Suggest a brand profile (content.brand_profile); like any other it can be assigned to a model and counts against the brand's budget.
FAQ & troubleshooting
"The website could not be reached." Check the address. If the page redirects, the system follows up to three redirects; then it gives up.
"The system does not fetch this address." Internal addresses (e.g. localhost or a company network) are never fetched for security reasons. Enter the public address of your website — or fill in the profile by hand.
My maintained tone of voice was not replaced. Intended: with a website suggestion only empty fields are preselected. Tick the field if the suggestion should replace it.
Revenue and margin are missing in "What the system knows". Revenue comes from invoices, cost and stock from the warehouse. If one of these modules is off or there are no documents yet, the columns stay empty — nothing is estimated.
An article is no longer promoted. It is sold out (stock-managed, nothing available) or inactive. As soon as there is stock again or the article is active, it is back in the knowledge.
A draft does not follow the profile. The profile is a guideline, not a guarantee. Write feedback ("no exclamation marks") or sharpen tone and taboos by hand.