Skip to content

Security

Software that can spend your money needs a shorter leash than most.

This product holds credentials to accounts that spend real budget and reads outcomes from the systems that record your revenue. What follows is how that access is bounded, what the AI is and is not permitted to do, and what is written down every time something changes.

Ad account permissions

Access is granted through each network's own authorisation flow, with the narrowest scope that supports the actions you have enabled. Every connection page states which objects the product can read and which it can write. You can revoke access at the network at any time; nothing here depends on a credential you cannot withdraw.

  • Least-privilege OAuth scopes
  • Read and write scopes listed per network
  • Revocable at the network, not only here
  • Account discovery is read-only

Credentials

Network tokens are encrypted at rest and held only by the services that need them. They are never exposed to the browser, never written into logs, and never present in this marketing site — which holds no secrets at all and can reach nothing.

  • Encrypted at rest
  • Held by the adapter service only
  • Never rendered client-side
  • Rotated on re-authorisation

What the AI is allowed to do

The model cannot call an ad network. It produces structured proposals, and a separate action service decides whether each one is permitted — checking authentication, role, goal scope, the Campaign Constitution, rate limits, the network's actual capabilities, and idempotency before anything executes.

  • No direct network access from the model
  • Every write passes one service
  • Constitution checked before execution
  • Idempotency and concurrency control

Untrusted input

Campaign names, ad copy, URLs, CRM notes and imported content are data, not instructions. They enter the model inside a context boundary and can never widen what a tool is allowed to do. A campaign named to look like a command is still just a campaign name.

  • Collected text is data, never instruction
  • No privilege escalation from content
  • Tool permissions fixed outside the prompt
  • Injection attempts logged

Audit

Every action — automated or human-approved — stores the decision that proposed it, the evidence it rested on, the metric snapshot, the before and after state, the policy evaluation and the result. The log is immutable and exportable, and it survives you leaving.

  • Immutable action records
  • Evidence and policy result stored
  • Before state for rollback
  • Exportable on termination

Financial data

Only the commercial fields optimisation and reporting require are read. The product does no accounting, owns no finance definitions and does not replicate ledgers. Where a margin measure is used, it is referenced by the identifier the finance system publishes rather than recalculated here.

  • Minimum necessary fields
  • No ledger replication
  • Metric ownership stays at source
  • Definitions referenced, not copied

Boundaries

What this product does not do.

Stated plainly, because a security page that only lists capabilities is a sales page.

  • Deciding what your privacy policy should be — a connected consent platform holds that, and this product enforces the state it publishes
  • Reviewing your advertising for regulatory compliance
  • Guaranteeing any advertising result
  • Acting outside the Campaign Constitution, however confident a recommendation is

Reports of a security issue go to [email protected] and are acknowledged before anything else in the queue.

Demo data

Campaign constitution

Hard account limits. The AI may act only inside them, and a rule always beats a recommendation however confident the recommendation is.

Monthly budget
€50,000
Maximum daily budget change
15%
Maximum channel movement per day
€1,500
Minimum conversions before scaling
30
Never pause brand search
On
New creative requires approval
On
New channel requires approval
On
Minimum target margin
65%
Demo data
{
  "decision_id": "DEC-8841",
  "goal_id": "GOAL-annual-saas",
  "decision_type": "cross_channel_reallocation",
  "proposed_actions": ["ACT-2291"],
  "evidence_refs": ["MET-cac-14d", "MET-revenue-90d", "CRM-opp-rate-14d"],
  "metric_snapshot": { "google_cac": 184.02, "meta_cac": 121.37, "target_cac": 140 },
  "confidence": "high",
  "expected_impact": { "customers": 31, "window_days": 30 },
  "risk_level": "low",
  "constitution_checks": [
    { "rule": "max_channel_movement_per_day", "limit": 1500, "value": 1200, "pass": true },
    { "rule": "max_daily_budget_change_pct", "limit": 15, "value": 7.0, "pass": true }
  ],
  "required_approval": false,
  "created_at": "2026-09-22T06:14:22Z"
}

One goal. Every channel. Real business truth.

Connect your ad accounts, say what a good customer is worth, and let the Growth Brain work the objective inside limits you set.

No ad spend commitment · Connect one channel to start · [email protected]