for agencies managing 5–50 accounts · Meta Marketing API v21

Every dollar to what’s earning it.

Five monitors, one platform. Creative health, override lock, budget defense, lead quarantine, and client reports — all wired to Meta’s API. After Andromeda, the creative is the targeting. Stop spreading spend thin. Let winners climb.

OAuth · Encrypted tokens · 200 calls/hr respected Long-lived 60-day token auto-refresh
Built for the post-Andromeda playbook — CT → LT → Scale. Equal-budget testing finds winners; Climmy lets winners climb and starves the rest.
Spend · 7d
$18,420 USD
8.2% vs prior 7d
ROAS · blended
4.21×
0.32× · 7d
ATC rate benchmark 10%
11.4%
1,618 of 14,203 content views
#Creative · hookROASFreshness
01 UGC — founder story · 2,441 imp. 6.8× 92 · fresh
02 Product demo — unbox · 3,102 imp. 4.9× 47 · tiring
03 Offer — 20% off · 8,204 imp. 0.9× 18 · fatigued
Funnel · last 7dMeta Pixel + Conversions API
14,203content view
1,618add to cart11.4% ATC
742checkout−54% drop
381purchase2.68% conv.

Preview · Meta Insights API · refreshes daily 02:00 UTC + hourly override checks · 3 creatives shown of 28

Used by performance teams — OAuth-connected, read + write where you allow it.
NORTHSTAR co.
MAPLE STREET bread
RIDGELINE supply
FOUNDATION atelier
HARBOUR & co.
TIDE studio
The workbench — five monitors, one rail

The product is the page. Walk through what it does.

Each monitor runs as a Celery worker against Meta Marketing API v21. No guesswork, no purple blobs. Just snapshots, diffs, hashes, and narrow LLM calls where they earn their keep.

Score every ad’s hook, freshness, and fatigue.

Daily at 02:00 UTC. Pull every active creative, hash it, classify the hook, and plot the decay. Flag what’s stale before frequency does.

  • Perceptual hash (imagehash) — near-duplicate > 90% flagged
  • Claude Haiku 4.5 hook typing — UGC · lifestyle · demo · proof · pain · offer
  • Freshness 0–100 from days running + frequency · alert if < 30
  • Funnel: content view → ATC → checkout → purchase with drop-off rates
Trigger · daily + manual LLM · Haiku 4.5 · ~$2–5/mo
How it decides: freshness = 100 − (days × 0.5) − (frequency × 10). ATC rate flagged if < 10%, checkout drop if > 50%. No invented stat — thresholds are in the scheduler.
Hook mix
UGC9
Product demo7
Offer6
Social proof4
Fatigue watch
Offer — 20% off18 · fatigued
UGC — founder story92 · fresh

Under 1K impressions → flagged under-tested. Over 30 days → flagged stale. No LLM for the flag — pure code.

creative_test_batches · equal-budget CT2–5 winners short-listed

The second anyone touches your settings.

Hourly Celery job diffs live campaigns, ad sets, and ads against yesterday’s baseline. No LLM — O(n) dict diff in Python. One-click revert writes back to Meta.

  • Snapshot: budget, bid strategy, targeting, schedule per entity
  • Deep compare vs override_baselines · field-level diff stored
  • Alert via dashboard + Postmark with pre-computed revert payload
  • 1-click restore: exact Meta PATCH body — no retyping
Trigger · hourly · no LLM Cost · $0 · pure code
Revert payload is the point. The worker stores the JSON Meta expects, so the button is not “tell us what to fix” — it’s “put it back how it was at 03:00 UTC.”
Daily budget$ 220.00$ 85.00
Bid strategyLOWEST_COSTCOST_CAP · $42
Targeting — age25–5418–65+
Revert payloadPATCH /act_…/campaigns · ready

Baseline captured daily at 03:00 UTC · stored as JSONB in override_baselines.

Flag when the fat steals from the winner.

Every morning at 06:00 UTC. Rank ads by 7-day ROAS, compute spend share per campaign. If a low-ROAS ad hogs > 30% and a winner gets < 20%, Sonnet 5 writes two sentences that a human can act on.

  • Cannibalization: one creative > 70% of account spend
  • Starvation: proven winner (ROAS > 5×) at < 20% share
  • Waste: ROAS < 1× still receiving budget — flag + narrative
  • Suggested redistribution surfaced for 1-click reallocation
Trigger · daily 06:00 LLM · Sonnet 5 · ~$3/mo
Not a dashboard — a decision. The alert names the winner, the cannibal, the delta, and what to move. Two sentences, not a chart you have to interpret.
Spend share · 7d · $13,4503 creatives · 1 flagged
winnerstealingunderfed
UGC — founder story6.8× · winner
18% share · $2,410
18%
Offer — 20% off0.9× · stealing
62% share · $8,340 · flagged
62%
Product demo — unbox4.9× · underfed
20% share · $2,700
20%
Sonnet 5 · suggested move

Offer — 20% off (0.9×) consumed 62% last 7d while UGC — founder story (6.8×) got 18%. Move $4k to the winner and pause the cannibal — projected +0.6× blended ROAS this week.

Stop fake leads from hitting the CRM.

Real-time webhook. Meta Lead Gen → IPQualityScore → device checks → weighted score 0–100. Quarantined stays out of the CRM; Sonnet explains why in one paragraph.

  • Webhook HMAC-verified · lead fetched via Lead Gen API
  • IP reputation: fraud score, VPN/Tor/proxy, recent abuse
  • Device: fill time < 3s, headless UA, timezone mismatch
  • Clean 0–30 · suspicious 31–60 · quarantine 61–100
Trigger · webhook · real-time LLM · Sonnet 5 · quarantined only
GDPR-shaped: PII encrypted at column level, 90-day retention for quarantined, 1-year for clean, DELETE /leads/{id} scrubs PII but keeps the score for analytics.
Lead · signalsScore · action
omar.h@… · +1 415 …· 84 quarantine
185.220.101.4 · VPN · 1.2s fill · headless UA
VPN + proxy
sophie.l@… · +33 6 …· 46 review
92.184.12.8 · FR · 8.4s fill · tz mismatch
timezone mismatch
maria.g@… · +34 6 …· 12 clean
88.12.44.9 · ES · 6.1s fill · no flags
pass to CRM
Sonnet 5 · flag reason — quarantined only

IP fraud score 82/100 · VPN + proxy · 1.2s fill with headless Chrome UA · disposable domain. Withheld from CRM — review in queue.

Branded reports agencies are judged on.

Monthly plus on-demand. Aggregate 30 days, pull top 3 creatives, funnel, overrides, cannibalization, and test results — then Opus 4.8 writes the 600–800 word strategic narrative. WeasyPrint to PDF, S3, Postmark.

  • Data snapshot: spend, revenue, ROAS, MoM deltas, audience split
  • Creative highlights + funnel rates with benchmark flags
  • Opus 4.8 narrative — professional, consultative, under your brand
  • React preview → approve → email client · archive per account
Trigger · monthly · on-demand LLM · Opus 4.8 · GPT-5.6 Sol A/B optional
This is where Opus earns its keep. The only place flagship quality is visibly the deliverable. Everything else runs on Haiku or Sonnet — or no LLM at all.
NORTHSTAR & CO. — April performance & next steps Brand: navy ink · Logo, cover, footer

Performance. 30-day spend $18,420, revenue $77,560, blended ROAS 4.21× (+0.32× MoM). Top creative remains UGC — founder story (6.8× ROAS, 2,441 imp., hook: story). ATC rate 11.4% cleared the 10% benchmark; checkout drop 54% flagged — next sprint is landing-page velocity, not more creatives.

Creative insight. Two assets graduated from CT batch #14. Offer — 20% off fatigued at 62% spend share — recommendation is to pause and reallocate $4k to the winner. Override events: one budget cut intra-day — reverted at 11:04 UTC.

4.21×Blended ROAS
11.4%ATC rate
381Purchases

Rendered via WeasyPrint → S3 presigned URL · audit: override count, cannibalization alerts, fatigue warnings, test results included in prompt.

One plan per agency size. No seat games.

Start with one account. Grow to five, then unlimited. Override Monitor on every tier; Lead Filter from Growth. Reports scale with you.

Starter

$49/month

For a solo buyer proving the system on one account.

  • 1 Meta account · 2 reports/month
  • Creative Health · Override Monitor
  • Budget Cannibalization alerts
  • Email alerts via Postmark
  • Lead Quality Filter — not included
Start with Starter

No card for 14 days · cancel anytime

Agency Scale

$349/month

For 5–50 accounts. Unlimited reports, unlimited scale.

  • Unlimited accounts · unlimited reports
  • Everything in Growth, plus
  • Unlimited Lead Filter + quarantine
  • Team roles: owner · admin · member
  • S3 report archive + CSV lead export
Start Agency Scale

For teams who’ve proven the system

Stripe webhooks: checkout.session.completed · subscription.updated/deleted · invoice.payment_failed LLM cost at 500 agencies ≈ $1.52/agency/mo — covered by the plan

Agencies stake their name on the report.

The highest-retention feature is the one the client sees. Two teams on what changed after they let winners climb.

We stopped shipping 20 creatives and hoping. CT with Climmy found our two winners in 9 days. We moved $6k off the fat and the client saw the ROAS before we said a word.
MR
Maya Ruiz Performance lead · Harbour & Co., 12 accounts
Override Monitor paid for a year in one afternoon. Junior changed the bid cap at 10:47. We reverted at 11:04 before lunch spend burned. No Slack thread, no harm done.
SK
Samir Khan Founder · Ridgeline Supply, 7 accounts
Rate limit
180/hr budget
Token-bucket with 10% buffer · 429 auto-retry
Batch insights
50 per call
Creative Health pulls 50 ad insights in one batch
Token storage
AES-256 Fernet
Encrypted at rest · rotated monthly env key

What you actually want to know.

No “seamless” promises. Concrete scopes, concrete limits. Ask for more in Docs — the templates and prompts are there.

Stack FastAPI · Postgres · Celery · Redis · LiteLLM Meta API v21 · Graph + Marketing + Lead Gen
How does budget concentration actually work?
We run CT (Creative Test) with equal impressions per ad — typically 2–3K each — then score all. Winners graduate to your Scale campaigns. The cannibalization monitor enforces it: if a 0.9× ad takes 62% of spend while a 6.8× winner gets 18%, you get the two-sentence fix, not a chart.
Do you need write access to my Meta accounts?
Read for all five monitors. Write only for Override revert — and only if you click it. Tokens are OAuth per-account (scopes: ads_read, ads_management, business_management, leads_retrieval), encrypted with Fernet, checked every 4 hours, and the revert payload is pre-computed so you never retype a setting.
What does each LLM actually do — and what doesn’t use one?
Haiku 4.5 classifies hooks (cheapest, high-volume). Sonnet 5 writes 2–3 sentence budget narratives and quarantine explanations (only on flags). Opus 4.8 writes the monthly client report — the only place flagship quality is the deliverable. Override Monitor uses no LLM at all — it’s a dict diff. Total LLM cost at 500 agencies is about $761/month.
What happens to leads marked quarantine?
They never hit your CRM. They sit in the quarantine queue with the IPQualityScore response, device signals, and a Sonnet-generated reason. You approve or reject — one click — and can export clean leads or scrub quarantined PII via DELETE /leads/{id}. Retention: 90 days quarantined, 1 year clean.
Can I A/B Opus 4.8 vs GPT-5.6 Sol for reports?
Yes. LiteLLM routes reporting to claude-opus-4-8 by default and gpt/gpt-5.6-sol as the alternate. Run 100 reports on each, do a blind agency review for 30 days — the config is one line. At 5,000 reports/month, Sol would be ~$200 vs Opus ~$750 if quality holds.
What’s the build order if I’m self-hosting?
Follow the 8 phases in order: schema → OAuth → Override backend → Override frontend → Creative Health → Cannibalization → Lead Filter → Reports. Each phase’s deliverables are prerequisites for the next. Paste the master context doc at the start of every Claude Code session or the codebase drifts.

Let your winners climb — then decide.

Connect one account via OAuth, let the 02:00 UTC job score it, and wake to the leaderboard. No migration, no media-plan rewrite. Just the climbers, named.

Runs on Railway for 6 months → AWS ECS when you need it · Postgres + Redis managed · S3 for reports
Start monitoring — $49/mo Talk to an engineer → 14-day trial · OAuth in 90 seconds
Ready to kill the fat? — see the 5 monitors on your own account. First sync at 02:00 UTC.
Start monitoring →