diff --git a/.okf/log.md b/.okf/log.md index 0b99951bf..b90ed0265 100644 --- a/.okf/log.md +++ b/.okf/log.md @@ -1,5 +1,23 @@ # Bundle Update Log +## 2026-08-14 (LinkedIn caricatures) - image type by pillar; the Art-tool cartoon pipeline + +* **Update**: `linkedin-posts/README.md` gains "Image type by pillar" + "Generating + caricatures (the Art tool)". +* **The split**: not every LinkedIn post wants a house-style *exhibit*. Teach posts + (frameworks) do - Cutler/Rossi register. But **personal / opinion / story / + reaction** posts want a **New Yorker-style caricature** (editorial cartoon): a + data-diagram on a personal take reads as marketing, the opposite of the goal. Polls + show the poll (no image). Text-only stays valid for a blunt Holub take. +* **The tool**: the `Art` skill (`~/.claude/skills/Art`, Nano Banana Pro / Gemini 3 + Pro image) generates the cartoons - `--workflow=Comics`, single-panel New Yorker + style, **no lettering**, output to `~/Downloads` first, view-and-gate, then wire in. + Needs a **billing-enabled** Google key in `~/.claude/.env` (free tier image quota = + 0); the key is untracked, never in the repo. New lanes need a dev-only assets mount + in `config/development/hugo.toml`. +* **Recurring model quirk**: it sometimes adds a clean sign word ("MANAGER", "ERROR") + despite the no-text prompt - keep only if correct and it sharpens the gag. + ## 2026-08-14 (gates) - every late defect was invisible to source-level matching * **Update**: findings backlogged in `docs/20-29-testing-qa/20.10` §3b (P0-4, diff --git a/config/development/hugo.toml b/config/development/hugo.toml index 505e468a0..6ce9e7785 100644 --- a/config/development/hugo.toml +++ b/config/development/hugo.toml @@ -51,6 +51,9 @@ ignoreFiles = ["\\.min\\.css$", "\\.min\\.js$"] [[module.mounts]] source = "linkedin-posts/course-promo/assets" target = "static/linkedin-assets/course-promo" + [[module.mounts]] + source = "linkedin-posts/personal/assets" + target = "static/linkedin-assets/personal" # Build optimizations for development speed [build] diff --git a/layouts/linkedin/list.html b/layouts/linkedin/list.html index e87e2044c..9278249c6 100644 --- a/layouts/linkedin/list.html +++ b/layouts/linkedin/list.html @@ -80,5 +80,16 @@

LinkedIn Review Board

{{ template "cards" (dict "posts" $backlog) }} + {{ $firstReview := "" }} + {{ if gt (len $review) 0 }}{{ $firstReview = (index $review 0).RelPermalink }}{{ else if gt (len $approved) 0 }}{{ $firstReview = (index $approved 0).RelPermalink }}{{ end }} + {{ with $firstReview }} + + {{ end }} diff --git a/layouts/linkedin/single.html b/layouts/linkedin/single.html index 86536eb09..105e10b20 100644 --- a/layouts/linkedin/single.html +++ b/layouts/linkedin/single.html @@ -36,6 +36,11 @@ .hint { font-size: .72rem; color: var(--muted); margin: .7rem 0 0; text-align: left; } .hint code { background: #eceef1; padding: .05rem .3rem; border-radius: 3px; word-break: break-all; } .no-img { color: #9aa0a8; font-size: .82rem; } + .poll-preview { text-align: left; margin-top: .3rem; } + .poll-preview p { font-weight: 700; font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); margin: 0 0 .7rem; } + .poll-preview ol { list-style: none; padding: 0; margin: 0; counter-reset: opt; } + .poll-preview li { counter-increment: opt; position: relative; border: 1.5px solid var(--accent); border-radius: 999px; padding: .55rem 1rem .55rem 2.1rem; margin-bottom: .55rem; font-size: .92rem; font-weight: 600; color: #16181d; } + .poll-preview li::before { content: counter(opt); position: absolute; left: .8rem; top: 50%; transform: translateY(-50%); font-size: .72rem; color: var(--accent); font-weight: 700; } .col-meta { grid-column: 1 / -1; margin-top: .1rem; } .panel { background: #fff; border: 1px solid var(--line); border-radius: 10px; padding: .9rem 1rem; font-size: .8rem; } .panel-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: .7rem; } @@ -58,6 +63,7 @@ {{ with .Params.image }}{{ $visualRaw = . }}{{ end }} {{ if not $visualRaw }}{{ with .Params.visual }}{{ $visualRaw = index (split . " ") 0 }}{{ end }}{{ end }} {{ if not $visualRaw }}{{ $visualRaw = .Params.design_file }}{{ end }} + {{ if eq $visualRaw "none" }}{{ $visualRaw = "" }}{{ end }} {{ $assetsDir := printf "%s/assets/" (path.Dir .File.Filename) }} {{ $chunks := split .RawContent "\n---\n" }} {{ $bodyRaw := trim (index $chunks 0) "\n \t" }} @@ -96,12 +102,14 @@

{{ or .Title (humanize .File.BaseFileName) }}

{{ if $visualRaw }}
{{ end }} -

Visual

+

{{ if eq .Params.design "poll" }}Poll{{ else }}Visual{{ end }}

{{ if $visualRaw }} post visual + {{ else if eq .Params.design "poll" }} +
{{ $tail | markdownify }}
{{ else }}

No visual set for this post.

{{ end }} @@ -135,7 +143,7 @@

Details

{{ with .Params.posted_url }}{{ if hasPrefix . "http" }}
LinkedIn
{{ end }}{{ end }} {{ with .Params.notes }}
notes
{{ . | markdownify }}
{{ end }} - {{ with $tail }}
authoring (comment / attachment)
{{ . | markdownify }}
{{ end }} + {{ with $tail }}{{ if ne $.Params.design "poll" }}
authoring (comment / attachment)
{{ . | markdownify }}
{{ end }}{{ end }} {{ with .Params.icp_test }}
ICP test
{{ . | markdownify }}
{{ end }} {{ with .Params.dedup_note }}
dedup
{{ . | markdownify }}
{{ end }} {{ with .Params.hypothesis }}
hypothesis
{{ . | markdownify }}
{{ end }} @@ -176,6 +184,7 @@

Details

if (/^(INPUT|TEXTAREA)$/.test(document.activeElement.tagName) || e.metaKey || e.ctrlKey || e.altKey) return; if (e.key === 'ArrowRight') { var n = document.getElementById('nav-next'); if (n) window.location.href = n.href; } if (e.key === 'ArrowLeft') { var p = document.getElementById('nav-prev'); if (p) window.location.href = p.href; } + if (e.key === 'ArrowUp') { var b = document.querySelector('a.back'); if (b) window.location.href = b.href; } }); diff --git a/linkedin-posts/README.md b/linkedin-posts/README.md index 4a8abbfd7..c7fec60bb 100644 --- a/linkedin-posts/README.md +++ b/linkedin-posts/README.md @@ -124,6 +124,52 @@ body, but keep the source clean. `image` supersedes the older `visual` / `design fields (still read as fallbacks). `posted_url` is the canonical property for the live LinkedIn post URL — the board links to it once set. +## Image type by pillar (what image for what post) + +Grounded in the creators Paul rates: **Cutler/Rossi** lead with *diagrams and +editorial illustrations*; **Holub** often runs *text-only* and lets the take carry; +**Paolino** shows *real artifacts / screenshots*. Mapped to our pillars: + +| Pillar | Image | Why | +|---|---|---| +| **Teach** (framework/tactic) | house-style refactoring.fm **exhibit** (SVG, see above) | the framework made visual (Cutler/Rossi register) | +| **Reaction / opinion / story** (personal) | a **New Yorker-style caricature** (editorial cartoon) | humour + humanity; a data-exhibit here reads as marketing | +| **Build-in-public** | a caricature, or a **real screenshot** of the artifact | show the thing (Paolino register) | +| **Poll** | the **poll itself** (no image) | the poll IS the visual; single images underperform text in 2026 | + +One image, landscape ~3:2. Never a stock photo, never a logo-slathered card. Text-only +is always a valid choice for a blunt take (Holub) - a mediocre image hurts more than none. + +## Generating caricatures (the Art tool) + +Personal/opinion/story/build-in-public posts get a hand-drawn editorial cartoon via +the `Art` skill (Nano Banana Pro / Gemini 3 Pro image). Needs a **billing-enabled** +Google key in `~/.claude/.env` (`GOOGLE_API_KEY` + `GEMINI_API_KEY`) - the free tier +has a hard image quota of 0. + +1. **Prompt** - one scene that IS the post's point, in this template: + > Single-panel New Yorker-style editorial cartoon, hand-drawn black linework, + > light cream background, minimal colour accent, **absolutely NO text / lettering / + > captions**. Scene: [the gag that illustrates the post]. Gestural imperfect + > linework, editorial sophistication, warm and human, gently satirical, not cutesy. +2. **Generate** (lands in `~/Downloads` first): + ``` + bun ~/.claude/skills/Art/Tools/Generate.ts --workflow=Comics \ + --model nano-banana-pro --size 2K --aspect-ratio 3:2 \ + --prompt "..." --output "$HOME/Downloads/.jpg" + ``` + (Model returns JPEG - fine for a cartoon on cream.) +3. **View + gate** - open the file and score the 4 new-media criteria (great look / + functional at a glance / earns the scroll / helpful not decorative); re-roll if it + misses. The model sometimes adds a clean sign word ("MANAGER", "ERROR") despite the + no-text rule - keep only if it's correct and sharpens the gag, else re-roll. +4. **Wire in** - copy to `linkedin-posts//assets/.jpg`, set + `image: "assets/.jpg"`. A NEW lane needs a dev-only mount in + `config/development/hugo.toml` (`linkedin-posts//assets` -> + `static/linkedin-assets/`). Verify it serves 200 on the board. + +**Never commit the key** - it lives in `~/.claude/.env` (untracked, verified out of the repo). + ## Poll posts (canonical structure) Native LinkedIn polls follow ONE structure (reference: `first-move-poll`, diff --git a/linkedin-posts/content-plan.md b/linkedin-posts/content-plan.md index 420293e7c..07b8a4239 100644 --- a/linkedin-posts/content-plan.md +++ b/linkedin-posts/content-plan.md @@ -22,29 +22,65 @@ links the course. Decoupling the give from the ask is what makes the ask land. Status legend: `draft` · `revised` (idea-first, ready) · `approved` · `scheduled` · `posted`. +## Next actions (2026-08-14 handoff) - STOP BUILDING, START SENDING + +All LI work is on branch `linkedin-review-board` (**PR #455, not merged**). 19 posts +drafted, illustrated (caricatures + exhibits), reordered. But the active bet (Vibe +Code Rescue) is **RED: zero outreach touches ever sent** - the bottleneck is +distribution, not demand, and 3+ weeks of finished content is *activity, not +validation*. **Do NOT make more posts until the first batch is live.** In priority: + +1. **Schedule the ready LinkedIn run** - pre-verify founding-hypothesis (approved) → + claude-code → vendors → vibe-coding, schedule >=24h out. Assistant drives the + composer; Paul approves + attaches images. Starts UTM data. +2. **Start the direct rescue outreach** (the real bottleneck, stuck ~18 days) - send + ~10 personalized touches from the 2607 kit (`outbound-openers.md` / SEND-SHEET). + This is what books calls; it starts the kill-criteria clock. +3. **Resolve the 2 gating decisions** - pricing ($2.5-10K vs $25-50K) + category name + (page-one occupied, competitor on the exact name). They frame every outreach message. +4. **Instrument** - log ICP replies in `metrics-ledger.md` / the 2607 pipeline sheet. + +**Open items:** a real "I was wrong" story to replace the deleted BigBinary +(story-bank Q2); merge PR #455 once Paul has reviewed the board; the caricature tool +now works (billing on; `GEMINI_API_KEY`/`GOOGLE_API_KEY` in `~/.claude/.env`, +untracked - Paul may rotate). Status snapshot: `docs/business/operating-system.md` §1 +(RED) + the Aug-2026 investor update. + ## Schedule (pillar-tagged) -| Week of | Slot | Pillar | Post | Link? | Status | -|---|---|---|---|---|---| -| 2026-08-11 | Thu | story/opinion | `course-promo/week1-thu-validate-before-build` | course | **posted** (text) | -| 2026-08-18 | Tue | opinion | `icp-validation/week1-mon-jira-not-progress` | none | **scheduled** ✓ demo-rule visual | -| 2026-08-18 | Thu | teach | `course-promo/week1-tue-founding-hypothesis` | course | **approved** ✓ five-blank exhibit | -| 2026-08-25 | Tue | reaction (NEW) | `personal/reaction-claude-code-trust` | none | **drafted** ✓ (Paul review) | -| 2026-08-25 | Thu | teach | `course-promo/week1-thu-price-before-product` | drop link? | revised ✓ | -| 2026-09-01 | Tue | opinion | `icp-validation/week1-tue-staging-question` | blog (SCIPAB) | revised ✓ | -| 2026-09-01 | Thu | build-in-public (NEW) | `personal/bip-vendors-still-burning-founders` | none | **drafted** ✓ (Paul review) | -| 2026-09-08 | Tue | poll | `icp-validation/week1-wed-trust-signals-poll` | none | revised ✓ | -| 2026-09-08 | Thu | story | `course-promo/backlog-40k-mvp-chasing-fixes` | course | draft | -| 2026-09-15 | Tue | story/mistakes (NEW) | *needs a better story* - BigBinary draft backlogged (Paul didn't like it); keep the "analysis vs conviction" angle | none | to source | - -**Ratio check (this 9-post window):** ~6 value (teach/opinion/story/reaction/BIP), -1 poll, 2 course-linked -> ~70/20/10. The two NEW slots (reaction + build-in-public) -are what keep it from being all funnel. - -Value drafts still to slot (mostly teach/opinion - **drop the reflexive course link** -on the 70%): friends-politely-lying, mom-test-past-questions, ten-interviews-recap, -why-i-wrote-it (story/BIP), first-move-poll & interview-count-poll (polls), -backlog-vibe-coding (opinion). All are idea-first and visual-ready. +Reordered 2026-08-14 (Paul): front-load pure-value/personal posts; space the course +links (~15%), the AI-tooling posts, and the repetitive clusters (progress-visibility: +jira/staging/trust-signals; interview: friends/mom-test/ten-interviews). The board +sorts by each post's `proposed_for`, so this table = the live board order. + +| Date | Pillar | Post | Link? | Status | +|---|---|---|---|---| +| Aug 13 | story/opinion | `course-promo/week1-thu-validate-before-build` | course | **posted** | +| Aug 18 | opinion | `icp-validation/week1-mon-jira-not-progress` | none | **scheduled** ✓ | +| Aug 19 | teach | `course-promo/week1-tue-founding-hypothesis` | course *(promo)* | **approved** ✓ | +| Aug 25 | reaction | `personal/reaction-claude-code-trust` | none | drafted ✓ | +| Aug 27 | build-in-public | `personal/bip-vendors-still-burning-founders` | none | drafted ✓ | +| Sep 1 | reaction | `personal/reaction-vibe-coding-front-back` | none | drafted ✓ | +| Sep 3 | teach | `course-promo/week1-thu-price-before-product` | none | revised ✓ | +| Sep 8 | opinion | `icp-validation/week1-tue-staging-question` | blog | revised ✓ | +| Sep 10 | teach/opinion | `course-promo/week2-mon-friends-politely-lying` | none | revised ✓ | +| Sep 15 | poll | `course-promo/week1-wed-first-move-poll` | none | draft | +| Sep 17 | build-in-public | `personal/bip-build-your-own-tools-with-ai` | none | drafted ✓ | +| Sep 22 | teach | `course-promo/week2-tue-mom-test-past-questions` | none | revised ✓ | +| Sep 24 | story | `course-promo/backlog-40k-mvp-chasing-fixes` | course *(promo)* | draft | +| Sep 29 | poll | `icp-validation/week1-wed-trust-signals-poll` | none | revised ✓ | +| Oct 1 | teach | `course-promo/week2-fri-ten-interviews-recap` | none | revised ✓ | +| Oct 6 | opinion | `icp-validation/backlog-vibe-coding-disposable` | none | draft | +| Oct 8 | poll | `course-promo/week2-wed-interview-count-poll` | none | draft | +| Oct 13 | story/promo | `course-promo/week1-fri-why-i-wrote-it` | course *(promo)* | draft | +| Oct 15 | opinion | `personal/opinion-permission-to-fix` | none | drafted ✓ | + +**Ratio:** across 18 posts, only **3 course links** (founding, 40k, why-i-wrote-it = +~15%) + 1 blog link; the rest is value/personal/poll. **Aug 25 → Sep 3 is four +straight no-link posts** - the run that makes the feed read as a person with takes. + +**Still open:** a real "I was wrong about a founder/idea" story to replace the deleted +BigBinary draft (story-bank Q2). Slot it when Paul has a case. ## Per-post checklist diff --git a/linkedin-posts/course-promo/assets/backlog-40k-mvp-chasing-fixes.jpg b/linkedin-posts/course-promo/assets/backlog-40k-mvp-chasing-fixes.jpg new file mode 100644 index 000000000..3e5cb64b9 Binary files /dev/null and b/linkedin-posts/course-promo/assets/backlog-40k-mvp-chasing-fixes.jpg differ diff --git a/linkedin-posts/course-promo/assets/week1-thu-price-before-product.png b/linkedin-posts/course-promo/assets/week1-thu-price-before-product.png index 06a81e7c9..829560fde 100644 Binary files a/linkedin-posts/course-promo/assets/week1-thu-price-before-product.png and b/linkedin-posts/course-promo/assets/week1-thu-price-before-product.png differ diff --git a/linkedin-posts/course-promo/assets/week1-thu-price-before-product.svg b/linkedin-posts/course-promo/assets/week1-thu-price-before-product.svg index 87655d318..118bbb59b 100644 --- a/linkedin-posts/course-promo/assets/week1-thu-price-before-product.svg +++ b/linkedin-posts/course-promo/assets/week1-thu-price-before-product.svg @@ -1,37 +1,40 @@ - Put a real price on it before you build: the same $97 button worded two ways - one leads with what the buyer gets, one lowers the fear. A stranger's card beats a hundred comments. - Two identical green $97/month pay buttons. The left button reads "Cut no-shows in half" and leads with what the buyer gets. The right reads "Start your first month" and lowers the fear of clicking. Same price either way. Basis: a stranger pulling out a card beats a hundred "sounds great" comments. + What proves demand: a real payment, not a pile of nice comments. A hundred "sounds great" comments cost nothing; one stranger paying is a stranger's real money. + Two cards. A red "A hundred comments" card - "sounds great", costs them nothing. A green "One payment" card - $97, card out, a stranger's real money. Basis: put a price on a one-page site, show strangers; only a payment counts. - + + - Put a real price on it before you build - Same $97 button - the wording changes who clicks. + What actually proves demand + A real payment, not a pile of nice comments. - - - Cut no-shows in half - $97 / month - leads with what they get + + + + A hundred comments + "Sounds great!" + costs them nothing + - - - Start your first month - $97 / month - makes the click feel safe + + + + One payment + $97, card out + a stranger's real money + - Same $97 either way - only the words change. - - A stranger's card beats a hundred "sounds great" comments. + Put a price on a one-page site, show strangers. Only a payment counts. diff --git a/linkedin-posts/course-promo/backlog-40k-mvp-chasing-fixes.md b/linkedin-posts/course-promo/backlog-40k-mvp-chasing-fixes.md index 3cb62ab77..36f3f7dd6 100644 --- a/linkedin-posts/course-promo/backlog-40k-mvp-chasing-fixes.md +++ b/linkedin-posts/course-promo/backlog-40k-mvp-chasing-fixes.md @@ -10,13 +10,14 @@ pillar: demand-before-build hypothesis: H1, H2 opener_archetype: case-led icp_test: Do non-technical founders mid-build recognize the "chasing fixes instead of talking to customers" pain, and the validate-first alternative? -image: "" +image: "assets/backlog-40k-mvp-chasing-fixes.jpg" first_comment: | I put the "what to check before you hire (or skip) a dev shop" steps into a free course, no signup: https://jetthoughts.com/course/tech-for-non-technical-founders-2026/?utm_source=linkedin&utm_medium=social&utm_campaign=course_promo_validate_first&utm_content=backlog_40k_mvp_chasing_fixes utm_campaign: course_promo_validate_first utm_content: backlog_40k_mvp_chasing_fixes status: draft -stage: future +stage: next +proposed_for: "2026-09-24 15:30 CEST" notes: | REAL case Paul reviewed 2026-08 (NOT fabricated): a founder's $40k / 3-month Upwork MVP. CORRECTIONS 2026-08-13 (Paul), 3 things: @@ -33,12 +34,12 @@ notes: | (the "ai rebuild" framing was factually wrong); utm updated to match. --- -A founder showed me an MVP he'd paid $40k for. Three months of work from a team he found on Upwork. +A founder showed me an MVP he'd paid $40k for. Three months of work from a team on Upwork. -I've built products like his before - a marketplace for specialists - so I had a rough sense of what it should take. His worked, mostly. But he kept hitting it: an availability error here, something broken there. And every time, the same loop - message the freelancer, explain the problem, agree on a fix, then wait days for it to land. +I've built the same kind of thing myself, so I knew what it should cost. His mostly worked. The trouble was what happened when it didn't - he'd chase the freelancer for a fix and lose days waiting. -What got to him wasn't really the money. It was paying for a working product and ending up with a part-time job chasing one. "I thought they'd hand me something that just worked," he told me. "Now I spend my week managing fixes I don't even understand." +"I thought they'd hand me something that just worked," he told me. "Now I spend my week managing fixes I don't even understand." -What I wish more non-technical founders knew early: at the idea stage, you don't have to sign up for that. Tools like Lovable, v0, and bolt.new let you put a working version in front of real users yourself, fast enough to learn whether anyone actually wants it before you write a big check. They're not magic, and a vague prompt gets you a mess, but for proving an idea they're more than enough. +That's the trap I want founders to see coming. You can put a working version in front of real users yourself now, with Lovable or v0 or bolt.new, for almost nothing - and find out if anyone wants it before you hand anyone a big check. -If you're non-technical and mid-build right now, how much of your week goes to chasing fixes instead of talking to customers? +He paid $40k to end up as the unpaid project manager of his own product. It didn't have to go that way. diff --git a/linkedin-posts/course-promo/week1-fri-why-i-wrote-it.md b/linkedin-posts/course-promo/week1-fri-why-i-wrote-it.md index d5a314723..3c30c6c73 100644 --- a/linkedin-posts/course-promo/week1-fri-why-i-wrote-it.md +++ b/linkedin-posts/course-promo/week1-fri-why-i-wrote-it.md @@ -17,7 +17,7 @@ utm_campaign: course_promo_module1 utm_content: week1_fri_why_i_wrote_it status: draft stage: next -proposed_for: "2026-09-10 15:30 CEST" +proposed_for: "2026-10-13 15:30 CEST" first_comment: | Free, no email gate: https://jetthoughts.com/course/tech-for-non-technical-founders-2026/?utm_source=linkedin&utm_medium=social&utm_campaign=course_promo_module1&utm_content=week1_fri_why_i_wrote_it @@ -45,7 +45,7 @@ notes: | policy. "tell me where it loses you" close kept verbatim - a real ask, not a sales CTA. --- -Every non-technical founder I talk to wants the same thing: to know what to read before they spend money on an idea. The honest answer is short. Find out if someone will pay before you build. For years I had no single link to send them, just scattered blog posts and the same advice repeated across a dozen calls. +Most founders want the same thing: to know what to read before they spend money on an idea. The honest answer is one line - find out if someone will pay before you build. For years I had no single link to send them, just scattered blog posts and the same advice repeated across a dozen calls. I spent the last two months writing it down. Five short modules, from a raw idea to your first paying customer, with the templates included: the demand test, the interview scripts, the one-page brief, a no-code build you own from day one, and how to ask for that first payment. diff --git a/linkedin-posts/course-promo/week1-thu-price-before-product.md b/linkedin-posts/course-promo/week1-thu-price-before-product.md index a6f68cb11..4dc597230 100644 --- a/linkedin-posts/course-promo/week1-thu-price-before-product.md +++ b/linkedin-posts/course-promo/week1-thu-price-before-product.md @@ -17,9 +17,9 @@ utm_campaign: course_promo_module1 utm_content: week1_thu_price_before_product status: draft stage: next -proposed_for: "2026-08-25 15:30 CEST" +proposed_for: "2026-09-03 15:30 CEST" first_comment: | - The chapter the sketch comes from, with the Stripe setup steps and the refund note wording, is free, no email gate: https://jetthoughts.com/course/tech-for-non-technical-founders-2026/?utm_source=linkedin&utm_medium=social&utm_campaign=course_promo_module1&utm_content=week1_thu_price_before_product + (value post - no link; reply-CTA only. Dropped the course link 2026-08-13 to make this one of the free 70% - see content-pillars.md) image: "assets/week1-thu-price-before-product.png" notes: | Opener archetype: observation-led. Plan called for Format A (marked screenshot of a smoke-test @@ -52,6 +52,4 @@ You can collect a hundred "sounds great" comments and still not have one person The cheapest way to find out is a real checkout. Make a Stripe payment link (about ten minutes of work), put it on a one-page site that describes the product you haven't built, and let people click a real pay button. If someone pays, refund them and tell them where the product actually is. A stranger pulling out a card tells you more than a hundred nice comments. -The sketch below is the same $97 button worded two ways. One leads with what the buyer gets, the other just makes clicking feel less scary. The price doesn't change, only the wording. - -If you're non-technical, have you ever charged for something before it existed? +Have you ever charged for something before you built it? diff --git a/linkedin-posts/course-promo/week1-thu-validate-before-build.md b/linkedin-posts/course-promo/week1-thu-validate-before-build.md index e416e5783..fc3945ec3 100644 --- a/linkedin-posts/course-promo/week1-thu-validate-before-build.md +++ b/linkedin-posts/course-promo/week1-thu-validate-before-build.md @@ -29,7 +29,7 @@ notes: | cost-stacked time-cut, no "So...So..." beat-marking. AI self-score ~1/10. --- -A lot of non-technical founders hire a dev shop before they know if anyone wants the product. +A lot of founders hire a dev shop before they know if anyone wants the product. It feels like progress. You have a team, a timeline, a Figma, a plan. diff --git a/linkedin-posts/course-promo/week1-wed-first-move-poll.md b/linkedin-posts/course-promo/week1-wed-first-move-poll.md index 91f438e9b..242f65563 100644 --- a/linkedin-posts/course-promo/week1-wed-first-move-poll.md +++ b/linkedin-posts/course-promo/week1-wed-first-move-poll.md @@ -17,7 +17,7 @@ utm_campaign: course_promo_module1 utm_content: week1_wed_first_move_poll status: draft stage: next -proposed_for: "2026-08-27 15:30 CEST" +proposed_for: "2026-09-15 15:30 CEST" first_comment: | If your honest answer was option 1 or 2, the first module of a free course I wrote is about the cheaper order, no email gate: https://jetthoughts.com/course/tech-for-non-technical-founders-2026/?utm_source=linkedin&utm_medium=social&utm_campaign=course_promo_module1&utm_content=week1_wed_first_move_poll image: "" @@ -41,7 +41,7 @@ The first move you make on a new business idea usually decides how much it costs What did you actually do first? Not what a book says you should do. The thing you honestly did, or would do tomorrow if the idea felt real enough. -I have a guess about which one wins. I want to know whether it holds for everyone, or just for the people who end up on calls with me. I'll share my guess, and what usually happens after each answer, once the votes are in. +I've got a guess about which one wins, but I want to see if it holds outside my own bubble. I'll share it, and what usually follows each answer, once the votes are in. --- diff --git a/linkedin-posts/course-promo/week2-fri-ten-interviews-recap.md b/linkedin-posts/course-promo/week2-fri-ten-interviews-recap.md index 1999ebb17..261a8d987 100644 --- a/linkedin-posts/course-promo/week2-fri-ten-interviews-recap.md +++ b/linkedin-posts/course-promo/week2-fri-ten-interviews-recap.md @@ -18,9 +18,9 @@ utm_campaign: course-pilot-aug26 utm_content: week2_fri_ten_interviews_recap status: draft stage: next -proposed_for: "2026-09-08 15:30 CEST" +proposed_for: "2026-10-01 15:30 CEST" first_comment: | - Module 2 is free, no email gate: https://jetthoughts.com/course/tech-for-non-technical-founders-2026/?utm_source=linkedin&utm_medium=social&utm_campaign=course-pilot-aug26&utm_content=week2_fri_ten_interviews_recap + (value post - no link; reply-CTA only. Dropped the course link 2026-08-13 to make this one of the free 70% - see content-pillars.md) image: "assets/week2-fri-ten-interviews-recap.png" notes: | Opener archetype: stat-led, per the week-2 row of docs/workflows/linkedin-course-promo-plan.md. diff --git a/linkedin-posts/course-promo/week2-mon-friends-politely-lying.md b/linkedin-posts/course-promo/week2-mon-friends-politely-lying.md index f1e4b9e51..97b40c13b 100644 --- a/linkedin-posts/course-promo/week2-mon-friends-politely-lying.md +++ b/linkedin-posts/course-promo/week2-mon-friends-politely-lying.md @@ -17,9 +17,9 @@ utm_campaign: course-pilot-aug26 utm_content: week2_mon_friends_politely_lying status: draft stage: next -proposed_for: "2026-09-01 15:30 CEST" +proposed_for: "2026-09-10 15:30 CEST" first_comment: | - The interview method she's using now is Module 2 of a free course I wrote, no email gate: https://jetthoughts.com/course/tech-for-non-technical-founders-2026/mom-test-ask-about-past-not-future/?utm_source=linkedin&utm_medium=social&utm_campaign=course-pilot-aug26&utm_content=week2_mon_friends_politely_lying + (value post - no link; reply-CTA only. Dropped the course link 2026-08-13 to make this one of the free 70% - see content-pillars.md) image: "assets/week2-mon-friends-politely-lying.png" notes: | Opener archetype: observation-led (name the line every founder says, then counter it - the Cutler @@ -40,7 +40,7 @@ notes: | "Everyone I show it to says they'd love it." -That line feels like proof, and it isn't. People who like you say kind things about your idea. It costs them nothing, and it tells you nothing about whether anyone actually needs the thing. +That's not proof of anything. People who like you say nice things about your idea for free, and it tells you nothing about whether anyone actually needs it. Demand is what someone already did about the problem before you showed up - what they tried on their own, what they were already paying to duct-tape around it. diff --git a/linkedin-posts/course-promo/week2-tue-mom-test-past-questions.md b/linkedin-posts/course-promo/week2-tue-mom-test-past-questions.md index a24c92c5a..385d52ef7 100644 --- a/linkedin-posts/course-promo/week2-tue-mom-test-past-questions.md +++ b/linkedin-posts/course-promo/week2-tue-mom-test-past-questions.md @@ -17,9 +17,9 @@ utm_campaign: course-pilot-aug26 utm_content: week2_tue_mom_test_past_questions status: draft stage: next -proposed_for: "2026-09-03 15:30 CEST" +proposed_for: "2026-09-22 15:30 CEST" first_comment: | - All five swaps, with the pass and fail signal for each answer, are in Lesson 2.1 of a free course I wrote, no email gate: https://jetthoughts.com/course/tech-for-non-technical-founders-2026/mom-test-ask-about-past-not-future/?utm_source=linkedin&utm_medium=social&utm_campaign=course-pilot-aug26&utm_content=week2_tue_mom_test_past_questions + (value post - no link; reply-CTA only. Dropped the course link 2026-08-13 to make this one of the free 70% - see content-pillars.md) image: "assets/week2-tue-mom-test-past-questions.png" notes: | Opener archetype: idea-led - opens with the flat claim that "Would you use this?" can only hurt you, then argues it. diff --git a/linkedin-posts/course-promo/week2-wed-interview-count-poll.md b/linkedin-posts/course-promo/week2-wed-interview-count-poll.md index fb883c2f9..bee3c8d53 100644 --- a/linkedin-posts/course-promo/week2-wed-interview-count-poll.md +++ b/linkedin-posts/course-promo/week2-wed-interview-count-poll.md @@ -17,7 +17,7 @@ utm_campaign: course-pilot-aug26 utm_content: week2_wed_interview_count_poll status: draft stage: next -proposed_for: "2026-09-09 15:30 CEST" +proposed_for: "2026-10-08 15:30 CEST" opener_archetype: observation-led first_comment: | If your honest vote was zero, the interview script I'd start with is free, no email gate: https://jetthoughts.com/course/tech-for-non-technical-founders-2026/mom-test-interview-script/?utm_source=linkedin&utm_medium=social&utm_campaign=course-pilot-aug26&utm_content=week2_wed_interview_count_poll @@ -35,13 +35,13 @@ notes: | REVISED 2026-08-13 to idea-first: opener changed from bare question-led to observation-led; poll options preserved. --- -How many real customers a founder talks to before building usually tells you more about where the product is headed than any early technical decision does. +The number of real customers you talk to before building tells you more about where the product is going than any early technical decision. By real I mean people who have the problem and owe you nothing. Friends who already knew about the idea, and were being kind, don't count. Neither does anyone who would feel bad voting against you. For anyone building something right now, or about to: how many of those conversations did you actually have before you committed real money or months? -I have a guess about where most honest answers land, and I want to see whether it holds outside the founders who end up on calls with me. There is no right answer in the options, and I will not argue with anyone's vote. Once the votes are in, I will share my guess and what tends to happen at each number. +I've got a guess about where most honest answers land, and I want to see if it holds outside my own bubble. No right answer here, and I won't argue with your vote. I'll share my guess, and what tends to happen at each number, once the votes are in. --- diff --git a/linkedin-posts/icp-validation/backlog-vibe-coding-disposable.md b/linkedin-posts/icp-validation/backlog-vibe-coding-disposable.md index 9f6483730..6d799e973 100644 --- a/linkedin-posts/icp-validation/backlog-vibe-coding-disposable.md +++ b/linkedin-posts/icp-validation/backlog-vibe-coding-disposable.md @@ -13,7 +13,7 @@ utm_content: vibe_coding_disposable_by_design image: "assets/backlog-vibe-coding-disposable.png" status: draft stage: next -proposed_for: "2026-08-26 15:30 CEST" +proposed_for: "2026-10-06 15:30 CEST" opener_archetype: idea-led notes: | REVISED 2026-08-13 to idea-first: opener was habit-led ("For the last diff --git a/linkedin-posts/icp-validation/week1-mon-jira-not-progress.md b/linkedin-posts/icp-validation/week1-mon-jira-not-progress.md index 90dba3472..bd803182c 100644 --- a/linkedin-posts/icp-validation/week1-mon-jira-not-progress.md +++ b/linkedin-posts/icp-validation/week1-mon-jira-not-progress.md @@ -21,7 +21,7 @@ notes: | course lane's validate-before-build = test demand). AI self-score ~1/10. --- -A lot of non-technical founders read a full Jira board as proof the product is moving. +A lot of founders read a full Jira board as proof the product is moving. It looks fine. Tickets are closing, standups are clean, the team sounds busy. diff --git a/linkedin-posts/icp-validation/week1-tue-staging-question.md b/linkedin-posts/icp-validation/week1-tue-staging-question.md index 64d6dc5a0..46074deb2 100644 --- a/linkedin-posts/icp-validation/week1-tue-staging-question.md +++ b/linkedin-posts/icp-validation/week1-tue-staging-question.md @@ -12,9 +12,9 @@ image: "assets/week1-tue-staging-question.png" visual: assets/week1-tue-staging-question.png (weekly oversight cadence exhibit) status: draft stage: next -proposed_for: "2026-08-20 15:30 CEST" +proposed_for: "2026-09-08 15:30 CEST" first_comment: | - If you want more than one question to put to your dev shop, I wrote up six a non-technical founder can use: https://jetthoughts.com/blog/scipab-tell-better-business-stories-startup-management/?utm_source=linkedin&utm_medium=social&utm_campaign=rescue_staging_question + If you want more than one question to put to your dev shop, I wrote up six a founder can use: https://jetthoughts.com/blog/scipab-tell-better-business-stories-startup-management/?utm_source=linkedin&utm_medium=social&utm_campaign=rescue_staging_question notes: | REVISED 2026-08-13 to idea-first. Was parable-shaped (single-founder story + tactic buried as "she'll ask..."). Now: state the pattern flat, deliver the @@ -22,9 +22,9 @@ notes: | connector. AI self-score ~1/10. --- -Most standup updates for non-technical founders don't tell you anything, and it's not because the team is lying. +Most standup updates don't tell you much, and it's not because the team is lying. -"Is it on track?" gets a yes almost every week. That yes almost never changes what you do next - and an answer that can't change your decision isn't worth much. +"Is it on track?" gets a yes almost every week. That yes never changes what you do next. It's a reflex, not information. A question that does change something: don't ask if it's on track. Ask the team to name three real people on your support list who'd notice what shipped last sprint. Actual names, not personas or test accounts. diff --git a/linkedin-posts/icp-validation/week1-wed-trust-signals-poll.md b/linkedin-posts/icp-validation/week1-wed-trust-signals-poll.md index 2ee501afd..68f008bde 100644 --- a/linkedin-posts/icp-validation/week1-wed-trust-signals-poll.md +++ b/linkedin-posts/icp-validation/week1-wed-trust-signals-poll.md @@ -18,7 +18,7 @@ utm_content: trust_signals_poll opener_archetype: idea-led status: draft stage: next -proposed_for: "2026-09-02 15:30 CEST" +proposed_for: "2026-09-29 15:30 CEST" notes: | Poll format - shorter body than narrative posts. Opener is idea-led: states a claim about which proof signals actually mean something before the poll asks. diff --git a/linkedin-posts/personal/assets/bip-build-your-own-tools-with-ai.jpg b/linkedin-posts/personal/assets/bip-build-your-own-tools-with-ai.jpg new file mode 100644 index 000000000..a862ee113 Binary files /dev/null and b/linkedin-posts/personal/assets/bip-build-your-own-tools-with-ai.jpg differ diff --git a/linkedin-posts/personal/assets/bip-vendors-still-burning-founders.jpg b/linkedin-posts/personal/assets/bip-vendors-still-burning-founders.jpg new file mode 100644 index 000000000..df66783d9 Binary files /dev/null and b/linkedin-posts/personal/assets/bip-vendors-still-burning-founders.jpg differ diff --git a/linkedin-posts/personal/assets/opinion-permission-to-fix.jpg b/linkedin-posts/personal/assets/opinion-permission-to-fix.jpg new file mode 100644 index 000000000..295e33cf4 Binary files /dev/null and b/linkedin-posts/personal/assets/opinion-permission-to-fix.jpg differ diff --git a/linkedin-posts/personal/assets/reaction-claude-code-trust.jpg b/linkedin-posts/personal/assets/reaction-claude-code-trust.jpg new file mode 100644 index 000000000..4bf431929 Binary files /dev/null and b/linkedin-posts/personal/assets/reaction-claude-code-trust.jpg differ diff --git a/linkedin-posts/personal/assets/reaction-vibe-coding-front-back.jpg b/linkedin-posts/personal/assets/reaction-vibe-coding-front-back.jpg new file mode 100644 index 000000000..154433bd8 Binary files /dev/null and b/linkedin-posts/personal/assets/reaction-vibe-coding-front-back.jpg differ diff --git a/linkedin-posts/personal/bip-build-your-own-tools-with-ai.md b/linkedin-posts/personal/bip-build-your-own-tools-with-ai.md new file mode 100644 index 000000000..2cab2382b --- /dev/null +++ b/linkedin-posts/personal/bip-build-your-own-tools-with-ai.md @@ -0,0 +1,34 @@ +--- +title: "The review tool I had AI build in half an hour" +lane: personal +pillar: build-in-public +author: paul-keen +voice: personal-first-person +icp_test: Does "AI makes custom workflow tools cheap - no excuses" land, and do builders/founders share the small tool they'd build? +image: "assets/bip-build-your-own-tools-with-ai.jpg" +first_comment: | + (value post - no link; reply-CTA only) +utm_campaign: "" +utm_content: bip_build_your_own_tools_with_ai +status: draft +stage: next +proposed_for: "2026-09-17 15:30 CEST" +notes: | + Pillar: build-in-public (the 70% value; NO course link). From Paul's real work + 2026-08-14: he needed a simple way to review AI output, so he had the AI build him + a small review tool (~30 min) - the agent drops work in and asks for his feedback, + he reviews it laid out instead of searching files; paid off day one. Real artifact: + the LinkedIn post review board (kanban) built this session. Point: AI is cheap + enough now to build the small tools around your own workflow - no excuses. Blunt + register, concrete, self-referential, ends on an actionable point (no bait CTA). +--- + +I stopped digging through files to review what my AI agents build. I had them build me a small tool for it instead. + +It's a little review board. An agent finishes something, drops it in, and asks for my take. I see it laid out properly and leave feedback in one place - no more hunting through folders to work out what changed. + +Half an hour to build. It paid that back on day one. + +AI isn't only for the product you're selling. It's cheap enough now to build the small tools around your own workflow - the ones no vendor would ever bother making for you. The board I use to review these very LinkedIn posts is one of them. + +There's no excuse left for a clunky workflow. If a tool would save you an hour a week, you can have AI build it this afternoon. diff --git a/linkedin-posts/personal/bip-vendors-still-burning-founders.md b/linkedin-posts/personal/bip-vendors-still-burning-founders.md index c86c8b9d6..fad420421 100644 --- a/linkedin-posts/personal/bip-vendors-still-burning-founders.md +++ b/linkedin-posts/personal/bip-vendors-still-burning-founders.md @@ -5,12 +5,12 @@ pillar: build-in-public author: paul-keen voice: personal-first-person icp_test: Do non-technical founders recognize the "paid for something I didn't need yet" waste, and share their own? -image: "" +image: "assets/bip-vendors-still-burning-founders.jpg" first_comment: | (value post - no link; reply-CTA only) status: draft stage: next -proposed_for: "2026-09-01 15:30 CEST" +proposed_for: "2026-08-27 15:30 CEST" notes: | Pillar: build-in-public (the 70% value; NO course link). From Paul's interview answer 2026-08-13: what surprises him is that even with AI this mature, founders @@ -20,10 +20,10 @@ notes: | Text-first. Idea-first, no em dashes. --- -A founder showed me the app they paid thousands for. It barely worked. +In 2026, a founder can build a working version of their idea in a weekend, for almost nothing. Plenty are still paying a vendor thousands for something that barely runs. -In 2026, they didn't need to spend that money at all. Lovable, v0 and bolt.new build a working version in a weekend now - cheap enough to try, fast enough to see if anyone even wants it before you pay for a real build. +Lovable, v0 and bolt.new do it - cheap enough to try, fast enough to see if anyone even wants it before you pay for a real build. -Instead they trusted the wrong vendor and got something half-broken. Months gone, savings gone. +It's hard to watch a founder hand over their savings and get back something half-broken. Months gone, and the whole thing was avoidable. The easy path was right there. They just didn't know it existed. diff --git a/linkedin-posts/personal/opinion-permission-to-fix.md b/linkedin-posts/personal/opinion-permission-to-fix.md new file mode 100644 index 000000000..40725663c --- /dev/null +++ b/linkedin-posts/personal/opinion-permission-to-fix.md @@ -0,0 +1,30 @@ +--- +title: "You don't need permission to fix what's hurting you" +lane: personal +pillar: opinion +author: paul-keen +voice: personal-first-person +icp_test: Does the "stop waiting for a yes to fix your own problem" take land with founders/operators, and do they share where they've done it? +image: "assets/opinion-permission-to-fix.jpg" +first_comment: | + (value post - no link; reply-CTA only) +utm_campaign: "" +utm_content: opinion_permission_to_fix +status: draft +stage: next +proposed_for: "2026-10-15 15:30 CEST" +notes: | + Pillar: opinion (the 70% value; NO course link). From Paul 2026-08-14: teams that + sit in pain waiting for approval to fix their own problems - you don't need a yes + to handle what's hurting you; the retro exists to spot the next thing you can fix + yourself. Leadership/ownership take - variety from the course/rescue clusters. + Blunt Holub-register flat conviction, ends on the point, no bait CTA, no em dashes. +--- + +Most struggling teams are waiting for someone to give them permission to stop struggling. + +They know what's broken. They've known for weeks. But they sit with it, hoping someone above them says "yes, go fix that" - as if the pain isn't reason enough. + +You don't need a yes to solve your own problem. If something slows you down every day, that's the permission. + +This is the whole point of a retrospective. It isn't a ritual to report status. It's where you spot the next thing that's hurting you and go fix it yourself - no one's approval required. diff --git a/linkedin-posts/personal/reaction-claude-code-trust.md b/linkedin-posts/personal/reaction-claude-code-trust.md index 7e7108da9..7da37b45d 100644 --- a/linkedin-posts/personal/reaction-claude-code-trust.md +++ b/linkedin-posts/personal/reaction-claude-code-trust.md @@ -5,7 +5,7 @@ pillar: reaction author: paul-keen voice: personal-first-person icp_test: Does "reliability is the line" resonate - do builders/founders share the AI tool they came back to? -image: "" +image: "assets/reaction-claude-code-trust.jpg" first_comment: | (value post - no link; reply-CTA only) status: draft @@ -16,9 +16,11 @@ notes: | 2026-08-13: Claude Code regained his trust this year - multi-agent/sub-agents now produce consistent code changes and follow his workflows. Translated for a mixed founder+builder audience: the point is RELIABILITY, which is why he's confident - telling non-tech founders AI can build real things now. Text-first (personal - posts read better as text than a single exhibit, per the 2026 format data). - Idea-first, no em dashes, one flat admission opener. + telling non-tech founders AI can build real things now. Caricature added 2026-08-14 + (New Yorker-style editorial cartoon via the Art tool / nano-banana-pro): + relaxed founder with coffee + a tidy robot working at a laptop + an abandoned + pile of old tech - the "not babysitting it" gag, no lettering. A warm cartoon + fits a personal post (unlike a data exhibit). Idea-first, no em dashes. --- I walked away from AI coding agents over the winter. Too much setup, and they kept ignoring half the instructions I gave them. diff --git a/linkedin-posts/personal/reaction-vibe-coding-front-back.md b/linkedin-posts/personal/reaction-vibe-coding-front-back.md new file mode 100644 index 000000000..fd6bc7f85 --- /dev/null +++ b/linkedin-posts/personal/reaction-vibe-coding-front-back.md @@ -0,0 +1,31 @@ +--- +title: "The vibe coding fight is mostly people talking past each other" +lane: personal +pillar: reaction +author: paul-keen +voice: personal-first-person +icp_test: Does the "front vs back" framing cut through the vibe-coding debate - do builders/founders agree or push back with their own line? +image: "assets/reaction-vibe-coding-front-back.jpg" +first_comment: | + (value post - no link; reply-CTA only) +utm_campaign: "" +utm_content: reaction_vibe_coding_front_back +status: draft +stage: next +proposed_for: "2026-09-01 15:30 CEST" +notes: | + Pillar: reaction (the 70% value; NO course link). From trends.md 2026-08 scan: + the vibe-coding debate (believers vs critics; Karpathy coined it). Paul's POV + (story-bank convictions): vibe-code at the FRONT (prototype/validate/throwaway), + discipline at the BACK (payments/user data/production) - the sourced 2026 + consensus. Rossi move (name the narrative, counter it) + Holub flat close. + Blunt, ends on the meta-point, no bait CTA, no em dashes. +--- + +The vibe coding argument online is exhausting. One side calls it the future, the other calls it a disaster. Both are half right and won't admit it. + +Vibe coding is great at the front of the work - sketching an idea, testing whether anyone wants it, throwing together something you'll delete next week. It's the wrong tool the moment real money, user data, or uptime is on the line. + +Prototype with it, validate with it, then rebuild the parts that have to survive real users. + +Most of the people fighting about it are just arguing about which half of the job they do. diff --git a/linkedin-posts/personal/story-wrong-about-bigbinary.md b/linkedin-posts/personal/story-wrong-about-bigbinary.md deleted file mode 100644 index 966bee2a1..000000000 --- a/linkedin-posts/personal/story-wrong-about-bigbinary.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: "The time I was confidently, completely wrong" -lane: personal -pillar: story -author: paul-keen -voice: personal-first-person -icp_test: Does the "analysis vs a founder's conviction" tension land - do founders/operators share a time they were proven wrong? -image: "" -first_comment: | - (value post - no link; reply-CTA only) -status: draft -stage: future -proposed_for: "" -notes: | - Pillar: story / mistakes (the 70% value; NO course link - mistakes outperform - wins on LinkedIn). From Paul's interview answer 2026-08-13: he's usually the - analytical skeptic with non-tech founders; sometimes they find market fit anyway. - Case: BigBinary - Paul thought outstaffing would die; instead it grew (his framing: - ~10x in 2-3 years). GROUNDED via research: BigBinary is a Rails-only consultancy - (est. 2011, ~130 team, building the 20+ product Neeto suite, Gumroad's Sahil - Lavingia publicly credits them); staff augmentation became the fastest-growing IT - segment ($450B by 2030). Hard "10x" left out (Paul's private number, unverifiable - publicly) - kept qualitative; Paul may add the multiple to own it. - One parallel line kept at the 1-per-post budget. Idea-first, no em dashes. - BACKLOGGED 2026-08-13 (Paul: "do not like this story at all - need a better one"). - Keep the BigBinary/being-wrong ANGLE (analysis vs a founder's conviction) but - find a stronger, more personal case before drafting. Do not schedule as-is. ---- - -I'm usually the skeptic in the room. A non-technical founder walks me through their idea and my analytical side quietly says: this won't work. - -I'm wrong more often than that instinct admits. - -Years ago I worked with BigBinary, a small Rails agency, and I was sure their model was a dead end. Outstaffing felt like something the market would grow out of. Then they just kept going - more clients, their own suite of products, Sahil at Gumroad publicly crediting them with saving the company. The thing I'd written off is now one of the most respected shops in the Rails world, and outstaffing became one of the fastest-growing parts of the industry. - -My read is only ever about what already exists. Founders are betting on what doesn't, and I keep underrating that bet. - -I still catch myself deciding an idea won't work before the founder's finished talking. Trying to shut that voice up a bit earlier each time. diff --git a/linkedin-posts/reference-examples.md b/linkedin-posts/reference-examples.md index ff9291482..aa6190d21 100644 --- a/linkedin-posts/reference-examples.md +++ b/linkedin-posts/reference-examples.md @@ -75,6 +75,12 @@ Short, humble, concrete product updates in the first person. *"My Rails backup s (Paul flagged 2026-08-13: "that reliability is the whole story for anyone deciding whether to build with AI" - a marketer's bridge sentence, not his voice). State the thing; don't explain to the reader why it matters to them. +- **No over-narrated blow-by-blow.** Influencers compress; they don't recap the + whole sequence (Paul flagged 2026-08-14: "an error here, a dead feature there - + and every one meant the same loop: message the freelancer, explain it, agree a + fix, wait days" reads as story-recap, not a take). Collapse an enumerated loop + into one blunt beat. Also drop soft-credential hedges ("roughly what it should + take" → "what it should cost"). - **Banned close crutches:** "Still surprises me…", "Turns out…", "That's the part that gets to me" - stock emotional/meta closers (Paul flagged 2026-08-13). End on the concrete point itself, flat. diff --git a/linkedin-posts/story-bank.md b/linkedin-posts/story-bank.md index b2d72e3b1..d90c5cefd 100644 --- a/linkedin-posts/story-bank.md +++ b/linkedin-posts/story-bank.md @@ -61,7 +61,7 @@ We're thin on **build-in-public**, **fresh stories**, and **reaction** material. Ask these to stock the bank (one short answer each is enough for a post): 1. A recent audit finding that surprised you? (build-in-public) - **ANSWERED 2026-08-13:** even with AI this mature, founders still get burned by inexperienced vendors and waste money on work that could be built better or skipped entirely. Drafted `personal/bip-vendors-still-burning-founders`. -2. A time you were wrong about a founder's idea, or changed your mind? (mistakes) - **ANSWERED 2026-08-13:** BigBinary - Paul thought outstaffing would die; it grew (his framing ~10x in 2-3 yrs). Grounded: Rails-only consultancy est. 2011, ~130 team, Neeto product suite, Gumroad's Sahil credits them; staff-aug became the fastest-growing IT segment. Drafted `personal/story-wrong-about-bigbinary`. +2. A time you were wrong about a founder's idea, or changed your mind? (mistakes) - **STILL OPEN.** BigBinary was tried and REJECTED (Paul didn't want it, post deleted 2026-08-14). Need a different real case where Paul was confidently wrong and the founder/idea worked out. Ask Paul for a fresh one - do not re-draft BigBinary. 3. The worst dev-shop situation you've walked into (anonymized)? (story) 4. What do you actually say to a founder who insists on hiring devs before validating? (opinion) 5. A no-code/AI build you did recently - what worked, what broke? (build-in-public)