The protocol, in one page
The Boolean test is a 30-day experiment that converts one question — does anyone want this enough to pay for it? — into a number you cannot argue with. It returns true or false. It does not return "maybe, with more time".
The rules are deliberately few, because every rule I have added over two years of running this is a rule someone tried to talk their way around.
- The threshold is fixed in writing before the clock starts. Mine is 100 pre-orders at $10 within 30 days — $1,000 gross.
- The price is $10, paid at pre-order, through a real payment link. No discounts, no tiers, no "founding member" ladder.
- Refunds are automatic and unconditional if the threshold is missed. Nobody has to email me. Nobody has to fill in a form.
- The threshold does not move once the clock starts. Not because the market changed, not because engagement is strong, not for any reason.
- The window does not extend. There is no day 31.
- Inside the window you build only what is needed to take money and deliver something real: a landing page, a payment link, one core loop, and a manual fallback.
Why $10 and not a "coming soon" page?
| Signal | What it costs the person giving it | What it actually predicts | What it misses |
|---|---|---|---|
| "I would definitely use that" | Nothing | Politeness | Everything |
| Email waitlist signup | One click | Curiosity about the category | Willingness to pay |
| $1 pledge | A payment form | Willingness to click through checkout | Seriousness |
| $10 refundable pre-order | Real money, held for 30 days | Willingness to pay, and that the problem is current | Whether the need recurs monthly |
| Signed letter of intent | Weeks of procurement | That a budget line exists | Whether self-serve demand is there |
Ten dollars is chosen for two properties, not for revenue. It sits above the impulse threshold where a payment feels like a survey answer, and below the deliberation threshold where a purchase needs a committee. Being refundable removes the ethical problem too: you are borrowing a small amount of commitment, not selling a promise.
A waitlist tells you whether people find the idea interesting. A pre-order tells you whether they find their problem urgent. Those are different quantities, and only the second one pays for a year of your life.
What happens during the 30 days
Days 1 and 2: one landing page that states the problem in a single sentence, a payment link, and a refund policy a stranger can read in ten seconds.
Days 3 to 5: one distribution channel where you already have standing — a community you participate in, a customer list, a forum where you have answered questions for a year. Not an ad account.
Days 6 to 27: talk to every single pre-orderer within 24 hours of their payment, then ship the smallest version that produces a real artefact. The conversations are the actual deliverable; the number is just the gate.
Days 28 to 30: publish the result. Pass or fail, with the number and what you learned, in public.
The cost is smaller than people expect. On a $10 charge, Stripe takes roughly $0.59, so a failed run of 34 pre-orders costs about $20 in fees — refund the full $10 each and absorb it. A full 100-order failure costs about $59 plus a domain: call it $60 and one month to avoid six months on the wrong thing. The test settles whether to build, not what it will cost to run once it scales.
The refund path has to be boring and automatic, or it will not happen on a bad week when you least want to write those emails.
// jobs/boolean-test-settle.ts — runs at 00:05 on day 31, in the project's timezone
export async function settleBooleanTest(experiment: Experiment) {
const paid = await payments.countSuccessful(experiment.id);
if (paid >= experiment.threshold) {
await experiment.markValidated({ paid, grossCents: paid * 1000 });
return { state: "validated", paid };
}
for (const payment of await payments.listSuccessful(experiment.id)) {
await refunds.create({
paymentId: payment.id,
amountCents: payment.amountCents, // full refund; the processing fee is mine
reason: "boolean_test_not_met",
idempotencyKey: `settle:${experiment.id}:${payment.id}`,
});
}
await experiment.markKilled({ paid, threshold: experiment.threshold });
return { state: "killed", paid };
}
What the protocol costs emotionally
The public number is the first cost. A waitlist of twelve is private; a pre-order count is not, and it updates in real time while you watch.
The refund emails are the second. Thirty-four people trusted you early, and your reward for that trust is returning their money with a short note. A few reply, kindly, which is worse than silence. I have not found a way to make that part comfortable, and I no longer think comfort is the point.
The third cost is the negotiation with yourself, which starts around day 18. You have built something you like. The number is close. Someone says the threshold was arbitrary, and they are right, and it does not matter — the entire value of the protocol is that the threshold was chosen before you were emotionally invested, by a version of you with better judgment.
What it filters for
Four things, in order of usefulness.
Problems that already have a budget line. Someone paying $10 in advance has usually already paid a freelancer, bought a worse tool, or lost hours to the problem. You are competing with a bad solution, not with nothing.
Whether you have distribution. If you cannot reach 100 people in 30 days for a problem they care about, you do not yet have a channel for this product.
Whether the problem is urgent rather than merely real. Pre-payment before existence is the cheapest strong signal available, and it is very hard to fake.
Whether you can ship something rough and honest in a week. The test also measures you, and that measurement is the one that compounds.
Over two years I have run five ideas through it. Chefshot passed — restaurant owners paid before the app existed, and the number that mattered was 112. Lexi passed on day 16 once the speaking-practice angle replaced the generic "English app" framing. Three were killed: an invoice reconciliation tool for small agencies, which reached 34; a design-token audit service, which reached 9; and one hardware experiment whose failure is not instructive enough to describe. The failures cost under $200 and about 90 days, against the year and a half they would have absorbed. Two of those five are now products that reached production.
What the test does not tell you
It says nothing about retention. A pre-order is a statement about a problem today, not a prediction that someone will still be using the product in month three. On Chefshot the first cohort's activity dropped faster than the pre-order data implied, and I only learned that from usage, not from the test.
It does not validate your price. Ten dollars establishes that demand exists; it says nothing about whether the product supports $29 a month, and treating a passed test as pricing evidence is how the next twelve months get spent on the wrong conversation.
It can produce false negatives. A real problem with a hard-to-reach audience will fail the test even though the problem is genuine, and nothing inside the window distinguishes that from a bad idea. The only mitigation is that a killed idea can be reopened when the channel appears — one of mine was, eighteen months later, and passed.
And it says nothing about craft. A passed test is permission to build, not evidence that what you build will be good.
Closing: turning optimism into a measurement
The protocol exists because the alternative — building for six months on the strength of encouragement — is the most expensive form of optimism available to a person working alone. What it buys is not validation but decisiveness: a public, time-boxed, small failure instead of a private, open-ended, large one. If an idea cannot survive 30 days and $10 of commitment from strangers, it was never going to survive the year you were about to give it. It is one of the systems that hold an ecosystem of one together.
Keep reading
- Evolve the Ecosystem, Weave the Garden: The Architecture of a Super Individual2026-01-128 minSuper Individual
- GEO for Engineers: Making Your Site Legible to Language Models2026-03-216 minEngineering
- Design Engineering: Closing the Figma-to-Production Gap Without a Handoff2026-03-047 minDesign Engineering