Open in browser → File → Save Page As
PNG
(or right-click SVG → Save image as) → drag into FigJam.
YARD AI-Native Performance Automation
End-to-end campaign lifecycle for Astroport Sariska — 4 Make.com scenarios + 1 brand-memory layer + 1 Sheet.
LEGEND
Google Ads workflow
Meta workflow
Brand memory / Sheet
AI agent (Claude)
Slack notification
Human action
Data flow
Trigger / poll
H
Human-in-loop step
🧠 BRAND MEMORY LAYER
Make data store · YARD - Brand Memory · key = astroport-sariska
• Voice + dos/don'ts
• Audience + geo
• Competitor list
• Historical CPA / CTR / ROAS
• Irrelevant keyword seeds
• Preferred creative angles
• Meta ad account: 11888…39
• Google customer: 8265511239
• YARD MCC login: 4990887790
H
HUMAN INPUT
Drop campaign brief in
Briefs tab
— platforms, budget, KPI,
target value, landing URL.
📊 CAMPAIGN HUB GOOGLE SHEET
Astroport Sariska — Campaign Hub · 6 tabs · the single source of truth for the team
Briefs
campaign intake
+ status
24 columns
BrandMemory
mirror of
data store
23 columns
MetaStrategy
5 concepts
/ brief
15 columns
GoogleStrategy
4 campaigns
/ brief
15 columns
Benchmarks
target KPIs
user confirms
14 columns
OptimizationLog
every check
+ proposal
14 columns
PHASE 1 · PRE-LAUNCH · Brief → Research → Strategy → Sheet
Polls every 15 min · zero human time until approval
G1 · Google Pre-Launch (Make scenario 9215556)
1. TRIGGER
Watch Briefs row where
platforms ∈ {Google, Both}
AND google_status = empty
2. MARK RESEARCHING
Sheet update:
google_status = Researching
3. READ BRAND MEMORY
Data store: GetRecord
key = astroport-sariska
4. AI STRATEGY (Claude)
Claude Sonnet 4.6 returns
JSON: 4 campaigns w/ keywords,
15 RSAs each, negatives, geo
5. WRITE STRATEGY
For each campaign →
addRow to GoogleStrategy
+ seed Benchmarks row
6. MARK STRATEGY READY
Briefs row update:
google_status = Strategy_Ready
7. SLACK PING
"Google strategy ready
— review on Sheet"
H
HUMAN REVIEW
Strategist reads GoogleStrategy. Confirms target KPIs in Benchmarks.
Sets google_status = Approved when ready.
Output:
→ GoogleStrategy tab populated with 4 campaign rows
→ Benchmarks tab seeded with default Google targets
M1 · Meta Pre-Launch (Make scenario 9215557)
1. TRIGGER
Watch Briefs row where
platforms ∈ {Meta, Both}
AND meta_status = empty
2. MARK RESEARCHING
Sheet update:
meta_status = Researching
3. READ BRAND MEMORY
Data store: GetRecord
key = astroport-sariska
4. AI CREATIVE BRIEFS (Claude)
Claude Sonnet 4.6 returns JSON:
2 static + 2 carousel + 1 video
w/ hook, copy, visual direction
5. WRITE CONCEPTS
For each concept →
addRow to MetaStrategy
+ seed Benchmarks row
6. MARK STRATEGY READY
Briefs row update:
meta_status = Strategy_Ready
7. SLACK PING
"Meta creative brief ready
— 5 concepts for designer"
H
HUMAN REVIEW + DESIGN
Designer drops assets in Drive. Strategist confirms Benchmarks.
Sets meta_status = Approved when ready.
Output:
→ MetaStrategy tab gets 5 concept rows
→ Benchmarks tab seeded with Meta defaults
PHASE 2 · POST-LAUNCH · Approval → Build → 24h Health → 72h Optimisation
Runs hourly · scans Briefs · routes to right branch per row
G2 · Google Post-Launch (scenario 9215558 · hourly schedule)
TRIGGER (hourly)
Filter Briefs sheet for all
Astroport campaigns
READ BRAND MEMORY
Loads brand context
for Claude later
ROUTER
Per-row branch decision below
BRANCH A · BUILD
When: google_status = Approved AND launch_at empty
1. READ GoogleStrategy
filterRows by brief_id
2. Google Ads API
create campaigns PAUSED
3. Sheet update
google_status = Built
4. SLACK PING
"Built — flip live in Ads UI"
H
Human flips campaigns ENABLED in Ads UI
+ sets google_status = Live with timestamp
BRANCH B · 24h HEALTH
When: status=Live, ≥24h elapsed, check not done
1. PULL METRICS
GAQL last_7d perf
2. CLAUDE DIAGNOSE
vs Benchmarks
3. LOG
addRow OptimizationLog
4. SLACK
"Within tolerance" or alert
5. Mark google_24h_check_done = TRUE
prevents re-firing on the same row
BRANCH C · 72h OPTIMISE
Search terms → negatives proposal · every 72h
1. SEARCH TERMS
GAQL last_7d top 200
2. CLAUDE OPTIMISER
out-of-context negatives only
3. LOG + STAMP
last_optimization_at = now
4. SLACK PROPOSAL
list of negatives + actions
H
Human reads Slack · 👍 to apply negatives
YARD applies via Google Ads mutate API after thumbs-up
M2 · Meta Post-Launch (scenario 9215559 · hourly schedule)
TRIGGER (hourly)
Filter Briefs sheet for all
Astroport campaigns
READ BRAND MEMORY
Loads brand context
for Claude later
ROUTER
BRANCH A · BUILD
When: meta_status = Approved AND launch_at empty
1. READ MetaStrategy
filterRows by brief_id
2. Meta Marketing API
campaign + adsets PAUSED
3. Sheet update
meta_status = Built
4. SLACK PING
"Built — flip live in Ads Mgr"
H
Human flips ACTIVE in Meta Ads Manager
+ sets meta_status = Live with timestamp
BRANCH B · 24h HEALTH
When: status=Live, ≥24h elapsed, check not done
1. PULL INSIGHTS
FB Graph last_7d perf
2. CLAUDE DIAGNOSE
CPL, CTR, freq vs Benchmarks
3. LOG
addRow OptimizationLog
4. SLACK
"Within tolerance" or alert
5. Mark meta_24h_check_done = TRUE
prevents re-firing on the same row
BRANCH C · 72h FATIGUE + ANGLES
Fatigue detection → 2-3 new ad-angle proposals
1. AD-LEVEL INSIGHTS
last_14d ad-by-ad metrics
2. CLAUDE FATIGUE+ANGLES
detect fatigue + propose 2-3 new
3. LOG + STAMP
last_optimization_at = now
4. SLACK PROPOSAL
"Pause fatigued ad · launch X"
H
Human reads Slack · 👍 to greenlight new angles
Designer builds the new creatives · scheduled for next ad set
OUTCOMES vs traditional agency
~95%
faster brief→strategy
days → hours
~90%
faster strategy→launch
days → hours
< 24h
anomaly detection lag
vs 5-7 days (weekly review)
~65%
less wasted spend
25-35% → 8-12% per campaign
3×
optimisation cadence
every 72h vs weekly
~80%
lower FTE per client
2.5 FTE → 0.5 FTE
30 min
to onboard a new brand
data store record + 4 scenario clones
∞ scale
across all clients
one architecture, many brands
0 surprises
every action human-approved
automation proposes · humans decide