Marketing
Results and learning
Join ad results to scripts with ad codes, let Borkol learn what works for your brand, keep a golden set and check playbook changes before you accept them.
View as MarkdownBorkol gets better at writing for your brand the more it knows about which ads worked. Results come in, Borkol turns them into learnings, and the learnings you accept go into every next brief. Nothing changes without a person: Borkol proposes, you accept or reject.
Ad codes
Every script has an ad code such as M2610-7KQ3D, and every hook adds its number: M2610-7KQ3D-H1, -H2, -H3. Copy them from the script page: the copy button next to Ad code in the header for the script's code, or Copy hook ad code next to a hook's code. Copy hook copies the hook's text, not its code.
Put the hook's code in the ad name when you publish the ad, anywhere in the name: M2610-7KQ3D-H2 | UGC | v3 works, in capitals or not. Borkol finds the code inside the name when your ad results come in, and joins the result to that script and hook. A code is only matched as a whole word, so XM2610-7KQ3DZ matches nothing. A script you imported keeps the code from your file (for example SPRING-HOOK-04); an ad named exactly that code joins it.
Results on the script
A script's page has a Results box once results joined it: Spend, Impressions, Hook rate (3-second plays per impression), Hold rate (ThruPlays per 3-second play), CTR (clicks per impression), Purchases, Cost per purchase, ROAS (revenue per spend) and Days with results, plus the hook rate Per hook. A rate Borkol cannot compute shows n/a. When results use more than one currency, money totals are left out.
Under it, Per ad lists each ad of the script that spent at least 20 in the last 90 days, marked Winner or Not a winner (see What wins). Without any results the section says No ad results yet, with Import ad results (opens the ad results import) and How importing works.
Results come in two ways, and both are stored the same way:
- Import a results export from your ad platform: Scripts → More → Ad results. See Imports.
- Your agent reports them with the
report_metricstool: one row per ad and day, with the same checks as a file import. See Your agent.
Sending the same ad and day again corrects it; it is never counted twice.
How learnings are made
After every import or report, and once a day, Borkol looks at the last 90 days of results of the brand. It groups the ads by tag (Angle, Hook type, Format, Customer type and Awareness) and compares each tag's Hook rate, Hold rate, Click-through rate, Cost per purchase and Return on ad spend with the brand median.
A tag only becomes a learning when:
- it has at least 3 ads (an ad needs at least 5 in spend to count),
- its ads together spent at least the Minimum spend for a learning (50 by default, under Settings → AI pipeline → More), and
- it is at least 15% above or below the brand median.
Cost per purchase is compared with the brand's average instead of the median, so ads that never sold count as well. A learning reads like "Hook type Question: Hook rate 31% above the brand median".
Confidence follows the amount of data: High from 10 ads and 5 times the minimum spend, Medium from 5 ads and twice the minimum spend, Low below that. Every learning expires 60 days after it was last confirmed by new data, so old conclusions drop out on their own.
The Learnings tab
Marketing → Knowledge → Learnings (/m/marketing/knowledge/learnings) lists them with What we learned, Ads, Spend, Confidence, Status and Expires. Filter on Status, Confidence and Tag. Refresh asks Borkol to look at the results again now.
A new learning is Proposed. The row menu has:
- Accept: the learning becomes Active and goes into the next briefs.
- Retire: the learning is no longer used. Use it for a learning you do not trust.
Click a row to see what backs it before you decide: the tag, the tag's value of the metric, the Brand median (or Brand average), the Difference, the number of ads, the spend in your ad account's currency, the confidence, Refreshed and Expires, then the Scripts behind it (each opens the script) and their Ad codes. Accept and Retire are there as well.
Accepting and retiring need the approve permission. A learning whose 60 days have passed shows Expired and is no longer used.
When the data changes its mind
Borkol never changes an accepted learning by itself. When new results point the other way (the tag that was above the median is now below it), the active learning stays as it is, and a new Proposed learning appears with "Replaces an earlier learning". Accept it and the old one is retired; leave it and nothing changes.
Learnings in the brief
Accepted learnings that have not expired go into every brief under "What worked before", the most relevant and most confident first (at most 12). Like your imported material they are quoted as data. Open What the agent was told on a run page to see exactly which learnings a run used. See Runs.
Golden set
The golden set is a small selection of approved scripts that show what good looks like for the brand: up to 10. Open an approved script, then More actions → Add to golden set, with an optional note. It shows the Golden set pill on the script and in the list, and the Golden set filter on Scripts shows only those. Remove from golden set takes it out. Only an approved script can be in the golden set, and both actions need the approve permission.
Playbook changes
Each step follows a playbook: the instructions behind Research, Angles, Scripts and Check. Marketing → Knowledge → More → Playbooks (/m/marketing/knowledge/playbooks) shows one card per step, with the version in use (Platform playbook v1 or Brand version 2) and Show the text. The Scripts and Check playbooks can get a brand version.
- Click Propose a change on the card and write the whole playbook, with an optional note. Nothing changes yet.
- Open the proposal under Changes. Change shows the current and the proposed text side by side, changed lines marked.
- Run golden check writes and scores scripts for each golden script with the current and the proposed playbook, on your OpenRouter key. The line above the button says how many golden scripts and about what it costs, and you confirm before it starts. It counts toward the monthly limit and pauses there like any run.
- When it is done, the box shows Average score now, Average score proposed, Passed now and Passed proposed, and the score of every golden script on both sides.
- Accept puts the proposal in use for runs started from now on. Runs that already started keep the playbook they started with.
Accept stays off until a golden check of exactly this text has finished ("Run the golden check of this text first."). Edit the proposal after a check and you have to run it again. A check also only counts against the playbook it compared with: when another proposal for the same step was accepted in the meantime, Accept says "The active playbook changed since this check. Run the golden check again.". Reject keeps the proposal in the history as Rejected. Accepting and rejecting need the approve permission.
To go back, open the card's menu and choose Use the platform playbook. The brand version stays in the history.
Without golden scripts the page says "Mark approved scripts as golden set to check playbook changes." with a link to the golden set filter.
Nothing changes without a person
Borkol proposes learnings and you propose playbook changes; only a person with the approve permission accepts them, and every decision is recorded with who made it. Borkol never rewrites a learning, a playbook or your knowledge by itself.