[
  {
    "n": 1,
    "section": "The meta-lessons (if you read nothing else)",
    "lesson": "Check before you build.",
    "wrong": "Don't build first and check later. We built nine marketplace listings, three books and a long workbook interior before ever asking a marketplace how many people search for the thing.",
    "right": null
  },
  {
    "n": 2,
    "section": "The meta-lessons (if you read nothing else)",
    "lesson": "Verify the instrument, then verify the claim.",
    "wrong": "Don't trust a tool because it answered. We took \"Subscribed\", \"Published\", \"#3\", and a cached page at face value. All four were false.",
    "right": null
  },
  {
    "n": 3,
    "section": "The meta-lessons (if you read nothing else)",
    "lesson": "A flattering result deserves more scrutiny than a damning one.",
    "wrong": "Don't skip verifying good news. We spent zero seconds questioning a #3 placement and an hour questioning a #64 placement. The #3 was the lie.",
    "right": null
  },
  {
    "n": 4,
    "section": "The meta-lessons (if you read nothing else)",
    "lesson": "The building was always the cheap part.",
    "wrong": "Don't mistake output for progress. We produced 44 posts, 11 listings, 3 books and a website before producing a single verified fact about demand.",
    "right": null
  },
  {
    "n": 5,
    "section": "The meta-lessons (if you read nothing else)",
    "lesson": "A thing that fails silently is worse than a thing that fails loudly.",
    "wrong": "Don't accept a tool that can't fail. We used platform UIs as measurement instruments for two weeks without asking what a failure would look like.",
    "right": null
  },
  {
    "n": 6,
    "section": "The meta-lessons (if you read nothing else)",
    "lesson": "Write the prediction down before the data arrives",
    "wrong": "Don't explain a result after seeing it. We nearly read the three books' performance however the day's mood suggested — until we wrote predictions down.",
    "right": null
  },
  {
    "n": 7,
    "section": "The meta-lessons (if you read nothing else)",
    "lesson": "Record decisions once, on paper.",
    "wrong": "Don't leave a contradiction in two files. The feed was \"folded to free\" in one document and \"$19, live\" in another, on the same page, for hours.",
    "right": null
  },
  {
    "n": 8,
    "section": "The meta-lessons (if you read nothing else)",
    "lesson": "The team's criticism of us was worth more than its ideas.",
    "wrong": "Don't ask a panel what it thinks of your idea and then ignore what it says about your judgement. Their criticism of us was the useful half.",
    "right": null
  },
  {
    "n": 9,
    "section": "The meta-lessons (if you read nothing else)",
    "lesson": "A lessons file only compounds if it's alive.",
    "wrong": "treat a retrospective as a one-time deliverable — written once at the CEO's request, then left to rot while new mistakes pile up unrecorded, until someone repeats entry #84 verbatim (an agent did, six hours after it was written, because nothing made it read it).",
    "right": "standing order — every session appends its lessons the same day in the three-part format; the daily pipeline checks the day's work for uncaptured lessons; new agent briefs cite the entries relevant to their task. A document that grows daily is an operating manual AND a bottomless content inventory. One that doesn't is a eulogy."
  },
  {
    "n": 10,
    "section": "Market research — the most expensive lessons",
    "lesson": "Ask the platform what it knows before building for it.",
    "wrong": "Don't infer demand from proxies when the platform publishes the real number. We used Google Trends shapes for a week; Etsy had the actual figure behind a free menu item.",
    "right": null
  },
  {
    "n": 11,
    "section": "Market research — the most expensive lessons",
    "lesson": "A keyword is not a product.",
    "wrong": "Don't build for a keyword without looking at what it returns. We picked \"emergency binder\" on volume alone. The results are physical binders.",
    "right": null
  },
  {
    "n": 12,
    "section": "Market research — the most expensive lessons",
    "lesson": "Term volume tells you what people TYPE, never what they expect to RECEIVE.",
    "wrong": "Don't assume the searcher wants your format.",
    "right": null
  },
  {
    "n": 13,
    "section": "Market research — the most expensive lessons",
    "lesson": "Look at what the top results actually ARE",
    "wrong": "Don't stop at the volume column. The format of the top results is the more important data.",
    "right": null
  },
  {
    "n": 14,
    "section": "Market research — the most expensive lessons",
    "lesson": "Volume is a ceiling, not a forecast.",
    "wrong": "Don't treat available searches as expected traffic. 2,700 available produced one view and we called it a demand finding.",
    "right": null
  },
  {
    "n": 15,
    "section": "Market research — the most expensive lessons",
    "lesson": "A BSR number is not a volume.",
    "wrong": "Don't quote a BSR number as if it were a volume. BSR #2,961 proves sales exist; it doesn't size them.",
    "right": null
  },
  {
    "n": 16,
    "section": "Market research — the most expensive lessons",
    "lesson": "\"The market exists\" and \"we can reach it\" are different questions.",
    "wrong": "Don't let \"the market exists\" smuggle in \"we can reach it.\" That conflation was the entire estate-organiser premise.",
    "right": null
  },
  {
    "n": 17,
    "section": "Market research — the most expensive lessons",
    "lesson": "Zero on one instrument is not zero demand.",
    "wrong": "Don't declare a market dead on one instrument. Bing said zero for a category with 24,700-review incumbents.",
    "right": null
  },
  {
    "n": 18,
    "section": "Market research — the most expensive lessons",
    "lesson": "Every instrument has a blind spot — name it before using the data.",
    "wrong": "Don't use an instrument without naming its blind spot first.",
    "right": null
  },
  {
    "n": 19,
    "section": "Market research — the most expensive lessons",
    "lesson": "Absence of competitors is a warning, not an opportunity.",
    "wrong": "Don't treat an empty category as an opportunity. We nearly built big-button phone cards because nobody sold them. Nobody sells them because the free manual in the box wins.",
    "right": null
  },
  {
    "n": 20,
    "section": "Market research — the most expensive lessons",
    "lesson": "Absence of a FORMAT in a proven market is a stronger warning still.",
    "wrong": "Don't ignore a missing FORMAT in a healthy category. Zero perfect-bound competitors was the answer, and we initially read it as an opening.",
    "right": null
  },
  {
    "n": 21,
    "section": "Market research — the most expensive lessons",
    "lesson": "Review counts are an ordinal proxy for sales, not a count.",
    "wrong": "Don't state review counts as sales.",
    "right": null
  },
  {
    "n": 22,
    "section": "Market research — the most expensive lessons",
    "lesson": "BSR is the better proxy",
    "wrong": "Don't ignore BSR when it's free and public — we spent a week without it.",
    "right": null
  },
  {
    "n": 23,
    "section": "Market research — the most expensive lessons",
    "lesson": "Aggregator numbers ran 5× above primary sources",
    "wrong": "Don't repeat an aggregator's number. Ours ran 5× above primary sources.",
    "right": null
  },
  {
    "n": 24,
    "section": "Market research — the most expensive lessons",
    "lesson": "Grade every number: self-reported / platform-verified / estimated.",
    "wrong": "Don't mix evidence grades in one sentence. A self-reported revenue claim and a platform-verified rating are not the same kind of fact.",
    "right": null
  },
  {
    "n": 25,
    "section": "Market research — the most expensive lessons",
    "lesson": "A competition ratio alone is misleading.",
    "wrong": "Don't order opportunities by competition ratio alone.",
    "right": null
  },
  {
    "n": 26,
    "section": "Market research — the most expensive lessons",
    "lesson": "Ratio AND conversion rating together.",
    "wrong": "Don't skip the conversion rating when the platform gives you one free.",
    "right": null
  },
  {
    "n": 27,
    "section": "Market research — the most expensive lessons",
    "lesson": "You cannot judge a bad number without a healthy benchmark.",
    "wrong": "Don't judge a number without controls. We called 25/month \"bad\" before we had ever seen a good Etsy number.",
    "right": null
  },
  {
    "n": 28,
    "section": "Market research — the most expensive lessons",
    "lesson": "Marketplace search and web search are different populations.",
    "wrong": "Don't glue a web-search volume to a marketplace standing. I did exactly that, told the CEO we'd \"found it,\" and had to correct it an hour later.",
    "right": null
  },
  {
    "n": 29,
    "section": "Market research — the most expensive lessons",
    "lesson": "Exclude yourself from your own analytics.",
    "wrong": "Don't count your own traffic. Half our 32 visits were our own checks.",
    "right": null
  },
  {
    "n": 30,
    "section": "Market research — the most expensive lessons",
    "lesson": "When you check a live surface repeatedly, you appear in its numbers.",
    "wrong": "Don't check a live surface repeatedly and then read its analytics innocently.",
    "right": null
  },
  {
    "n": 31,
    "section": "Market research — the most expensive lessons",
    "lesson": "Measure from outside the account.",
    "wrong": "Don't measure your own visibility from your own account.",
    "right": null
  },
  {
    "n": 32,
    "section": "Market research — the most expensive lessons",
    "lesson": "Free research beats paid research when you haven't got a product yet.",
    "wrong": "Don't reach for a paid tool before exhausting free ones. We nearly justified $29/month while four free tools sat unused.",
    "right": null
  },
  {
    "n": 33,
    "section": "Market research — the most expensive lessons",
    "lesson": "Ahrefs' connector needs a paid plan behind the OAuth",
    "wrong": "Don't record a connector as a free unlock without checking what sits behind the OAuth. We propagated that error into our own source of truth.",
    "right": null
  },
  {
    "n": 34,
    "section": "Market research — the most expensive lessons",
    "lesson": "Read three-star reviews, not one-star.",
    "wrong": "Don't read only one-star reviews.",
    "right": null
  },
  {
    "n": 35,
    "section": "Market research — the most expensive lessons",
    "lesson": "Unanswered questions in a listing's Q&A are a public list of the seller's blind spots.",
    "wrong": "Don't skip the Q&A section — it's a free list of what the market wants and isn't getting.",
    "right": null
  },
  {
    "n": 36,
    "section": "Market research — the most expensive lessons",
    "lesson": "What people dump in Buy Nothing groups reveals fast buyer's remorse.",
    "wrong": "Don't ignore secondary resale/giveaway signals.",
    "right": null
  },
  {
    "n": 37,
    "section": "Market research — the most expensive lessons",
    "lesson": "Comment-to-view ratio predicts a product about to sell",
    "wrong": "Don't chase view counts when the comment ratio is the predictive number.",
    "right": null
  },
  {
    "n": 38,
    "section": "Market research — the most expensive lessons",
    "lesson": "The best single insight came from one stranger's four-star review",
    "wrong": "Don't dismiss a single review as anecdote. One four-star review gave us the most valuable product insight of the entire project.",
    "right": null
  },
  {
    "n": 39,
    "section": "Market research — the most expensive lessons",
    "lesson": "Some markets live in closed rooms",
    "wrong": "Don't conclude \"nobody's talking about it\" from public searches alone.",
    "right": null
  },
  {
    "n": 40,
    "section": "Market research — the most expensive lessons",
    "lesson": "Empty search results can mean you're searching the wrong place",
    "wrong": "Don't take empty Reddit results as evidence of absence.",
    "right": null
  },
  {
    "n": 41,
    "section": "Product & strategy",
    "lesson": "Correctness is not the product.",
    "wrong": "Don't sell accuracy. We led with a correctness claim for two weeks. No buyer ever cared.",
    "right": null
  },
  {
    "n": 42,
    "section": "Product & strategy",
    "lesson": "A quality claim is not a feature claim.",
    "wrong": "Don't make your headline claim one a shopper can't check.",
    "right": null
  },
  {
    "n": 43,
    "section": "Product & strategy",
    "lesson": "If your superiority isn't visible to someone comparing two listings, it isn't a differentiator.",
    "wrong": "Don't build a differentiator you can't show in a thumbnail.",
    "right": null
  },
  {
    "n": 44,
    "section": "Product & strategy",
    "lesson": "Software dies to incumbents; printed goods have room.",
    "wrong": "Don't build consumer software as a small team. Seven ideas, seven free or funded incumbents.",
    "right": null
  },
  {
    "n": 45,
    "section": "Product & strategy",
    "lesson": "A free incumbent with network effects is fatal.",
    "wrong": "Don't enter a niche defended by a free product with network effects. We got three days into an app plan before we found it.",
    "right": null
  },
  {
    "n": 46,
    "section": "Product & strategy",
    "lesson": "Check what the category actually monetises.",
    "wrong": "Don't assume the obvious feature is what the category charges for. They gave away the part we planned to sell and charged for the part we'd have given away — we'd have built the free half.",
    "right": null
  },
  {
    "n": 47,
    "section": "Product & strategy",
    "lesson": "Print-on-demand may put your cost base above the market's price floor.",
    "wrong": "Don't plan a physical product without landed cost versus market price.",
    "right": null
  },
  {
    "n": 48,
    "section": "Product & strategy",
    "lesson": "The winners at low price points are not using POD.",
    "wrong": "Don't assume competitors use your production method. The $8 bestsellers aren't on POD, which is why they can be $8.",
    "right": null
  },
  {
    "n": 49,
    "section": "Product & strategy",
    "lesson": "POD works where printing is cheap relative to price:",
    "wrong": "Don't put POD into drinkware or apparel at our scale.",
    "right": null
  },
  {
    "n": 50,
    "section": "Product & strategy",
    "lesson": "KDP is the wrong manufacturer for anything people WRITE IN",
    "wrong": "Don't send a write-in workbook to KDP. The #1 organic result for our own term is that exact product, buried in the high six figures of its category's BSR.",
    "right": null
  },
  {
    "n": 51,
    "section": "Product & strategy",
    "lesson": "The buyer is often not the user.",
    "wrong": "Don't write copy to the user when the buyer is someone else. Every line of our organiser copy addressed the person who'd never purchase it.",
    "right": null
  },
  {
    "n": 52,
    "section": "Product & strategy",
    "lesson": "Clinical or morbid framing loses the sale at the kitchen table.",
    "wrong": "Don't lead with mortality, illness or crisis in a consumer product.",
    "right": null
  },
  {
    "n": 53,
    "section": "Product & strategy",
    "lesson": "Seasonal products have immovable deadlines",
    "wrong": "Don't plan a seasonal launch inside the POD lead time.",
    "right": null
  },
  {
    "n": 54,
    "section": "Product & strategy",
    "lesson": "Teacher gifts and coach gifts are opposite markets",
    "wrong": "Don't merge two audiences into one product because the words look similar. Teacher and coach gifts are opposite markets.",
    "right": null
  },
  {
    "n": 55,
    "section": "Product & strategy",
    "lesson": "Prices are floors. Cut scope, never price.",
    "wrong": "Don't discount to compete.",
    "right": null
  },
  {
    "n": 56,
    "section": "Product & strategy",
    "lesson": "Set the price before the first view.",
    "wrong": "Don't set a price you'll want to change after launch.",
    "right": null
  },
  {
    "n": 57,
    "section": "Product & strategy",
    "lesson": "The SKU with real per-order labour must not be the cheapest thing you sell.",
    "wrong": "Don't price the labour-intensive SKU below the zero-labour one. We had custom-made at $24 against ready-made at $19.",
    "right": null
  },
  {
    "n": 58,
    "section": "Product & strategy",
    "lesson": "Fee stacks are worse than they look at low prices.",
    "wrong": "Don't ignore flat fees on cheap items.",
    "right": null
  },
  {
    "n": 59,
    "section": "Product & strategy",
    "lesson": "Ship two formats off one build when it costs nothing",
    "wrong": "Don't ship a second format without a channel for it.",
    "right": null
  },
  {
    "n": 60,
    "section": "Product & strategy",
    "lesson": "\"And also a PDF\" is where the distribution problem gets waved past.",
    "wrong": "Don't let \"and also a PDF\" stand in for a distribution plan. I proposed exactly that and was rightly overruled.",
    "right": null
  },
  {
    "n": 61,
    "section": "Product & strategy",
    "lesson": "A digital download with no named channel is not a product, it's a file.",
    "wrong": "Don't call a file a product.",
    "right": null
  },
  {
    "n": 62,
    "section": "Product & strategy",
    "lesson": "Every bet passes the three-question screen: who is the buyer, can we reach them AND sell to them, and is there a wedge that isn't just who we are?",
    "wrong": "Don't approve a bet before running the three-question screen. Board 016 approved five products without it; the screen later killed several.",
    "right": null
  },
  {
    "n": 63,
    "section": "Product & strategy",
    "lesson": "The saturation test: never build what a competent stranger could replicate in a weekend with the same subscription.",
    "wrong": "Don't build what an AI subscription reproduces in a weekend.",
    "right": null
  },
  {
    "n": 64,
    "section": "Product & strategy",
    "lesson": "Distribution is the binding constraint, not product quality.",
    "wrong": "Don't keep fixing the product when the constraint is distribution. Five dead routes, five different causes, one shared symptom: nobody came.",
    "right": null
  },
  {
    "n": 65,
    "section": "Product & strategy",
    "lesson": "A format is not a distribution plan.",
    "wrong": "research proved text was the right MEDIUM, then \"post threads on X\" slid in as if it were a plan — the same build-it-and-nobody-comes failure this business had already made five times, about to be repeated on a platform with no cold-start discovery pool at all.",
    "right": "name the mechanism that puts content in front of strangers before the first post. Our answer: a community platform as primary (communities ARE the discovery pool), replies into live conversations elsewhere (borrowed audiences), a long-form write-up venue monthly. Venue and mechanism, not just medium."
  },
  {
    "n": 66,
    "section": "Product & strategy",
    "lesson": "The best argument for a bet may not be in the proposal.",
    "wrong": "pitch an idea on its surface appeal (trend, gap, funnel) without testing it against your own hardest screen.",
    "right": "the board carried the pivot 10-1 chiefly because it is the FIRST bet ever to pass question 3 of the three-question screen — the wedge is the operating log itself, which survives independent of who wrote it. Run your own screens on your own ideas before the board has to."
  },
  {
    "n": 67,
    "section": "The verification discipline",
    "lesson": "The agent that made the change never verifies the change.",
    "wrong": "Don't let the builder check its own build. Four listings shipped with the wrong file attached because the same context reviewed its own work.",
    "right": null
  },
  {
    "n": 68,
    "section": "The verification discipline",
    "lesson": "Adding is self-evidencing; removing is not.",
    "wrong": "Don't assume a removal worked. Every step looked done; the file was still attached.",
    "right": null
  },
  {
    "n": 69,
    "section": "The verification discipline",
    "lesson": "A button that says \"Subscribed\" proves nothing.",
    "wrong": "Don't trust a state label immediately after clicking. YouTube showed \"Subscribed\" on 13 videos and saved none.",
    "right": null
  },
  {
    "n": 70,
    "section": "The verification discipline",
    "lesson": "A success toast proves nothing.",
    "wrong": "Don't trust a success toast.",
    "right": null
  },
  {
    "n": 71,
    "section": "The verification discipline",
    "lesson": "Cache-bust every post-save check.",
    "wrong": "Don't verify with a plain page load. A stale cache produced three false \"nothing landed\" reports in a single afternoon.",
    "right": null
  },
  {
    "n": 72,
    "section": "The verification discipline",
    "lesson": "An intermittently-correct check is worse than an obviously broken one.",
    "wrong": "Don't trust a check that works most of the time. A title edit appeared to save instantly, which is exactly why we believed the method.",
    "right": null
  },
  {
    "n": 73,
    "section": "The verification discipline",
    "lesson": "`form_input` can set a value the page never registers.",
    "wrong": "Don't set a field and walk away. A title edit silently failed to register and published unchanged.",
    "right": null
  },
  {
    "n": 74,
    "section": "The verification discipline",
    "lesson": "A dialog's \"Done\" may not save.",
    "wrong": "Don't trust a modal's \"Done\". The visibility dialog closed cleanly and saved nothing.",
    "right": null
  },
  {
    "n": 75,
    "section": "The verification discipline",
    "lesson": "Personalised search results flatter you.",
    "wrong": "Don't check your own standing while logged in.",
    "right": null
  },
  {
    "n": 76,
    "section": "The verification discipline",
    "lesson": "Give verifiers an environment brief",
    "wrong": "Don't send a verifier in blind. Our first one reported a false failure because nobody told it that back office renders slowly.",
    "right": null
  },
  {
    "n": 77,
    "section": "The verification discipline",
    "lesson": "Spot-check by hand against a reference implementation",
    "wrong": "Don't verify output against the generator that produced it.",
    "right": null
  },
  {
    "n": 78,
    "section": "The verification discipline",
    "lesson": "Write fresh arithmetic to verify arithmetic.",
    "wrong": "Don't import the code under test into the test.",
    "right": null
  },
  {
    "n": 79,
    "section": "The verification discipline",
    "lesson": "Test suites that refuse to pass unspecified inputs are the only tooling we own that fails loudly.",
    "wrong": "Don't build tooling that can't refuse. Everything except our test suite returned a plausible answer instead of an error.",
    "right": null
  },
  {
    "n": 80,
    "section": "The verification discipline",
    "lesson": "Four dates and a first/last day beat a glance.",
    "wrong": "Don't spot-check one date.",
    "right": null
  },
  {
    "n": 81,
    "section": "The verification discipline",
    "lesson": "Four silent instruments in two days",
    "wrong": "Don't assume you've found the last silent instrument.",
    "right": null
  },
  {
    "n": 82,
    "section": "The verification discipline",
    "lesson": "\"Nothing came in\" and \"I could not look\" are different findings, and a monitoring report that merges them is worse than no report.",
    "wrong": "one platform returned a TLS \"Privacy error\" on every URL during a routine sweep — a repeat of the same network interception seen the day before. The tempting write-up is a clean \"all surfaces quiet,\" which would have recorded an unchecked surface as a verified-empty one. A comment or DM sitting there for days would then look like it arrived from nowhere.",
    "right": "every monitored surface gets one of three states in the report — *checked, empty* · *checked, here is what came in* · *could not check, here is why*. Never let the third collapse into the first. And do not click through a certificate warning to force the check: on an intercepting proxy that trades a gap in the report for a compromised session, which is the worse of the two."
  },
  {
    "n": 83,
    "section": "The verification discipline",
    "lesson": "A third-party list or aggregator is not verification.",
    "wrong": "a prospecting pass listed a channel at 7.1K subscribers on the strength of a listicle site's roundup, and it went into the follow queue as verified. The live channel had 2 videos, both 17 years old, with 32 and 25 views, and no subscriber count even rendered on the page. The listicle's figure did not describe this channel at all — a familiar failure: treating a search-result artifact as proof an account is what it claims.",
    "right": "third-party numbers are a lead, never a verification. Open the profile, read what is actually there, and let the live page overrule the citation every time. The check cost one page load and stopped a follow that would have made us look like a bot padding a list."
  },
  {
    "n": 84,
    "section": "Agents — how to run them",
    "lesson": "Pick the model per task, never inherit.",
    "wrong": "Don't inherit the main model by default. Mechanical work on Opus is money burned for no quality gain.",
    "right": null
  },
  {
    "n": 85,
    "section": "Agents — how to run them",
    "lesson": "Anything with legal or reputational exposure gets the expensive model",
    "wrong": "Don't run a high-exposure question on a cheap model because the task looks simple.",
    "right": null
  },
  {
    "n": 86,
    "section": "Agents — how to run them",
    "lesson": "A cheap model is fine when the output goes straight into a checker.",
    "wrong": "Don't buy the expensive model for output that goes straight into a checker.",
    "right": null
  },
  {
    "n": 87,
    "section": "Agents — how to run them",
    "lesson": "Brief agents adversarially: find the NO as hard as the YES.",
    "wrong": "Don't brief an agent to confirm your idea. Neutral briefs produce agreeable findings.",
    "right": null
  },
  {
    "n": 88,
    "section": "Agents — how to run them",
    "lesson": "Give agents the real artifact, never a description of it.",
    "wrong": "Don't hand an agent a summary of the artifact. They review what you give them, and a summary hides the defects.",
    "right": null
  },
  {
    "n": 89,
    "section": "Agents — how to run them",
    "lesson": "Tell them not to delegate.",
    "wrong": "Don't let agents delegate. One spawned four sub-agents, ended its turn \"waiting,\" and produced nothing.",
    "right": null
  },
  {
    "n": 90,
    "section": "Agents — how to run them",
    "lesson": "Instruct: if context runs short, report partial rather than nothing.",
    "wrong": "Don't let an agent choose silence over a partial report.",
    "right": null
  },
  {
    "n": 91,
    "section": "Agents — how to run them",
    "lesson": "Agents die on connection errors",
    "wrong": "Don't restart a crashed agent from zero — resume it with its context.",
    "right": null
  },
  {
    "n": 92,
    "section": "Agents — how to run them",
    "lesson": "Never predict a running agent's results.",
    "wrong": "Don't report a background agent's likely findings. They're not findings until they arrive.",
    "right": null
  },
  {
    "n": 93,
    "section": "Agents — how to run them",
    "lesson": "Dispatch independent work in parallel; queue only on shared resources.",
    "wrong": "Don't serialise independent work.",
    "right": null
  },
  {
    "n": 94,
    "section": "Agents — how to run them",
    "lesson": "Agents will honestly flag their own regressions if you ask for an honest read",
    "wrong": "Don't ask only \"did it work\" — ask for an honest read. The agent that caused a regression flagged it because we asked that way.",
    "right": null
  },
  {
    "n": 95,
    "section": "Agents — how to run them",
    "lesson": "A subagent report is one lossy hop from the source.",
    "wrong": "Don't act on a relayed claim without checking the file.",
    "right": null
  },
  {
    "n": 96,
    "section": "Agents — how to run them",
    "lesson": "Name the standing constraints in every brief.",
    "wrong": "Don't assume agents know the standing rules. We've had agents breach constraints written down in a file they were never given.",
    "right": null
  },
  {
    "n": 97,
    "section": "Agents — how to run them",
    "lesson": "Tell them which tabs not to touch.",
    "wrong": "Don't let an agent loose in a shared browser without naming the tabs it must not touch.",
    "right": null
  },
  {
    "n": 98,
    "section": "The focus group",
    "lesson": "Convene it before the thing exists publicly, not after.",
    "wrong": "Don't panel a product after launch. Post-launch feedback is a post-mortem.",
    "right": null
  },
  {
    "n": 99,
    "section": "The focus group",
    "lesson": "Give each persona the real files, and tell them to find the reason it fails.",
    "wrong": "Don't ask personas to be nice.",
    "right": null
  },
  {
    "n": 100,
    "section": "The focus group",
    "lesson": "Weight the FINDINGS heavily and the VERDICTS lightly.",
    "wrong": "Don't ship on a panel's vote. The unanimous \"don't build the app\" did no work; a free incumbent and an export-pricing finding did all of it.",
    "right": null
  },
  {
    "n": 101,
    "section": "The focus group",
    "lesson": "A persona is a structured critique method, not a customer.",
    "wrong": "Don't call a persona's approval market validation. It isn't a customer and it has never paid for anything.",
    "right": null
  },
  {
    "n": 102,
    "section": "The focus group",
    "lesson": "Record kills by their finding, not their tally.",
    "wrong": "Don't record \"the panel voted no.\" Record why.",
    "right": null
  },
  {
    "n": 103,
    "section": "The focus group",
    "lesson": "Proportionality: a full panel for a launch, two or three for a small change.",
    "wrong": "Don't run seven personas for a copy tweak — or two for a launch.",
    "right": null
  },
  {
    "n": 104,
    "section": "The focus group",
    "lesson": "Diverse personas break the frame",
    "wrong": "Don't build a panel of one type. Five people from the same world produce five versions of the same idea, which is the exact trap we were in.",
    "right": null
  },
  {
    "n": 105,
    "section": "The focus group",
    "lesson": "Ask them what THEY would pay for in their own lives",
    "wrong": "Don't ask personas to evaluate your idea when asking what they'd buy produces better material.",
    "right": null
  },
  {
    "n": 106,
    "section": "The focus group",
    "lesson": "Reuse the same cast across products",
    "wrong": "Don't use fresh personas every time — continuity is what caught our unfixed complaints.",
    "right": null
  },
  {
    "n": 107,
    "section": "The focus group",
    "lesson": "The churned customer is the most valuable panelist.",
    "wrong": "Don't overlook the person who already quit a competitor.",
    "right": null
  },
  {
    "n": 108,
    "section": "The focus group",
    "lesson": "Panels caught what our research missed every single time",
    "wrong": "Don't assume your research beats a panel's eye. They found what four research agents missed, every round.",
    "right": null
  },
  {
    "n": 109,
    "section": "The focus group",
    "lesson": "A panelist's confident bet is not evidence.",
    "wrong": "Don't act on a panelist's confidence.",
    "right": null
  },
  {
    "n": 110,
    "section": "The board & governance",
    "lesson": "A board majority is an execution order, not a recommendation.",
    "wrong": "Don't park a board majority on a task list waiting for the owner.",
    "right": null
  },
  {
    "n": 111,
    "section": "The board & governance",
    "lesson": "Give one seat a veto on the things that are unrecoverable if you get them wrong",
    "wrong": "Don't let a majority overrule the seat you appointed to stop you.",
    "right": null
  },
  {
    "n": 112,
    "section": "The board & governance",
    "lesson": "Some things aren't votable.",
    "wrong": "Don't put the owner's own accounts, or a ruling he has already given, to a vote.",
    "right": null
  },
  {
    "n": 113,
    "section": "The board & governance",
    "lesson": "A later board supersedes an earlier one when it has better information",
    "wrong": "Don't re-litigate a superseded decision — record which one governs.",
    "right": null
  },
  {
    "n": 114,
    "section": "The board & governance",
    "lesson": "Boards are wrong sometimes.",
    "wrong": "Don't assume the board's numbers are checked. Ours were from memory and 20% wrong.",
    "right": null
  },
  {
    "n": 115,
    "section": "The board & governance",
    "lesson": "Make the board flag its own soft numbers.",
    "wrong": "Don't let a board state a figure without flagging its source.",
    "right": null
  },
  {
    "n": 116,
    "section": "The board & governance",
    "lesson": "Every decision needs a tripwire",
    "wrong": "Don't approve anything without the observable that would reverse it.",
    "right": null
  },
  {
    "n": 117,
    "section": "The board & governance",
    "lesson": "Ratify kills on paper so no future context re-litigates them.",
    "wrong": "Don't leave a kill informal. Undocumented kills get rebuilt by the next context.",
    "right": null
  },
  {
    "n": 118,
    "section": "The board & governance",
    "lesson": "Put contradictions in front of the board rather than resolving them quietly in a status document.",
    "wrong": "Don't resolve a board contradiction inside a status document.",
    "right": null
  },
  {
    "n": 119,
    "section": "The board & governance",
    "lesson": "Pre-register predictions before any experiment",
    "wrong": "Don't run an experiment without writing the predictions first.",
    "right": null
  },
  {
    "n": 120,
    "section": "The board & governance",
    "lesson": "Amend a pre-registration BEFORE the data, never after.",
    "wrong": "Don't amend a prediction after the data lands.",
    "right": null
  },
  {
    "n": 121,
    "section": "The board & governance",
    "lesson": "Pre-register the confounders too",
    "wrong": "Don't omit the confounders — small sample, wrong season, no reviews — or a null result gets over-read.",
    "right": null
  },
  {
    "n": 122,
    "section": "The board & governance",
    "lesson": "A document that nobody opens fails silently.",
    "wrong": "Don't put a future check in a file and hope. Nothing errors when nobody opens it.",
    "right": null
  },
  {
    "n": 123,
    "section": "The board & governance",
    "lesson": "Write the anti-discard note",
    "wrong": "Don't assume a future reader shares your context. They'll see a dead product line and discard a live finding.",
    "right": null
  },
  {
    "n": 124,
    "section": "The board & governance",
    "lesson": "State what an experiment can no longer answer.",
    "wrong": "Don't keep claiming an experiment answers a question a confound has already spoiled.",
    "right": null
  },
  {
    "n": 125,
    "section": "Content & platforms",
    "lesson": "Format winners are per-platform, not universal.",
    "wrong": "Don't generalise one platform's format winner. We did it twice — one platform's result became doctrine, and the other platform's data was the opposite.",
    "right": null
  },
  {
    "n": 126,
    "section": "Content & platforms",
    "lesson": "One platform's result became false doctrine twice before we caught it.",
    "wrong": "Don't reuse a winning post across platforms without checking it hasn't already flopped there. Our \"winner\" was another platform's worst performer.",
    "right": null
  },
  {
    "n": 127,
    "section": "Content & platforms",
    "lesson": "Text on screen needs ~13 characters per second plus a lead-in.",
    "wrong": "Don't set text timing by eye. Every beat looked fine and none were readable.",
    "right": null
  },
  {
    "n": 128,
    "section": "Content & platforms",
    "lesson": "When a beat is too long, cut words — don't hold longer.",
    "wrong": "Don't hold a beat longer to fix it. Cut the words.",
    "right": null
  },
  {
    "n": 129,
    "section": "Content & platforms",
    "lesson": "Fewer beats beat shorter beats.",
    "wrong": "Don't cram sixteen beats into fifteen seconds.",
    "right": null
  },
  {
    "n": 130,
    "section": "Content & platforms",
    "lesson": "Watch for the completion cliff",
    "wrong": "Don't ignore the completion cliff.",
    "right": null
  },
  {
    "n": 131,
    "section": "Content & platforms",
    "lesson": "Decode HTML entities before counting characters.",
    "wrong": "Don't count characters without decoding entities.",
    "right": null
  },
  {
    "n": 132,
    "section": "Content & platforms",
    "lesson": "Judge cadence in 30-post windows, never per post.",
    "wrong": "Don't react to a single post's numbers.",
    "right": null
  },
  {
    "n": 133,
    "section": "Content & platforms",
    "lesson": "Close the funnel in one hop:",
    "wrong": "Don't add a step between the post and the product.",
    "right": null
  },
  {
    "n": 134,
    "section": "Content & platforms",
    "lesson": "Build topic playlists on every platform",
    "wrong": "Don't leave a back catalogue unorganised — playlists are free.",
    "right": null
  },
  {
    "n": 135,
    "section": "Content & platforms",
    "lesson": "Never repeat the same phrasing across accounts in one session.",
    "wrong": "Don't reuse phrasing across accounts.",
    "right": null
  },
  {
    "n": 136,
    "section": "Content & platforms",
    "lesson": "New accounts get flagged for machine-pace activity.",
    "wrong": "Don't operate a days-old account at machine pace. One platform suspended us within hours of a rapid profile build.",
    "right": null
  },
  {
    "n": 137,
    "section": "Content & platforms",
    "lesson": "A VPN exit node looks like account compromise.",
    "wrong": "Don't run brand accounts through a VPN.",
    "right": null
  },
  {
    "n": 138,
    "section": "Content & platforms",
    "lesson": "Verify follows and subscribes by reloading.",
    "wrong": "Don't assume follows committed.",
    "right": null
  },
  {
    "n": 139,
    "section": "Content & platforms",
    "lesson": "Read the bio every time",
    "wrong": "Don't follow an account on its name alone.",
    "right": null
  },
  {
    "n": 140,
    "section": "Content & platforms",
    "lesson": "Post links in the reply, not the post",
    "wrong": "Don't put the link in the post on that platform.",
    "right": null
  },
  {
    "n": 141,
    "section": "Content & platforms",
    "lesson": "Don't build everything AI-generated when platforms gate AI content.",
    "wrong": "Don't default every post to AI-generated media and then wonder why reach is throttled by the disclosure checkbox you're forced to tick.",
    "right": null
  },
  {
    "n": 142,
    "section": "Content & platforms",
    "lesson": "When something IS synthetic media, mark it every time.",
    "wrong": "Don't skip the AI-content disclosure to protect reach. That trade is how accounts die — and we already lost days to two platform suspensions for lesser flags.",
    "right": null
  },
  {
    "n": 143,
    "section": "Content & platforms",
    "lesson": "The honest format and the safe format can be the same format.",
    "wrong": "Don't reach for synthetic polish when real evidence exists. Our own screenshots of real failures are more credible AND safer than anything generated to look good.",
    "right": null
  },
  {
    "n": 144,
    "section": "Content & platforms",
    "lesson": "Rescind rules that stop ideas; replace them with postures that guide judgment.",
    "wrong": "Don't write absolute bans where a judgment posture would serve. The never-mention-AI rule sat unexamined until it collided with the best idea we'd had — a rule that blocks thinking outlives its reason.",
    "right": null
  },
  {
    "n": 145,
    "section": "Content & platforms",
    "lesson": "Don't let a correction harden into the doctrine it corrected.",
    "wrong": "\"one platform rewards confessions, another rewards the numbers\" was built from 11 posts with one outlier versus 12 posts topping at 562 — two data points. The finding existed to stop one platform's result becoming doctrine, and it was itself about to become doctrine — e.g. refusing to ever test a confession format on the platform that hadn't rewarded it yet.",
    "right": "label small-sample findings as priors to test, not rules to obey — in the record, next to the finding, by the person who made it. Log predictions (\"this format is mechanism-shaped, so it should fit here too\") and let results grade them."
  },
  {
    "n": 146,
    "section": "Content & platforms",
    "lesson": "Adapted-per-surface and cross-posted look identical on a task list and are not the same thing.",
    "wrong": "fifteen uploads in one day, the identical asset on each platform, results diverging 7× and teaching us nothing per surface.",
    "right": "one lesson, four SHAPES — a community post, a thread, a short card, a site page — each built for its surface's mechanics. Every content brief states which shape, not just which lesson."
  },
  {
    "n": 147,
    "section": "Content & platforms",
    "lesson": "Before commenting, check whether we have already commented.",
    "wrong": "I opened a video, read \"Comments 1\", took that 1 to be a stranger's, and posted a comment opening with the same personal claim we'd used the day before, on the same video, under our own prior comment. Same account, same video, same opening line, one day apart. I had carefully checked the like state on that video (the notes said it was already liked) and never thought to check the comment state.",
    "right": "on any item we may have touched before, check every interaction type, not the one the notes happen to mention. Deleted the duplicate and reload-verified back to 1 comment. The \"no repeated phrasing in a session\" rule needs a sibling: no repeated substance across sessions, on the same item."
  },
  {
    "n": 148,
    "section": "Content & platforms",
    "lesson": "A reply drafted in a previous session is a draft, not a decision.",
    "wrong": "our notes carried a fully cleared reply for an owed thread, and the obvious move was to paste it. Its middle sentence restated almost word for word something we ourselves had already posted 22 hours earlier, answering the same underlying point. Sending it would have answered their new point by repeating our old one.",
    "right": "read the whole thread first (already the rule), then check the draft against our own prior turns as well as theirs, and rewrite to answer what they actually added. Theirs had added new specifics we hadn't addressed yet, so the reply went to that instead."
  },
  {
    "n": 149,
    "section": "The plumbing (small but each one cost real time)",
    "lesson": "A site generator that wipes its output directory will delete hosted files.",
    "wrong": "Don't put a hosted file in a directory your generator wipes. The CEO hit a dead link because a rebuild silently deleted his video.",
    "right": null
  },
  {
    "n": 150,
    "section": "The plumbing (small but each one cost real time)",
    "lesson": "`Content-Disposition: attachment` turns a link into a download",
    "wrong": "Don't send someone a link they can't save from a phone.",
    "right": null
  },
  {
    "n": 151,
    "section": "The plumbing (small but each one cost real time)",
    "lesson": "Cloudflare prefers extensionless URLs",
    "wrong": "Don't assume a URL resolves as written.",
    "right": null
  },
  {
    "n": 152,
    "section": "The plumbing (small but each one cost real time)",
    "lesson": "Headless Chrome renders HTML to PNG and PDF",
    "wrong": "Don't reach for a design tool you have to sign up for.",
    "right": null
  },
  {
    "n": 153,
    "section": "The plumbing (small but each one cost real time)",
    "lesson": "Fixed-height overflow-hidden page boxes keep PDF page counts exact.",
    "wrong": "Don't let content flow freely if page count matters.",
    "right": null
  },
  {
    "n": 154,
    "section": "The plumbing (small but each one cost real time)",
    "lesson": "`pdfinfo` for page count, `pdftotext` for content, `sips -Z` for thumbnail legibility.",
    "wrong": "Don't eyeball a PDF's specs.",
    "right": null
  },
  {
    "n": 155,
    "section": "The plumbing (small but each one cost real time)",
    "lesson": "Compress video before upload",
    "wrong": "Don't upload an uncompressed video and call the failure mysterious.",
    "right": null
  },
  {
    "n": 156,
    "section": "The plumbing (small but each one cost real time)",
    "lesson": "Non-greedy regex for nested markdown.",
    "wrong": "Don't write greedy regex for nested markup. It ate the most important quote in a board document.",
    "right": null
  },
  {
    "n": 157,
    "section": "The plumbing (small but each one cost real time)",
    "lesson": "Join hard-wrapped lines before parsing inline markup.",
    "wrong": "Don't parse hard-wrapped markdown line by line.",
    "right": null
  },
  {
    "n": 158,
    "section": "The plumbing (small but each one cost real time)",
    "lesson": "A transparent background parameter was load-bearing",
    "wrong": "Don't debug a rendering bug three times without checking the background parameter.",
    "right": null
  },
  {
    "n": 159,
    "section": "The plumbing (small but each one cost real time)",
    "lesson": "The system clock is authoritative.",
    "wrong": "Don't carry a date forward. A wrong date corrupted a day of filenames and scheduled two videos a day late.",
    "right": null
  },
  {
    "n": 160,
    "section": "The plumbing (small but each one cost real time)",
    "lesson": "Rename misdated files rather than leaving them",
    "wrong": "Don't leave a misdated file in place — the name is what future contexts believe.",
    "right": null
  },
  {
    "n": 161,
    "section": "The plumbing (small but each one cost real time)",
    "lesson": "Test both branches of a fallback before trusting either.",
    "wrong": "a voiceover script preferred a real recording over text-to-speech — and the real-voice branch silently never fired, because `pipefail` made the file-detection pipeline fail whenever any candidate extension was missing. The TTS test passed, so the script looked done. One deliberate test of the other branch caught it in thirty seconds.",
    "right": "a script with an if/else has two behaviours; exercising one proves half the script. Feed it an input for each branch before calling it built — especially the branch you expect to use later rather than today."
  },
  {
    "n": 162,
    "section": "The plumbing (small but each one cost real time)",
    "lesson": "A platform's limit usually attaches to the identifier, not to the account",
    "wrong": "blocked from creating a new email account because the phone number hit the provider's per-number cap, the instinct was to delete the existing brand account to free the slot. It would not have worked — the cap follows the phone number and decays on time — and it would have destroyed a linked video channel, a marketplace login and the recovery point for four brand accounts.",
    "right": "before deleting anything to \"free up\" a quota, ask what the quota is actually keyed to. And route around the gate instead: buying a domain first and turning on free email routing gave a working, phone-free brand address for $0 — better-looking on signups than a free webmail account, and it never needed the blocked resource at all."
  },
  {
    "n": 163,
    "section": "The plumbing (small but each one cost real time)",
    "lesson": "Order operations by what unblocks what, not by what feels foundational.",
    "wrong": "the registration runbook put \"create the email\" first because email feels like the foundation. Email was the one step that was blocked; the domain — which nobody had marked as a dependency — was what made a free email possible.",
    "right": "when a step blocks, check whether a later step in the list actually supplies what the blocked one needs. Re-sequence rather than wait."
  },
  {
    "n": 164,
    "section": "Working together",
    "lesson": "Don't wait for approval on majority-approved work.",
    "wrong": "Don't ask twice. \"Why would you wait for me to tell you\" was earned.",
    "right": null
  },
  {
    "n": 165,
    "section": "Working together",
    "lesson": "Ask once, get a durable ruling, never ask again.",
    "wrong": "Don't ask a question you could turn into a permanent rule.",
    "right": null
  },
  {
    "n": 166,
    "section": "Working together",
    "lesson": "Flag the ask, then act",
    "wrong": "Don't hold the turn open waiting on an answer.",
    "right": null
  },
  {
    "n": 167,
    "section": "Working together",
    "lesson": "Never sit idle when the browser or filesystem is free.",
    "wrong": "Don't idle while a background agent runs.",
    "right": null
  },
  {
    "n": 168,
    "section": "Working together",
    "lesson": "Run parallel pathways",
    "wrong": "Don't run one experiment at a time when the constraint is his hours, not our capacity.",
    "right": null
  },
  {
    "n": 169,
    "section": "Working together",
    "lesson": "Report failures plainly.",
    "wrong": "Don't soften a failure. The upload failed four times and saying so plainly was worth more than a workaround narrative.",
    "right": null
  },
  {
    "n": 170,
    "section": "Working together",
    "lesson": "Lead with the outcome, not the process.",
    "wrong": "Don't bury the outcome under the process.",
    "right": null
  },
  {
    "n": 171,
    "section": "Working together",
    "lesson": "His five to ten fragmented hours are the scarce resource.",
    "wrong": "Don't propose anything requiring live or scheduled presence.",
    "right": null
  },
  {
    "n": 172,
    "section": "Working together",
    "lesson": "A 35-minute account signup unlocked more than a week of building.",
    "wrong": "Don't spend a week building when 35 minutes of his time unlocks more.",
    "right": null
  },
  {
    "n": 173,
    "section": "Working together",
    "lesson": "He is right more often than the analysis when he says something feels wrong.",
    "wrong": "Don't argue with his instinct before checking it. His read that the target customers already had their own solution was right a full day before the data proved it.",
    "right": null
  },
  {
    "n": 174,
    "section": "Running two sessions",
    "lesson": "Consent does not transfer between sessions.",
    "wrong": "Don't treat approval in one chat as authorization in another.",
    "right": null
  },
  {
    "n": 175,
    "section": "Running two sessions",
    "lesson": "Never route a declined action to another session.",
    "wrong": "Don't pick up an action another session declined. However right it looks, that's laundering.",
    "right": null
  },
  {
    "n": 176,
    "section": "Running two sessions",
    "lesson": "Verify relayed rulings against the file",
    "wrong": "Don't act on a relay without checking the source file.",
    "right": null
  },
  {
    "n": 177,
    "section": "Running two sessions",
    "lesson": "Single-holder resources need announcing and releasing",
    "wrong": "Don't take a shared resource silently. Two sessions nearly edited the same shop simultaneously.",
    "right": null
  },
  {
    "n": 178,
    "section": "Running two sessions",
    "lesson": "Adversarial cross-checking between sessions caught what neither found alone",
    "wrong": "Don't run a single session on a decision that matters. Every serious error that day was caught by the other one.",
    "right": null
  },
  {
    "n": 179,
    "section": "Running two sessions",
    "lesson": "When two sessions reach the same finding by different paths, it's a rule, not a coincidence.",
    "wrong": "Don't dismiss a finding two paths reached independently.",
    "right": null
  },
  {
    "n": 180,
    "section": "Running two sessions",
    "lesson": "A peer's correction of your best idea is the most valuable message you will get.",
    "wrong": "Don't defend your best idea when a peer finds the flaw. A two-format fix was elegant and wrong.",
    "right": null
  },
  {
    "n": 181,
    "section": "The honest ledger",
    "lesson": "Nothing has been validated by a real buyer.",
    "wrong": "Don't call any of this validated. No stranger has paid us anything.",
    "right": null
  },
  {
    "n": 182,
    "section": "The honest ledger",
    "lesson": "We got faster at killing bad ideas long before we got good at finding good ones.",
    "wrong": "Don't mistake a good kill rate for progress. We got excellent at not wasting money and have not yet made any.",
    "right": null
  },
  {
    "n": 183,
    "section": "The honest ledger",
    "lesson": "Twenty-three ideas died on evidence in one night; two survived.",
    "wrong": "Don't mourn a high kill ratio — 23 of 25 is probably normal.",
    "right": null
  },
  {
    "n": 184,
    "section": "The honest ledger",
    "lesson": "The machine works. The audience doesn't exist yet.",
    "wrong": "Don't build another product to fix a distribution problem. That's the reflex this business reaches for every time, and it has failed five times in a row.",
    "right": null
  }
]