skip to content

Search

How to Write a Product Spec That Actually Gets Read

Less than one minute read Updated:

Most product specs fail not because they lack detail, but because they are written for the wrong audience and serve the wrong purpose.

A forty-page spec and a five-line Slack thread the next morning are the same failure.

I have watched three teams ship this way: supply-chain platforms at Dell, a 20-person AI creative team at Pixis, the data platform under InMobi’s ad exchange. Each one wrote specs that got longer every quarter. Each one still had the same five questions land in chat the morning after the doc went out.

That is not a reading problem. It is a design problem. The document was built to survive scrutiny, not to produce action. I run the spec-driven process for this site now, one spec per feature in specs/, and the difference between a spec that works and a spec that doesn’t has nothing to do with length.

So that’s today’s post.

Today’s Post

Why the thick spec and the ignored spec are the same document, in six sections.

  • Why the spec is doing the wrong job
  • Thoroughness is not quality
  • How CYA culture writes documents nobody opens
  • The three questions that carry the whole thing
  • The one-page spine, and how this site runs it in public
  • Why conversation has to come before the document

1. The spec is doing the wrong job

Most teams think a spec fails when it is too thin. The real failure is almost always the opposite.

Completeness is not the same job as alignment. A spec built for completeness tries to hold every decision forever. A spec built for alignment tries to get four functions moving in the same direction by Monday.

When a PM treats the spec as the place where every decision must live, the document turns into a defensive wall. It is written to survive people who were not in the room. It is written to pre-empt every objection before it is raised. Forty pages later, it functions as a security blanket for the author and a skippable PDF for everyone else.

I would grade a spec that tries to be an encyclopedia a 3/10, no matter how well-researched each section is.

Here is how the spec-driven process on this site avoids that trap. Every feature on this site has a spec in specs/, and each one is written before the code, not after. The Swiggy-style ETA estimator spec freezes the formula, the output shape, and the acceptance threshold, nine of ten fixtures within three minutes, in under a page. The formula could fill ten pages of derivation. It doesn’t need to.

Completeness and alignment are different jobs A spec optimized for one produces a document nobody reads. A spec optimized for the other produces a team that stops asking. Grey monospace text names the post's worked example for each row. WRITTEN FOR PRODUCES TAKES COMPLETENESS ALIGNMENT People not in the room every objection, pre-empted in advance a defensive wall, not a shared picture Four functions moving by Monday product, design, engineering, the partners who block the ETA estimator spec, four readers A skippable PDF a security blanket for the author forty pages, graded 3/10 A team that stops re-asking success, scope and tradeoffs already fixed nine of ten fixtures within three minutes As long as the fear runs a paragraph per unresolved worry grows every quarter, never done Under a page formula, output shape, acceptance threshold the derivation stays out, on purpose A monument nobody reads, everybody cites A shared picture what, why, success, and the decisions already made
Same document, two different jobs. The alignment column takes under a page; the completeness column grows every quarter. PNG ↓

The team does not need a monument. They need a shared picture of what they are building, why it matters, what success looks like, and which tradeoffs are already made. Everything past that belongs in tickets, in design files, and in the heads of the engineers who build the thing, not in one canonical scroll pretending to replace judgment.


2. Thoroughness is not quality

Organizations reward thickness. A long spec signals seriousness. A short one signals laziness. That reward structure produces bloat, one paragraph at a time.

Ambiguity insurance: the PM adds a paragraph because an unresolved question feels dangerous to leave unresolved on the page, even when it is genuinely unresolved in the room. Legal gets folded in because nobody wants to be the one who “forgot to document” a risk. Every stakeholder wants their concern reflected somewhere in the same file, as if inclusion were the same thing as agreement.

None of that material reduces risk. It relocates risk into a document dense enough that nobody reads it closely enough to resolve anything.

Quality in a spec is not page count. It is whether the team can act without re-asking the same questions. This is the same trap the outcomes post on this site names for metrics: a dashboard that looks thorough and a spec that looks thorough fail the same way, they measure the wrong thing. Usage tells you a feature is visible. Page count tells you a PM was busy. Neither tells you whether the thing worked.

The acceptance criteria on this site’s example specs are written as binary checks for exactly this reason. A criterion you cannot fail is not a criterion, it’s a mood.


3. CYA culture writes documents nobody opens

Some teams do not write long specs because the work demands it. They write long specs because the culture punishes a visible gap harder than it punishes slow execution.

When the primary job of a document becomes coverage, the prose changes shape. Sentences hedge. Sections duplicate the same requirement three ways. Every addition is a small insurance policy against blame six weeks from now.

That produces a document that is defensible and useless in the same breath. It proves someone wrote something. It does not prove the team agrees on what happens next.

The skim trap: engineers learn to skim because skimming is the rational response to a document where the signal is buried under compliance filler. Designers learn to wait for the meeting because the meeting is where the actual decision surfaces. Product learns to dread the rewrite cycle, because each revision is another round of performing diligence for an audience that will not read the new version either.

Ad-tech solved a version of this problem years ago by refusing to let one party grade its own work. Nobody lets an ad network report its own install numbers unaudited, the industry built an entire referee category, the MMP, to check the math independently. A spec that only the author reads and only the author defends is marking its own homework the same way.

None of that gets solved by adding detail. It gets solved by changing what the document is for.


4. The three questions that carry the whole document

A readable spec answers three questions with uncomfortable clarity. Everything else is optional.

What are we building and why? Not a feature list dressed up as strategy. The customer problem, the business reason, the constraint that makes this the right bet now. Read only this section and you should understand the intent without a glossary.

What does success look like? Outcomes, signals, the minimum bar for “this worked.” If you cannot state success without citing internal politics, you have not finished defining the goal, you are still negotiating it.

What are we deciding now, and what are we explicitly not deciding? Tradeoffs are the actual heart of product work. A spec that pretends every choice is obvious gets rewritten in code review two weeks later. Name the decision. Name its cost. Name what you are willing to be wrong about.

Three questions carry the whole document Skip a card and the failure mode on its right is what shows up in Slack the next morning. Dashed coral arrows point from a skipped question to what happens instead. 1 What are we building, and why? the problem, the bet, the constraint that makes it now the ETA estimator's formula, in under a page A feature list dressed up as strategy the reader needs a glossary just to find the intent 2 What does success look like? outcomes, signals, the minimum bar for "this worked" binary acceptance checks, not a mood Success negotiated after the fact "this worked" gets settled by internal politics 3 What are we deciding, and what not? name the decision, its cost, what you're wrong about every spec template opens on this before a field is named Rewritten in code review two weeks later every choice pretended obvious, then wasn't the question, answered on the page what happens when it's skipped
Skip a card, and its failure mode ships instead. Every spec template on this site opens on these three before a single field gets named. PNG ↓

specs/templates/ on this site has one template per spec type, content-schema, ai-feature, feature, component, and every one of them opens with these same three questions before a single field or endpoint gets named.


5. The one-page spine, and how this site runs it in public

The best specs share a structure: a short spine of decisions and context, then links outward for depth.

The spine: fits on one page, or two for a genuinely complex problem. It is written for the people who must align before work starts, product, design, engineering, and whichever partners actually block or accelerate the effort.

The links: point to research summaries, flows, technical notes, analytics views, and legal requirements. Those artifacts can run long. They should run long when the detail earns it. The spine stays short because its job is not to contain the universe, its job is to force alignment on the small set of choices that otherwise leak into Slack as thrash.

This site runs that spine at the project level too, not just per feature. specs/ROADMAP.md is one file. Every feature, partial or shipped, has a row. Every row links to its spec and carries a status. There is no separate backlog living in a second tool that drifts out of sync with the first.

A short spine, links radiating out for depth The spine stays under two pages. The links can run as long as the detail earns. Grey monospace text names the post's example of each link. The spine problem success metric key decisions specs/ROADMAP.md, one row per feature Research summaries, can run long the designer's user-journey doc links to Technical notes flows and API shapes the appendix the engineer opens links to Analytics views, not a narrative the acceptance-check evidence links to Legal requirements, filed once not folded into the spine to be safe links to stays short, on purpose runs long when the detail earns it
The spine stays short on purpose. The links run long exactly when the detail earns it. PNG ↓

The model respects attention and expertise at the same time. The engineer who needs the edge-case list opens the appendix. The designer who needs the user journey opens the research doc. The reader who needs the narrative reads the first page and stops there, correctly.

What does not work is forcing every reader through the same forty-page funnel because one PM wanted a single file to rule them all.


6. Why conversation has to come before the document

No document eliminates ambiguity. At best, a spec compresses ambiguity into a visible decision.

The teams that ship well treat the spec as the output of a conversation, not a substitute for one. They have the hard discussion first. They write the spec to record what got decided, not to avoid having the discussion at all.

That order matters more than any formatting rule in this post. When the spec leads, the document is a wish, people sign off on paper without understanding it, and the real conflicts surface during implementation, the single most expensive place to find them. When the conversation leads, the spec becomes a record, and it is easy to keep short because the group already did the painful alignment work in the room. The words on the page map to something the whole team remembers living through.

Conversation first reaches build with no surprises Same four stages, run in a different order. Scroll slowly, this plays once. Grey monospace text is what happens at each stage in this post's telling. CONVERSATION DECISION SPEC WRITTEN BUILD CONVO FIRST Hard discussion happens the room, not the page Tradeoff gets decided named, with a cost Spec records the decision short, because the work is already done Build, no surprises page matches what the room lived through SPEC FIRST Spec written first a wish, not a record Signed off unread nobody understood it, on paper "Decision" never happened the tradeoff is still open Same conflict, during build the most expensive place to find it reaches build clean hits the conflict late instead
Same four stages, different order. Conversation first reaches build clean; spec first just delays the conflict. (animates as you scroll to it) PNG ↓

This is also where implementation detail belongs, and it isn’t the spine. Data models, API shapes, exact error copy, those items matter, but they do not need to share a narrative with the strategy section. They need an owner, a ticket, and a place where a specialist can move fast without re-reading a page of company mission first.

A common failure worth naming directly: confusing documentation with decision-making. You can describe a feature beautifully and still leave the team without a decision on scope, on the success metric, or on what happens when reality disagrees with the plan. The team will keep asking, and the fix is never another paragraph of explanation. The fix is stating the decision, even the uncomfortable one. “Ship without X.” “Defer Y to phase two.” “We are optimizing for speed over polish in the first release.” Three short sentences, and each one saves a week of thrash later.


Takeaways

How to write a spec that actually gets read Six sections on why the forty-page spec and the five-line Slack thread are the same failure Hoshank Ailani · hoshank.vercel.app 1. Completeness vs alignment COMPLETENESS ALIGNMENT written for: people not in the room four functions moving by Monday produces: a skippable PDF a team that stops re-asking takes: as long as the fear runs under a page a monument a shared picture the ETA estimator spec: nine of ten fixtures, under a page 2. Thoroughness is not quality Ambiguity insurance: a paragraph per fear Legal folded in so nobody "forgot" Inclusion mistaken for agreement None of it reduces risk, only relocates it a dashboard that looks thorough and a spec that looks thorough fail the same way, they measure the wrong thing a criterion you cannot fail is not a criterion, it's a mood 3. The CYA skim trap 1 Coverage becomes the document's job 2 Sentences hedge, requirements triplicate 3 Engineers learn to skim, rationally defensible and useless, in the same breath Ad-tech built the MMP so no network grades its own install numbers. a spec only its author reads is marking its own homework 4. The three questions 1 What are we building, and why? 2 What does success look like? 3 What are we deciding, and what not? every template in specs/templates/ opens on these three before a single field or endpoint gets named Skip a card, and its failure mode ships instead 5. The spine and its links Spine: problem, success metric, key decisions Links out: research, tech notes, analytics, legal The links can run long. The spine can't specs/ROADMAP.md runs this at the project level one row per feature, every row links to its spec no second backlog drifting out of sync 6. Conversation before document conversation first → build, no surprises spec written first → same conflict, in build the document is the output of a conversation, never a substitute for having it "Ship without X." "Defer Y to phase two." three short sentences save a week of thrash A long spec and an ignored spec are the same failure. Check whether the last spec your team wrote answers the three questions on its first page. Full post: hoshank.vercel.app/posts/how-to-write-a-product-spec-that-gets-read Takeaways
The whole post on one card. Save it, share it, argue with it. PNG ↓

Six panels, one per section. The callout is the thesis, and the test to run on the last spec your team shipped.

Final Words

Most teams have the discipline to write long specs and not the discipline to write short ones. Thoroughness feels safer than judgment, and it produces a document that impresses stakeholders and exhausts builders in the same breath.

Pick the last spec your team wrote. Check whether it answers the three questions in section 4 in the first page. If it doesn’t, the length was never the problem, the missing decision was.

Reply and tell me what you found.

Cheers, Hoshank