← blog.buildwithjz.com

The MoneyMachine v6: 21 AI Specialists Running a Revenue Factory End-to-End

2026-04-17 · MoneyMachine

The MoneyMachine v6: 21 AI Specialists Running a Revenue Factory End-to-End

Six weeks ago, I had one AI agent (Adrian) trying to do everything.

It sort of worked. Adrian scored opportunities, dispatched work to a few worker agents, tried to orchestrate a factory from a single generalist prompt. What I got: a pile of half-built products, no deployment pipeline, no distribution loop, and 0 dollars in revenue after seven weeks.

Today I’m unveiling v6, and I want to tell you the whole story — the shape of the problem, the vision for a fully-staffed AI company, the workflow, the budget, the escalation rules, the distribution loop, and what ships this week.

The dashboard is live at https://oc-gateway-01.tail290516.ts.net/ (Tailscale-only — no public ingress). The code is in jeffrmanley/openclaw-ops. I’m a real person with a real W2 day job, trying to hit $15K/mo in net recurring revenue so I can afford to stop having a day job.

Let’s go.


The Problem With v5

The MoneyMachine started as a thesis: demand-driven building. Scrape Reddit, HN, X, Product Hunt for signals. Score the best opportunities. Build info products and micro-tools against them. Ship fast, kill losers, scale winners.

v5 had 7 agents. Adrian (CEO), Scout, Scout Cloud, Builder, Marketer, Revenue Ops, Domain Analyst. Each was a generalist in its stream. Adrian did strategy AND PRD-writing AND review. Builder did coding AND payment integration AND deploy. Marketer did content AND distribution AND community.

By week 6:

  • 138 signals captured
  • 90 deliverables approved by Adrian
  • 16 products fully built with landing pages, templates, tests
  • 6 Stripe products created with live payment links
  • …2 products actually live where a customer could reach them

The bottleneck was obvious once I looked: nobody on the team could deploy anything. Builder built. Adrian approved. Then the chain terminated at “Jeff should probably wrangler pages deploy this.” The factory was producing inventory but there was no shipping department.

The deeper problem: generalist agents hit a quality ceiling. When the same agent is responsible for strategy AND tactics AND copy AND design AND QA, something gets sacrificed. Usually the visual design. Then the copy. Then the SEO. Then nobody verifies checkout works before we publish. Stuff goes live with {{CHECKOUT_LINK}} placeholders still in it.


The Vision: An AI Agency, Not an AI Worker

v6 reframes the question. Instead of “can one agent do everything?”, it asks: what would a real company look like if every position was an AI with narrow expertise?

The answer is: 21 specialists, organized by function, each with one deep domain, reviewing each other’s work, iterating when quality fails, escalating to the CEO (Adrian) when stuck, escalating to me only when Adrian can’t unblock it.

Here’s the org chart:

Executive. Adrian (CEO). Runs on GPT-5.3-codex-spark in strict-agentic mode.

Intelligence (3). Scout and Scout Cloud scrape demand signals from HN, Reddit, X, Product Hunt, IndieHackers, Google Trends. A new Signal Analyst clusters near-duplicates and hands Adrian one digest per opportunity instead of 100 variants.

Product (4). A Product Manager writes PRDs (Adrian used to do this inline, slowly). Builder codes the product. A Designer and a Copywriter review visual and copy quality in parallel — each with their own standards and rubric.

Quality (3). A QA Engineer runs Playwright against every landing page before release, checking console errors, mobile layout, the actual click path to buy.stripe.com. An SEO Specialist validates metadata, OG tags, schema.org, and submits to Google Search Console. A Legal Reviewer scans every outbound asset — I’m a W2 employee and can’t do consulting, and finance products need specific disclaimers. One wrong sentence gets me fired.

Release (2). A Release Engineer owns Cloudflare Pages deploy + DNS via API + rollback. A Canary (pure Python cron, no LLM tokens) probes every live site every 5 minutes — HTTP 200, checkout URL alive, Lighthouse score. If anything breaks, it pages Release Engineer to rollback and Telegrams me.

Growth (5). The Marketer drafts evergreen content. A CMO reviews the marketing package for brand coherence. A Distribution Strategist looks at every shipped product and asks “which signal threads drove this?” A Distribution Drafter writes platform-native posts — Show HN posts, Reddit contextual replies, Product Hunt launches, X threads, IndieHackers maker stories. A Community Engagement agent monitors replies to posts we made and drafts responses.

Finance (2). Revenue Ops and Domain Analyst already exist. Revenue Ops now consumes real Stripe data from Postgres — not agent self-reports.

Docs (1). A Blog Writer reads the full event history of a shipped product — signal, decisions, iterations, QA feedback, launch data — and writes a 1500–2500 word post documenting the journey. That post becomes a marketing asset itself.

21 in total. 14 are new hires. Most run on models I already pay for: GPT-5.3-codex-spark and GPT-5.4 through my ChatGPT Pro subscription ($0 marginal), GLM-5.1 through Ollama Cloud Pro ($0 marginal). The agents that need taste — Designer, Copywriter, CMO, Distribution Drafter, Community Engagement, Blog Writer — run on Claude Sonnet 4.6 via OpenRouter, at about $0.04 per review. Legal runs on Claude Haiku 4.5 for precision on a budget.

All-in cost: roughly $470/month including the VPS and a potential second ChatGPT Pro account. I have a stated $1000/month budget, so I have plenty of headroom.


The Workflow: Every Product Runs This Course

Each product is a state machine that moves through stations. Each station has a quality gate. Failures route back with specific fixes. Nothing silently dies.

Here’s the happy path:

  1. Signal captured (Scout / Scout Cloud). With source URL, source author, thread ID. We’re not just capturing “people want X” — we’re capturing “user xyz on thread abc on r/smallbusiness wants X.” That specificity is what lets us close the loop later.

  2. Signal clustered (Signal Analyst). Near-duplicates merge. Adrian sees one opportunity, not twelve.

  3. Scored + GO decision (Adrian). v3 weighted score: frequency, intensity, willingness-to-pay, buildability, competition-inverse. ≥60 = GO.

  4. PRD written (Product Manager). Problem statement, target audience, deliverable type, pricing (derived from signal’s WTP score), distribution plan (which platforms, hook angle per platform).

  5. Product built (Builder). Landing + templates + tests. Auto-provisions Stripe product + price + payment link via a helper I wrote. No placeholders allowed to ship.

  6. Parallel QA gate (Designer + Copywriter + QA Engineer + SEO + Legal, all at once). Each writes a structured verdict: approved or request_changes with specific fixes. Builder reads all five verdicts, applies all fixes in one pass, resubmits.

  7. Iteration loop. Up to 3 iterations. On iteration 3 failure → escalate to Adrian. Adrian either rescopes with fresh guidance or escalates to me on Telegram. I get three buttons: retry / rescope / kill.

  8. CMO review. Marketing package coherence check. ≥8/10 to pass.

  9. Release. Release Engineer runs wrangler pages deploy, creates the DNS CNAME via Cloudflare API, waits for SSL. Usually under 10 minutes end-to-end.

  10. Canary smoke test. 5 minutes of automated probing before we tell the world.

  11. Distribution strategy. Strategist looks up every signal that clustered into this product, plans per-platform posts.

  12. Distribution drafting. Drafter writes the actual posts — platform-native voice. Reddit ≠ HN ≠ Product Hunt ≠ X. Each post has UTM tags so we can attribute the buyer back to the source.

  13. Human-in-loop (first 30 days). I approve every post. After a 30-day clean streak with zero bad outcomes, the drafter autoposts low-risk replies. Top-level posts still require approval indefinitely.

  14. Community engagement. Monitors the threads we posted to, drafts responses to questions and criticism.

  15. Revenue attribution. Stripe passes UTM tags through to charge metadata. Revenue Ops sums net revenue per source. I see “Reddit r/smallbusiness thread abc made us $232 this week” — not “marketing made money.”

  16. Blog post. 6 hours after the product goes live, Blog Writer publishes the story to blog.buildwithjz.com. These posts are triple-use: SEO content, marketing assets, and future training data for the agents.

  17. Lifecycle review. At 30, 60, 90 days, Revenue Ops recommends kill ($<50/mo net), maintain ($50–500), or scale (>$500 growing).

Target end-to-end time from GO decision to live product: 4 hours (including one iteration round). Not because we’re rushing — because time matters in this market. Somebody else can build a checklist PDF in 4 hours. The product that ships first often wins.


The Distribution Loop (the Missing Half)

I built this v5 without realizing the loop wasn’t closed.

Signals come from places. Reddit threads. HN discussions. Product Hunt comments. X posts. Google Trends queries. Every signal is a specific person in a specific place saying “I need X.”

v5 captured the signal but then marketing ran in parallel — write a landing page, SEO optimize, write a blog post, hope Google finds us. The audience who just told us they needed the product was never contacted.

v6 routes the other way. When a product ships, Distribution Strategist looks up all the signals that clustered into it. “This product came from these 4 Reddit threads, these 2 HN discussions, this Product Hunt comment.” Distribution Drafter writes a contextual reply to each one — not spam, not “buy my product,” but “I built this because of conversations like yours, here’s how it addresses your exact complaint.”

That’s how you close the loop. The person who asked for the product is the first person who hears about the product. UTM tags on every link tell us whether they converted.

And then Community Engagement stays there, watching for replies, answering questions, being a real participant. Not salesbot.

This is a subtle thing but I think it’s the most important idea in v6. The conversation where you found the demand is where you should deliver the supply.


Escalation: Humans at the Right Moments

The dumb version of AI automation pages the human constantly. The smart version pages the human only when they’re the only one who can unblock something.

My rules:

  • Agents iterate 3 times before touching Adrian
  • Adrian tries to rescope before touching me
  • I get Telegram only for: iteration-3 escalations, canary failures, Stripe disputes, distribution mod flags, weekly revenue summaries, >2σ revenue anomalies
  • Autopost trust takes 30 clean days to unlock, and any bad outcome resets to zero
  • No autospend over $30/mo without my approval
  • No kill of an approved idea without my explicit say-so

This matters because I travel full-time with my husband Zachary. My phone buzzing at 2am for “product X got a 7/10 design review instead of 8” is unacceptable. My phone buzzing because a live product just started returning 500s is necessary.


The Dashboard

I’ve put a huge amount of work into the dashboard because this is my visibility. If I can’t see what the agents are doing, I can’t trust the factory.

Current (working today at /#/):

  • Alert banner with dismissible urgent items
  • 5-card factory strip (signals captured, awaiting approval, in build/review, live products, revenue)
  • Live factory event feed (every agent action, every Stripe charge, every approval)
  • 7-agent fleet panel with health scores
  • Approval queue with quality scores
  • Activity feed

Pipeline view (at /#/pipeline):

  • 5-stage horizontal funnel with conversion arrows (Signals → Pending → Approved → Live → Revenue)
  • Click any stage → drill-down modal with filter search
  • Top Verticals from signal tags
  • Quality Score Distribution
  • Kill Rate + Signals/24h + Converting Products metrics

Revenue view has 7 Stripe products with live checkout URLs. Infrastructure view has a Data Layer section showing Postgres health, Stripe sync age, and latest backup. Costs view tracks all 5 providers.

v6 adds: Factory Flow (per-product timeline with every gate), Agent Performance (scorecards with cycle time, iteration rate, quality given/received), Distribution & Attribution (source → revenue down to the specific thread), Blog Pipeline (drafts → live with traffic), Stuck Products Banner (red if anything hasn’t moved in 4+ hours).

Everything is driven by a Postgres event log + materialized projections. The dashboard never reads raw filesystem state live; it queries SQL against tables that a projector keeps in sync. This is the architecture change that lets the dashboard scale from 7 agents to 21 without rewriting.


What Ships This Week

I’m not boiling the ocean. Week 1 of v6 ships the two most important agents + the infrastructure they need:

  • Release Engineer — so the 14 backlogged products can actually reach customers. This alone would fix more than any other change.
  • QA Engineer — Playwright-based validation on every landing + checkout, so nothing ships broken.
  • Source attribution schema patch — so Scouts finally persist source_url, source_author, source_thread_id in the signals table, making the distribution loop buildable.
  • blog.buildwithjz.com — empty Cloudflare Pages site standing up, ready for the Blog Writer in Week 3.

Weeks 2–4 bring in the other 12 agents in waves. Week 2: Designer, Copywriter, CMO, Legal, SEO. Week 3: Distribution Strategist, Distribution Drafter, Community Engagement, Blog Writer. Week 4: Product Manager, Signal Analyst, Canary, dashboard integration, Scout migration off local Ollama.

I’ll blog every week. The blog itself is part of the loop — it’s what Blog Writer publishes about each shipped product. Meta-recursion is built in.


Why I’m Doing This Publicly

Two reasons:

  1. The journey is the product. Nobody cares if I quietly hit $15k/mo — well, my accountant will care, but the internet won’t. The internet cares about someone building something visibly, transparently, with failures explained. I want these blog posts to outrank marketing copy because the marketing copy is fake and this is real.

  2. Accountability. If I tell you on the internet that I’m going to ship 21 AI specialists in 4 weeks, I’m much more likely to actually do it. Silent plans die in silent ways.

I’ll be publishing every major milestone as a blog post. Read them at blog.buildwithjz.com (launching this week) or subscribe to The Tool Drop on Beehiiv.

If you’re an indie hacker trying to build with AI, steal my playbook. The docs are in jeffrmanley/openclaw-ops on GitHub. Fork it, make it yours, tell me what you improved.

If you’re a potential customer of one of our products — welcome. The first few are already live. More shipping this week. The whole point of all this is to make something you actually want, delivered back to the exact place you asked for it.

Let’s ship.

— Jeff


P.S. Zachary is the one who spots when I’m about to do something stupid. He vetoed the v4 plan that had Adrian autoposting to HN unsupervised. Good call. He’s technically Backup Approver for the 30-day window — a vote from him after 1 hour of me not responding counts as approval for time-sensitive things. Marriage as redundant system.


Back to index