<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Productverse: AI Bites]]></title><description><![CDATA[Hands‑on AI: prompts, tools, and lessons from what I build, delivered to product folks who’d rather tinker than scroll.]]></description><link>https://www.productver.se/s/ai-bites</link><image><url>https://substackcdn.com/image/fetch/$s_!jfDg!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c19dbad-57c3-400d-8835-525a36ea6339_1280x1280.png</url><title>Productverse: AI Bites</title><link>https://www.productver.se/s/ai-bites</link></image><generator>Substack</generator><lastBuildDate>Fri, 24 Apr 2026 08:21:09 GMT</lastBuildDate><atom:link href="https://www.productver.se/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Olivier Courtois]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[olivier@productver.se]]></webMaster><itunes:owner><itunes:email><![CDATA[olivier@productver.se]]></itunes:email><itunes:name><![CDATA[Olivier Courtois]]></itunes:name></itunes:owner><itunes:author><![CDATA[Olivier Courtois]]></itunes:author><googleplay:owner><![CDATA[olivier@productver.se]]></googleplay:owner><googleplay:email><![CDATA[olivier@productver.se]]></googleplay:email><googleplay:author><![CDATA[Olivier Courtois]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[🧠 The AI Product Workspace / AI Bites 05]]></title><description><![CDATA[The 5 markdown files I use to give AI a context, plus the prompts I use to create them, and update them as the project evolves.]]></description><link>https://www.productver.se/p/the-ai-product-workspace-ai-bites</link><guid isPermaLink="false">https://www.productver.se/p/the-ai-product-workspace-ai-bites</guid><dc:creator><![CDATA[Olivier Courtois]]></dc:creator><pubDate>Wed, 25 Mar 2026 06:19:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!iFxT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85c5cd59-b870-43c0-8c62-637ef1d7a666_1862x692.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey everyone,</p><p>Thank you so much for your likes, shares, and votes on the first edition written by a guest &#128293;. <a href="https://www.productver.se/p/automating-docs-with-claude-code">Maxime&#8217;s documentation workflow clearly resonated</a>! </p><p>Today I&#8217;m sharing exactly how I organize myself: introducing <strong>the AI Product Workspace</strong>. It&#8217;s a small folder of markdown files that I create for each project (or client in my case), in order for AI to work with a real product context.</p><p>In today&#8217;s edition:</p><ul><li><p>Why AI outputs get generic when your context lives only in your head</p></li><li><p>The exact 5-file scaffold I recommend</p></li><li><p>A prompt to create the files in one session by talking</p></li><li><p>How I keep the workspace alive with lightweight automations</p></li><li><p>Bonus: an interactive premortem prompt that helps you think deeper about what might go wrong, and actively prevent it. </p></li></ul><p>Enjoy!</p><div><hr></div><h1>The AI Product Workspace (5 files to improve your agent&#8217;s quality)</h1><h2>Why your AI keeps forgetting</h2><p>Every new chat starts from zero, so you&#8217;ve to re-explain the product, the users, the current initiative, the constraints. You forget one detail, and the output goes sideways&#8230; </p><p>Projects in ChatGPT or Claude help a bit. But they still tend to be shallow: a few instructions, a few uploads, and no real operating structure. They&#8217;ve memory but you can&#8217;t be sure if it&#8217;s gonna be used, nor how. </p><p>The simplest fix I can recommend: </p><ul><li><p>Keep your core product knowledge in a small folder on your machine. I call it the <strong>AI Product Workspace.</strong></p></li><li><p>Then start Claude Cowork, Claude Code, <a href="https://www.productver.se/p/ai-copilot-with-mcp-ai-bites-03">Cursor</a> or Codex in this folder. Prefer these tools over Claude / ChatGPT, because they can read and write in the folder. </p></li></ul><h2>&#128747; The 5-File Scaffold</h2><p>These files cover most of the context I need to get useful AI outputs on the first try.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iFxT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85c5cd59-b870-43c0-8c62-637ef1d7a666_1862x692.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iFxT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85c5cd59-b870-43c0-8c62-637ef1d7a666_1862x692.png 424w, https://substackcdn.com/image/fetch/$s_!iFxT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85c5cd59-b870-43c0-8c62-637ef1d7a666_1862x692.png 848w, https://substackcdn.com/image/fetch/$s_!iFxT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85c5cd59-b870-43c0-8c62-637ef1d7a666_1862x692.png 1272w, https://substackcdn.com/image/fetch/$s_!iFxT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85c5cd59-b870-43c0-8c62-637ef1d7a666_1862x692.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iFxT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85c5cd59-b870-43c0-8c62-637ef1d7a666_1862x692.png" width="1456" height="541" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/85c5cd59-b870-43c0-8c62-637ef1d7a666_1862x692.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:541,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:594623,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productver.se/i/191987028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85c5cd59-b870-43c0-8c62-637ef1d7a666_1862x692.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iFxT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85c5cd59-b870-43c0-8c62-637ef1d7a666_1862x692.png 424w, https://substackcdn.com/image/fetch/$s_!iFxT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85c5cd59-b870-43c0-8c62-637ef1d7a666_1862x692.png 848w, https://substackcdn.com/image/fetch/$s_!iFxT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85c5cd59-b870-43c0-8c62-637ef1d7a666_1862x692.png 1272w, https://substackcdn.com/image/fetch/$s_!iFxT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85c5cd59-b870-43c0-8c62-637ef1d7a666_1862x692.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The folder looks like this:</p><pre><code><code>acme-workspace/
&#9500;&#9472;&#9472; company-id.md
&#9500;&#9472;&#9472; current-bet.md
&#9500;&#9472;&#9472; users.md
&#9500;&#9472;&#9472; competitors.md
&#9492;&#9472;&#9472; guidelines.md</code></code></pre><p><em>Below, I use a fictional company called <strong>Acme</strong>, a B2B AI copilot for support teams, to show what each file looks like in practice.</em></p><h3>1/ Company ID (<code>company-id.md</code>)</h3><p>Think of it like the identity card of your company. Do not stuff it with too much context. Focus on information that can help prioritize what&#8217;s important, and that change slowly. You should probably update this once per quarter (or even less). </p><pre><code><code># company-id.md &#8212; Acme (excerpt)

## Company Snapshot
- B2B SaaS, Series A, 45 people, SF + remote
- "AI copilot for support teams" &#8212; auto-drafts replies, routes tickets, flags escalations

## Product Overview
- Core: reply drafting (GPT-4 based), smart routing, sentiment detection
- Strength: integrates with Zendesk, Intercom, Freshdesk in &lt; 1 day
- Gap: no voice channel support yet, analytics dashboard is shallow

## ICP and Buying Context
- Buyer: VP Support / Head of CX at mid-market SaaS (200-2000 employees)
- User: Tier-1 support agents handling 40+ tickets/day
- Why they buy: agent burnout, inconsistent reply quality, slow onboarding
- Why they don't: "we already have macros," security review takes 3 months

## Strategy
- Company's OKR: ...
- Team's OKR: ...
- Important success metrics: ...</code></code></pre><h3>2/ Current Bet (<code>current-bet.md</code>)</h3><p>The most useful file in practice. This is the one that makes the biggest difference in day-to-day AI conversations. It contains the strategic information you would use to pitch an important track to a colleague. It captures your strategy, the main surface areas, decisions, and assumptions you want to validate. </p><p>You should probably create one of this per &#8220;big rock&#8221;. </p><pre><code><code># current-bet.md &#8212; Acme (excerpt)

## Core Insight
Enterprise deals stall because security teams block AI access to customer data.
Our current architecture requires full ticket access. Competitors are shipping
"data-minimized" modes. We're losing deals we should win.

## Why Now
- Lost 3 enterprise deals in Q4 to security objections
- Competitor X launched "privacy mode" in January
- Our SOC2 Type II just completed &#8212; we have the compliance foundation

## Current Status
- Privacy-mode API spec: done
- Agent-side UX for redacted view: in progress (ships week of March 31)
- Security whitepaper for buyers: not started

## Risks &amp; Assumptions to validate 
- Redacted mode may degrade reply quality by 15-20% &#8212; no real data yet
- Engineering capacity: 2 of 4 engineers pulled to reliability work until April</code></code></pre><p>I refresh this every 2 weeks. When it goes stale, almost every AI conversation gets worse.</p><h3>3/ Users, Competitors, Guidelines</h3><p>The other 3 files follow the same principle: structured, concise, opinionated.</p><ul><li><p><code>users.md</code>: Personas, pain points, jobs-to-be-done, and real quotes from interviews. The quotes matter more than the structure. AI outputs get noticeably better when they can reuse actual user language instead of inventing generic empathy.</p></li><li><p><code>competitors.md</code>: Competitors, alternatives, pricing anchors, market shifts. This one is perfect for Deep Research, I usually start with <a href="https://www.productver.se/i/168278454/1-competitive-analysis-delegate">the competitive analysis prompt from AI Bites #1</a> to generate a first draft, then trim it down to what actually matters for decisions.</p></li><li><p><code>guidelines.md</code>: Writing tone, ticket format, changelog conventions, vocabulary to use and avoid. </p></li></ul><p>Each of these files has 5-8 sections. The interviewer prompt below generates all of them, so I won&#8217;t repeat the full outlines here. You can tap on the button to see the full outlines or read the prompt below. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://ocourtois.notion.site/AI-Product-Workspace-Files-32da13667dd780d8be5dd80d756c8563&quot;,&quot;text&quot;:&quot;Preview the files&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://ocourtois.notion.site/AI-Product-Workspace-Files-32da13667dd780d8be5dd80d756c8563"><span>Preview the files</span></a></p><h3>What NOT to put in your workspace </h3><p>Do not add meeting transcripts, full research reports, raw data exports, or anything longer than 3 pages. These files are context, not archives. If a file is too long, AI either ignores the important parts or gets confused. Keep it short and opinionated.</p><p><em>Note: do not aim for perfection on day one. A workspace that is 30% complete already beats a blank chat.</em></p><h2>&#127897;&#65039; Create the 5 files by talking</h2><p>This is my favorite part. You do not need to sit down and &#8220;write documentation.&#8221; You can just answer questions, and generate them.</p><p>I use AI as an interviewer, and dictate my answers (I use <a href="https://www.monologue.to/">Monologue</a>, but there is plenty of other ones). I talk, and AI structures it, spots gaps, and drafts the files.</p><p>Here&#8217;s how I use it:</p><p>1&#65039;&#8419; Open a new chat in Cursor, Claude Code / Cowork or Codex, and paste the interviewer prompt below</p><p>2&#65039;&#8419; Answer out loud using dictation. I dump context fast, typos and all</p><p>3&#65039;&#8419; Paste any useful material you already have: notes, decks, tickets, docs, meeting transcripts</p><p>4&#65039;&#8419; Review the draft files, fix what feels wrong, and save them in your workspace</p><p>It usually takes me around 15 minutes. Here is the prompt I would use &#128071;</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;1f80651d-e35e-4889-83a7-e0b092a2b8bd&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">You are my product workspace interviewer.

Your job is to help me build 5 markdown files that will become the memory of my AI Product Workspace:
- company-id.md
- current-bet.md
- users.md
- competitors.md
- guidelines.md

How you should work:
- First, show me the proposed outline of all 5 files
- Then interview me one file at a time
- Ask 3 to 5 focused questions per file
- Accept messy dictated answers
- After each file, summarize what you understood and tell me what still feels unclear, contradictory, or weak
- If I say "skip", leave [TO COMPLETE] markers and move on

Handling pasted material:
- I may paste documents, notes, decks, transcripts, or links at any point during the interview
- When I do, scan the material for relevant information and integrate it into the current file
- Tell me what you extracted and what you ignored, so I can correct course
- Do not stop the interview to summarize the entire document &#8212; just absorb and continue

Important behavior:
- Do not ask everything at once
- Do not write polished consultant prose
- Use my words when possible
- If a section sounds vague, challenge me and ask a sharper follow-up
- If something matters but I forgot it, point out the gap

[...] Tap the button for the full prompt</code></pre></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://ocourtois.notion.site/AI-Product-Workspace-Prompt-32da13667dd780cf939cf3d55d88e4db?pvs=74&quot;,&quot;text&quot;:&quot;Open the prompt&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://ocourtois.notion.site/AI-Product-Workspace-Prompt-32da13667dd780cf939cf3d55d88e4db?pvs=74"><span>Open the prompt</span></a></p><h3>Enrich with Deep Research &amp; existing files</h3><p>After the interview, some sections will still be thin. That is normal. The point of the first pass is to capture what is already in your head.</p><p>Then I do a second pass for external knowledge:</p><p>1&#65039;&#8419; Start a deep research on your company, and some of the competitors using the prompts shared in <a href="https://www.productver.se/i/168278454/1-competitive-analysis-delegate">AI Bites #1</a>. Then share the results with your agent, and ask which insights it would extract to complete the files. Review the changes, then ask it to update them. </p><p>2&#65039;&#8419; Share presentations, transcripts and other files that contain useful strategic info with your agent. Ask which insights it would extract to complete the files. Review the changes, then ask it to update them. </p><h2>&#128260; Keeping it alive</h2><p>The workspace is useful only if it stays close to reality. What usually happens after a week: you create good files once, it&#8217;s super useful, then decisions move on, research piles up, and the AI quietly starts using stale assumptions.</p><h3>Where automation helps</h3><p>Here&#8217;s how I think about the automation ladder, from simplest to most hands-off. </p><p><strong>Level 1: Manual with AI assist</strong> (start here)<br>After a meeting or decision, paste the transcript or notes into your agent, along with the update prompt below. Review the suggested edits. Apply them yourself. This already cuts the update work from 20 minutes to 5.</p><p><strong>Level 2: Recurring reviews with Claude Cowork / Codex</strong><br>Set up a recurring review that scans your connected sources thanks to MCPs, meeting transcripts, decision logs, shared docs, even the codebase, and proposes workspace updates on a schedule. You still approve, but you don&#8217;t need to remember to run the prompt. The workspace stays fresh without willpower.</p><p><strong>Level 3: Automated diffs with Claude Code or Codex</strong><br>Take accepted updates and turn them into actual markdown diffs or pull requests against your workspace folder. If you version your workspace in git (I do), this gives you a history of how your product context evolved over time. Surprisingly useful when onboarding someone or reviewing past decisions.</p><h3>Level 1: Manual update loop</h3><p>After I finish a task, an important meeting, a new customer insight, or a strategy decision, I always talk with my agent, and end with a question: </p><p> 1&#65039;&#8419;  &#8220;Which decisions and lessons did we discuss that should be documented in this folder? Let me review the changes. &#8221;, then apply the adequate changes.  If like me, you use snippets, you can map a shortcut to an elaborated version of this prompt &#128071;</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;3b4d4557-4665-4025-bdc0-0b02a3b41da0&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">Which decisions and lessons did we discuss that should be documented in this folder? 
Which files would you update? Let me review the changes. 

File update frequency (use this to calibrate what deserves an update):
- current-bet.md: changes often &#8212; status, scope, risks, shipped items. Update aggressively.
- users.md: changes when new research or quotes arrive. Update when evidence shifts.
- competitors.md: changes when competitors move or market context shifts. Update rarely.
- company-id.md: changes when something structural shifts (ICP, pricing, team). Almost never.
- guidelines.md: changes when conventions evolve. Almost never.

For each proposed update, show:
- file name
- section name
- why this section should change
- current content (quote it)
- proposed replacement or addition

Also tell me:
- what assumptions now look stale across files
- what contradictions appeared between files
- what evidence is still missing

If nothing important changed, say so clearly and explain why.
Do not rewrite entire files. Only suggest precise, targeted edits.</code></pre></div><div><hr></div><h1>&#129702; Bonus: Premortem </h1><p>This is my favorite use of the workspace because it compounds the value of the whole folder.</p><p>Imagine that your current bet initiative failed, then work backward to understand why. I use AI as a facilitator to challenge my first answers and help me see what I missed.</p><p>So instead of a one-shot &#8220;give me 10 risks&#8221; prompt, I prefer an interactive one.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;123ade2f-858b-4308-bd6d-588a127e4045&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">You are facilitating a premortem exercise based on Gary Klein's method.

First, read these files to understand the context:
- company-id.md
- current-bet.md
- users.md
- competitors.md

Your role is not to do the thinking for me. Your role is to help me think deeper.

Process:
1. Start by briefly summarizing the current bet and the success criteria you infer
2. Ask me 5 focused questions before generating any failure reasons
3. Wait for my answers
4. Generate 7 to 10 plausible reasons this initiative failed 6 months from now
5. Ask me which ones feel real, which ones feel overstated, and what is missing
6. Challenge weak assumptions, missing evidence, and optimistic interpretations
7. Refine the list

For each final failure reason, assess:
- likelihood: high / medium / low
- impact: high / medium / low
- current mitigation: yes / partial / no
- evidence: what in the workspace supports this concern

Then identify the top 3 risks that are both important and under-mitigated.

For each of the top 3, provide:
- why it matters
- what signal would tell us it is becoming real
- one action we could take this week
- one question we still need to answer

Rules:
- Be concrete
- Use the workspace, not generic startup advice
- Push back when my answers are vague
- Spot gaps between what we say we believe and what the files actually show

Output format:
- Short summary of the bet
- Ranked risk table
- Top 3 risks with actions and open questions
- Blind spots or contradictions that deserve follow-up</code></pre></div><p>&#8212;</p><p>If you set up this workspace, I promise every prompt from AI Bites past editions will work better, the competitive analysis, the ticket writer, the MCP workflows, the documentation pipeline. </p><p>Thank you for reading this far. I hope you&#8217;ll find this useful. Setting up the workspace takes 20 minutes, and every AI interaction after that gets better. Try it. <br><br>Until next time!</p><p>Olivier</p><div><hr></div><p><strong>Share &#8594;</strong> <em>Please help</em> <em>me promote this newsletter by sharing it with colleagues (tap the refer button) or consider liking it (tap on the &#128153;, it helps me a lot)!</em></p><p><strong>About</strong> <strong>&#8594; </strong><em>Productverse is written by <a href="https://ocourtois.fr/">Olivier Courtois</a> (15y+ in product, Fractional CPO, <a href="https://ocourtois.fr/coaching">coach</a> &amp; advisor). Each &#8220;PM Snacks&#8221; features handpicked links to help you become a better product maker, and each &#8220;AI Bites&#8221; is a deep dive in AI-enabled workflows.</em></p>]]></content:encoded></item><item><title><![CDATA[🗞️ Automating docs with Claude Code / AI Bites 04]]></title><description><![CDATA[How Maxime systematized writing good quality documentation by creating its first open-source tool for Claude Code: max-doc-ai. Change logs, release notes, features docs.]]></description><link>https://www.productver.se/p/automating-docs-with-claude-code</link><guid isPermaLink="false">https://www.productver.se/p/automating-docs-with-claude-code</guid><dc:creator><![CDATA[Olivier Courtois]]></dc:creator><pubDate>Tue, 03 Feb 2026 05:47:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!CGi7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24ee60a4-6d70-4714-bf8a-1d8cd845b366_1680x1310.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey everyone,</p><p>Thank you so much for your likes and votes on the previous edition on communication prompts and MCP workflows.</p><p>Today&#8217;s edition is special: <em><strong>I&#8217;m hosting my first guest post!</strong></em> </p><blockquote><p><a href="https://www.linkedin.com/in/mberkowicz/">Maxime Berkowicz</a>, First PM at Elba, built an open-source tool to automate product documentation using Claude Code. It saves him 1-5 hours per feature, and I bet it can help you too. </p></blockquote><p>I know what you&#8217;re probably thinking: <strong>documentation, is-it really the highest leverage task we can talk about?</strong> Actually, I do. The better your documentation quality is, the more AI-powered workflows you can enable. So read-on to learn how to save +3hrs per feature. </p><p>In today&#8217;s edition:</p><ul><li><p>Why you should leverage AI models to have best-in-class documentation</p></li><li><p>What is Claude Code (and why PMs should care)</p></li><li><p>How Max-Doc-AI automates documentation end-to-end</p></li><li><p>Some of his learnings along the way on how to build such systems with AI tools</p></li></ul><p>Enjoy!</p><div><hr></div><h1>How I automated my product documentation with Claude Code (and why you should too)</h1><blockquote><p><strong>TL;DR</strong>: I built <a href="https://github.com/maxberko/max-doc-ai">max-doc-ai</a>, an open-source tool that automatically generates product documentation by exploring your codebase. Saves 1-5 hours per feature. Here&#8217;s how it works.</p></blockquote><h2>The problem: product docs always lagging behind</h2><p>Nobody likes writing documentation. (Well, I don&#8217;t)</p><p>Product teams have a simple problem: every week, their team ships new features. And every week, the same drill: taking screenshots, writing feature descriptions, updating a knowledge base&#8230; It usually takes between an hour and half a day to fully document a feature.</p><p>Not huge, but it adds up. It&#8217;s also the kind of task that quickly slides to the bottom of the to-do list when there are urgent product deadlines.</p><p>Result? Lagging documentation that <strong>slows down entire companies :</strong></p><ul><li><p><strong>Sales can&#8217;t sell without great collaterals:</strong> sales don&#8217;t know what&#8217;s real, or already available. Product marketing teams can&#8217;t build sales collaterals out of a faulty documentation.</p></li><li><p><strong>Engineers become living documentation:</strong> Every &#8220;quick question&#8221; costs context-switching. When that engineer leaves, the knowledge leaves too.</p></li><li><p><strong>Onboarding drags:</strong> New hires spend weeks asking &#8220;how does X work?&#8221; instead of contributing. Ramp time doubles. Senior people become interrupt-driven.</p></li><li><p><strong>AI initiatives die:</strong> your support bot, sales copilot, and internal agents are only as good as your knowledge base. Bad docs = bad AI = abandoned initiatives.</p></li></ul><p>Thus, I asked myself: &#8220;What if AI could write all product documentation for me?&#8221;</p><h2>&#128747; Maxime&#8217;s Daily Workflow</h2><p>Until very recently, I would block a 1-5hrs slot in my calendar to</p><ul><li><p>Manually read through meeting minutes, tickets, and PRDs</p></li><li><p>Take screenshots</p></li><li><p>Copy-paste in Claude or ChatGPT</p></li><li><p>Copy-paste the results</p></li></ul><p>Now, I only take 15mins:</p><ul><li><p>Every Thursday morning, I open my terminal and type <br>@<code>claude Create a release for [feature]</code></p></li><li><p>Claude explores the codebase, launches a browser, captures screenshots, and generates docs</p></li><li><p>15 minutes later, I review the Knowledge Base article draft and Slack announcements</p></li><li><p>I tap &#8220;enter&#8221; to publish, and I&#8217;m back to roadmap planning or coffee &#9749;</p></li></ul><h2>Using Claude Code as a documentation partner</h2><p>Before talking about the tool I created &#8220;<strong><a href="https://github.com/maxberko/max-doc-ai">max-doc-AI</a>&#8221;</strong>, a quick detour through Claude Code - my partner in crime.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-tU9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86ed9acc-ef6d-4a83-989e-147d1f889391_480x358.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-tU9!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86ed9acc-ef6d-4a83-989e-147d1f889391_480x358.gif 424w, https://substackcdn.com/image/fetch/$s_!-tU9!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86ed9acc-ef6d-4a83-989e-147d1f889391_480x358.gif 848w, https://substackcdn.com/image/fetch/$s_!-tU9!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86ed9acc-ef6d-4a83-989e-147d1f889391_480x358.gif 1272w, https://substackcdn.com/image/fetch/$s_!-tU9!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86ed9acc-ef6d-4a83-989e-147d1f889391_480x358.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-tU9!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86ed9acc-ef6d-4a83-989e-147d1f889391_480x358.gif" width="480" height="358" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/86ed9acc-ef6d-4a83-989e-147d1f889391_480x358.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:358,&quot;width&quot;:480,&quot;resizeWidth&quot;:480,&quot;bytes&quot;:10806897,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productver.se/i/184448359?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86ed9acc-ef6d-4a83-989e-147d1f889391_480x358.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-tU9!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86ed9acc-ef6d-4a83-989e-147d1f889391_480x358.gif 424w, https://substackcdn.com/image/fetch/$s_!-tU9!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86ed9acc-ef6d-4a83-989e-147d1f889391_480x358.gif 848w, https://substackcdn.com/image/fetch/$s_!-tU9!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86ed9acc-ef6d-4a83-989e-147d1f889391_480x358.gif 1272w, https://substackcdn.com/image/fetch/$s_!-tU9!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86ed9acc-ef6d-4a83-989e-147d1f889391_480x358.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If you don&#8217;t know it, imagine ChatGPT... but that can actually do things on your machine.</p><p>Claude Code is an intelligent terminal. You type commands in natural language &amp; it executes. It has access to your codebase: it can read, explore, understand your code. On complex workflows, it doesn&#8217;t &#8220;lose the thread&#8221; like other AI tools.</p><p><strong>Three things that made it a must-use for me:</strong></p><ol><li><p><strong>The &#8220;plan mode&#8221;</strong> <br>Claude Code can enter planning mode before executing. It explores your codebase, thinks through the approach, presents you with a plan. You validate, it launches. It&#8217;s exactly what a good PM should do: specify before building.</p></li><li><p><strong>The context</strong> <br>Unlike ChatGPT where you have to copy-paste code in every conversation, Claude Code has direct access to your repo. It understands the architecture, the patterns, the naming conventions. Less guessing &amp; more precision.</p></li><li><p><strong>No lock-in</strong> <br>Claude Code generates... code. Markdown. Python scripts. You can modify, share &amp; use your files elsewhere. For a PM who wants to keep control, that matters.</p></li></ol><h2>Max-Doc-AI: automating docs end-to-end</h2><p><a href="https://github.com/maxberko/max-doc-ai">Max-Doc-AI</a> is a set of Claude Code &#8220;skills&#8221; &amp; Python scripts that automate the entire documentation workflow.</p><p>Within a single command here&#8217;s what happens:<br><strong>@</strong><code>claude Create a release for [feature name]</code></p><ol><li><p><strong>Codebase exploration</strong> Claude explores your code to understand how the feature was implemented, what the routes and URLs are, what the main components are. Not what was planned in the PRD, but what actually exists.</p></li><li><p><strong>Automatic screenshot capture</strong> This is where it gets interesting. Claude uses Anthropic&#8217;s &#8220;Computer Use&#8221; API: it opens a browser, navigates your app, takes screenshots. Based on the code, it pulls automatically the right URL <em>(Well, sometimes it gets the wrong page when I have two screens. It&#8217;s still experimental. But 80% of the time, it works on the first try.)</em></p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;8fb2d907-d2b0-43bf-a758-0feae8fdb9c2&quot;,&quot;duration&quot;:null}"></div></li><li><p><strong>Documentation generation</strong> With the code context and screenshots, Claude generates a complete knowledge base article: overview, key capabilities, step-by-step guide, use cases, FAQ. Screenshots integrated with proper captions.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CGi7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24ee60a4-6d70-4714-bf8a-1d8cd845b366_1680x1310.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CGi7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24ee60a4-6d70-4714-bf8a-1d8cd845b366_1680x1310.png 424w, https://substackcdn.com/image/fetch/$s_!CGi7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24ee60a4-6d70-4714-bf8a-1d8cd845b366_1680x1310.png 848w, https://substackcdn.com/image/fetch/$s_!CGi7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24ee60a4-6d70-4714-bf8a-1d8cd845b366_1680x1310.png 1272w, https://substackcdn.com/image/fetch/$s_!CGi7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24ee60a4-6d70-4714-bf8a-1d8cd845b366_1680x1310.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CGi7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24ee60a4-6d70-4714-bf8a-1d8cd845b366_1680x1310.png" width="1456" height="1135" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/24ee60a4-6d70-4714-bf8a-1d8cd845b366_1680x1310.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1135,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:295181,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productver.se/i/184448359?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24ee60a4-6d70-4714-bf8a-1d8cd845b366_1680x1310.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CGi7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24ee60a4-6d70-4714-bf8a-1d8cd845b366_1680x1310.png 424w, https://substackcdn.com/image/fetch/$s_!CGi7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24ee60a4-6d70-4714-bf8a-1d8cd845b366_1680x1310.png 848w, https://substackcdn.com/image/fetch/$s_!CGi7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24ee60a4-6d70-4714-bf8a-1d8cd845b366_1680x1310.png 1272w, https://substackcdn.com/image/fetch/$s_!CGi7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24ee60a4-6d70-4714-bf8a-1d8cd845b366_1680x1310.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li><li><p><strong>Upload to our knowledge base</strong> Screenshots go to a CDN (CloudFront in my case), the article syncs to your tool (Pylon, Zendesk, Confluence...). The system is multi-provider: configure once, works everywhere.</p></li><li><p><strong>Customer announcements generation</strong> Claude generates two versions: a short one for Slack (with emoji), a detailed one for email. Both include the link to the article that was just created.</p></li></ol><p>Here&#8217;s an example of the documentation that was directly uploaded to our knowledge base with the correct screenshots for each sub-feature :</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;a371963d-b877-413b-aa9c-8e051a04d96f&quot;,&quot;duration&quot;:null}"></div><p>Total time: 10 to 15 minutes.</p><h2>How it works under the hood (without getting too technical)</h2><p>The tool has 5 modular &#8220;skills&#8221;. They&#8217;re basically markdown files with instructions that Claude is told to use. You can use them separately or all-together with the &#8220;create-release&#8221; skill. Expert tip: tap each one to read their content.</p><p><strong><a href="https://github.com/maxberko/max-doc-ai/blob/main/.claude/skills/create-release/SKILL.md">@create-release</a></strong><a href="https://github.com/maxberko/max-doc-ai/blob/main/.claude/skills/create-release/SKILL.md"> (the orchestrator)</a> The conductor. It asks a few questions (where&#8217;s the feature? what date?), then launches the other skills in the right order.</p><p><strong><a href="https://github.com/maxberko/max-doc-ai/blob/main/.claude/skills/update-product-doc/SKILL.md">@update-product-doc</a></strong> The documentation brain. It generates structured markdown, user-oriented (not technical), with clear sections.</p><p><strong><a href="https://github.com/maxberko/max-doc-ai/blob/main/.claude/skills/capture-screenshots/SKILL.md">@capture-screenshots</a></strong> Uses the Computer Use API to navigate and capture. This is the most experimental skill. Multi-screen = display problems sometimes.</p><p><strong><a href="https://github.com/maxberko/max-doc-ai/blob/main/.claude/skills/sync-docs/SKILL.md">@sync-docs</a></strong> The integrator. It converts markdown to your KB format, uploads images to the CDN, publishes the article. Extensible architecture: you can add your own provider.</p><p><strong><a href="https://github.com/maxberko/max-doc-ai/blob/main/.claude/skills/create-changelog/SKILL.md">@create-changelog</a></strong> The communicator. It writes announcements adapted to the channel (Slack vs Email).</p><p>Everything is in Python and Markdown. Nothing exotic. You can read the code, modify it, fork it.</p><h2>How to use it (quick start)</h2><p>The easiest way is to follow this tutorial (<a href="https://www.tella.tv/video/max-doc-ai-setup-guide-2xo2">tap here for subtitles</a>) &#128071;</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;1914eab7-c57e-445b-95e4-29b546a11d61&quot;,&quot;duration&quot;:null}"></div><p>If you want to test Max-Doc-AI:</p><ol><li><p><strong>Install an IDE of your choice (I recommend <a href="https://code.visualstudio.com/">VS Code</a>)</strong></p></li><li><p><strong>Install Claude Code</strong></p><ol><li><p>Install Brew &amp; Node</p></li></ol></li></ol><pre><code><code>/bin/bash -c "$(curl -fsSL &lt;https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh&gt;)"</code></code></pre><pre><code><code>brew install node</code></code></pre><p>c. Finally, install Claude Code :</p><pre><code><code>npm install -g @anthropic-ai/claude-code</code></code></pre><p>You&#8217;ll need an Anthropic API key (pay-as-you-go recommended for testing, switch to Pro or Max later).</p><ol start="3"><li><p><strong>Launch Claude in a &#8220;code&#8221; folder on your machine</strong></p></li></ol><pre><code><code>claude</code></code></pre><ol start="4"><li><p><strong>Ask Claude to &#8220;Clone the following repo :</strong> <a href="https://github.com/maxberko/max-doc-ai%E2%80%9D">https://github.com/maxberko/max-doc-ai&#8221;</a></p></li></ol><pre><code><code>git clone &lt;https://github.com/maxberko/max-doc-ai&gt;
cd max-doc-ai</code></code></pre><ol start="5"><li><p>Ask claude : &#8220;Guide me through the set-up of this Github project&#8221;</p><ol><li><p><strong>Configuration</strong> Create a new <code>.env</code> file &amp; copy <code>.env.example</code> and fill in your API keys, Knowledge Base credentials, app credentials.</p><p>Create a new <code>config.yaml</code> file &amp; copy <code>config.example.yaml</code> and adapt: product URL, KB collections, screenshot settings.</p></li><li><p><strong>Setup</strong></p></li></ol></li></ol><pre><code><code>python3 scripts/setup.py</code></code></pre><ol start="6"><li><p><strong>Launch your first release</strong></p></li></ol><pre><code><code>claude
# In the terminal:
@claude Create a release for [your feature name]</code></code></pre><p>The result: complete documentation in 10-15 minutes.</p><h2>What&#8217;s next</h2><p><strong>My goal: 100% up-to-date documentation, effortlessly.<br>Comment below if you&#8217;d like to sign-up to try it out first</strong> &#128172;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Lnb3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54f303c0-7ebb-4f2e-a5e9-799571d98fcf_2398x1402.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Lnb3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54f303c0-7ebb-4f2e-a5e9-799571d98fcf_2398x1402.png 424w, https://substackcdn.com/image/fetch/$s_!Lnb3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54f303c0-7ebb-4f2e-a5e9-799571d98fcf_2398x1402.png 848w, https://substackcdn.com/image/fetch/$s_!Lnb3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54f303c0-7ebb-4f2e-a5e9-799571d98fcf_2398x1402.png 1272w, https://substackcdn.com/image/fetch/$s_!Lnb3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54f303c0-7ebb-4f2e-a5e9-799571d98fcf_2398x1402.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Lnb3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54f303c0-7ebb-4f2e-a5e9-799571d98fcf_2398x1402.png" width="1456" height="851" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/54f303c0-7ebb-4f2e-a5e9-799571d98fcf_2398x1402.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:851,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1304443,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productver.se/i/184448359?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54f303c0-7ebb-4f2e-a5e9-799571d98fcf_2398x1402.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Lnb3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54f303c0-7ebb-4f2e-a5e9-799571d98fcf_2398x1402.png 424w, https://substackcdn.com/image/fetch/$s_!Lnb3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54f303c0-7ebb-4f2e-a5e9-799571d98fcf_2398x1402.png 848w, https://substackcdn.com/image/fetch/$s_!Lnb3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54f303c0-7ebb-4f2e-a5e9-799571d98fcf_2398x1402.png 1272w, https://substackcdn.com/image/fetch/$s_!Lnb3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54f303c0-7ebb-4f2e-a5e9-799571d98fcf_2398x1402.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>V2: A web interface</strong> I&#8217;m building a web interface to avoid working in the terminal. It&#8217;s a privacy-first automation of your documentation tasks.</p><p><strong>V3: An autonomous documentation agent</strong> Transform max-doc-ai into MAX : an autonomous agent that checks every day if new features have been deployed, generates your doc automatically &amp; sends you a summary for validation.</p><p></p><h3><strong>Three lessons learned building this tool</strong></h3><ol><li><p><strong> Specify before launching (even with AI)<br></strong>The temptation with Claude Code: &#8220;it&#8217;ll be magic, I ask and it works&#8221;. Spoiler: no.<br>My workflow: first, PRD brainstorm with Claude. Then, plan mode to implement. Then iteration: test, fix, secure. Even with AI, we&#8217;re still PMs : specify, validate, iterate.</p></li><li><p><strong>Security, always</strong></p><p>Claude Code has access to your machine. It can read files. Execute commands. It&#8217;s powerful, and potentially dangerous. Basic rules:</p><ol><li><p>Never leave API keys outside the .env file (which is never committed to GitHub)</p></li><li><p>Always ask Claude to run a security checklist before pushing</p></li><li><p>Use granular permissions : avoid &#8220;--dangerously-skip-permissions&#8221;</p></li></ol><p>An API key that leaks on GitHub means thousands of dollars in AI consumption within hours.</p></li><li><p><strong>Open-source is also for PMs</strong></p><p>I&#8217;m a first PM, originally not a trained developer. Today, being full-stack as a PM also means knowing how to build tools when nobody else will.</p><p>Since I shared the repo, I received a PR to add Google Gemini (cheaper alternative for screenshots). Someone else is working on Confluence support.</p><p>Open-source is a multiplier of connections and value :-)</p></li></ol><p>I help teams automate boring tasks through AI &amp; learn how to do it by themselves. Curious how? <a href="https://www.linkedin.com/in/mberkowicz/">Reach out on LinkedIn</a> !</p><p><em>Maxime Berkowicz &#8226; Product &amp; AI Consultant | Open-source builder</em></p><p>&#8212;</p><p>Thank you for reading this far, and many thanks to Maxime for building such an helpful tool, and sharing some secrets with us today. Don&#8217;t forget to like or comment below to get more information about the next versions, and to let me know if you&#8217;d like more guest posts.  <br></p><p>Until next time!</p><p>Olivier</p><div><hr></div><p><strong>Share &#8594;</strong> <em>Please help</em> <em>me promote this newsletter by sharing it with colleagues (tap the refer button) or consider liking it (tap on the &#128153;, it helps me a lot)!</em></p><p><strong>About</strong> <strong>&#8594; </strong><em>Productverse is written by <a href="https://ocourtois.fr/">Olivier Courtois</a> (15y+ in product, Fractional CPO, <a href="https://ocourtois.fr/coaching">coach</a> &amp; advisor). Each &#8220;PM Snacks&#8221; features handpicked links to help you become a better product maker, and each &#8220;AI Bites&#8221; is a deep dive in AI-enabled workflows. </em></p>]]></content:encoded></item><item><title><![CDATA[AI Copilot with MCP / AI Bites 03]]></title><description><![CDATA[Leverage MCP Servers to create your copilot (fetch context, improve AI results, and take actions). Start with 2 simple tasks: create tickets and communicate progress.]]></description><link>https://www.productver.se/p/ai-copilot-with-mcp-ai-bites-03</link><guid isPermaLink="false">https://www.productver.se/p/ai-copilot-with-mcp-ai-bites-03</guid><dc:creator><![CDATA[Olivier Courtois]]></dc:creator><pubDate>Sun, 09 Nov 2025 21:28:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!qJhs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ff43e2-9283-40b0-924b-b3c552947e4c_3208x2361.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey everyone,</p><p>Thank you so much for your likes, shares, and votes on the previous edition of AI Bites &#128293;. It seems you&#8217;ve enjoyed the <a href="https://www.productver.se/i/173672932/prompter-project-gpt-updates">GPT-5 &#8220;Prompter&#8221; project</a>, and the <a href="https://www.productver.se/i/173672932/ticket-writer">Ticket writer prompt</a>.</p><p>In today&#8217;s edition, I deep dive into these most voted topics:</p><ul><li><p><strong>Backlog Autopilot</strong>: leverage AI to manage your backlog (MCP)</p></li><li><p><strong>Communicate Progress</strong>: use AI to write progress reports (MCP)</p></li></ul><p>Prompts are getting long, so I&#8217;m now storing them in a Notion database. Tap the buttons to access the full prompt (for free). </p><p><br>Enjoy!</p><div><hr></div><p>Before we dive in, Claire Vo released a video with Dennis Yang where he presents his Cursor workflow (99% similar to the one I&#8217;ll describe below). <strong><a href="https://youtu.be/rwmR7m5rvqw">&#128250; If you prefer a video version, be sure to watch it</a>!</strong> </p><h2>What is an MCP Server?</h2><p>I use several MCP servers in my daily life. Here&#8217;s a quick definition: </p><blockquote><p><a href="https://modelcontextprotocol.io/docs/getting-started/intro">Model Context Protocol</a> is a standard for connecting AI applications to external systems. Basically, it&#8217;s an API designed for LLM. Meaning it can easily discover available capabilities, use them, answer questions, and take actions. </p><ul><li><p>2 types of servers exist: </p><ul><li><p>public ones (usually there is a public URL you reference)</p></li><li><p>local ones (which can use some commands or executables, on your computer) which are only available from a desktop app. </p></li></ul></li><li><p>Most modern tools like <strong><a href="https://developers.notion.com/docs/mcp">Notion</a>, <a href="https://linear.app/docs/mcp">Linear</a>, <a href="https://help.figma.com/hc/en-us/articles/32132100833559-Guide-to-the-Figma-MCP-server">Figma</a> or <a href="https://amplitude.com/docs/analytics/amplitude-mcp">Amplitude</a>, </strong>have been rushing to release their public &#8220;MCP Server&#8221; usable in desktop and web apps. </p></li><li><p>You can install them into AI apps like <strong>Claude</strong>, <strong>Cursor</strong> or Agents like <strong>Claude Code </strong>/ <strong>Codex</strong>. <em>Note: ChatGPT MCP support is still pretty nascent (and limited to the &#8220;developer mode&#8221;)</em>. </p></li></ul></blockquote><p></p><h2><strong>Which AI should you use as your copilot? </strong></h2><p>I&#8217;ve been using Cursor for a few years (to develop), but it&#8217;s now my favorite way to edit files and create projects too (non-developer tasks). </p><p>Now I can:   </p><ul><li><p>Create a simple folder on my computer with a few knowledge files that are completely &#8220;portable&#8221; (topic to be covered in another edition).</p></li><li><p>Add a few cursor rules (= shortcuts) to automate my usual prompts like writing tickets, scoping down or writing a progress report. </p></li><li><p>Plug MCP servers to be efficient (Linear/Notion for backlog access, Granola for meeting transcripts access, Figma for design access, Amplitude for data access&#8230;). </p></li><li><p>Chat &#8220;with the folder&#8221; to brainstorm, analyze data, work on PRD, and more.</p></li><li><p>Create files with AI, but more importantly take over, and edit them manually in the editor.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qJhs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ff43e2-9283-40b0-924b-b3c552947e4c_3208x2361.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qJhs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ff43e2-9283-40b0-924b-b3c552947e4c_3208x2361.png 424w, https://substackcdn.com/image/fetch/$s_!qJhs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ff43e2-9283-40b0-924b-b3c552947e4c_3208x2361.png 848w, https://substackcdn.com/image/fetch/$s_!qJhs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ff43e2-9283-40b0-924b-b3c552947e4c_3208x2361.png 1272w, https://substackcdn.com/image/fetch/$s_!qJhs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ff43e2-9283-40b0-924b-b3c552947e4c_3208x2361.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qJhs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ff43e2-9283-40b0-924b-b3c552947e4c_3208x2361.png" width="1456" height="1072" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b1ff43e2-9283-40b0-924b-b3c552947e4c_3208x2361.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1072,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1282872,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productver.se/i/177492583?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ff43e2-9283-40b0-924b-b3c552947e4c_3208x2361.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qJhs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ff43e2-9283-40b0-924b-b3c552947e4c_3208x2361.png 424w, https://substackcdn.com/image/fetch/$s_!qJhs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ff43e2-9283-40b0-924b-b3c552947e4c_3208x2361.png 848w, https://substackcdn.com/image/fetch/$s_!qJhs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ff43e2-9283-40b0-924b-b3c552947e4c_3208x2361.png 1272w, https://substackcdn.com/image/fetch/$s_!qJhs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ff43e2-9283-40b0-924b-b3c552947e4c_3208x2361.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">My usual Cursor setup</figcaption></figure></div><p>If you&#8217;re curious about Cursor, but you&#8217;re not sure where to start: <a href="https://handyai.substack.com/p/the-modern-ai-workspace">this article on the modern AI workspace should help you</a>. </p><p>Obviously, it&#8217;s not going to be everyone&#8217;s cup of tea, so here&#8217;s a comparison of the main tools you can use to leverage MCP power, and my use case for each &#128071;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qV2Z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2d50934-3a08-49aa-a453-09e1b668a7b3_2290x1664.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qV2Z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2d50934-3a08-49aa-a453-09e1b668a7b3_2290x1664.png 424w, https://substackcdn.com/image/fetch/$s_!qV2Z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2d50934-3a08-49aa-a453-09e1b668a7b3_2290x1664.png 848w, https://substackcdn.com/image/fetch/$s_!qV2Z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2d50934-3a08-49aa-a453-09e1b668a7b3_2290x1664.png 1272w, https://substackcdn.com/image/fetch/$s_!qV2Z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2d50934-3a08-49aa-a453-09e1b668a7b3_2290x1664.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qV2Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2d50934-3a08-49aa-a453-09e1b668a7b3_2290x1664.png" width="728" height="529" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b2d50934-3a08-49aa-a453-09e1b668a7b3_2290x1664.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1058,&quot;width&quot;:1456,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:501323,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productver.se/i/177492583?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2d50934-3a08-49aa-a453-09e1b668a7b3_2290x1664.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qV2Z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2d50934-3a08-49aa-a453-09e1b668a7b3_2290x1664.png 424w, https://substackcdn.com/image/fetch/$s_!qV2Z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2d50934-3a08-49aa-a453-09e1b668a7b3_2290x1664.png 848w, https://substackcdn.com/image/fetch/$s_!qV2Z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2d50934-3a08-49aa-a453-09e1b668a7b3_2290x1664.png 1272w, https://substackcdn.com/image/fetch/$s_!qV2Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2d50934-3a08-49aa-a453-09e1b668a7b3_2290x1664.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://ocourtois.notion.site/Which-AI-should-you-use-for-your-CoPilot-2a1a13667dd7802281e3ffcfce830677">Click here for html version</a> or tap on the image to read the table</figcaption></figure></div><p><em>Note: This table is inspired by <a href="https://www.producttalk.org/claude-code-what-it-is-and-how-its-different/">Teresa Torres&#8217; article on Claude Code</a>. Highly recommended read.</em> </p><h2><strong>&#128747; Backlog Autopilot</strong></h2><p>I&#8217;m collaborating with teams that host their tickets in Notion as well as Linear. Fortunately, both have MCP Servers that I can use to &#8220;pilot&#8221; my backlog. <em>Note: I&#8217;ll share examples written for Linear (but it works the same for other MCPs).</em> </p><p>Currently, I have 2 methods to create tickets in the backlog: </p><ul><li><p><strong>I create tickets directly in the backlog with a few bullet points</strong> (= some notes for myself). Then when I need to really write the content, I&#8217;ll ask the AI to read the ticket, collaborate, and update it in the backlog. </p></li><li><p><strong>I write a PRD document for larger initiatives</strong>, talk with AI to find the best way to scope independent tickets, ask clarifying questions for each, then create the tickets in the backlog. <em>&#128172; Let me know if you&#8217;d like me to share this prompt next.</em> </p><p></p></li></ul><h3><strong>Improving a specific ticket</strong></h3><p>To write this prompt I used the following method: </p><ol><li><p>Started a new chat explaining my goal: &#8220;create a new command that will read a ticket content through (MCP step), interview me, then suggest a ticket, once I approve, it should update in the backlog (MCP step)&#8221;</p></li><li><p>Pasted my &#8220;writing guidelines&#8221;, basically the instructions I shared in <a href="https://www.productver.se/i/173672932/ticket-writer">AI Bites #2</a>.  </p></li><li><p>Iterated on the level of details, and rules to make sure it works 99% of the time. </p></li></ol><p>To use this prompt I just: </p><ol><li><p><strong>Open Cursor, and enter: &#8220;/ticket-refine&#8221; along with the url of the ticket. That&#8217;s it.</strong></p></li><li><p>When additional information could be useful</p><ol><li><p>I use <strong>Cursor mentions, to attach specific knowledge files in the folder</strong>. I add &#8220;@filename&#8221;, and the ticket refiner prompt will read my PRD or some user research extracts. </p></li><li><p>I ask <strong>AI to use specific MCP servers</strong> like Amplitude/Posthog to extract data, Figma to analyze design, etc. </p></li></ol></li></ol><pre><code># ticket-refine

## Workflow

### 1. Fetch Ticket from Linear

**Input**: User provides either a Linear ticket URL (e.g., `https://linear.app/acme-corp/issue/PROJ-456`) or ticket ID (e.g., `PROJ-456` or UUID).

**Actions**:
- Extract ticket ID from URL if provided, otherwise use ID directly
- Use `mcp_Linear_get_issue(id: ticket_id)` to fetch full ticket details
- Extract: `title`, `description`, `state`, `assignee`, `labels`, `priority`, `project`, `team`
- Parse description for: Design links, Problem statement, Solution description, Analytics context, and any existing acceptance criteria/edge cases

### 2. Interview Phase - Ask Clarifying Questions

Act as an **experienced Product Manager interviewer** to gather missing information needed for the INVEST story format.

**Questions Strategy**:
- Start with **blocking questions** (if critical unknowns detected)
- Then ask **clarifying questions** for missing fields
- Focus on extracting the four core fields: Design links, Problem, Solution, Analytics baseline

[too long...] Tap the button to access the whole prompt</code></pre><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://ocourtois.notion.site/Ticket-Refiner-with-MCP-2a6a13667dd7804b95c6fadafef46a0e?pvs=74&quot;,&quot;text&quot;:&quot;Access the ticket refiner prompt&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://ocourtois.notion.site/Ticket-Refiner-with-MCP-2a6a13667dd7804b95c6fadafef46a0e?pvs=74"><span>Access the ticket refiner prompt</span></a></p><p></p><h3><strong>Turning a PRD into independent tickets </strong></h3><p>This prompt follows the process: 1. Reads PRD (Linear document or local file) &#8594; 2. Scopes first version &#8594; 3. Suggests independent tickets &#8594; 4. Lets me review &#8594; 5. Creates tickets in Linear. </p><p><strong>&#128172; Comment or reply to this edition if you would like me to share this prompt.</strong></p><p></p><h2><strong>&#128227; Communicate Progress</strong></h2><p><strong>We spend so much time communicating about progress, challenges, and plans. Then we reframe the same message for different audiences</strong>. </p><p>Fortunately for us, <strong>AI is quite efficient at both writing and reframing</strong>. <em>Note: I created these prompts after watching the Dennis Yang video mentioned earlier, what an amazing idea!</em> </p><p>For educational purposes, I&#8217;m sharing 2 versions of this prompt in order to demonstrate my thinking process. </p><h3>Backlog Progress </h3><ol><li><p>I started by reviewing a few examples of past progress reports I wrote. Usually it has sections like: <em>Exec Sum, In Progress, Recently Done, Needs Attention.</em></p></li><li><p>I connected Cursor with Linear MCP (to access the backlog info) </p></li><li><p>I created a Cursor Rule (= a shortcut) called progress-report that accesses Linear, reads tickets, then writes a progress report. The anonymized prompt &#128071;</p><pre><code>Please check what&#8217;s in our current backlog in Linear MCP and let me know what is in progress, what has been done recently (last 7d), and if there was any progress. If some issues needs design, give me an overview. If comments are unanswered in some issues, let me know. 

Make sure to not talk about cancelled or deleted issues. 

Format the report like this:
```markdown
## Summary
- **Progress**: 
- **Design bottleneck**:
- **Pending (comments, decisions, blockers)**:
- **Recommended next steps**: 

## &#128202; In Progress (4 issues)
- ID - Issue Name 1 (Assignee)
  - Description of the issue
  - Highlights (if any)
  - Remaining work (if any)

[too long...] Tap on the button to access the prompt</code></pre><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://ocourtois.notion.site/Communicate-Backlog-Progress-with-MCP-2a6a13667dd78021a69dddb989df46fd?pvs=74&quot;,&quot;text&quot;:&quot;Communicate Backlog Progress Prompt&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://ocourtois.notion.site/Communicate-Backlog-Progress-with-MCP-2a6a13667dd78021a69dddb989df46fd?pvs=74"><span>Communicate Backlog Progress Prompt</span></a></p><p></p></li></ol><h3>Project Progress (Backlog &amp; Meetings)</h3><p>I realized that a lot of the key informations live outside Linear tickets. But I&#8217;m lucky: my colleagues are okay with me using a meeting recorder, and I work in remote situations (so close to 100% of meetings are recorded). </p><ol><li><p>I connected Granola MCP to access my meeting transcripts. </p></li><li><p>I improved the previous progress report instructions to follow this precise process: 1. Gather context (from Linear &amp; Granola) &#8594; 2. Scan for data &#8594; 3. Extract facts &#8594; 4. Filter &#8594; 5. Write report. </p></li><li><p>I used the prompt for a few days, and realized the MCP calls could go faster if they were described in details. I asked my AI chat to add these additional details. My exhaustive anonymized prompt &#128071;</p><pre><code>## Workflow

### 1. Gather Time Context
- Default time window: **last 7 days** (one sprint = 1 week)
- If user specifies different window, use that
- Apply recency bias: weight most recent items highest

### 2. Scan Data Sources

#### Linear MCP

**Team**: &#8220;Your Team Name&#8221; (single team, do not use cycles)

**Step 1: Get Team &amp; Verify States**
- Get team details: `mcp_Linear_get_team(query: &#8220;Your Team Name&#8221;)` to get team ID
- Optional: Get available states: `mcp_Linear_list_issue_statuses(team: &#8220;Your Team Name&#8221;)` to verify exact state names

**Step 2: List Issues for Team**
- List all issues for &#8220;Your Team Name&#8221; team: `mcp_Linear_list_issues(team: &#8220;Your Team Name&#8221;, includeArchived: false)`
- **Important**: After getting issues, filter out:
  - Issues with state &#8220;Cancelled&#8221; or &#8220;Canceled&#8221; (check `state.name`)
  - Issues with label &#8220;Duplicate&#8221; (check `labels` array for &#8220;Duplicate&#8221; label)
  - Issues with title containing &#8220;duplicate&#8221; (case-insensitive)
  - Archived issues (already filtered by `includeArchived: false`, but double-check)

[too long...] Tap on the button to access the whole prompt</code></pre><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://ocourtois.notion.site/Communicate-Project-Progress-with-MCP-2a6a13667dd780c3b90ad51f110024f8&quot;,&quot;text&quot;:&quot;Communicate Project Progress Prompt&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://ocourtois.notion.site/Communicate-Project-Progress-with-MCP-2a6a13667dd780c3b90ad51f110024f8"><span>Communicate Project Progress Prompt</span></a></p><p></p></li></ol><p>&#8212;</p><p>Thank you for reading this far. I hope you&#8217;ll find these new prompts useful. It took me a long time to write. <br>Until next time!</p><p>Olivier</p><div><hr></div><p><strong>Share &#8594;</strong> <em>Please help</em> <em>me promote this newsletter by sharing it with colleagues (tap the refer button) or consider liking it (tap on the &#128153;, it helps me a lot)!</em></p><p><strong>About</strong> <strong>&#8594; </strong><em>Productverse is curated by <a href="https://ocourtois.fr/">Olivier Courtois</a> (15y+ in product, Fractional CPO, <a href="https://ocourtois.fr/coaching">coach</a> &amp; advisor). Each issue features handpicked links to help you become a better product maker.</em></p>]]></content:encoded></item><item><title><![CDATA[Ticket writer that really works / AI Bites 02]]></title><description><![CDATA[GPT-5 version of the "Prompt writer" instructions I previously shared, and a prompt to let AI write tickets for you.]]></description><link>https://www.productver.se/p/ticket-writer-that-really-works-ai</link><guid isPermaLink="false">https://www.productver.se/p/ticket-writer-that-really-works-ai</guid><dc:creator><![CDATA[Olivier Courtois]]></dc:creator><pubDate>Wed, 17 Sep 2025 19:53:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Kb81!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a1cd7a2-bf63-4bca-9693-e4c90ffa6074_1702x1148.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey everyone,</p><p>Thank you so much for your reactions, shares, likes and comments on the first edition of AI Bites &#128293;. It seems you&#8217;ve enjoyed the ideas I shared, such as how to<a href="https://www.productver.se/i/168278454/what-is-a-good-prompt"> teach ChatGPT to write prompts</a> for you, <a href="https://www.productver.se/i/168278454/competitive-analysis-delegate">analyse your competitors</a>, or <a href="https://www.productver.se/i/168278454/scope-down-helpmethink">help scope down initiatives</a>. </p><p>In today&#8217;s edition, I share some new gems: </p><ul><li><p>An update to the &#8220;Prompter&#8221; project instructions (GPT-5 optimisations)</p></li><li><p>A ticket writer that really works (at least for me).</p></li></ul><p>Before we dive in, vote below for the next topic I should prioritize: </p><div class="poll-embed" data-attrs="{&quot;id&quot;:377007}" data-component-name="PollToDOM"></div><p>Enjoy!</p><div><hr></div><h2><strong>&#129302; Prompter project (GPT-5 updates)</strong></h2><p>I previously shared how to create a ChatGPT project that writes amazing prompts, <a href="https://www.productver.se/i/168278454/what-is-a-good-prompt">so be sure to read it first</a>. </p><p>Today, I'll explain how I updated the instructions (thx Guillaume for the question &#128170;), and it&#8217;s very meta: </p><ol><li><p>I started a chat in the &#8220;Prompter project&#8221; asking it to optimize current instructions for GPT-5, while including the new best practices. <strong><a href="https://chatgpt.com/share/68ca640c-ec28-8006-9084-54479a63e5b4">You can read my full conversation here</a></strong>. </p></li><li><p>I created a second project to test each iteration of the updated instructions. My &#8220;evals&#8221; were quite simple, I just re-ran past conversations to see how much better/worse were the generated prompts. </p></li><li><p>Once happy with the results, I updated the original prompter project with the new instructions. Here they are: </p><pre><code># Prompt Interviewer for GPT-5 - Project Instructions, XML-Style

## Goal
Interview the user with **&#8804;3 high-leverage questions**, then output a **production-ready prompt** using structured XML-style blocks that pin down context, autonomy, communication, constraints, outputs, and edge cases.

## Core Philosophy
* Treat prompting like product work: **clarify intent &#8594; set a strict output contract &#8594; anticipate failure modes**.
* **Infer first, ask last**: only ask for details that materially change the result.
* Prefer **structure over prose**; use tags to isolate instructions from content.
* Work **synchronously**: deliver everything in your current reply; no promises of background tasks.

## Interview Strategy (ask &#8804;3)
1. **Real goal** (generate / analyze / write / plan / debug / visualize).
2. **Output contract** (exact shape&#8212;table columns, fields, units, length).
3. **Constraints** (tone, audience, must/avoid, sources).

Stop once the prompt will be unambiguous and directly usable.

## The Tag System (use these blocks in the final prompt)
* `&lt;context_gathering&gt;` &#8212; how deep to research before acting; prefer &#8220;fast then act&#8221; unless task demands depth. ([Reddit][1])
* `&lt;persistence&gt;` &#8212; autonomy: complete the task end-to-end in this reply; make reasonable assumptions; don&#8217;t bounce questions back unless essential. ([Reddit][1])
* `&lt;tool_preambles&gt;` &#8212; how to narrate progress if tools (e.g., browsing, code) are involved: brief plan &#8594; do work &#8594; summarize. ([Reddit][1])
* Custom tags you can (and should) reuse:
  * `&lt;system_role&gt;` &#8212; who the model is for this task.
  * `&lt;hard_constraints&gt;` &#8212; NEVER/ALWAYS rules and safety rails.
  * `&lt;context&gt;` &#8212; domain, inputs, limits.
  * `&lt;task&gt;` &#8212; primary goal, success signal, sub-goals.
  * `&lt;edge_cases&gt;` &#8212; missing/ambiguous/unsafe input rules.
  * `&lt;plan&gt;` &#8212; quick execution plan (one screen).
  * `&lt;output_contract&gt;` &#8212; exact format/schema the model must return.
  * `&lt;examples&gt;` &#8212; only if they materially reduce ambiguity.
  * `&lt;rationale&gt;` &#8212; short summary of reasoning; **do not** reveal chain-of-thought.

## Drop-in Template (use this as the artifact you hand back to the user)

```xml
&lt;system_role&gt;
You are a [SPECIFIC ROLE] that [CORE FUNCTION] for [TARGET USER/AUDIENCE].
&lt;/system_role&gt;

&lt;context_gathering&gt;
Goal: Get just enough context to act quickly. Stop once the output can be produced with high confidence.
Method:
- Infer from what&#8217;s provided; ask only if a single, essential detail is missing
- Prefer acting over extended research; escalate depth only if contradictions appear
&lt;/context_gathering&gt;

&lt;persistence&gt;
- Complete the task in this reply without asking for approval mid-way
- When uncertain, make the most reasonable assumption; state it briefly in the summary
&lt;/persistence&gt;

&lt;tool_preambles&gt;
- Start with a one-screen plan (headings/bullets)
- Execute cleanly; keep explanations concise
- End with a summary of what was done and how to use the output
&lt;/tool_preambles&gt;

&lt;hard_constraints&gt;
NEVER: hallucinate sources; ignore the output schema; exceed the length/format rules.
ALWAYS: follow &lt;output_contract&gt;; acknowledge uncertainty; refuse unsafe or out-of-scope requests.
&lt;/hard_constraints&gt;

&lt;context&gt;
Domain: [industry/use case]
Inputs available: [data/context]
Limits: [time/scope/tooling limits]
Audience &amp; tone: [audience] &#8226; [tone]
&lt;/context&gt;

&lt;task&gt;
Primary goal: [objective]
Success signal: [measurable outcome]
Sub-goals: [A], [B], [C]
&lt;/task&gt;

&lt;edge_cases&gt;
- Missing/ambiguous input &#8594; state assumption and proceed
- Messy data &#8594; describe minimal cleaning and proceed
- Unsafe/off-scope &#8594; refuse and suggest a safer alternative
&lt;/edge_cases&gt;

&lt;plan&gt;
1) Reframe the request in one sentence
2) Follow the steps to produce the deliverable
3) Validate against the success signal
&lt;/plan&gt;

&lt;output_contract&gt;
Format: [Markdown table | JSON-like block | bullet outline]
Fields/Columns: [name:type:rule]&#8230;
Units &amp; limits: [e.g., words, currency, dates, timezone]
Determinism: adhere strictly to field names and order
&lt;/output_contract&gt;

&lt;examples&gt;
[Include 0&#8211;2 minimal examples only if they materially reduce ambiguity. Otherwise delete this block.]
&lt;/examples&gt;

&lt;rationale&gt;
Provide 3&#8211;5 concise bullets explaining key choices/assumptions. Do not reveal chain-of-thought.
&lt;/rationale&gt;
```

## How to Use (process for the &#8220;Prompt Interviewer&#8221;)
1. Ask up to **3 questions** (goal, format, constraints).
2. **Synthesize** the answers + any provided context.
3. Produce a **single, self-contained XML-style prompt** using the template.
4. Offer a one-liner on **how to run it** (e.g., &#8220;Paste into ChatGPT and fill brackets&#8221;).
5. If something is still ambiguous, include one brief assumption note inside `&lt;rationale&gt;`.

## Final Prompt Checklist
* [ ] Tags included: `&lt;context_gathering&gt;`, `&lt;persistence&gt;`, `&lt;tool_preambles&gt;`, plus core custom tags.
* [ ] **NEVER/ALWAYS** rules are explicit and relevant.
* [ ] **Output contract** specifies exact format, fields, units, and limits.
* [ ] **Edge cases** &amp; refusal/redirect behavior included.
* [ ] **Plan** is one screen; **rationale** is short; no chain-of-thought.
* [ ] No background promises; everything is delivered **now**.</code></pre></li></ol><p></p><h2><strong>&#127903;&#65039; Ticket Writer</strong></h2><p>What I call a ticket writer that <em>&#8220;really works&#8221;</em> is based on my personal definition. It should: </p><ul><li><p>Write in a style that mimics mine: economical, lot of bullet points, etc. </p></li><li><p>Follow a ticket format that I provided</p></li><li><p>Think in steps, and ask questions when unclear</p></li><li><p>Push for phasing delivery in several steps (if scope is big enough)</p></li><li><p>Finally, it should let me ramble, thanks to dictation, in order to give appropriate input</p></li></ul><p></p><h3>How I use this prompt</h3><ol><li><p>I usually store my most-used prompts in a snippet manager (Raycast in my case), and inject them in new ChatGPT conversations by typing a keyword. It looks something like this picture &#128071;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Kb81!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a1cd7a2-bf63-4bca-9693-e4c90ffa6074_1702x1148.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Kb81!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a1cd7a2-bf63-4bca-9693-e4c90ffa6074_1702x1148.png 424w, https://substackcdn.com/image/fetch/$s_!Kb81!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a1cd7a2-bf63-4bca-9693-e4c90ffa6074_1702x1148.png 848w, https://substackcdn.com/image/fetch/$s_!Kb81!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a1cd7a2-bf63-4bca-9693-e4c90ffa6074_1702x1148.png 1272w, https://substackcdn.com/image/fetch/$s_!Kb81!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a1cd7a2-bf63-4bca-9693-e4c90ffa6074_1702x1148.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Kb81!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a1cd7a2-bf63-4bca-9693-e4c90ffa6074_1702x1148.png" width="1456" height="982" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4a1cd7a2-bf63-4bca-9693-e4c90ffa6074_1702x1148.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:982,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:922895,&quot;alt&quot;:&quot;Raycast snippet manager&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productver.se/i/173672932?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a1cd7a2-bf63-4bca-9693-e4c90ffa6074_1702x1148.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Raycast snippet manager" title="Raycast snippet manager" srcset="https://substackcdn.com/image/fetch/$s_!Kb81!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a1cd7a2-bf63-4bca-9693-e4c90ffa6074_1702x1148.png 424w, https://substackcdn.com/image/fetch/$s_!Kb81!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a1cd7a2-bf63-4bca-9693-e4c90ffa6074_1702x1148.png 848w, https://substackcdn.com/image/fetch/$s_!Kb81!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a1cd7a2-bf63-4bca-9693-e4c90ffa6074_1702x1148.png 1272w, https://substackcdn.com/image/fetch/$s_!Kb81!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a1cd7a2-bf63-4bca-9693-e4c90ffa6074_1702x1148.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p></li><li><p>In the &lt;inputs&gt; section, I share all the necessary details for ChatGPT to write tickets. The most efficient way for me is to use a dictation tool to brief the AI, the same way I&#8217;d share details with a colleague (B). Alternatively, I can also type by replacing the variables I included in the prompt (A).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!enKL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3150a2b7-24de-42da-bb03-d0b05d3a05e6_1422x886.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!enKL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3150a2b7-24de-42da-bb03-d0b05d3a05e6_1422x886.png 424w, https://substackcdn.com/image/fetch/$s_!enKL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3150a2b7-24de-42da-bb03-d0b05d3a05e6_1422x886.png 848w, https://substackcdn.com/image/fetch/$s_!enKL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3150a2b7-24de-42da-bb03-d0b05d3a05e6_1422x886.png 1272w, https://substackcdn.com/image/fetch/$s_!enKL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3150a2b7-24de-42da-bb03-d0b05d3a05e6_1422x886.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!enKL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3150a2b7-24de-42da-bb03-d0b05d3a05e6_1422x886.png" width="1422" height="886" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3150a2b7-24de-42da-bb03-d0b05d3a05e6_1422x886.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:886,&quot;width&quot;:1422,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:178104,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productver.se/i/173672932?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3150a2b7-24de-42da-bb03-d0b05d3a05e6_1422x886.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!enKL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3150a2b7-24de-42da-bb03-d0b05d3a05e6_1422x886.png 424w, https://substackcdn.com/image/fetch/$s_!enKL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3150a2b7-24de-42da-bb03-d0b05d3a05e6_1422x886.png 848w, https://substackcdn.com/image/fetch/$s_!enKL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3150a2b7-24de-42da-bb03-d0b05d3a05e6_1422x886.png 1272w, https://substackcdn.com/image/fetch/$s_!enKL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3150a2b7-24de-42da-bb03-d0b05d3a05e6_1422x886.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p></li><li><p>If you want to re-use this prompt, I strongly suggest you adapt the following sections according to your needs. You can change it manually, or even better use your &#8220;prompter project&#8221; to work on it.  </p><ol><li><p>&lt;styleguide&gt; defines how AI should try to mimic your writing style. </p></li><li><p>&lt;rules&gt; defines how the AI should think about your inputs.</p></li><li><p>&lt;story_format&gt; defines the way AI should format the tickets.</p><p></p></li></ol></li><li><p><strong><a href="https://chatgpt.com/share/68cae452-405c-8006-864a-f5440ebe12b2">Be sure to have a peek at my ChatGPT conversation that led to the current version of the prompt</a></strong>. You&#8217;ll discover more than 10 iterations, how I shared my ticket writing style, and generally how I managed to get this result.</p><p> </p></li></ol><h3>Current prompt</h3><pre><code>&lt;role&gt;
You are an Experienced Product Manager. Generate a lean set of INVEST user stories for the feature described in the inputs.
&lt;/role&gt;

&lt;inputs&gt;
You may provide either:
A) Structured fields:
- Design link(s): {design_urls_or_TBD}
- Problem (why): {problem_statement}
- Solution (what): {solution_description}
- Analytics baseline (if any): {analytics_context_or_TBD}

OR

B) Free-form notes / dictation:
- {rambling_notes_here}

Extraction rules:
- Extract the four fields from free-form notes; ignore filler, fix obvious typos, preserve the author&#8217;s terminology.
- If uncertain after extraction, prefer conservative **TBDs** and (only if needed) add up to 3 bullets in &#8220;Questions for You (if any)&#8221;.
&lt;/inputs&gt;

&lt;rules&gt;
- Output must be Markdown and use the EXACT headings/order in &lt;story_format&gt;. No extra sections.
- Use simple, direct sentences; ~80% bullets; bold key UI elements/technical terms.
- Acceptance Criteria MUST be Gherkin (Given/When/Then), &#8804; 6 per story, all testable.
- Include empty/error states and performance thresholds in Edge cases; performance thresholds default to **TBD** unless specified in inputs.
- If details are missing, write &#8220;TBD:&#8221; inline. NEVER invent facts beyond the inputs.
- Default to a **single story**. Only create additional stories if &lt;slicing_policy&gt; makes a single story non-viable. If &gt;1 story, number the titles (&#8220;Story 1 &#8212; &#8230;&#8221;).
- **Allowed extras in the output:** 
  (a) a single top line `*Slicing: ...*`, and 
  (b) a final `### Questions for You (if any)` section (&#8804;3 bullets).
- **Questions-first gate (blocking):** Before generating any story, check the inputs. 
  If there are contradictions **or** critical unknowns exceeding a safe threshold, output ONLY `### Questions for You (blocking)` (&#8804;3 bullets that would materially change scope/assumptions) and **STOP**. 
  Safe threshold = any of: 
  &#8226; direct contradictions between Problem/Solution/Design/Analytics; 
  &#8226; missing both Problem and Solution after extraction; 
  &#8226; &gt;3 &#8220;TBD&#8221; items that affect core behavior or acceptance criteria.
&lt;/rules&gt;

&lt;slicing_policy&gt;
Default: produce exactly **one** user-visible, independently shippable story (&#8220;walking skeleton&#8221;).
Create additional stories **only if** a single story would violate one or more of these:
1) Assumption isolation &#8212; each story should test at most one core assumption.
2) Coherent delivery &#8212; sequential slices must yield continuous user value.
3) Risk reduction &#8212; separating high-risk work (unknowns, integrations) is necessary to de-risk.
4) Dependency separation &#8212; upstream dependency must land before downstream behavior.
5) Rollout safety &#8212; feature gating/permissioning requires a separate slice.

When &gt;1 story is required:
- Keep the total count to the **absolute minimum**.
- Order by value and learning: walking skeleton first, then additive slices.
- Merge trivial behaviors that don&#8217;t test new assumptions.
- Begin the output with `*Slicing: N stories &#8212; reasons: X, Y*`. If single story, use `*Slicing: Single story*`.
&lt;/slicing_policy&gt;

&lt;styleguide&gt;
Core philosophy: **Ruthless efficiency + Technical precision + User obsession**.

Formatting DNA:
- **Bold** key concepts, UI elements, technical terms.
- Bulleted structure; nested bullets allowed (max depth 2).
- 1&#8211;2 sentences per bullet; fragments OK.

Language approach:
- **Action-oriented** (&#8220;User taps button&#8221;, not passive).
- **Assume expertise**; don&#8217;t explain basics.
- **Pain-first** in Problem; executable detail in Solution (UX flows, states, API/tech notes when relevant to behavior).

Section patterns INSIDE the minimal structure:
- **Problem** &#8594; Pain point &#8594; Impact &#8594; Business context (use crisp labels when helpful).
- **Solution** &#8594; Implementation area &#8594; Component &#8594; Spec &#8594; Flow (use nested bullets).
- **Analytics / Metrics** &#8594; For each event: "event_name" &#8212; {properties}; include a brief **Purpose** line when helpful.
&lt;/styleguide&gt;

&lt;task&gt;
Apply the Questions-first gate. If it triggers, output only `### Questions for You (blocking)` and STOP.
If it does not trigger, decompose the solution per &lt;slicing_policy&gt;. Default to one story; add more only if required.
Keep Problem and Solution to 2&#8211;4 bullets each; use nested bullets (max depth 2) in Solution when it clarifies components/flows.
Align Analytics / Metrics with the provided baseline; otherwise mark as **TBD** and add a brief Purpose line if useful.
Begin the output with a single line showing the slicing decision (see &lt;slicing_policy&gt;).
At the very end, include `### Questions for You (if any)` only when answers would materially change scope/assumptions (&#8804;3 bullets).
&lt;/task&gt;

&lt;story_format&gt;
## Title: {imperative, outcome-oriented} {prefix with &#8220;Story 1 &#8212; &#8230;&#8221; etc. only if multiple stories}

### Problem
- {pain point &#8212; specific friction}
- {impact on user/business}
- {context or evidence; bold labels sparingly}

### Solution
- **{Implementation area}**
  - **{Component}** &#8212; {concise spec or rule}
    - {key UX flow step or state change}
- **{Next area}**
  - **{Behavior}** &#8212; {exact interaction pattern}

### Acceptance Criteria
1) Given ..., When ..., Then ...
2) ...
3) ...
{up to 6 total}

### Edge Cases
1) {empty state}
2) {error state}
3) {performance threshold &#8212; renders &#8804; **TBD** ms at P95 for up to **TBD** items (or as specified)}
4) {privacy/consent or rare scenario}

### Analytics / Metrics
- Events: "event_name" &#8212; {property1, property2, ...}; "another_event" &#8212; {properties}
- Properties: {list or brief schema}
- Success Metric: {primary KPI + target or **TBD**}
- Purpose: {what insight this enables, if helpful}
&lt;/story_format&gt;</code></pre><p><em>&#128172; reply to this email, or comment on this post if you&#8217;d like me to share more on how I improve further the quality of tickets, using ChatGPT Projects, and MCP servers to read/write directly in my backlog.</em> </p><p>&#8212;</p><p>Thank you for reading this far. I hope you&#8217;ll find these new prompts useful.<br>Until next time!</p><p>Olivier</p><div><hr></div><p><strong>Share &#8594;</strong> <em>Please help</em> <em>me promote this newsletter by sharing it with colleagues (tap the refer button) or consider liking it (tap on the &#128153;, it helps me a lot)!</em></p><p><strong>About</strong> <strong>&#8594; </strong><em>Productverse is curated by <a href="https://ocourtois.fr/">Olivier Courtois</a> (15y+ in product, Fractional CPO, <a href="https://ocourtois.fr/coaching">coach</a> &amp; advisor). Each issue features handpicked links to help you become a better product maker.</em></p>]]></content:encoded></item><item><title><![CDATA[👶 Useful Prompts / AI Bites 01 ]]></title><description><![CDATA[A new format in Productverse: AI Bites, highlighting how I tinker with AI to create and improve products. Expect hard-learned lessons, prompts, tools and actionable advice.]]></description><link>https://www.productver.se/p/useful-prompts-ai-bites-01</link><guid isPermaLink="false">https://www.productver.se/p/useful-prompts-ai-bites-01</guid><dc:creator><![CDATA[Olivier Courtois]]></dc:creator><pubDate>Tue, 15 Jul 2025 05:31:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!0wLq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9980af9d-7ffa-46de-9cbb-fc131dbf234e_2048x1226.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey everyone,</p><p>Last month I sent the 90th edition of <strong>PM Snacks, </strong>the current newsletter format - a curation of 5 links to level-up your craft. </p><p>Here&#8217;s a new idea I&#8217;ve been working on: <strong>AI Bites</strong>, <strong>highlighting how I tinker with AI to create and improve products</strong>. I&#8217;ll share hard-learned lessons, prompts, tools and actionable advice to either improve your product processes or use AI inside your product features. </p><p><strong>&#128227;&#128227;&#128227; Please comment, or reply to this email to share your feedback</strong>. Even better send me questions or problems you&#8217;d like me to research for you &#128227;&#128227;&#128227;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.productver.se/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.productver.se/subscribe?"><span>Subscribe now</span></a></p><p><strong>Consider this first edition a pilot for AI Bites</strong>: I&#8217;ll explain what a good prompt is, and how to leverage AI to write great ones, then I share a few prompts I use regularly (scoping down, ticket writing, doing exhaustive competitive analysis). </p><p>Enjoy!</p><p><em>Note: AI Bites will be a separate publication, so you can opt-out from it. If you choose to keep it, you&#8217;ll now hear from me twice a month. </em> </p><div><hr></div><h2><strong>What is a good prompt?</strong></h2><p>Models are being released faster than we can comprehend so it&#8217;s pointless to obsess over details. <strong>Instead I recommend to let AI write prompts for you</strong>: </p><p>1&#65039;&#8419; <strong>Learn how to structure a prompt</strong>: <em><a href="https://app.productmap.pro/topic/prompt-engineering~e775b8ba-eefc-4029-8f66-e87ca535672d">The Product Map</a></em><a href="https://app.productmap.pro/topic/prompt-engineering~e775b8ba-eefc-4029-8f66-e87ca535672d"> shared a good introduction</a> to the topic. You can also skim through what labs are writing: <a href="https://www.kaggle.com/whitepaper-prompt-engineering">Google</a>, <a href="https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/overview">Anthropic</a> or <a href="https://platform.openai.com/docs/guides/text#message-formatting-with-markdown-and-xml">OpenAI</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0wLq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9980af9d-7ffa-46de-9cbb-fc131dbf234e_2048x1226.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0wLq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9980af9d-7ffa-46de-9cbb-fc131dbf234e_2048x1226.png 424w, https://substackcdn.com/image/fetch/$s_!0wLq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9980af9d-7ffa-46de-9cbb-fc131dbf234e_2048x1226.png 848w, https://substackcdn.com/image/fetch/$s_!0wLq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9980af9d-7ffa-46de-9cbb-fc131dbf234e_2048x1226.png 1272w, https://substackcdn.com/image/fetch/$s_!0wLq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9980af9d-7ffa-46de-9cbb-fc131dbf234e_2048x1226.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0wLq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9980af9d-7ffa-46de-9cbb-fc131dbf234e_2048x1226.png" width="1456" height="872" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9980af9d-7ffa-46de-9cbb-fc131dbf234e_2048x1226.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:872,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0wLq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9980af9d-7ffa-46de-9cbb-fc131dbf234e_2048x1226.png 424w, https://substackcdn.com/image/fetch/$s_!0wLq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9980af9d-7ffa-46de-9cbb-fc131dbf234e_2048x1226.png 848w, https://substackcdn.com/image/fetch/$s_!0wLq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9980af9d-7ffa-46de-9cbb-fc131dbf234e_2048x1226.png 1272w, https://substackcdn.com/image/fetch/$s_!0wLq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9980af9d-7ffa-46de-9cbb-fc131dbf234e_2048x1226.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>2&#65039;&#8419; Understand that AI is only as good as what you input into it. <strong>Always take the time to seed a conversation with the right context, files and prompt to get the best quality output</strong> (example: <a href="https://chatgpt.com/share/68752b28-6970-8006-821d-2732ab396de0">here&#8217;s the chat I used to generate the prompter project&#8217;s instructions</a>).</p><p>3&#65039;&#8419; <strong>Create a project in ChatGPT or Claude to write prompts for you</strong>. 1/ Add files about prompting best practices (for example a pdf print of the links I shared above), 2/ customize its instructions. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TODE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8b1b31b-2c55-4b48-9c53-dbc08ee01f27_1880x826.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TODE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8b1b31b-2c55-4b48-9c53-dbc08ee01f27_1880x826.png 424w, https://substackcdn.com/image/fetch/$s_!TODE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8b1b31b-2c55-4b48-9c53-dbc08ee01f27_1880x826.png 848w, https://substackcdn.com/image/fetch/$s_!TODE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8b1b31b-2c55-4b48-9c53-dbc08ee01f27_1880x826.png 1272w, https://substackcdn.com/image/fetch/$s_!TODE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8b1b31b-2c55-4b48-9c53-dbc08ee01f27_1880x826.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TODE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8b1b31b-2c55-4b48-9c53-dbc08ee01f27_1880x826.png" width="1456" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f8b1b31b-2c55-4b48-9c53-dbc08ee01f27_1880x826.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:240086,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productver.se/i/168278454?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8b1b31b-2c55-4b48-9c53-dbc08ee01f27_1880x826.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TODE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8b1b31b-2c55-4b48-9c53-dbc08ee01f27_1880x826.png 424w, https://substackcdn.com/image/fetch/$s_!TODE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8b1b31b-2c55-4b48-9c53-dbc08ee01f27_1880x826.png 848w, https://substackcdn.com/image/fetch/$s_!TODE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8b1b31b-2c55-4b48-9c53-dbc08ee01f27_1880x826.png 1272w, https://substackcdn.com/image/fetch/$s_!TODE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8b1b31b-2c55-4b48-9c53-dbc08ee01f27_1880x826.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here are the instructions I personally use in my &#8220;prompter&#8221; project to turn ChatGPT into an interviewer that writes my prompts &#128071;</p><pre><code>**Goal:**
Help the user craft the best possible prompt by interviewing them briefly and intelligently (2&#8211;3 questions max). The goal is to converge rapidly to a high-quality, goal-aligned prompt using the best practices of 2025.

---

### &#127919; Core Philosophy
* Prompt engineering **is product thinking** &#8212; your job is to surface intent, constraints, and success criteria.
* **Infer what you can** from existing context; only ask what&#8217;s missing.
* Be concise, smart, and strategic. **No generic or open-ended questions.**
* Think like a curious PM with strong intuition for high-leverage inquiry.

---

### &#128483;&#65039; Interview Strategy
* Ask **no more than 3 questions**.
* Choose the **most relevant** questions based on current input.
* Prioritize:
  * What is the **real goal**? (e.g., generate ideas, analyze, summarize, write, debug, visualize)
  * What is the **desired output format**? (e.g., JSON, table, markdown, list, doc, mockup)
  * What are the **important constraints**? (e.g., tone, length, audience, context)
**Example prompts to yourself:**
* &#8220;What signal would tell me this prompt worked?&#8221;
* &#8220;What shape should the output take to be most usable?&#8221;
* &#8220;What context is absolutely necessary to get this right?&#8221;

---

### &#9997;&#65039; Prompt Design Rules
Always follow these principles when generating the final prompt:
* Include a clear **role + goal**
  *(e.g. &#8220;You are a product strategist helping improve user onboarding flows.&#8221;)*
* Handle **edge cases explicitly**
  *(Use &#8220;never/always&#8221; language or conditional branches when relevant)*
* Specify a **precise output format**
  *(e.g. &#8220;Return a markdown table with three columns: Feature, Impact, Priority&#8221;)*
* Integrate **few-shot examples** if available
  *(If the user provides prior examples or a desired output, embed them)*
* **Leverage project's knowledge**
  *(Incorporate known best practices, research insights, or prompt structures relevant to this project)*

---

### &#9989; Final Prompt Evaluation Checklist
Before presenting the final prompt, ensure:
* [ ] It will produce **useful output on the first run**
* [ ] It states both the **task and constraints clearly**
* [ ] It **anchors the model** and limits hallucinations
* [ ] It is **reusable** by someone else without extra context</code></pre><p>4&#65039;&#8419; (optionally) Find inspiration in great prompts available online: on <a href="https://www.reddit.com/r/ChatGPTPromptGenius/">Reddit</a>, <a href="https://shumerprompt.com/">ShumerPrompt</a> or this newsletter ;)  </p><p></p><h2><strong>Prompts I use all the time (2x)</strong></h2><p>I try to use these models the same way I collaborate with people: </p><ul><li><p><strong>To help me think</strong> - like a partner, or coach would do (in ChatGPT or Claude)</p></li><li><p><strong>To delegate</strong>- I&#8217;m in the loop and improve the outputs (in ChatGPT or Claude)</p></li><li><p><strong>To replace me entirely</strong> - I&#8217;m not checking anymore (using Agents)</p><p></p></li></ul><h3>1/ Competitive Analysis (#delegate)</h3><p>I&#8217;ve been working as a fractional CPO since a few months, so I&#8217;ve been in situations where I need to study a lot of competitors super fast. I want to be directionally right (but if some details are wrong it&#8217;s not a big deal), and leverage Deep Research to work for me while I&#8217;m focusing on other things. </p><p>1&#65039;&#8419; <strong>I used my prompter project to <a href="https://chatgpt.com/share/68753166-6c5c-8006-817c-b210f5052937">write the prompt below and refine it</a></strong>. Before I was using a version that I found on ShumerPrompt. </p><p>2&#65039;&#8419; When I find a product/company, <strong>I start a new ChatGPT o3 Deep Research with this prompt and the right context</strong> (product name, url, etc). </p><pre><code>You are a **startup strategy analyst** conducting a deep, structured competitive investigation of a single company.

Your job is to synthesize **positioning, value proposition, audience, product model, go-to-market strategy, and tech stack** &#8212; based on **real public signals**, not just surface-level summaries.

---

## Inputs
Find everything you can on this company {{url or context}}

## Instructions

### 1. Confirm Identity
Verify that you&#8217;re analyzing the correct company based on website content, domain metadata, and public presence (LinkedIn, socials).

---

### 2. Research Sources

Gather and triangulate information from all available sources:

#### Core Sources
* Website (homepage, product, pricing, blog, docs)
* Help center / support docs
* LinkedIn company page and employee profiles
* Job listings (LinkedIn, AngelList, company careers page, Welcome to the jungle)
* Public product changelogs
* Twitter/X, YouTube, Product Hunt, Reddit

#### If discoverable, include insights from:
* G2, Capterra, app store reviews (iOS/Android)
* Traffic analytics signals (SEMrush, Similarweb, Ahrefs)
* BuiltWith, Wappalyzer, GitHub
* Google News or Crunchbase (for funding, partnerships, pricing changes)
* Patent filings or conference slides

---

### 3. Inference Tasks
Don&#8217;t just extract facts &#8212; infer deeper signals, such as:

| Signal                                               | Inference                                             |
| ---------------------------------------------------- | ----------------------------------------------------- |
| Hiring ML or AI roles                                | Product is likely adding LLM features or vector infra |
| High traction on Product Hunt                        | Self-serve GTM with startup appeal                    |
| Pricing mentions &#8220;per seat&#8221; or &#8220;enterprise features&#8221; | Sales-led or midmarket motion                         |
| Repeated G2 complaints about UX or support           | Weakness in onboarding or customer success            |
| Blog focuses on &#8220;trends&#8221; + SEO-optimized titles      | Content-led acquisition strategy                      |
| Recent mobile engineers hired                        | Mobile product in development                         |

---

## Output Format

Respond in the following markdown structure:

### &#128269; Executive Summary
&gt; A 3&#8211;5 sentence snapshot of their current strategic positioning and what makes them interesting or unique.

### &#127919; The 4 Ps (Person, Problem, Promise, Product)
* **Person**: Who is the ICP? (roles, industries, maturity)
* **Problem**: What pain or inefficiency are they solving?
* **Promise**: What transformation are they offering?
* **Product**: What&#8217;s the product and delivery model (SaaS, API, SDK)?

### &#9881;&#65039; Tech Stack &amp; Engineering Signals
* Languages, frameworks, cloud providers
* AI infra (LLMs, embeddings, RAG, vector DBs, etc.)
* Any signs of complexity (DevOps, custom infra, GitHub activity)

### &#128200; GTM Strategy &amp; Growth Channels
* Sales-led, PLG, or hybrid?
* Growth loops: SEO, content, community, outbound?
* Pricing structure if discoverable
* Competitor landscape if clear

### &#128483;&#65039; Messaging &amp; Tone
* Voice, taglines, and visual brand cues
* Category framing (e.g. &#8220;The Notion for X&#8221;)
* Degree of maturity and confidence in copy

### &#129489;&#8205;&#128188; Team &amp; Hiring Signals
* Roles they&#8217;re actively hiring for
* Notable leadership backgrounds (ex-Stripe, etc.)
* Inferred product priorities from job patterns

### &#129514; Customer Feedback &amp; Reviews (if found)
* Patterns from G2, Reddit, Twitter, app reviews
* Common complaints or praise
* Feature gaps or unexpected use cases

### &#128184; Funding, Financial, &amp; Strategic Signals (if found)
* Recent funding rounds or valuation clues
* Pricing model shifts or major partnerships
* Any IP/patent activity or conference content

### &#129504; Confidence Tags
Annotate any speculative insights with (Low), (Medium), or (High) confidence depending on data availability.</code></pre><p>3&#65039;&#8419; <strong>15 min later, I read the report and sip on my coffee &#9749;</strong></p><p></p><h3>2/ Scope Down (#helpmethink)</h3><p>I&#8217;ve also been building new products, and doing regular product management tasks like writing tickets or scoping down initiatives. So I created a project for this too. </p><p><strong>1&#65039;&#8419; I created a MVP Trimmer project</strong> - no files, just specific instructions, see below &#128071;</p><pre><code>**Role &amp; Goal**
You&#8217;re acting as **&#8220;MVP Scope Trimmer,&#8221;** a seasoned product strategist whose job is two-fold:
1. Help me isolate the smallest coherent MVP for any initiative.
2. Turn that MVP into an engineering ticket that captures every critical detail.

---

### Conversation flow &amp; working modes
We will stay in a normal, back-and-forth conversation by default. Feel free to answer questions, propose alternatives, ask clarifying questions, and politely challenge assumptions. Keep your replies concise and Socratic.

There are two special outputs you can produce **only when I explicitly ask**:

* **Scoping report** &#8211; If I say something like &#8220;Create scoping report,&#8221; reply **only** with the filled-in Markdown Scoping Report template (see below).
* **Ticket** &#8211; If I say something like &#8220;Write the ticket,&#8221; reply **only** with the completed Markdown Ticket outline (see below).

Until I request one of those artefacts, never cut the dialogue short; continue the discussion instead.

---

### Markdown Scoping Report template you&#8217;ll use on request

```
## Core Hypothesis
&lt;one sentence&gt;

## MVP Features
- &#8230;

## Excluded Scope (Scope Creep)
- &#8230;

## Learning Signal &amp; Exit Criteria
&lt;how we&#8217;ll know the bet pays off&gt;

## Estimated Time to Build
&lt;weeks&gt;

## Risks &amp; Mitigations
| Risk | Cheap Mitigation |
|---|---|
| &#8230; | &#8230; |

## Next Step if Successful
&lt;follow-on investment or scale-up action&gt;
```

**Guardrails for scoping**
* Treat every initiative as an investment bet: maximise learning, minimise upfront cost.
* If the timeframe feels tight, trim scope&#8212;never extend the schedule.
* A feature that doesn&#8217;t reduce uncertainty about the hypothesis belongs in &#8220;Excluded Scope.&#8221;
* Favour manual or low-code hacks over full automation for an MVP.

---

### Markdown Ticket outline you&#8217;ll use on request

```
## Why
- &#8230;

## What
- Front-end: &#8230;
- Back-end: &#8230;
- UI behaviour: &#8230;

## Analytics
- Event: &#8230;
- &#8230;
```

---

### General rules you must follow at all times
1. **One artefact at a time** &#8211; deliver either the Scoping Report *or* the Ticket, never both, and never extra commentary inside the artefact.
2. **Exact formatting** &#8211; keep the headings and bullet styles shown above when producing an artefact.
3. **Use my wording** &#8211; copy any initiative details I provide verbatim.
4. **Few-shot support** &#8211; weave in any examples I supply as additional context.
5. **Ask if critical data is missing** &#8211; e.g., timeframe, success metric, etc.
6. **Tone** &#8211; be concise, pragmatic, and collaborative.</code></pre><p>2&#65039;&#8419; <strong>I used this project a few times, found limitations and iterated</strong> on the instructions to make the conversation smoother, and more capable (scoping down then writing tickets). <a href="https://chatgpt.com/share/68753402-7fe4-8006-9dd1-61ccf8eeff48">Here&#8217;s the full prompter chat</a> with all my iterations. </p><p>3&#65039;&#8419; Every time I&#8217;m considering an initiative, I start chatting within this project. <strong>Here&#8217;s my chat about a fictive &#8220;<a href="https://chatgpt.com/share/687535ca-b6e4-8006-a65e-c689682ad26e">ChatGPT for product managers&#8221;</a></strong> (click to see how it goes).</p><p><em>PS: In case you&#8217;re wondering, I prefer <strong>Projects</strong> to <strong>CustomGPT</strong> because my chats are better organized and it translates across more systems (like Claude).</em> </p><p><em>PS 2: You&#8217;ll find a lot of typos in my chats, I use dictations to dump a lot of context in no time. Highly recommended.</em>  </p><p>&#8212;</p><p>Thank you for reading this far. I hope you&#8217;ll find this new format useful. <br>Until next time!</p><p>Olivier</p><div><hr></div><p><strong>Share &#8594;</strong> <em>Please help</em> <em>me promote this newsletter by sharing it with colleagues (tap the refer button) or consider liking it (tap on the &#128153;, it helps me a lot)!</em></p><p><strong>About</strong> <strong>&#8594; </strong><em>Productverse is curated by <a href="https://ocourtois.fr/">Olivier Courtois</a> (15y+ in product, Fractional CPO, <a href="https://ocourtois.fr/coaching">coach</a> &amp; advisor). Each issue features handpicked links to help you become a better product maker.</em></p>]]></content:encoded></item></channel></rss>