Shipping is not launching
A live URL with zero visitors is not a launch, it’s an inventory item — distribution is a design input decided before you write code, not a step tacked on after.
Somewhere on the shelf there is a project that is actually finished. The code runs, the pages render, the checkout would take a stranger’s money if a stranger ever reached it. A finished sports-guides site with no traffic is the shape this course keeps returning to, and it is worth sitting with rather than rushing past: nothing about it is broken. Nobody is complaining. The build succeeded. And the project does exactly nothing, because nobody knows it exists.
That gap — between a thing that works and a thing anyone has ever seen — is what this lesson calls the distribution gap, and it earns a name of its own because it doesn’t announce itself the way other failures do. A bad idea gets rejected. A broken feature throws an error. A price nobody will pay shows up as silence at checkout. A live URL with zero visitors produces no error at all — from the inside, it looks exactly like a live URL that is about to take off any day now.
Why distribution is a design input, not a phase you get to later
The instinct is reasonable on its face: build the thing, then figure out how people find it. Building has a checklist — features, pages, a working checkout — and finding an audience feels like a separate, softer problem to solve once the real work is done. That ordering is also exactly backwards, and the reason is not motivational. It’s structural.
A product built without a channel in mind gets built to please nobody in particular. A page meant to rank for a specific question needs to be structured around that question from its first draft, not retrofitted onto whatever pages already existed. A product meant to be handed from one person to a friend needs a moment inside it worth forwarding, built in on purpose, not bolted on after launch as a “share” button nobody clicks. Choosing the channel first doesn’t just tell you where to post about the finished product — it changes what gets built, because a product shaped for no channel in particular fits none of them well.
This isn’t a solo-builder problem invented by evening hours and no marketing budget. Thiel is writing about venture-funded startups with full-time sales hires, and his diagnosis of why they die is the same gap, at a completely different scale:
“poor sales rather than bad product is the most common cause of failure” (Thiel, Zero to One, ch. 11)
Sit with what that means for the case at hand: it is not that the sports-guides site is a bad product. It might be a perfectly good one. Thiel’s point is that goodness was never the variable doing the work — distribution was, and it was never decided.
What “done” actually hides
The maintenance-load lesson made one version of this point already: the categories of cost that don’t show up on a hosting bill are exactly the ones nobody budgets for, because nothing forces them onto a spreadsheet. Distribution hides the same way, for the same reason. A build either compiles or it doesn’t. A deploy either succeeds or it doesn’t. Nothing in that pipeline has ever asked who is going to see this, so “done” quietly narrowed, somewhere along the way, to mean only “the code works.” That is a true and useful definition of done for an engineer. It is a dangerously incomplete one for a person deciding whether to spend the next six months on a project.
The honest version of “done” has two conditions, not one: the thing works, and a specific person, or a specific place where specific people already gather, has been named as who it is for. A finished, unvisited site is proof that the first condition can be fully met while the second was never even asked.
The honest question, before you build anything else
For a project already built, the question arrives too late to change the build, but not too late to be honest about the answer. For a project not yet started, it belongs before the first line of code, every time:
Who is going to see this, and how will they find out it exists?
If that doesn’t have a one-sentence answer with a specific person or a specific place in it, it isn’t a distribution plan. It’s a hope wearing the shape of a plan, and hope was already the plan for the sports-guides site.
Retrieval check
The site is finished and gets no traffic. What decision, made months ago, produced that?
Check your answer
Not a bad idea, not a bad build, not a lack of effort since launch. The decision that produced a finished, silent site is the one that never got made: nobody named who it was for or how they’d hear about it before the building started. Distribution was never a design input — it was left to happen on its own, the way traffic sometimes just happens to sites people talk about, and this site was never in that conversation because no one decided it would be.
The fix isn’t “try harder now that it’s live.” Effort after the fact can still find an audience, but it is working uphill against a shape that was never built with any particular audience in mind. The lesson to carry forward is about the next project’s first week, not this one’s next push.
Hands on
Name the gap honestly, before naming a channel
Done when: PORTFOLIO.md’s new Distribution plan field, added to one project, states plainly whether distribution was ever decided — and if it wasn’t, says so in those words rather than inventing a plan after the fact.
- Pick the project on the shelf that best matches the shape this lesson keeps naming — built or live, and getting little to no traffic.
- Answer in writing, honestly: when this project was built, was there ever a specific person or a specific place named as who it was for and how they’d hear about it? Not a vague sense that “people would find it” — a name, or a place with a name.
- If the honest answer is that no such decision was ever made, resist writing a plan into the ledger now to make the field look filled in. Write the gap instead, in plain language: distribution was never decided, and the project shipped assuming visibility would follow from the build being done.
- Add a Distribution plan field to that project’s entry in
PORTFOLIO.md— it doesn’t exist there yet — and write that honest sentence into it. Don’t name a channel yet; picking one on purpose is its own, separate discipline. - Bring it into the chat. I’ll push back on anything that reads like a channel smuggled in early, or like the gap got softened instead of stated.
What this does not cover
Naming the gap honestly doesn’t close it, and this lesson deliberately stops short of picking a channel — that decision deserves its own discipline, not a rushed guess tacked onto an already hard admission. What comes next is testing a few channels cheaply, on purpose, and then committing to exactly one for a real stretch of time.
Read this next — primary source
If You Build It, Will They Come?Zero to One, ch. 11 — Peter Thiel with Blake Masters (Crown Currency, 2014) — a paid book; there is no free full text
The chapter title is the honest question this lesson turns into a checkpoint, and the one line borrowed below is the smallest piece of a much larger argument: Thiel spends the rest of the chapter cataloging which distribution channels actually work at which price point, and arguing that a company without a distribution plan is not a company with a marketing problem — it is a company with an unfinished product. Reading the whole chapter shows how far that argument goes past the single sentence quoted here.
Stuck, curious, or think this lesson is wrong? Ask your teaching agent. The lessons are the scaffold; the conversation is where the learning gets unstuck.