Method
How Namuna was built
The question we started with
Can an agent answer revenue questions well enough that a founder acts on them?
Getting a number is easy. Trusting it is not. Multi-currency prices, coupons, trials and churn make even MRR easy to get wrong, and an AI answer reads the same whether it is right or not.
So every answer had to come with its code, and the agent had to be graded by something it can't fool: values recomputed from Stripe's own objects. When an answer leads to a price change, the same idea applies to the change itself: Stripe's billing engine, fast-forwarded with Test Clocks, is the judge.
What we built
A revenue analyst first, a market view of where price is losing customers, and a pricing rehearsal for when an answer becomes a decision.
Analyst
Question, Python, an answer with its code, graded against Stripe ground truth.
Rehearsal
Plan, migration, 13 months on Test Clocks, invoice-by-invoice comparison, fix and rerun.
Both write code, run it in an isolated sandbox, and are checked against Stripe.
How a run works
Write, run, compare, fix: until Stripe agrees or the agent stops and says why.
- 1
Write
The agent writes the migration and predicts every invoice.
- 2
Run
The script runs in an isolated sandbox against Stripe.
- 3
Advance
Test Clocks fast-forward billing, 13 months.
- 4
Compare
Predicted invoices are diffed against Stripe's, line by line.
- 5
Fix or stop
On a mismatch the diff goes back to the agent. Otherwise the run ends verified.
- Loop back to step 1 on a mismatch · up to 3 attempts
Guardrails
The agent can only touch what the rehearsal created.
Isolated micro-VM per run
Agent code runs in a CreateOS sandbox, never on our servers.
Network allowlist
Egress is limited to api.stripe.com.
Scoped writes
Rehearsals write only to subscriptions and schedules they created.
Code screened first
Generated analysis code is checked before it runs.
Test mode only
Live Stripe keys are refused.
A human applies it
Applying a migration to real customers requires approval.
How we know it works
We measure the agent against Stripe, not against itself.
Analyst benchmark
5/5
answers match Stripe ground truth · latest benchmark run
Dataset reconciliation
420
customers checked one by one against the plan
Latest rehearsal
Match
0 of 30 invoices differ
The first benchmark run scored 3/5. The agent produced a confident, wrong MRR because multi-currency amounts live in a different field. Grading caught it; we fixed the agent's tools, not the test.
The rehearsal caught a real bug the same way. On the first attempt the migration dropped a 20% coupon after signup, and the diff showed 13 mismatches on that customer type. The fixed script produced none.
The data we test on
A realistic Stripe account, not a toy.
Relaywise is a synthetic SaaS business with 420 customers across 23 countries (top and emerging markets), 15 industries and 16 currencies. It has localized pricing, coupons, trials, churn reasons, failed payments and disputes. All data is synthetic and lives in a Stripe sandbox.
One assumption is built in, and we say so: churn and price complaints rise with price burden, what a customer pays relative to local purchasing power. That gives the market analysis a real signal to find. Pointed at a real account, the same code reads real cancellations. The analyst benchmark ran on the previous version of the data; its runs are published as they were.
- US$121,778
- DE$33,085
- IN$32,564
- CA$25,876
- GB$19,755
- IE$15,521
- NG$10,245
- MX$9,855
The stack
Provisioned with Stripe Projects.
Stripe
Sandbox, Test Clocks, billing
CreateOS
Sandboxes for agent code
OpenRouter
Models that write the code
stripe projects add stripe/sandbox stripe projects add createos/project stripe projects add openrouter/api
TypeScript orchestration, Python executed in the sandbox, Next.js for this site.
Honest limits and what's next
What it doesn't do yet.
Limits
- It rehearses representative customer types, not every customer.
- History before the rehearsal starts isn't backdated.
- It runs on free-tier models, so complex plans may need more attempts.
- The recorded rehearsal came from the billing harness; the agent-driven loop is not wired end to end yet.
- Test mode only.
Next
- Analyst answers that cross-check themselves on every question, not only the benchmark.
- More rehearsal scenarios, such as seat-based to usage-based.
- More customer types per run.
- Side-by-side plan comparison.
- An approval workflow for applying verified migrations.