Skip to content

Founding Hypothesis

One sentence with five slots names the customer, the Problem, the approach, the switch and the edge, each graded by outside Evidence.

A Startup authors one record, the Founding Hypothesis: one sentence with five slots, each graded by outside Evidence. Everything the Startup says, sells and measures compiles from it.

One sentence, five slots

The sentence has a fixed shape. Each slot is a child Hypothesis with its own Metric and threshold, and each points at a record.

Text
If we help {customer}
solve {problem}
with {approach},
they choose it over {switch}
because {differentiation}.
SlotSentencePoints atCheapest testHolds when
customerIf we help [ICP]ICPInterviewThe customer slot names the ICP, and holds while a selector returns real Prospects who reply.
problemsolve [Problem]ProblemInterviewThe problem slot names the Problem the ICP pays to solve today, and what solving it costs them.
approachwith [Product Template]Product TemplateSmoke pageThe approach slot names the Product Template the Startup bets on, with one backup approach.
switchthey choose it over [Organization]OrganizationPre-saleThe switch slot names the Organization the ICP hires today, and holds when they pay to leave it.
differentiationbecause [Metric]MetricFake doorThe differentiation slot names the two axes on which the Startup wins, each measured by a Metric.

Agents draft the sentence from a cell on the opportunity map. The Founder edits the draft and commits it, then sets one number beside it: the Minimum Success Criteria.

Grades, not filled fields

Each slot shows the strongest grade among its outside Evidence. Behavior beats Commitment, and Opinion weighs the same as no Evidence at all: zero. A compliment moves no slot.

Lifecycle gates read grades, never fields, so typing into a slot passes nothing.

To enterSlots at Commitment or Behavior, from outside people
Buildingcustomer, problem, switch
Liveall five

Everything compiles from it

The sentence is the source. The Story, the Offer and its Price, the Site copy, the Personas and the first Plays are compiled from it, never written beside it.

Every output carries its lineage as from: Hypothesis#<slot>@v<version>. A headline traces back through the Story to the slot and to the Evidence behind it. An edit to an output is kept as an override that names its source.

A pivot is a diff

An edit to the sentence is a Change. Its preview shows every output the edit recompiles before it merges. A merged Change adds a version, and every version stays on the record.

A pivot is the diff between two versions, named for the slot that moved. It carries the Evidence that forced it.

Write it

The sentence lives in startup.ts under hypothesis, one key per slot, each a phrase. The approach names its Product Template, and the differentiation names its two axes.

TypeScript
import { Startup } from 'startup-builder'

export default Startup({
  name: 'Platecost',
  domain: 'platecost.app',
  extends: 'solo-saas',
  hypothesis: {
    customer: 'Independent restaurants with one to three locations',
    problem: 'Food-cost drift from changing supplier prices',
    approach: 'A SaaS that recomputes plate costs from every invoice they photograph',
    switch: 'The spreadsheet and the bookkeeper',
    differentiation: 'Margins the same day, as a cost per plate',
  },
})

npm create startups takes the same object as hypothesis in its --json input. On a running Startup, each slot is its own Hypothesis under the root, hypothesis_1, and every Interface writes one with Hypothesis.create:

Terminal
curl -X POST https://api.sb/platecost.app/hypotheses \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind":"problem","parent":"hypothesis_1","statement":"Food-cost drift from changing supplier prices"}'

A slot starts at version 1 with the grade None. To edit a slot, change it in startup.ts and run npx startup-builder dev, which previews the Change and every output it recompiles.

To read the grades back, ask for the record:

Terminal
npx startup-builder show /hypothesis --fields slot,grade,next
Text
platecost.app   Founding Hypothesis v1   state Idea

slot              grade        next
customer          Commitment   met
problem           Commitment   met
approach          None         Smoke page
switch            Commitment   met
differentiation   Opinion      Fake door

pass  Three slots at Commitment   building-slots   3 of 3

next names the cheapest rung on the test ladder that lifts the slot to Commitment. The differentiation slot holds Opinion, so it counts zero and still blocks Live.

Example

Text
platecost.app: three compiled outputs, each with its lineage

Reserve page headline  "Stop rebuilding the food-cost sheet every weekend."   from: Hypothesis#problem@v1
Price anchor           $79 a month against a $400 bookkeeper                    from: Hypothesis#switch@v1
Story one-liner        "Margins per plate, updated the morning an invoice lands." from: Hypothesis#differentiation@v1

Next