# Brand context

**Marketing** → **Brand** (`/m/marketing/brand`) is one page with everything the AI should know about one brand. All of it is optional; each part makes the scripts better. The page has three sections, **What you sell**, **Who it is for** and **Your voice**, and under **More** two more: **Guardrails** and **Examples and documents** (the swipe file and documents, as links with how many each holds). An empty section says what filling it in helps with. Use the brand switcher at the top right to work on another brand; the choice stays in the address bar (`?brand=`).

The profile fields (products, offers, selling points, both voice fields, banned claims and notes) share one bar at the bottom: change a field and **Save** and **Discard changes** appear; **Profile saved** confirms it. Customer types and quotes save per action. If you leave the page or switch brand with unsaved changes, **Discard unsaved changes?** asks first: **Discard changes** or **Keep editing**.

Brand used to have five tabs. Old links to them still work: `/m/marketing/brand/profile`, `/m/marketing/brand/customer-types` and `/m/marketing/brand/voice` open this page at the matching section.

## What you sell

Each field takes one item at a time: type it and press Enter.

| Field | What goes in |
| --- | --- |
| **Products** | One product or service per item |
| **Offers** | Current deals and guarantees |
| **Selling points** | What sets the brand apart |

**Logo** sits under the list: **Choose logo** picks an image from your media library, **Change** and **Remove** replace or clear it. [Scenes](/docs/marketing/scenes) can attach it to the intro or the end.

## Who it is for

**Who it is for** holds the brand's customer types: the kinds of people it sells to, in their own words. Click **Add customer type** and fill in **Name**, **Pains**, **Desires**, **Objections** (one per line each), **Awareness** and **Notes**.

**Awareness** is how much the person already knows: **Unaware**, **Problem aware**, **Solution aware**, **Product aware** or **Most aware**.

Deleting a customer type keeps the quotes linked to it, but they lose the link.

## Your voice

**Your voice** has **Voice: do** (how the brand sounds) and **Voice: don't** (words and tones to avoid), saved with the bar at the bottom.

### Voice of customer

**Voice of customer**, in the same section, is a list of real quotes from reviews, emails and calls, so the AI can reuse your customers' wording. Each quote has its **Quote** text, an optional **Theme**, an optional **Customer type** and a **Source**: **Added by hand** or **Imported**.

- **Paste quotes** adds one or many at once: paste one quote per line; empty lines are skipped.
- **Import** opens the shared import flow for a CSV, TSV, `.xlsx` or `.txt` file (one quote per line). Columns such as `Review`, `Comment` or `Yorum` are recognised as the quote and `Theme` or `Topic` as the theme; when a column is unclear the sheet asks you to choose. The same quote is never added twice. See [Imports](/docs/marketing/imports).

A quote can be up to 5,000 characters and a theme up to 255; a longer row is skipped with its row number, and the other rows land.

## Guardrails

**More** → **Guardrails** holds **Banned claims** (claims that must never appear in a script, one item each) and **Notes**. They save with the same bar as the other profile fields.

## Swipe file

**Swipe file** keeps ads worth learning from. Open it from **More** → **Examples and documents** → **Swipe file** (`/m/marketing/brand/swipe-ads`); **Brand** at the top takes you back. Click **Add swipe ad** and fill in **Title**, **Link**, **Transcript**, **Notes** and **Video length** (seconds, optional). Each link can be in a brand's swipe file once: saving a link that is already there shows "This link is already in your swipe file." under **Link**.

**Tags** are grouped by type: click **Add tag group**, name the group under **Tag group** (for example "hook" or "format") and type values under **Values**, pressing Enter after each.

**Import** brings in many swipe ads at once from a CSV, TSV or `.xlsx` file: one ad per row with a title, a link or a transcript. A link that is already in the swipe file is updated, not added twice. See [Imports](/docs/marketing/imports).

### Video and audio

**Video or audio file** takes a recording of the ad (MP4, MOV, WebM, MP3, M4A, WAV, OGG, FLAC or AAC, up to 20 MB). Borkol writes the transcript for you on your OpenRouter key, with zero data retention (with it off, only providers that do not train on your data), using the **Transcription model** from **Settings** → **AI pipeline** → **More**. The file is kept privately with the ad.

While it works the row shows **Transcribing**; when it is done the transcript replaces what is in the **Transcript** field, links removed. Other states:

| Status | Meaning |
| --- | --- |
| **Transcription failed** | The file could not be transcribed. Hover the pill for the reason, for example that your OpenRouter account is out of credits |
| **Waiting for monthly limit** | The brand reached its monthly limit; raise it under [Costs](/docs/marketing/costs#monthly-limit) |

For both, the row menu has **Try again**. A transcription costs a little and counts toward the brand's monthly limit; it shows under **Costs** → **More** → **By model** as **Transcription**.

### Watch competitors

**Watch** at the top of the swipe file follows competitors in the [Meta Ad Library](/docs/marketing/settings#meta-ad-library). Add an entry with **Type** (**Page** or **Search term**), the **Page id** or **Search term**, and **Countries** (EU countries only: the Ad Library covers ads delivered in the EU; a new entry starts with the countries of your latest one), then click **Add**. A brand watches up to 20 entries; a second copy of one you already have says "You already follow this."

- **Page id** is the number, not the page URL. Open the page in the Ad Library ([facebook.com/ads/library](https://www.facebook.com/ads/library)), search the advertiser and open their page: the address ends in `view_all_page_id=` followed by the id (for example `view_all_page_id=123456789012345`).
- **Search term** finds ads whose text contains the words; it compares without case or extra spaces.

Saving an entry starts an Ad Library check when the connection works, with the notice **Checking the Ad Library: 1 of 3**; after that Borkol checks every day. Without a working connection the dialog says so and the entries are read once it works. The **X** next to an entry removes it.

The ads land in the swipe file with the page name under the title and four extra columns: **Winner score** (0 to 100, always marked **Estimate**), **Days running**, **Copies** (active ads of the same text on that page) and **Reach** (EU reach). The score comes from days running, copies, reach and copies started in the last 14 days. It is an estimate: long-running means the advertiser keeps paying for the ad, not proven sales. Filter with **Source** (**Added by you** or **Meta Ad Library**) and **Delivery** (**Running** or **Stopped**); sort by **Winner score** or **Reach**.

Ad Library ads are read-only: they update with each sync, so they have no **Edit** or **Delete**. Click one for its page, score, ad text and **Open in the Ad Library**; you can upload its video under **Video or audio file** for a transcript and its length. To stop following an advertiser, remove its entry under **Watch**. An import never changes them (see [Imports](/docs/marketing/imports)).

Once ads are scored, **Winner rate by page (estimate)** above the list shows per page how many of its ads score 70 or more ("2 of 3 winners · 67%"), with **Too little data** under 3 ads. Scripts, angles and scenes get the top 8 ads that ran 14 days or more, ranked by winner score, in a section labelled as an estimate, apart from your own results.

## Documents

**Documents** holds your marketing plans, brand guides and research. Open it from **More** → **Examples and documents** → **Documents** (`/m/marketing/brand/documents`); **Brand** at the top takes you back. Click **Upload document**, give it a **Title**, pick a **Kind** (**Marketing plan**, **Brand guide**, **Research** or **Other**) and choose the **File**.

- Accepted files are PDF, DOCX, Markdown and plain text, up to 20 MB.
- Borkol extracts the text from the file and stores both. The list shows **File name**, **Size** and **Extracted characters**; opening a document shows the **Extracted text**.
- At most the first 200,000 characters of extracted text are kept; anything after that is left out of the extracted text and the proposals.
- Some files have no usable text: a scanned PDF or an encrypted PDF has no text layer, and a PDF over 10 MB is stored without text extraction. The file is still stored, and the page says "No text could be extracted. Scanned or encrypted PDFs have no text layer. The file is stored." Such a document proposes no knowledge.
- Each heading in the text becomes a **proposed knowledge entry** (kind **Brand fact**) holding the text under that heading. A text without headings is split into paragraphs instead. A document proposes at most 40 entries. After the upload, a message such as **3 knowledge entries proposed for review** appears with **Review proposals**, which opens the list of proposed entries. Nothing is used until you accept it. See [Proposed entries](/docs/marketing/knowledge#proposed-entries).

Deleting a document removes the file and its extracted text. Knowledge entries created from it stay.

## Setup score

Each brand has a setup score, shown per brand under **Settings** → [Brands](/docs/marketing/settings#brands) (for example "50% complete"). The **Brand** page no longer shows it: empty sections say what is missing instead. It counts six parts, each worth the same:

| Part | Done when |
| --- | --- |
| Brand profile | **Products** or **Selling points** is filled in |
| Customer types | There is at least one customer type |
| Voice of customer | There is at least one quote |
| Swipe file | There is at least one swipe ad |
| Documents | There is at least one document |
| Knowledge | There is at least one knowledge entry, in any status |
