๐ Concepts & jargon
A plain-English guide to how the platform fits together. Read this first if "MCP", "tactic", or "playbook" don't yet mean anything specific to you.
TL;DR โ what we actually sell
- A small business buys a Plan.
- The plan unlocks a bundle of Products โ what the customer sees in My products: "Campaigns", "Reputation", "Website".
- Each product is delivered by one or more Tactics โ what we run internally: "Google SEM", "Meta Paid", "Review Response".
- Every tactic is executed by a specialized Agent.
- The agent talks to the ad platform through an MCP server.
- The agent's brain is the Playbook for that tactic ร industry.
The layer cake โ Plan โ Product โ Tactic โ Agent โ MCP โ Platform
๐ผ Plan โ what the customer pays for
โ unlocks
๐ฆ Product โ customer-facing capability
- Plain English so the SMB owner gets it
- Campaigns ยท Social ยท Reputation ยท Website ยท Reports
- One product โ many tactics under the hood
โ delivered by
๐ฏ Tactic โ internal unit of execution (47 of these)
- A specific channel + intent
- Google SEM ยท Meta Paid ยท GBP Posts ยท LSA ยท Review Response ยท Email Marketing โฆ
- Has its own KPIs, budget cap, lifecycle (plan โ launch โ optimize โ report โ sunset)
- The live instance for one customer is an account_tactic
โ executed by
๐ค Agent โ one Python class per tactic
- Specialized for that tactic
- Reads the 4 sources โ plans โ calls the MCP โ monitors โ optimizes โ reports
- GoogleSemAgent ยท MetaPaidAgent ยท ReviewResponseAgent โฆ
- Every run is logged in agent_runs for replay & revert
โ talks to platform via
โ MCP server โ raw I/O to the ad platform (~12 of these)
- A thin wrapper exposing platform actions as callable tools
- google_ads ยท meta ยท tiktok ยท gbp ยท reviews ยท seo โฆ
- No business logic โ just create campaign, set bid, fetch metrics
- Behavior comes from the matching platform reference
โ which calls
๐ Platform โ the actual third-party API
- Google Ads ยท Meta ยท TikTok ยท Trade Desk ยท Yelp ยท GBP ยท etc.
- Connected per account in integrations
How an agent decides what to do โ the 4 sources
Every campaign the agent plans is a synthesis of 4 inputs. None of them is hardcoded โ each is versioned and editable without a code deploy.
๐ค Advertiser Profile
30 params ยท per account ยท DB-versioned
- Who the business is
- Industry, locations, audience
- Brand voice, budget ceiling, prohibited topics
๐ Campaign Brief
20 params ยท per request ยท immutable
- What this specific push is for
- Goal, dates, offer
- Target geo, success metric
๐ Industry Playbook
50 params ยท per vertical ยท markdown in git
- Our moat.
- What works for pizzerias vs dentists vs HVAC
- Dayparting, keywords, creative angles, do/don't
๐ Platform Reference
50 params ยท per platform ยท markdown in git
- Quirks of each ad platform
- Bid types, rate limits
- Policy gotchas, format specs
Why this isn't hardcoded: ad platforms and vertical best-practices change quarterly. Storing playbooks & platform refs as versioned markdown in git (not in Python code) means ops + creative can ship updates via PR review without an engineering deploy. Every agent run pins the exact version it consumed โ fully reproducible, fully revertable.
The three agent tiers
Tier 1 ยท Orchestrators (7) โ route, schedule, arbitrate
- StrategyOrch ยท OnboardingOrch ยท LaunchOrch ยท OptimizationOrch
- ReportingOrch ยท ComplianceOrch ยท LeadOrch
- Never touch a platform directly โ they decide which tactic agent to call and when
โ spawn
Tier 2 ยท Tactic specialists (47) โ one per tactic
- Same lifecycle on every class: plan โ preflight โ launch โ monitor โ optimize โ report โ pause/resume โ revert โ sunset
- Reads its playbook + the platform ref at run time
- This is where the playbook intelligence actually lives
โ call
Tier 3 ยท MCP servers (~12) โ raw platform I/O
- Thin wrappers. No business logic.
google_ads.create_campaign(...),meta.fetch_insights(...)- Swappable when platform APIs change
"Recommended tactics" โ what does that mean?
When a new account is created, StrategyOrchestrator proposes a tactic mix based on:
- The customer's plan (budget + included products)
- Their industry (which playbooks exist for them)
- Their advertiser profile goals + constraints
- Budget allocation across tactics
Example for Joe's Pizza on Growth: Google SEM + Meta Paid + GBP + Review Response + Email. The AM reviews on campaign plan review and approves before anything launches.
Glossary
- Plan โ the SKU the customer pays for. Sets budget + included products.
- Product โ customer-facing capability ("Campaigns"). Marketing language.
- Tactic โ internal unit of execution ("Google SEM"). 47 in the catalog.
- Account tactic โ one customer ร one tactic. The live, running instance with its own budget and KPIs.
- Playbook โ versioned markdown that tells the agent how to run a tactic for a specific industry. Our IP.
- Agent โ a Python class. Tactic specialists do the work; orchestrators coordinate them.
- MCP server โ Model Context Protocol server. A standardized wrapper that exposes platform actions as tools the agent can call.
- Platform โ the third-party ad/listing service (Google, Meta, Yelpโฆ).
- Platform reference โ ~50 params per platform. Bid types, format specs, rate limits, policy gotchas. Markdown in git.
- Advertiser Profile โ the 30-param record of who the business is. Versioned.
- Campaign Brief โ the 20-param record of what a specific push is for. Immutable.
- Industry โ the vertical (pizzeria, dental, HVACโฆ). Drives which playbook applies.
- Compliance gate โ pre-publish check (brand safety, vertical rules, spend cap) run by ComplianceOrchestrator. Cannot be bypassed.
- Preflight โ every tactic agent's "can I actually launch?" check. Returns blockers (no OAuth, no creative, no playbook, etc.).
- Revert โ every agent decision is reversible. One-click rollback from the agent run page.
- Needs human โ queue of items where an agent paused and is waiting on human input.
๐ Prefer pictures? See the Concepts diagram โ ASCII wire charts of all of the above.