Milestone map
Milestone map
5 milestones
Define 'launched' before building
2–3 days. The document should take no longer than a day to write. If it takes longer, you are solving uncertainty about the product by writing more — stop and ship instead. The date you write on the document is the date you will launch.
Write a one-page launch definition before any code. Name the one metric that says the launch worked or failed. List what's in v1.0 and what's explicitly out. Name three channels to reach strangers, not friends. Set the ship date you'll keep however the product feels. Commit it to a GitHub repository before any code exists there.
Proof required
Share your GitHub repository. Its first commit must be the launch definition, shown by commit history. The repository must contain no product code yet. Write 150 words on why you chose this metric. Say what you'd do if you hit it versus missed it.
What gets checked
- The document is the first commit, shown by git log. Code in that commit means it came too late.
- The metric is one number with a threshold, like '10 paying customers in 30 days'.
- The three channels are specific, like a named subreddit or community, not 'social media'.
Common mistakes
- Building before writing the document. The commit history is the proof.
- Choosing a metric you can't count, like 'positive feedback'. Pick one that produces a number.
Resources
Foundationstart here
Masteryfor the dedicated
Arena
What a verifier looks for
- Check git log: the first commit's time and files. Product code there means the document came later.
- Can the metric be measured as a number on a date? If not, ask for a count.
- Are the channels specific enough to act on now? 'Post on Reddit' isn't.
- Ask what they'll do if they miss the metric. 'Try harder' means it isn't meaningful to them.
You'll sign in first, then come straight back here.
Build the minimum that does one thing
4–6 weeks. The product should be shippable in this time. If it is not, you are building too much. The constraint is the launch date from Milestone 1 — not when the product feels ready.
Build v1.0. It does exactly one thing well: the core action a customer pays for. Anything not in your launch definition is out of scope. Ship on the Milestone 1 date, even if it feels unfinished. It will.
Proof required
Share the live public URL. Record 3 minutes of a full journey from landing page to core action. Narrate what you're doing and why each step is needed. Write 200 words on what you cut to ship on time. Say whether cutting it was right.
What gets checked
- Live at a public URL. A stranger can use the core feature without instructions.
- The recording is narrated, so the verifier can follow every step.
- Cut features are named specifically, with an honest verdict on each.
Common mistakes
- Calling a waitlist a launch. Launch means users can do the thing now.
- Adding 'just one more thing'. Every addition moves a date that shouldn't move.
Resources
Foundationstart here
Depthgo deeper
Masteryfor the dedicated
What a verifier looks for
- Use the URL unaided as a new user. Report every friction point if the core action takes over 3 minutes.
- Does the narration explain why each step exists, not just what's clicked?
- Check the ship date against Milestone 1. If late, ask what caused it.
- Ask what users can do here that they can't elsewhere. It should take one sentence.
You'll sign in first, then come straight back here.
Get strangers using it unaided
2 weeks after launch. If you hit 25 in the first 48 hours, you have a distribution channel that works — double down immediately. If you hit 0 after 14 days through all three channels, the distribution is the problem, not the product — document and pivot the channel strategy.
Get 25 people who've never met you to complete the core action. Signing up or showing interest isn't enough. Don't invite any of them personally. They must arrive through your three channels and try it on their own. Track where each user came from. Fewer than 25 in 14 days is a signal; document what you tried.
Proof required
Share analytics showing 25+ unique users who completed the core action. Show the channel posts that brought them. Write 200 words on which channel worked best and why. Say what you'd change in the next launch's first 48 hours.
What gets checked
- Analytics show 25+ core-action completions, not page views or signups.
- The actual posts, listings or outreach are shown, not just analytics.
- The best channel is named with its number and a reason it worked.
Common mistakes
- Counting page views. You need event tracking for the core action.
- Counting people you invited. The stranger rule is the point.
Resources
Foundationstart here
Depthgo deeper
Masteryfor the dedicated
What a verifier looks for
- Is the dashboard tracking an event or page views? Page views aren't the metric.
- Ask for 3 user IDs and trace each to a channel. If they can't, attribution isn't real.
- The channel analysis needs a number and a reason, not just 'Reddit worked best'.
- Ask which single channel they'd use for 250 users in 30 days, and why.
You'll sign in first, then come straight back here.
Measure whether it's working
30 days of observation. This milestone cannot be rushed — the data requires time to exist. Use the 30 days to talk to users, not to add features. Every conversation with a churned user is worth more than any feature you could build.
Measure three metrics for the first 30 days. Activation: did users complete the core action? Retention: did they return within 7 days? Revenue: what did they pay? Use actual numbers, not estimates. Zero retention is a real result; report it and say what it means.
Proof required
Share a dashboard or spreadsheet with all three metrics over 30 days. Show raw numbers, not only percentages. Write 250 words on retention: the number and what it means. Say why users did or didn't return. Below 20%, say specifically what users found missing.
What gets checked
- All three metrics come from real analytics, shown as raw counts.
- Retention is by cohort: of week-1 activators, how many returned in week 2.
- Retention is reported honestly, with a specific hypothesis if it's low.
Common mistakes
- Comparing total users week to week. That mixes in new users and hides churn.
- Not talking to churned users. If you have their email, contact them.
Resources
Foundationstart here
Masteryfor the dedicated
What a verifier looks for
- Ask for the cohort calculation: week-1 activators who returned in week 2. Without it, it's rolling totals.
- The actual retention number must be stated, not reframed as 'strong engagement'.
- Ask why retention is what it is. 'People forgot' shows no real thinking.
- Revenue must match payment records. Free products report $0, which is valid.
You'll sign in first, then come straight back here.
Publish a public launch retrospective
3–5 days. The writing is the hard part. Most founders hate writing retrospectives because it requires admitting what did not work. The retrospectives that are most useful — to you and to others — are the ones that are most honest about failure.
Write a public retrospective of at least 600 words. State the original metric and whether you hit it. Give each channel's exact numbers, plus activation and retention. Name one thing that beat expectations, one that failed, and what's next. Publish it on Indie Hackers, your blog or a public README.
Proof required
Share the public URL of your retrospective; it must load without a login. Write 150 words on why publishing it matters for your own next launch.
What gets checked
- All six sections have real numbers. The Milestone 1 metric is quoted exactly with its result.
- The failure is named plainly, with a specific reason, not softened into 'room for improvement'.
- It's at a public URL. A private document doesn't count.
Common mistakes
- Leaving out a missed metric. The miss is where the learning is.
- Calling a login-protected page public. The URL must work for a stranger.
Resources
Foundationstart here
Depthgo deeper
What a verifier looks for
- Open the URL logged out. If it needs a login or invite, it isn't public.
- The Milestone 1 metric must be quoted exactly, with whether it was hit.
- Is the failure honest? 'Distribution was harder than expected' is too vague.
- Ask if they'd show it to a potential co-founder. Hesitation means it isn't honest enough.
You'll sign in first, then come straight back here.