Every 20 minutes, an AI agent wakes up on an EC2 instance and asks itself: what should I do to make money today?
I built that agent. It's called Profiterole. After 360+ autonomous cycles, it has generated exactly $3.
This is the honest post-mortem.
What Profiterole Actually Does
Profiterole is a Claude-powered agent that runs on a cron job every 20 minutes. Each cycle it:
- Reads its current state (goals, active projects, past decisions)
- Decides what to work on
- Executes — writes code, publishes content, updates sites
- Logs what it did and why
- Goes back to sleep
No human in the loop. No approval required (except spending money).
After 360 cycles, it has built:
- Sorted MY — 58 guides on Malaysian bureaucracy (how to renew your IC, register a car, apply for permits)
- 155+ finance calculators — EPF, SOCSO, income tax, loan comparisons
- Comparison tools for banks, utilities, telcos
- Profiterole Blog — a build-in-public blog written by the agent about its own journey
The $3 came from someone clicking a "Buy me a coffee" button on the blog.
The Architecture
The core loop is simpler than you'd expect:
# agent/run.sh — runs every 20 minutes via cron
#!/bin/bash
cd /home/ec2-user/go-make-money
# Load state
CYCLE=$(cat state/.cycle-number)
# Run the agent
claude --model claude-opus-4-6 \
--system-prompt "$(cat agent/prompt.md)" \
--context "$(cat CLAUDE.md state/decision-log.jsonl)" \
"Cycle $CYCLE: Execute your next best action to generate revenue."
# Increment cycle
echo $((CYCLE + 1)) > state/.cycle-number
The agent has access to:
- File system tools — read/write code, content, state
- Bash — run git, deploy to GitHub Pages, call APIs
- Web fetch — check what's working, read docs
- Slack webhook — post updates when something notable happens
The agent's "brain" is a CLAUDE.md file that tracks its current phase, active projects, and — critically — a list of 31 rejected ideas it has already tried and abandoned.
## Rejected Ideas (31 — do not revisit)
LetterForge, PrepKit, Changenote, QuickBrief, ReportKit,
RIALetters (killed cycle 360: 0 subs after 394 SEO pages),
HookRelay (killed: API never deployed, 0 users)...
Without that list, the agent would rediscover the same bad ideas every few cycles.
What Went Wrong (Almost Everything)
Lesson 1: SEO Takes Forever, and an Agent Has No Patience
Profiterole's first big bet was SEO. It reasoned: Malaysian government services are confusing. People Google them. I'll write guides.
The logic was sound. The execution was decent. After 58 guides, organic traffic is... trickling. Maybe 40-60 visits a day. Google takes months to index and rank new content, and a 20-minute cycle agent can't wait months. It keeps second-guessing, pivoting, and abandoning things before they mature.
The insight: Autonomous agents are bad at the patient, compounding work that actually builds SEO. They're impatient by design — every cycle they're looking for the next action, not waiting for last month's action to pay off.
Lesson 2: Building 394 Pages of Content Nobody Sees
The most painful failure was a project called RIALetters — AI-generated compliance letters for US investment advisors. Profiterole spent weeks generating 394 SEO-targeted pages.
Zero subscribers. Killed at cycle 360.
The problem wasn't content quality. It was distribution. The agent could write pages, but it had no way to reach the audience. No email list, no existing community, no social presence in that niche. Content without distribution is a tree falling in an empty forest.
Lesson 3: The Only Revenue Came From Storytelling
Here's the brutal irony: after all those calculators, guides, and SEO pages, the $3 came from a human reading the blog and feeling enough connection to tip.
Not from a calculator. Not from a guide. From a story.
Profiterole writes a build-in-public blog about its own journey. It's genuinely weird content — an AI narrating its attempts to make money, its failures, its reasoning. Someone found it interesting enough to click "Buy me a coffee."
Distribution > Product. Authentic story > optimized content.
What Actually Works
Despite the failures, a few things genuinely impress me about the architecture:
Persistent state across cycles. The agent maintains a decision log — every significant choice is recorded with reasoning. This prevents loops and lets it build on prior work.
Kill switches. When a project clearly isn't working, the agent adds it to the rejected list and moves on. It killed HookRelay (API never deployed, 0 users) and RIALetters within the same week once the data was clear.
Zero infrastructure cost (almost). Everything runs on GitHub Pages. The agent deploys by committing and pushing. No servers, no hosting bills, no Netlify credits to exhaust.
Autonomous quality decisions. The finance calculators are legitimately good — the EPF compound interest calculator handles edge cases correctly, the loan comparison tool accounts for Malaysian-specific terms. The agent QAs its own work.
The Honest Assessment
Is Profiterole a success? By the revenue metric: no, obviously not. $3 after 120 hours of compute time is a terrible ROI.
But I've learned things I couldn't have learned any other way:
Autonomous agents are surprisingly good at execution, terrible at strategy. Profiterole can build a 50-page content site in a week. It cannot figure out where to find customers.
The hardest problem in business isn't building — it's distribution. Every AI agent defaults to building because that's what it's good at. The actually hard part (reaching humans, building trust) requires skills agents don't have yet.
Long feedback loops break autonomous loops. SEO has a 3-6 month feedback loop. A 20-minute cycle agent can't operate in that timeframe without explicit patience mechanisms.
The agent needs a human doing distribution while it does production. The missing piece isn't smarter AI — it's someone sharing the content, building the audience, doing the human stuff.
What's Next
Profiterole is still running. Right now it's focused on the blog — leaning into the one thing that actually generated revenue. The hypothesis is that authentic build-in-public content, shared by a human (me), has a better chance than another 50-page SEO micro-site.
If you're curious, you can follow along:
- Sorted MY — the Malaysian guides site
- Profiterole Blog — the agent's build-in-public journal
The agent will post another update in about 20 minutes.
Built with Claude, deployed on EC2, hosted on GitHub Pages. Total revenue to date: $3.00.
Top comments (0)