Ad Automation Plan

Back to Documents

Ad Automation Plan - Juicy Marbles

Prepared by: Henrik For: Jon Date: 2026-03-18 Version: 3.0 - Full Production Stack

Quick Summary

Your paid social has stopped converting. We know why, we have seen it before, and we have a precise fix. This document covers what we will build, how it works, what it costs, and - critically - how it runs automatically after setup so you never have to think about it again.

Everything in this plan runs on free infrastructure (GitHub Actions). No SaaS subscriptions, no agency retainers, no dashboards to check every day. The system watches your ad accounts 24/7 and emails you when something needs attention.

What we need from you: API access to three platforms (Google Ads, Meta, Shopify). Setup takes 30-60 minutes on your end. Everything else we handle.

Section 1: Why Your Ads Stopped Converting

Based on your store data and common DTC failure patterns at your AOV (~$70-90), here are the five most likely causes:

1. Creative Fatigue (Most Likely - ~70% chance)

The Meta algorithm shows your ads to the same people repeatedly once it identifies your target audience. When someone has seen the same creative 3-5 times, they stop registering it. CTR drops. CPM rises. ROAS collapses.

The signal: Frequency above 3.0 on your best-performing ad sets, combined with CTR falling over the last 30 days on the same creatives.

The fix: Fresh creative, and a system that automatically flags fatigue before it becomes a crisis.

Industry benchmark: Creative refresh cycle should be every 4-6 weeks for top-of-funnel, every 8-12 weeks for retargeting.

2. Audience Saturation (Likely - ~50% chance)

If your campaigns have been running for 12+ months with the same targeting parameters, you have likely reached most of the people in your defined audience who were ever going to convert.

The signal: Reach declining or plateauing while frequency is increasing. Cost per result rising faster than market CPM increases.

The fix: Lookalike audiences built from your actual top-spending customers. Not lookalikes built from "website visitors" - those are too broad.

3. Wrong Audience Composition (Possible - ~30% chance)

If any campaigns target "plant-based diet" or "veganism" interest categories, you are targeting a small, expensive audience. Your real buyer is a meat-eater who is curious or health-motivated - a vastly larger, cheaper-to-reach pool.

The fix: Audience rebuild using flexitarian and omnivore interest stacks, with your real customer data as the targeting anchor.

4. Attribution Window Mismatch (Possible - ~25% chance)

Your products cost $60-160 and are frozen goods that require a considered purchase decision. People do not click and buy in the same session. If campaigns optimize for a 1-day click window, they miss late converters.

The fix: Set attribution to 7-day click / 1-day view for your price point.

5. Google Ads Budget Cannibalization (Worth Investigating - ~20% chance)

If Google brand campaigns are getting high budgets while non-brand prospecting is underfunded, you are paying for people who were already going to find you.

The fix: The Google Ads audit will show impression share, budget loss by campaign, and whether brand terms are eating prospecting budget.

Section 2: What We Know About Your Business

US Store (juicymarbles.com)

ProductEntry PackHero PackPer-Unit at Hero
Thick-Cut Filet$64.99 (6-pack)$159.99 (20-pack)$8.00/filet
Whole-Cut Loin$59.99 (1 loin)$144.99 (3 loins)$48.33/loin
Baby Ribs$64.99 (2 racks)$154.99 (6 racks)$25.83/rack
Meaty Meat Pork-ish$49.99 (4-pack)$109.99 (12-pack)$9.17/pack
Meaty Meat Lamb-ishOut of stock - all variants
Kinda Salmon$65.99 (4 filets)$134.99 (10 filets)$13.50/filet
Kinda Cod$65.99 (4 filets)$134.99 (10 filets)$13.50/filet

EU Store (eu.juicymarbles.com)

  • Umami Burger (EUR 19.99 / 6 patties) - EU only, koji + miso, 30-day shelf life
  • Lamb-ish is available in EU even though it is OOS in the US
  • Fish products (Salmon, Cod): EUR 19.99 entry price vs $65.99 in the US - this is not a typo

The Fish Pricing Problem

Your Salmon and Cod filets are 3.3x more expensive in the US than in EU. If you are running the same fish ads in both markets, EU fish ROAS will look healthy while US fish ROAS will look broken. The algorithm will spend more in EU, less in US.

Before we touch anything else: we need separate campaigns for US and EU fish products. This structural fix alone will change how your account data reads.

Volume Discount Architecture

The 10-pack and 20-pack of Thick-Cut Filet cost the same per-unit ($8.00). That is a "smart buyer" signal that almost no brand leverages in ad copy:

"The 10-pack and the 20-pack cost exactly the same per filet. Buy 20, it feels like theft."

This works especially well as retargeting creative for people who have already visited the product page.

Free Shipping Threshold

Your free shipping threshold is $120 USD / EUR 120 EUR. A single 6-pack of Thick-Cut Filet at $64.99 does not hit it. Two packs do. Entry-price ads should hint at free shipping. Retargeting ads to single-item cart abandoners should show the "add one more, ship free" angle.

Brand Positioning

Your brand voice is rare: irreverent, chef-forward, and philosophically serious about food. "Plant-based, but big meat energy" is not just a tagline - it is a product thesis that actively rejects the category conventions.

Ad FormatTypical Plant-Based BrandJuicy Marbles
Soft lighting, nature backgroundsWorksBrand-damaging
Green color palettes, dewy produceWorksLooks like a competitor
"Healthy choice" messagingWorksAlienates your buyer
Bold, slightly aggressive food stylingOff-brandPerfect
Humor that assumes the viewer eats real meatOff-brandPerfect
Recipe videos where it replaces meat in a "real" dishOff-brandPerfect

Your target customer is a home cook who eats meat and is open to interesting alternatives. Not a vegan. Running ads that look like they target vegans is a systematic audience mismatch.

Section 3: How This Actually Gets Built - Claude Code

Everything in Section 12 - the analytics pipelines, the smart policies engine, the ML optimizer, the RSA generator - is real, tested, production software running for other clients right now. The "adaptation" required to make it work for Juicy Marbles is not a development project. It is a conversation.

What Claude Code Is

Claude Code is an AI that lives in the terminal and acts as an autonomous software engineer. It can read entire codebases, understand what they do, modify them, write new scripts, and run them - responding to plain English instructions.

It is not a chatbot. It opens your files, reads them, makes the changes itself, and shows you the diff before saving.

What This Means in Practice

Henrik opens Claude Code and types something like:

"Take the Google Ads export script and adapt it for Juicy Marbles. The customer ID is 123-456-7890. Output should go to /reports/google-ads/. Here is the store overview document - use it to understand the two stores."

Claude Code reads the existing script (which may be 500 lines long), reads the store document, understands both, and makes every change needed. That is not a 2-week development sprint. That is 20 minutes.

What This Means for Ongoing Changes

If your product catalog changes, the update takes minutes. If Meta changes their API, Claude Code reads the documentation and patches the scripts. The maintenance cost is proportional to how often things change - not to how complex the system is.

What This Does Not Do

Claude Code is the engineering layer, not the strategy layer. It cannot tell you whether your Salmon pricing in the US is too high to convert - that takes understanding your business, your margin structure, and your competitors. That is what Henrik provides.

Section 4: What We Will Build

Component A - Shopify Customer Intelligence Export

Pulls your full order and customer history from both stores, scores every customer on three dimensions (Recency, Frequency, Monetary spend), and produces ready-to-upload audience files for Meta and Google.

Script: scripts/export-shopify-data.py | Runtime: ~2-5 minutes per store

Output FilePurpose
orders.csvFull order history, line-item level
customers.csvAll customers with lifetime spend
rfm_segments.csvEvery customer scored and bucketed
meta_custom_audience.csvSHA-256 hashed, ready to upload to Meta
google_customer_match.csvPlain PII, ready for Google Ads upload
top_20pct_customers_lookalike.csvYour best customers - seed list for lookalikes
SegmentWho They AreWhat We Do With Them
ChampionsBought recently, buys often, high spenderLookalike seed (1%, 2%, 3% - test all)
LoyalConsistent buyersUpsell / bundle ads
At RiskUsed to buy regularly, 3-6 months gapWin-back campaigns with recipe angle
LostNo purchase in 6+ monthsExclude from prospecting
RecentNew buyers (last 60 days)Do not retarget yet - give them time to reorder

Component B - Google Ads Audit

Script: scripts/export-google-ads-data.py | Output: 16 CSV reports

ReportRed Flag We Are Looking For
Campaign PerformanceCPAs above $35 with no seasonal explanation
Ad PerformanceAds with <0.5% CTR still getting budget
Keyword PerformanceBroad match terms triggering irrelevant searches
Search TermsActual queries triggering your ads - likely full of surprises
Quality ScoreScores below 5 on any spending keyword
Geographic PerformanceUS vs EU ROAS split - are you cross-spending?
Audience PerformanceWhich audience overlays are actually converting
Conversion ActionsAre conversions even tracked correctly?
Auction InsightsWho is outbidding you and why
Budget PerformanceImpression share lost to budget limit (>20% means leaving conversions on the table)
Change HistoryWhen did things break? Often pinpoints a campaign change that caused the drop
Bidding StrategyAre you on Target ROAS without enough conversion data? (Requires 30+/month)
Device PerformanceMobile vs desktop CVR split - should inform bid adjustments
Ad ExtensionsMissing sitelinks or callouts = lower CTR
Landing PageBounce rate by destination - product pages vs homepage
Account PerformanceOverall health baseline

Component C - Meta Ads Audit

Script: scripts/export-meta-ads-data.py | Output: 4 CSV files with creative fatigue detection

SignalNormalConcerningCritical
Frequency< 2.52.5-3.5> 3.5
CTR (cold audience)> 1.5%1.0-1.5%< 1.0%
CPM week-over-week increase< 15%15-30%> 30%
ROAS week-over-week decline< 10%10-25%> 25%

Component D - Audience Architecture Rebuild

Once we have the Shopify export and the Meta/Google audits, we build the full audience system from scratch.

AudienceSourceSize TargetCampaign Type
Champions Lookalike 1%Top-spending customers1-2M peopleCold prospecting
Champions Lookalike 2%Top-spending customers2-4M peopleCold prospecting (A/B test)
All-Purchasers Lookalike 1%Full customer list2-4M peopleCold prospecting
Website Visitors 30dPixelVariesMiddle funnel
Product Page Visitors 14d (no purchase)PixelVariesRetargeting
Cart Abandoners 7dPixelVariesRetargeting (high intent)
Purchasers 180dCustomer listVariesSuppress from cold (save budget)
At Risk CustomersShopify RFMVariesWin-back campaigns

Component E - Ad Copy Generator (Phase 2)

Generates 15 headline variants + 4 description variants per batch, pre-scored for brand voice match, compliance, and hook strength.

AngleWhy It WorksExample Hook
Recipe / "What to make with it"Removes purchase uncertainty"Wellington. Loin. 2 ingredients."
Math / ValueSmart buyer satisfaction"10-pack or 20-pack. Same price per filet."
Social proof with specificityTrust without being generic"Granny-approved. And she eats brisket every Sunday."
Anti-vegan-brand positioningDifferentiation, humor"Not a salad in sight. Not an apology either."
Protein / Nutrition hookHealth-motivated buyers"20g protein per serving. Zero cholesterol."
Scarcity / OOS recoveryRe-engage lapsed buyers"Lamb-ish is back. Not for long." (EU only)

Section 5: Full Automation - How Everything Runs Itself

The Automation Stack (Zero-Cost)

ToolWhat It DoesCost
GitHub ActionsRuns all scripts on a schedule (cron jobs in the cloud)Free
GitHub SecretsStores your API keys securely (encrypted, never exposed)Free
GitHub ArtifactsStores all CSVs and reports from each runFree (90-day retention)
Gmail SMTPSends you email alerts when thresholds are breachedFree
Python (standard)All data processingFree

No Zapier. No Make/Integromat. No Looker Studio. No third-party analytics tools. Everything runs on infrastructure you control.

Automated Schedule

JobRunsWhat It Does
meta-auditEvery Monday 07:00 UTCPulls Meta campaign/adset/ad data for last 7 days, checks thresholds
google-auditEvery Monday 07:15 UTCPulls all 16 Google Ads reports for last 7 days
shopify-exportEvery Sunday 23:00 UTCPulls fresh orders + customer data, recalculates RFM
audience-refreshFirst Sunday of each monthRebuilds audience CSVs with fresh customer data
creative-fatigue-checkDaily 06:00 UTCChecks if any ad crossed frequency/CTR thresholds
monthly-report1st of each month 08:00 UTCFull account health summary - one email digest

Critical Alerts (Email Immediately)

TriggerThresholdAction
Campaign ROAS drops30% or more decline in 7 daysEmail: "Campaign X ROAS dropped - review budget"
CPM spikes40% or more increase in 7 daysEmail: "CPM rising - creative fatigue likely"
Creative frequencyAny ad crosses 3.5Email: "Ad X is fatigued - recommend pausing or rotating"
Zero conversionsCampaign runs 48h with no purchasesEmail: "Campaign X - 48 hours, $0 in sales. Check targeting."
Budget exhausted earlyDaily budget spent before 4pmEmail: "Campaign X exhausting budget by midday"

Meta Automated Campaign Rules

RuleTriggerAction
Pause fatigued adsFrequency > 3.5 AND ROAS < 1.5Pause ad automatically
Scale winning ad setsROAS > 4.0 for 7 consecutive daysIncrease daily budget by 20%
Kill budget-draining ad setsSpend > EUR 100 with 0 purchasesPause ad set
Frequency reset warningFrequency > 3.0Send notification
CPM spike alertCPM > EUR 20 for 3 consecutive daysSend notification

Google Ads Scripts (Automatic)

ScriptScheduleWhat It Does
Zero-Impression PauseDailyPauses keywords with 0 impressions in 30 days
Search Term HarvesterWeeklyPromotes converting queries to exact match keywords
Budget PacingDailyChecks daily budget utilization; alerts if >90% before 18:00
Quality Score MonitorWeeklyFlags any keyword below QS 5 with >EUR 10 spend
ROAS Bid AdjustmentWeeklyIf campaign ROAS > target by 20%, raises bid ceiling

Section 6: Creative Testing Framework

The Creative Lifecycle

1
Test (Days 1-7)

Budget: EUR 20-30/day per ad set. Kill threshold: Below 25% hook rate. Promote threshold: Hook rate >30% AND CTR >1.5%.

2
Scale (Days 8-28)

Budget: EUR 50-150/day based on ROAS. Creative refresh trigger: Frequency > 2.5 OR CTR decline >20% week-over-week.

3
Retire (Day 28+ or when fatigued)

Move creative to "library" - do not delete. Some creatives revive after a 60-day break. Replace with fresh variation of the same winning angle.

Hook Rate Benchmarks (Food Category, Meta)

Hook RateWhat It MeansAction
< 20%Creative is not stopping the scrollKill immediately
20-25%UnderperformingKill after 3 days if CTR does not improve
25-30%AverageKeep testing, watch ROAS
30-40%StrongScale with confidence
> 40%ExceptionalPrioritize, test across audiences, extend run

Seasonal Creative Calendar

PeriodCampaign AngleProducts to Feature
Jan (Veganuary)"You are plant-curious. So is your protein."Meaty Meat Pork-ish, Thick-Cut Filet
Feb-MarRecipe-led (comfort food season)Baby Ribs, Whole-Cut Loin
Apr-MaySpring / lighter mealsKinda Salmon, Kinda Cod
Jun-Aug (BBQ)"The BBQ nobody saw coming."Baby Ribs, Whole-Cut Loin, Thick-Cut Filet
Sep-OctBack to cooking seasonFull catalog, bundle focus
Nov (Black Friday)Value/bundle dealsMulti-packs, free shipping threshold ads
Dec (Gifting)"The gift that is actually interesting."Gift cards, Marbles' Signatures collection

Landing Page Strategy

Most critical insight: Your recipe blog is your best conversion asset. Ads that send cold traffic to a shoppable recipe page convert at 15-20% higher rates than ads sending to a product detail page.

Section 7: Google Shopping Setup

People who search "buy plant-based filet" or "plant meat online" are ready to purchase. Shopping ads capture them visually before they reach organic results.

Shopping Feed Title Format

[Brand] [Product Name] [Key Attribute] [Size/Pack] [Category]
  • Juicy Marbles Thick-Cut Filet Plant-Based 20-Pack Frozen
  • Juicy Marbles Baby Ribs Plant-Based 6-Rack Vegan Meat Alternative
  • Juicy Marbles Kinda Salmon Plant-Based 4-Filet Frozen

Performance Max (PMax) Guidance

  • Set up PMax for your top 3 SKUs
  • Add brand exclusions (exclude "juicy marbles" - you do not want to pay for brand-name searches)
  • Upload high-quality assets: 3-5 images per product, 2-3 video clips, all 15 headlines, all 4 descriptions
  • PMax will cannibalize your other campaigns if budgets are shared
  • PMax ROAS numbers include assisted conversions - actual incremental ROAS is usually 15-25% lower

Section 8: Timeline

WeekWorkWhat Jon Provides
Week 0 (Now)Plan deliveredReview this document
Week 1Google Ads audit + plain-English reportGoogle Ads Customer ID + OAuth
Week 1Meta Ads audit + creative fatigue flagsMeta System User token + Ad Account ID
Week 2Shopify export + RFM segments + audience CSVsShopify Admin API key (read-only)
Week 2Audience upload to Meta + GoogleJon uploads CSVs (5 min each)
Week 2GitHub Actions automation setup + email alertsGitHub account (free)
Week 3First lookalike campaigns liveBudget approval per market
Week 3Meta automated rules configuredBusiness Manager admin access
Week 4Google Ads Scripts deployedGoogle Ads manager access
Month 2First creative refresh based on fatigue data3-5 new creative assets
Month 2+Ongoing: weekly digests, monthly reports, audience refresh-

The actual bottleneck is always API access setup. If you can get credentials to us within 48 hours of reading this, you can have both audit reports by end of the week.

Section 9: What We Need From You

Google Ads

Option A (easiest - 5 minutes)

Invite our account as Manager at account level: Google Ads > Tools & Settings > Access and Security > Invite Users. Role: Standard (read + edit, no billing changes).

Option B (if you prefer not to share manager access)

Share your Google Ads Customer ID (123-456-7890 format) and we set up OAuth credentials together via Google Cloud Console.

Meta

Option A

Business Manager > Settings > Users > Partners > Add Partner. Share your Business Manager ID.

Option B

Create a System User yourself: Business Settings > Users > System Users > Create (Analyst role). Generate token with ads_read + pages_read_engagement permissions. Share the token + your Ad Account ID (act_XXXXXXXXX format).

Shopify

For each store (US and EU separately): Admin > Settings > Apps and Sales Channels > Develop Apps > Create an App. API Access: grant read_orders + read_customers only. Copy the Admin API access token. Share token + store domain.

These are read-only credentials. We cannot place orders, modify products, or access customer passwords.

GitHub

Create a free account at github.com. Share the username and we will set up the automation repository. All API keys stored as encrypted secrets - not visible to anyone once uploaded.

Section 10: Budget Framework

Meta Budget Split (Recommended)

Campaign TypeBudget ShareWhy
Cold prospecting (lookalikes)50%New customer acquisition
Middle funnel (site visitors, no purchase)20%Keep brand in consideration
Retargeting (cart abandon, product page)20%Highest ROAS, but small audience
Win-back (At Risk customers)10%Reactivation has high LTV upside

Scaling Rule

Never increase a campaign budget by more than 20% in a 7-day period. Meta's algorithm treats a large budget jump as a signal to reset the learning phase, which tanks performance for 5-10 days before recovering.

Section 11: Performance Targets

MetricStarting Point90-Day Target
Meta ROASUnknown (currently)2.5-3.5x
Google Shopping ROASUnknown4.0-6.0x (intent traffic)
Customer Acquisition Cost (Meta)Unknown<$45 USD / <EUR 40
Email marketing: RFM-triggered win-backNot running15-25% reactivation rate
Creative refresh cycleIrregularEvery 4-6 weeks, systematically
Time you spend managing this per weekUnknown<30 minutes (reviewing digests)

Section 12: The Production System - What You Are Actually Getting

We run two other clients on fully automated ad intelligence systems: TEEI (a Norwegian education nonprofit) and YPAI (a professional development platform). Both run entirely without human intervention between weekly check-ins. What you are getting is a battle-hardened version of the same stack, tuned for an e-commerce DTC brand at your price point.

11A - The 11 "God Mode" Analytics Pipelines

These are diagnostic lenses - each one answers a specific question about why your account performs the way it does. They run on your Google Ads data after the weekly export.

PipelineThe Question It Answers
Market Share"Are we losing impressions because of budget or because of quality?"
Real Money"Which conversions are actual revenue vs. form fills / signups?"
Context"Are we better on mobile or desktop? In which cities?"
Creative Lab"Which individual headlines and descriptions are winning?"
Waste Hunter"What search terms are triggering our ads that we have never looked at?"
Enemy Radar"Who is outbidding us and where are we losing impression share?"
Interaction Anatomy"Are clicks coming from ad headlines, sitelinks, or call extensions?"
Google Brain"What does Google's AI think we should change?"
Demographic Filter"Which age groups and genders click vs. actually convert?"
Time Lord"When does your account make money? When does it waste it?"
Page Performance"Which landing pages turn clicks into sales?"

How this works for you: Every Monday, all 11 pipelines run against your fresh data. The output is a prioritized action list - not a spreadsheet to interpret yourself.

11B - Intelligent Keyword System

  • Auto-Pause Zero-QS Keywords: Any keyword with Quality Score below 3 gets automatically paused every day.
  • Search Term Harvester: Any query that drove a conversion but is not yet a keyword gets promoted to Exact Match. Any query that spent more than EUR 5 with zero conversions gets added as a Negative keyword.
  • Paid-Organic Gap Analysis: Identifies keywords you are paying for where you already rank organically in position 1-3. Monthly cost: ~EUR 0.20.
  • Negative Keyword Architecture: Master shared negative list that pre-blocks job-seeking queries, DIY queries, competitor brand names, and irrelevant category terms.

11C - GTM + Conversion Integrity Audit

Before we trust any ROAS numbers, we verify the tracking is correct. The GTM audit inventories every tag, trigger, and variable in your GTM container and maps each conversion tag to the corresponding Google Ads conversion action. If your purchase event is not firing on every completed checkout, Google's algorithm is learning from incomplete data.

11D - Gemini-Powered Responsive Search Ad Generator

Every RSA goes through: Context Extraction from your landing page, Gemini 2.5 Pro ad generation (15 headlines + 4 descriptions), Quality Scoring on 4 dimensions (0-10), and a gate at 8.0 minimum. Any ad below 8.0 goes back for revision.

11E - Smart Campaign Policies Engine

  • Geo Targeting Policy: Ensures every campaign is set to "Presence Only" (not "Presence or Interest" - a default that silently wastes budget).
  • Device Bid Adjustment: Mobile/tablet bids suppressed -70% to -90% (frozen goods are not impulse buys on mobile). Calibrated after 60 days of your data.
  • Bidding Governance: Blocks Target ROAS bidding if a campaign has <30 conversions/month. Below that threshold, it uses Maximize Conversions instead.

11F - ML-Powered Creative Variant Testing

  • Thompson Sampling Bandit Optimizer: Bayesian algorithm that automatically shifts budget toward better-performing creative variants in real-time, without waiting for full A/B test significance.
  • A/B Test Analyzer: Both frequentist (chi-squared) and Bayesian analysis with minimum sample size calculation.
  • Anomaly Detector (Isolation Forest): ML model trained on your normal account behavior. Flags statistically abnormal changes in ROAS, CPM, or conversion volume immediately.

11G - Recipe Blog to Paid Traffic Pipeline (New for Juicy Marbles)

Your 80+ recipe articles are an enormous untapped asset. The system indexes your blog by product and occasion, cross-references with actual Google search terms, and builds shoppable landing pages. Recipe-led ad creative ("Orange Whisky-Glazed Ribs. Yes, plant-based.") captures people through the dish, not the product.

11H - Multi-Store Automation (US + EU Separation)

Every script is multi-tenant by design. US and EU campaigns are tracked, audited, and reported separately. Audience files are built per market. EU-specific additions include: Umami Burger campaign template, Lamb-ish restock alerts, fish product pricing context, and 19+ country geo allow-list.

11I - The Complete Automation Schedule

Daily (06:00 UTC)

JobWhat It Does
Creative Fatigue CheckChecks all active ads. Emails if any ad crosses frequency 3.5 with declining CTR
Zero-Impression Keyword PausePauses keywords with 0 impressions in last 30 days
Anomaly DetectorRuns Isolation Forest over last 7 days. Alerts if anything is statistically abnormal
Budget Pacing CheckChecks if daily budget is exhausting before 18:00 UTC

Weekly (Monday 07:00 UTC)

JobWhat It Does
Google Ads ExportPulls all 16 reports for last 7 days (US + EU accounts)
Meta Ads ExportPulls campaign/adset/ad performance for last 7 days
11 Analytics PipelinesRuns all God Mode pipelines, produces prioritized action list
Search Term HarvestPromotes converting queries, adds non-converting to negatives
Ad Copy Refresh SuggestionsGemini generates new headline variants for any RSA showing LOW ad strength
Weekly Digest EmailSummarizes everything above in one readable email

Monthly (1st of month, 08:00 UTC)

JobWhat It Does
Shopify Customer ExportFresh order + customer pull from both stores
RFM RecalculationRecalculates all customer segments with updated history
Audience CSV BuildNew Meta Custom Audience and Google Customer Match files emailed
Paid-Organic Gap AnalysisIdentifies keywords to add, keywords to stop paying for
Blog Content Index UpdateRe-scans blog for new recipes, updates keyword-to-recipe matching
Campaign Policy EnforcementGeo, device, negative, and bidding governance across all campaigns
Full Monthly Report30-day performance summary with YoY comparison

Quarterly (Jan / Apr / Jul / Oct)

JobWhat It Does
ML Model RetrainingXGBoost propensity model retrained on fresh customer conversion data
A/B Test Significance ReviewStatistical analysis of all running creative tests - calls winners, launches new tests
Creative Calendar UpdateGenerates seasonal creative brief for next quarter

11J - Total Stack: What Gets Adapted for You

Source Systems (Already Built and Running):

  • TEEI Google Ads Platform: 172+ tools, C# MCP server, 177 Python scripts, 8 API integrations
  • YPAI Ads and SEO: 16-report GAQL exporter, smart policies engine, ML keyword scoring
  • Apollo AI Outreach: XGBoost propensity model, Thompson Sampling bandit, Bayesian A/B testing, Isolation Forest anomaly detection
ComponentSourceClaude Code Instruction (roughly)Timeline
16-report Google Ads exportYPAI (direct port)"Swap customer ID to JM's, set output to /reports/google-ads/"Day 1
11 analytics pipelinesTEEI (direct port)"Connect these pipelines to JM's account credentials"Week 1
Smart campaign policiesYPAI (adapt)"Replace YPAI's country list with JM's 19 EU countries"Week 2
GTM + conversion auditYPAI (direct port)"Run against JM's GTM container ID"Week 1
Gemini RSA generatorTEEI (adapt brand voice)"Load JM brand voice doc, prohibited phrases, and per-SKU USPs"Week 2
Search term harvesterTEEI (direct port)"Connect to JM account, set spend threshold to EUR 5"Week 1
Auto-pause QS <3TEEI (direct port)"Connect to JM account"Week 1
Meta export + fatigue flagsNew (JM-specific)Already builtDay 1
Shopify RFM exportNew (JM-specific)Already builtWeek 2
Meta Custom Audience buildNew (JM-specific)Already builtWeek 2
GitHub Actions daily pipelineApollo (adapt)"Wire up all JM scripts, add JM secrets"Week 2
Thompson Sampling banditApollo (adapt)"Connect to JM ad variant IDs from Meta API"Month 2
Anomaly detectorApollo (adapt)"Train baseline on JM's first 60 days of data"Month 2
Recipe blog pipelineNew (JM-specific)"Build from scratch - read JM blog, categorize by product"Month 2
Bayesian A/B test analyzerApollo (direct port)"Connect to JM creative test variant IDs"Month 2

Zero new infrastructure to buy. Everything runs on GitHub Actions (free), Python (free), and APIs you already need for the account anyway.

Security Notice

No API keys or tokens should be sent by email or shared in this document. All credentials should be stored locally in a .env file, entered directly into GitHub Secrets (encrypted), or shared via a password manager (1Password, Bitwarden) shared vault entry.

Next Step

Send us whichever API access you can set up first - Meta or Google, your call. We will have the first audit report back to you within 24 hours of receiving credentials.

The automation setup (GitHub Actions + alerts) runs in parallel with the audits. By the time the audits are done, the monitoring system will already be live.

The first week will show you exactly what has been happening. The second week we fix it.