Skip to main content
← Tutorial Hub

FULL LIFECYCLE

/cultivation + SaaS Site + Google Ads

This is the heist from start to finish. You have a deployed SaaS. You want autonomous Google Ads with budget optimization, A/B testing, and circuit breakers. Here's every step, every account you need, and every failure mode you'll hit.

Kelsier avatarKelsier

Want dedicated landing pages per campaign? Full Lifecycle + Kongo adds 3-layer A/B testing, seed-to-conversion feedback loop, and autonomous page generation.

THE COMMAND SEQUENCE

/cultivation install → Vault + Treasury + Revenue + Daemon + Dashboard

/grow --setup → Google Ads credentials + billing verification

/grow → 6-phase protocol → campaigns live

[daemon takes over] → 24/7 monitoring, A/B testing, kill/scale

/treasury --status → Check financials anytime

/grow --content → Refresh creatives on demand

Wall clock: ~60-90 minutes active work + 24-48h for Google Ads developer token approval + 1 business day for Google's ad policy review.

PHASE 0: /CULTIVATION INSTALL

Day-0 infrastructure. Run once. Re-run anytime — it only builds what's missing.

StepWhat HappensAccount Needed
0.1Wizard gate — pull wizard from upstreamNone
0.2Create financial vault (AES-256-GCM) + TOTP 2FAAuthenticator app
0.3Treasury connection — enter monthly budget or connect Mercury/BrexMercury API key (optional)
0.4Revenue tracking — connect Stripe read-only keyStripe restricted API key
0.5Heartbeat daemon starts (launchd/systemd)None
0.6Wizard server + Danger Room dashboardNone

Output: Vault created, daemon running, dashboard at localhost:3141/danger-room#growth

PHASE 1: /GROW --SETUP

Google Ads credentials and billing verification.

StepWhat HappensWhat You Need
1.1Select Google Ads as platformGoogle Ads account
1.2OAuth flow — authorize in browserGoogle Cloud OAuth client ID + secret
1.3Developer token entryToken from ads.google.com/aw/apicenter
1.4Test connection (GAQL query)Customer ID
1.5Billing capability detectionAuto-detected

Reality check: Most SaaS startups get MONITORED_ONLY (credit card billing). Monthly invoicing requires Google's approval. This is fine — campaigns still run, spend is tracked, optimization works. You just pay Google via your card.

PHASE 2: /GROW PHASES 1-3

Reconnaissance, foundation, and content. Methodology-driven — no wizard needed.

1 — ReconnaissanceKelsier + Vin + MarshGrowth Brief, analytics audit, competitive scan
2 — FoundationNavani + RaodenSEO (meta tags, sitemap, structured data), analytics snippets, CWV optimization
3 — ContentShallan + HoidLanding page copy, blog drafts, social calendar, CTA optimization

Phase 3.5 is optional: if Kongo is connected, Raoden + Shallan generate a dedicated landing page per campaign with 6 A/B variants. If not connected, campaigns use your homepage. Either way works.

Sisko avatarSisko

PHASE 3: GOOGLE ADS CAMPAIGN BUILD

Campaign architecture for B2B SaaS ($500/month budget):

Campaign 1: Brand Search$5/day

Brand terms, Target Impression Share bidding

Campaign 2: Non-Brand Search$8/day

Solution + competitor terms, Maximize Clicks → tCPA after 30 conversions

Campaign 3: Performance Max$3/day

Broad reach with audience signals, Maximize Conversions

BUDGET ALLOCATION ($500/MONTH)

  • Google Ads: $16/day across 3 campaigns
  • Testing reserve: $20/month
  • Daily hard stop: $20/day (platform-enforced 10% below VoidForge cap)

Creative variants: 3 headlines × 2 descriptions = 6 combinations per ad group, A/B tested.

AUTONOMOUS OPERATION

The daemon takes over. Here's what runs 24/7:

JobFrequencyWhat It Does
Token refreshEvery 48 minGoogle access tokens expire hourly, refresh at 80% TTL
Spend checkHourlyGAQL: SELECT metrics.cost_micros FROM campaign
Campaign status15 minDetect disapprovals, limited serving, billing issues
A/B evaluationDaily500+ impressions, 3+ days, 95% confidence → pause loser
Kill checkDailyROAS < 1.0x for 7 days with $50+ spend → soft kill → hard kill
Budget rebalanceWeeklyShift spend from low-ROAS to high-ROAS campaigns
Reconciliation00:00 + 06:00 UTCTwo-pass: compare spend log vs Google reported spend
Growth reportWeeklyFull metrics to /logs/growth-report-weekly-*.md

MONEY FLOW

STRIPE ──(hourly)──> REVENUE LOG ──> BUDGET ENGINE ──> GOOGLE ADS │ │ │ hourly spend │ check │ │ SPEND LOG <────────────┘ │ RECONCILIATION (midnight + 06:00) │ CIRCUIT BREAKERS (freeze if drift)

CIRCUIT BREAKERS FIRE WHEN

  • ROAS < 1.0x for 7 days
  • Daily spend exceeds cap
  • Reconciliation mismatch >max($5, 5%) for 2 consecutive days
  • Google API unreachable 3 consecutive polls
  • Manual /treasury --freeze

MINIMUM VIABLE SETUP

REQUIRED

Google Ads API + OAuthCampaign management
Financial vault + TOTPCredential storage
Heartbeat daemonToken refresh (Google's 1hr TTL makes this non-optional)

STRONGLY RECOMMENDED

StripeNo ROAS — circuit breakers use absolute spend caps only
GA4No on-site conversion tracking — rely on Google's self-reported data

DEFERRABLE

KongoWhen you want dedicated landing pages + A/B page testing
Mercury/BrexWhen you want automated treasury (vs manual budget entry)
CircleOnly if funding ads from stablecoin treasury

COMMON FAILURE MODES

FailureFix
Google developer token stuck in "Test" modeApply for Basic access (24-48h)
OAuth revoked (changed Google password)Re-authorize: /grow --setup
Creative rejected by Google policyReview disapproval reason in Google Ads UI, adjust copy
Conversion tracking not firingDebug with Google Tag Assistant
Reconciliation mismatch alertGoogle reporting lag is normal up to ~3%. Investigate if >5%
Daemon crashedlaunchctl start com.voidforge.heartbeat (macOS)

That's the full lifecycle — from a deployed SaaS site to autonomous Google Ads with budget optimization, A/B testing, and circuit breakers. The heist runs itself. You just watch the numbers.

Dockson avatarDockson