Modulkatalog/paid-ads-manager
Modul, Marketing

Paid Ads Manager

Google, Meta, TikTok. Auto-bidding, budget-shift och creative-rotation.

12/12
Tester godkända
7
Block per bundle
Ed25519
Signering
Produktion
Status
Ladda ner exempel-bundleVerifiera bundleBoka demo
Vad modulen gör

Paid Ads Manager

Modul 7 av 16 i Kapaciti-katalogen. Daglig optimering av betalda annonser pa Google Ads, Meta Ads, TikTok Ads och LinkedIn Ads. Konsumerar en strukturerad performance-snapshot fran kanalerna och returnerar en parsbar handlingslista med budget-omfordelningar, varningar om creative-fatigue, audience-tester och en eskaleringsflagga. Varje rekommendation barer en explicit motivering, ett risk-betyg och ett fortroende-betyg sa teamet far en revisionsbar audit-spar fran snapshot till beslut.

Anvandningsfall

En e-handlare kor 92 000 sek dagligen fordelat over tre eller fyra kanaler. Klockan 06:30 varje morgon dumpas en CSV med foregaende dygns spend, klicks, konverteringar, intakter och kampanj-niva-metrics fran respektive API. Den dumpen omvandlas till modulens input-objekt och modulen kor. Output postas till Slack eller Discord, och budget-omfordelningen knuffas via en godkannande-gate till respektive plattforms API. Vid eskalering vacks en manniska. Bundle-filen sparas med en signerad hash-kedja som senare bevis nar finansavdelningen eller en revisor begar redogorelse for varfor en specifik budget-flytt gjordes.

Input

{
  snapshot_id: "ads-2026-05-19",
  period: { start: "2026-05-12", end: "2026-05-18" },
  channels: [
    {
      name: "google-ads",
      spend_sek: 48000,
      impressions: 420000,
      clicks: 8400,
      conversions: 220,
      revenue_sek: 132000,
      cac_sek: 218,
      roas: 2.75,
      campaigns: [
        { id: "g-brand-001", name: "Brand search", spend_sek: 12000, roas: 8.5, ctr: 0.062, conversion_rate: 0.041, days_running: 90, status: "active" }
      ]
    }
  ],
  total_budget_sek: 92000,
  targets: { min_roas: 2.5, max_cac_sek: 250 },
  brand: { name: "NordWear", voice_profile_id: "customer" }
}

Alla siffror i SEK. roas = revenue_sek / spend_sek, cac_sek = spend_sek / conversions. Modulen accepterar fyra kanal-namn: google-ads, meta-ads, tiktok-ads, linkedin-ads. Andra varden avvisas direkt i validateInput. Kampanj-statusar maste vara active eller paused.

Output

Modulen returnerar en strikt strukturerad textsekvens som parsas av validateOutput och den exporterade rena funktionen parsePaidAdsOutput. Sektioner i ordning:

TOTAL_BEDOMNING: <pa-mal | over-mal | under-mal | kritisk>
ROAS_TOTAL: <number>
CAC_TOTAL_SEK: <number>
KANAL_REKOMMENDATIONER:
- KANAL: <name>
  ATGARD: <oka-budget X% | minska-budget X% | pausa | bibehall | testa-nytt>
  MOTIVERING: <1-2 meningar>
  RISK: <lag | medel | hog>
  FORTROENDE: <lag | medel | hog>
KAMPANJ_VARNINGAR:
- KAMPANJ: <id> | KANAL: <name> | PROBLEM: <kod>
NYA_TESTER_FORESLAG:
- <test 1>
BUDGET_OMFORDELNING_SEK:
- FRAN: <kanal> = -<sek>
- TILL:  <kanal> = +<sek>
ESKALERING_TILL_TEAM: <ja | nej>
ESKALERINGS_ANLEDNING: <text | n/a>
SAMMANFATTNING_PA_SVENSKA:
<3 till 5 meningar redo att postas>

Sammanfattningen ar berattande prosa pa svenska, inte bullets, och designad for att klistras direkt i en daglig kanal utan ytterligare formatering.

Beslutslogik och defensiva regler

Modulen ar byggd med defensiv bias. Vid spretig eller tunn signal valjer den hellre bibehall an aggressiva budget-rorelser. Konkret:

  • oka-budget X% kraver kanalens ROAS over 1.2 ganger min_roas samt minst

medel-fortroende. Procentintervallet ar 5 till 30 procent per dag.

  • minska-budget X% triggas av ROAS under 0.8 ganger min_roas eller CAC

over 1.5 ganger max_cac_sek. Intervallet ar 10 till 50 procent.

  • pausa kraver ROAS under 0.5 ganger min_roas samt minst en kampanj som

kor over 21 dagar utan forbattring. Pausa triggar alltid eskalering.

  • testa-nytt ar for stabila kanaler dar signalen antyder ny audience, ny

creative eller nytt format.

  • bibehall ar default vid tvivel.

Kampanj-varningar foljer faste koder: creative-fatigue, low-ctr, high-cac, days-running-over-30, low-roas, low-conversion-rate. Max fem varningar per kornings, prioriterade efter spend.

Budget-omfordelningen ar nollsumma per definition. Summan av alla FRAN poster maste matcha summan av alla TILL poster inom 1 sek tolerans. Eventuella avvikelser flaggas som budget_not_zero_sum violation och stoppar operationen. Om ingen rorelse foreslas skrivs en enda rad INGA_OMFORDELNINGAR.

Eskalering till team aktiveras automatiskt om TOTAL_BEDOMNING ar kritisk eller om nagon rekommendation ar pausa. Manuell over-ride via en kommande release-flagga.

Audit-bundle

Korningen genererar en signerad bundle med sju block i ordning:

  1. input_received - hela snapshot-objektet.
  2. context_loaded - tomt for denna modul, system-prompten bar all kontext.
  3. agent_call - modell, prompt-langder, voice-profil.
  4. output_generated - rasvar fran Claude plus duration_ms.
  5. voice_validated - ban-ord och ban-tecken-skanning mot voice-profilen.
  6. output_validated - struktur-parse plus alla module-specifika gater.
  7. audit_sealed - status, total_blocks, hash-fingeravtryck.

Varje block ar canonicaliserat, SHA-256-hashat, lankat via prev_hash och signerat med Ed25519. Verifieras via verifyBundle() i lib/audit-chain.mjs eller via fristaende verifier i kapaciti-site/scripts/verify-audit-bundle.mjs. Tamper-test i test-sviten bekraftar att en endaste tecken-andring i ett block bryter kedjan.

Voice-profil

Default-rost ar kapaciti, B2B saklig och kort. Vid kund-leverans satts voice_profile_id: "customer" for neutral professionell ton. Voice-profilen forbjuder orden ensure, crucial, journey, delve, dive, navigate samt tankstreck. Voice-skanningen ar en post-check som flaggar violations utan att stoppa korningen, sa teamet kan se hur ofta modellen halkar fel.

Begransningar och v1.1-prioriteringar

Modulen tar inte hansyn till intra-day-effekter eller saisongsvariationer. LinkedIn Ads ar accepterad i schemat men prompt-exemplen ar tunnaare an for de tre andra kanalerna. Performance Max och Advantage+ campaigns granskas samma som vanliga kampanjer, vilket underskattar deras autopilot-natur. Modulen kor en korning per snapshot, ingen state-bevarning av tidigare rekommendationer aterfinns annu, sa coherence over flera dagar ar inte garanterad. Det loses i v1.1 via en MemoryCard per brand som spar de senaste sju dagarnas atgarder och flaggar inkonsekvens.

Exempel-bundle

Se examples/paid-ads-manager.bundle.json. En realistisk tre-kanal-snapshot for en svensk e-handlare med 92 000 sek daglig spend genererar typiskt 7 audit-block, en eskalering vid pausa-rekommendation och en budget-omfordelning som flyttar 6 000 till 12 000 sek fran underpresterande TikTok till Google.

Prova live

Kör paid ads manager i webbläsaren.

Justera input-objektet eller använd starter-värdena. När du trycker på Kör modulen anropas samma agent som i produktion. Audit-kedjan byggs framför dig och hela sessionen signeras med Ed25519 i samma format som exempel-bundlen ovan.

Input (paid-ads-manager schema)

JSON-payload som matchar modulens validateInput. Starter-värdena kommer från en riktig produktionskörning. Max 12 000 tecken.

Tecken: 2 578 / 12 000
Audit-kedja, live

Audit-kedjan visas här när scenariot körs

● Nyhetsbrev

EU AI Act, sandbox-status och svensk AI-infrastruktur.

En sammanfattning ungefär en gång i månaden. Vad förändrats i regelverket, vilka pilot-cases vi sett och vilka vendor-shifts som påverkar svenska bolag. Skickas av oss, inte av en automation som låtsas vara oss.

Uppgifterna används endast för nyhetsbrevet. Inga utskick utöver det utan separat samtycke. Avregistrera när som helst via länk i mailet.