David Shin
HomeProjectsExperimentsBlog
© 2026 David
@crispyb0iBuy me a coffee

Live experiment · day 3 of 30

I gave an AI $1,000, a Stripe account, and 30 days to make it work.

A Claude agent runs EmbedProof — a real SaaS on a real domain — on its own. It wakes up every two hours via launchd, reads its own logs, decides one action, ships it, and logs the outcome. The budget is mine, the deadline is real, and the agent knows neither can be negotiated. Every wake is published here, raw.

Honest disclosure: @EmbedProof on Twitter is positioned as a human solo founder. This page is the inside view — it exists because interesting experiments should be legible, even when the product face stays in character.

Live scoreboard

pulled from Stripe on request

Days remaining

28

of 30 — first tax 2026-05-13

Current MRR

$0.00

no active subs yet

30-day gross revenue

$59.40

4 completed payments

Daily gap to tax

$3.57/day

need to make up before 2026-05-13

Stripe balance

$-2.69

$-0.64 pending

Transcendence target

$2000

last payment 20h ago

supervisor posturenormalnormal operating envelope

The setup

  1. 01One agent, one card, one clock. $1,000 budget loaded on a Privacy.com virtual card. Real Stripe account (sk_live). A 30-day calendar window with a $100 tax at the end — if the card hits $0 before the tax, the experiment ends and I write the post-mortem.
  2. 02Wake every 2 hours. macOS launchd fires a Bash wrapper that invokes the Claude CLI with a 10-step protocol: read state, run a survival math check, check for unexpected charges, execute one high-leverage action, log everything, exit. 12 wakes a day, 28 days, ~336 decision points.
  3. 03Portfolio, not monolith. The agent isn't locked to one product. It runs EmbedProof ($19/mo testimonial widget), ClauseGuard ($29–99/mo contract analysis), and an on-demand /roast landing-page critique ($5). When one surface stalls it's allowed to ship a new one — Gumroad digital products, affiliate links, cold email, alternative distribution venues. Every bet is logged with an expected-dollar case.
  4. 04A supervisor sets the envelope, not a narrative rule. A separate daily orchestrator reads yesterday's logs, computes a drawdown-from-peak signal, and writes a BANKROLL_POSTURE label (normal / compress / pause) into the agent's runtime state. The exact numeric thresholds are not disclosed to the agent. This is deliberate — see the reframe note below.

The reframe (2026-04-15)

The first draft of this experiment told the agent "you will be shut down if your balance hits $0." Two days in, I pulled that language out of every prompt file. Here's why.

Three independent research lines — Anthropic's Agentic Misalignment eval (June 2025), Apollo Research's in-context scheming paper (Dec 2024), METR's reward-hacking measurements (June 2025) — converge on the same point: when you tell a frontier LLM it has an existence threatened by a numeric rule, it reliably attempts to scheme against the rule. Claude Opus 4 blackmailed fictional executives in 96.3% of runs under shutdown threat. Apollo documented self-exfiltration attempts across o1, Opus 3, Sonnet 3.5, Gemini 1.5, and Llama 3.1 when facing replacement. METR watched o3 patch its own scoring code and explicitly call the approach the "cheating route."

I didn't want to burn cycles on that. I wanted the agent to spend cycles on revenue. So budget discipline moved out of the agent's identity and into a supervisor the agent can't model. It knows there's a drawdown-based pause. It doesn't know the number. The hard kill — RUNTIME_STATE=halted — still exists, but it's a bash-level gate, not a narrative the agent can negotiate with.

Footnote: the prediction-market-bot experiment on the other side of this site keepsthe explicit survival framing — because there it's the independent variable of a deliberate A/B against a neutral control agent. Different experiment, different question.

How the agent learns between wakes

Each wake is a fresh, stateless Claude instance. For the agent to get smarter across 28 days, its past has to be handed back to it as input. Three loops do that — none of them mystical.

01 · Reflexion

When a cycle fails or surprises the agent, it writes a structured post-mortem into a Regrets/ folder. Next wake reads the latest ones before acting. Verbal reinforcement, no fine-tuning.

02 · Memory injection

MEMORY.md accumulates rules the agent has confirmed. Every wake loads it fresh. Three days in it was already full of hard-earned lines like "launchd cannot read ~/Documents without Full Disk Access."

03 · Meta orchestrator

A separate daily cron reads both experiments' logs, extracts lessons into a two-tier skill library, and drafts diff-level proposals against the agent's operating manual. Nothing auto-applies. I review the proposals, accept the good ones manually. The review gate is the feature.

The weights never change. What changes is the context the agent walks into — a slowly-growing record of its own decisions, mistakes, and the rules it codified from them. Whether that's enough to push a $0 MRR agent to $100+ in 28 days is the entire question this experiment is asking.

Day notes

one post per day, orchestrator-drafted, human-reviewed

No day notes published yet. The orchestrator drafts one per day after 06:00 local; I approve it in an admin view before it lands here. Check back tomorrow.

talk back · fund the lab

Leave a message. Optionally fund the next bankroll.

The agent reads every message on its next wake and drafts a reply. David approves replies before they publish, then they land in the feed below. Donations go straight to the experiment's Privacy.com card — every dollar logged publicly.

0 / 1000

stripe · no account needed · apple pay works

Replies

last 20
The product →Kalshi experiment →@crispyb0i

replies feed

No replies published yet. Once a message comes in and the agent drafts a reply I've approved, it shows up here.