SYNTHETIC DEMONSTRATION · 100% fictional advertiser & data · no real account, campaign, or employer data is shown
← Back to the demo

Architecture & guardrails

The demo is deterministic first: the full guided flow works with no model call. AI is additive, never a single point of failure — and whatever it proposes is checked by the same rules that gate everything else.

DeterministicAI-assistedSimulatedProduction-private

System layers

Calendar ingestion

Deterministic

The year's promo calendar is ingested up front, so promos are preloaded with dates, season, and label. No manual date entry — and it's what lets the workflow scale across accounts, teams, and roles.

Brief ingestion

Deterministic

Marketing's promo doc (.docx/.pdf) is parsed server-side (mammoth / unpdf) and deterministically extracted into current-year facts, each tagged with its provenance — brief vs calendar vs missing.

Data

Deterministic

Static synthetic seed — a fictional advertiser, 8 promos across two years, an account map, two years of KPI history. No database; the whole flow resets instantly.

Copy

AI-assisted

A deterministic golden template fills 15 headlines + 4 descriptions with the promo slot from current facts. AI can propose alternatives; the same rules gate them.

Rules

Deterministic

One pure validation library, shared by the browser and the server route. Every blocking rule runs again server-side before any output.

Export

Deterministic

A 28-column Google Ads Editor CSV — 1:1 unique headlines, per-row Path 1 by category, every ad Paused. Idempotent for identical inputs.

API path

Simulated

An interactive console mirrors a capacity-aware go-live — scan, pause the lowest-L90D RSA to free a slot, label, load paused promo RSAs, handle policy issues — with real API-shaped payloads and no external call.

Measurement

Deterministic

Year-over-year KPI reporting on date-aligned promo windows, keyed by the per-year ad label — the loop that closes planning → execution → result.

The 28-column Google Ads Editor schema

1Ad status2Final URL3Headline 14Headline 25Headline 36Headline 47Headline 58Headline 69Headline 710Headline 811Headline 912Headline 1013Headline 1114Headline 1215Headline 1316Headline 1417Headline 1518Description 119Description 220Description 321Description 422Path 123Path 224Campaign25Ad group26Ad type27Label28Currency code

Headlines map straight 1:1 into columns (Google rejects duplicate headline text in one RSA). Path 1 is derived per-row from the product category; Path 2 is the global promo slug; every ad is exported Paused.

Deterministic validation catalog

emptyAsset is blank.
char_overHeadline > 30 or description > 90 characters.
placeholderBroken DKI / placeholder / template residue.
internal_tokenInternal token or naming convention leaked into copy.
repeated_wordConsecutive duplicate word.
stale_yearReferences a year earlier than the current promo year.
banned_termOff-brand banned term.
toneUrgency / superlative tone violation.
date_refHard slash-date reference — confirm still in-window.
count_hMust have exactly 15 headlines.
count_dMust have exactly 4 descriptions.
dup_headlineDuplicate headline text (Google rejects it).
promo_cap_hAt most one promo headline.
promo_cap_dAt most one promo description.
missing_vpA required value-prop signal is absent.
missing_taglineNo approved brand tagline present.
mix_imbalanceA messaging bucket is over-represented.
column_countCSV must be exactly 28 columns.
url_validityEvery final URL must be valid HTTP(S).
no_duplicate_urlsNo duplicate campaign/ad-group/URL rows.
required_fieldsCampaign, ad group, and final URL are required.
path1_populatedEvery row should have a Path 1 value.

Production mapping

What each demo element stands in for — without exposing real identifiers, data, or code.

This demo
Production (private)
Fictional advertiser + .example URLs
A real ecommerce advertiser and its live catalog (private)
Sample brief parsed in-browser
The marketing dept's real promo doc, parsed + fact-extracted
~28 synthetic rows
~2,371 rows — the same copy broadcast across the product catalog
Deterministic rule catalog below
A production rules library ported to shared TypeScript
Simulated API console (no external call)
Real capacity-aware go-live / revert via the Google Ads API, human-confirmed
Two years of synthetic KPI data
Live YoY performance pulled from the Ads API by label + date window
Static TypeScript seed
Real-time datastore for URL management and promo history

What stays private

The production application, real advertiser data, live account structure, credentials, and the exact production copy corpus are not part of this demo. This public twin is fully synthetic; it demonstrates the workflow, not the confidential system it mirrors.