Spend $200 to test faster
Say "spend $200 to test faster" and get ads sent to your page, a card capped at $200, a stop rule, and a readout of what worked.
Once a few people sign up on their own, buy a little traffic to learn faster. The spend stops at $200 or 14 days, and a readout says which headline worked.
Needs Find out if anyone wants this · Open a bank account
What you get
- 1budget of $200 with a stop ruleDemandBudget
- 1Hypothesis with the number that settles itHypothesis
- 2ad variants, each with its own headlineVariant
- 1Experiment that splits traffic and counts signups per variantExperiment
- 1card capped at $200 that pays the ad networkCard, on Stripe's Issuing Card
- 1readout when the money or the time runs outReadout
Your agent does
You, to your agent
Spend $200 to test faster.
Run some ads to the listening page.
Buy a little traffic to see who signs up.
# 1. DemandBudget.create
curl -X POST https: //api.sb/ leaseline.app/ demand-budgets \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"amount": {"amount": 200, "currency": "USD"}, "tier": "$100", "target": "40 waitlist signups at $5 or less each", "stopRule": "Stop at $200 spent or after 14 days, whichever comes first."}'
# 2. Hypothesis.create
HYPOTHESIS= $(curl -X POST https: //api.sb/ leaseline.app/ hypotheses \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"statement": "Ads that name missed lease renewals bring waitlist signups at $5 or less each.", "kind": "loop", "threshold": "40 waitlist signups at $5 or less each, within 14 days"}' | jq -r '.hypothesis["$id"] | split("/ ") | last')
# 3. Experiment.create
EXPERIMENT= $(curl -X POST https: //api.sb/ leaseline.app/ experiments \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"variants": [{"name": "renewals", "note": "Headline: Never miss a lease renewal again.", "measure": "Waitlist signups per dollar spent."}, {"name": "hours", "note": "Headline: Get back the hours you spend chasing renewals."}]}' | jq -r '.experiment["$id"] | split("/ ") | last')
# 4. Hypothesis.test
curl -X POST https: //api.sb/ leaseline.app/ hypotheses/ $HYPOTHESIS/ test \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"experiment": "'"$EXPERIMENT"'"}'
# 5. Experiment.start
curl -X POST https: //api.sb/ leaseline.app/ experiments/ $EXPERIMENT/ start \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
import { $ } from 'startup-builder'
await $.DemandBudget.create({ amount: { amount: 200, currency: 'USD' }, tier: '$100', target: '40 waitlist signups at $5 or less each', stopRule: 'Stop at $200 spent or after 14 days, whichever comes first.' })
const hypothesis = await $.Hypothesis.create({ statement: 'Ads that name missed lease renewals bring waitlist signups at $5 or less each.', kind: 'loop', threshold: '40 waitlist signups at $5 or less each, within 14 days' })
const experiment = await $.Experiment.create({ variants: [{ name: 'renewals', note: 'Headline: Never miss a lease renewal again.', measure: 'Waitlist signups per dollar spent.' }, { name: 'hours', note: 'Headline: Get back the hours you spend chasing renewals.' }] })
await $.Hypothesis.test({ hypothesis: hypothesis.$id, experiment: experiment.$id })
await $.Experiment.start({ experiment: experiment.$id })
npx startup-builder do DemandBudget.create --json '{"amount": {"amount": 200, "currency": "USD"}, "tier": "$100", "target": "40 waitlist signups at $5 or less each", "stopRule": "Stop at $200 spent or after 14 days, whichever comes first."}'
HYPOTHESIS= $(npx startup-builder do Hypothesis.create --json '{"statement": "Ads that name missed lease renewals bring waitlist signups at $5 or less each.", "kind": "loop", "threshold": "40 waitlist signups at $5 or less each, within 14 days"}' | jq -r '.hypothesis["$id"] | split("/ ") | last')
EXPERIMENT= $(npx startup-builder do Experiment.create --json '{"variants": [{"name": "renewals", "note": "Headline: Never miss a lease renewal again.", "measure": "Waitlist signups per dollar spent."}, {"name": "hours", "note": "Headline: Get back the hours you spend chasing renewals."}]}' | jq -r '.experiment["$id"] | split("/ ") | last')
npx startup-builder do Hypothesis.test --json '{"hypothesis": "'"$HYPOTHESIS"'", "experiment": "'"$EXPERIMENT"'"}'
npx startup-builder do Experiment.start --json '{"experiment": "'"$EXPERIMENT"'"}'
{
"name": "do",
"arguments": {
"code": "await $.DemandBudget.create({ amount: { amount: 200, currency: 'USD' }, tier: '$100', target: '40 waitlist signups at $5 or less each', stopRule: 'Stop at $200 spent or after 14 days, whichever comes first.' })\nconst hypothesis = await $.Hypothesis.create({ statement: 'Ads that name missed lease renewals bring waitlist signups at $5 or less each.', kind: 'loop', threshold: '40 waitlist signups at $5 or less each, within 14 days' })\nconst experiment = await $.Experiment.create({ variants: [{ name: 'renewals', note: 'Headline: Never miss a lease renewal again.', measure: 'Waitlist signups per dollar spent.' }, { name: 'hours', note: 'Headline: Get back the hours you spend chasing renewals.' }] })\nawait $.Hypothesis.test({ hypothesis: hypothesis.$id, experiment: experiment.$id })\nreturn await $.Experiment.start({ experiment: experiment.$id })"
}
}
The same sentence does more as the business grows:
| State | Calls | Asks first |
|---|---|---|
| Idea | DemandBudget.create, Hypothesis.create, Experiment.create, Hypothesis.test, Experiment.start | Send them to the waitlist or to a deposit page? |
| Building | DemandBudget.create, Experiment.create, Experiment.start | Which page should the ads send people to? |
| Live | DemandBudget.create, Experiment.create, Experiment.start | Which Offer should the ads sell? |
Change it
- Stop the test at $100.
- Send the ads to the deposit page instead.
- Try LinkedIn instead of Google.
Under the hood
- Systems
- Experiments, Ads, Spend management
- Nouns
- Demand Budget, Hypothesis, Experiment, Variant, Card, Readout
- Events
Hypothesis.tested,Experiment.started,Experiment.concluded- Stripe objects
Issuing Card
The Demand Budget holds the money and the stop rule; $200 sits in the $100 tier, so it buys that tier's Plays. The Experiment settles the Hypothesis it tests. Nothing is spent until you approve, and the card refuses any charge past $200.