Private beta · invite only

Run ad campaigns as code, not as clicks.

AdSpec is an ops console for agencies: campaigns live as YAML specs with an optional process script, move through a review workflow, and only then execute against the Google Ads API — with budgets, linting and an audit trail in front of every change.

platform: google_ads
type: search
name: brand-defense-q4
budget:
  daily: 45
  currency: USD
targeting:
  countries: [UY, AR]
  languages: [es]
ad_groups:
  - name: brand
    keywords: ["[acme]", "acme reviews"]

What the console does

Campaigns as code

Every campaign is a versioned YAML spec with an optional process script. Diffable, reviewable, repeatable — no more clicking through five screens to change a budget.

Review workflow

Todo → in-progress → under-review → done, plus failed. Nothing reaches the Google Ads API before a human picks it up, runs a dry run and approves it.

Planner from a URL

Paste a landing page and constraints. AdSpec proposes campaigns, a deterministic daily budget floor from real CPCs, staged rollout and a forecast before you spend.

Multi-client isolation

Each client has its own Google Ads connection, palette, logo, AI context and plan history. Strict row-level security keeps data from ever crossing over.

AI that stays in the spec

Ask for "two more headlines" or "switch to Spanish" and get a concrete YAML change you can review, apply or undo. Unsupported requests are named, not silently dropped.

Pre-flight and audit trail

Deterministic linting, spend alerts, pause/enable controls and a full log of who changed what, when, on which account.

How it works

  1. 01

    Connect a client

    Authorize Google Ads per client with OAuth. Credentials stay encrypted and client-scoped.

  2. 02

    Write or generate the spec

    Start from a template, a voice brief or the URL planner. Lint it before anything goes live.

  3. 03

    Review, then execute

    Dry run, approve, execute. Campaigns are created paused so you keep the last word.

AdSpec is in private beta

Accounts are created by invitation so we can keep support close while the Google Ads coverage grows. Request access and we'll send you a signup link.

I already have an account

Request beta access

Tell us a bit about your setup and we'll send you an invitation link.