<?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[build mode]]></title><description><![CDATA[Tools, tactics, and taste for product builders]]></description><link>https://newsletter.posthog.com</link><image><url>https://substackcdn.com/image/fetch/$s_!_vWZ!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0489bdc3-8f42-4d23-8e97-5b6921b35814_69x69.png</url><title>build mode</title><link>https://newsletter.posthog.com</link></image><generator>Substack</generator><lastBuildDate>Sat, 01 Aug 2026 20:05:36 GMT</lastBuildDate><atom:link href="https://newsletter.posthog.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[PostHog]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[posthog@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[posthog@substack.com]]></itunes:email><itunes:name><![CDATA[PostHog]]></itunes:name></itunes:owner><itunes:author><![CDATA[PostHog]]></itunes:author><googleplay:owner><![CDATA[posthog@substack.com]]></googleplay:owner><googleplay:email><![CDATA[posthog@substack.com]]></googleplay:email><googleplay:author><![CDATA[PostHog]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[How much can you delegate to agents?]]></title><description><![CDATA[A simple guide to agent autonomy]]></description><link>https://newsletter.posthog.com/p/agent-autonomy</link><guid isPermaLink="false">https://newsletter.posthog.com/p/agent-autonomy</guid><dc:creator><![CDATA[Jina Yoon]]></dc:creator><pubDate>Mon, 27 Jul 2026 18:01:16 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9e69b042-b83c-4028-a0b5-202080e59195_2912x2096.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>People are trusting their agents to do more work without supervision, but how do you decide when to trust them?</p><p>Some think the answer depends on how good the model is &#8211;&nbsp;i.e. when models get better, you can trust them to do more. But trusting your agents just because the models got smarter is like skipping your seatbelt because you got a nicer car.</p><p>The real answer has nothing to do with the model, and everything to do with the <em>task</em>. You need to build a mental model for when to delegate and how much, which you can then adapt. </p><p><span>Here&#8217;s a simple guide to maximizing agent autonomy, so you can ship fast </span><em><span>without</span></em><span> breaking things.</span></p><div><hr></div><h2><span>The two factors that set the ceiling</span></h2><p>You need to ask yourself two questions first:</p><h3><span>1. Is it easy to check the agent&#8217;s work?</span></h3><p>To run safely on their own, agents need immediate feedback when they&#8217;re wrong. This is possible for most code with deterministic checks, like unit and integration tests. But subjective tasks, like renaming a parameter for clarity, are harder without human taste and judgment.</p><h3><span>2. Is it cheap to undo an agent&#8217;s mistake?</span></h3><p><span>Just like in traditional software engineering, if you want to trust an agent run without supervision, you need a guaranteed Ctrl+Z for worst case scenarios. That&#8217;s why </span>StampHog, <a href="http://posthog.com/newsletter/code-review-tips?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-autonomy#3-add-a-pr-auto-stamper"><span>our PR approval agent</span></a><span>, routes anything that contains deny-list keywords to a human.</span></p><p>Together, these two factors<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a><span> point you to one of four levels for any task:</span></p><ul><li><p><strong><span>Level 0: Agent as assistant.</span></strong><span> For tasks that are hard to check and hard to undo. Necessary when dealing with tricky and sensitive code.</span></p></li><li><p><strong><span>Level 1: Human-in-the-loop.</span></strong><span> For tasks that are hard to check and easy to undo. Usually when you need subjective evaluation.</span></p></li><li><p><strong><span>Level 2: Agent delegation.</span></strong><span> For tasks that are easy to check and hard to undo. The default ceiling for most dev work today.</span></p></li><li><p><strong><span>Level 3: Self-driving mode.</span></strong><span> For tasks that are easy to check and easy to undo. Everything is accelerating towards this.</span></p></li></ul><p>You can map these four levels to a very simple decision tree, which you can apply to any task:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HnV9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8188004-4403-4b09-87ed-29462aed3aa1_1600x828.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HnV9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8188004-4403-4b09-87ed-29462aed3aa1_1600x828.png 424w, https://substackcdn.com/image/fetch/$s_!HnV9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8188004-4403-4b09-87ed-29462aed3aa1_1600x828.png 848w, https://substackcdn.com/image/fetch/$s_!HnV9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8188004-4403-4b09-87ed-29462aed3aa1_1600x828.png 1272w, https://substackcdn.com/image/fetch/$s_!HnV9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8188004-4403-4b09-87ed-29462aed3aa1_1600x828.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HnV9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8188004-4403-4b09-87ed-29462aed3aa1_1600x828.png" width="1456" height="753" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b8188004-4403-4b09-87ed-29462aed3aa1_1600x828.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:753,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:133284,&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://newsletter.posthog.com/i/208273504?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8188004-4403-4b09-87ed-29462aed3aa1_1600x828.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_!HnV9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8188004-4403-4b09-87ed-29462aed3aa1_1600x828.png 424w, https://substackcdn.com/image/fetch/$s_!HnV9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8188004-4403-4b09-87ed-29462aed3aa1_1600x828.png 848w, https://substackcdn.com/image/fetch/$s_!HnV9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8188004-4403-4b09-87ed-29462aed3aa1_1600x828.png 1272w, https://substackcdn.com/image/fetch/$s_!HnV9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8188004-4403-4b09-87ed-29462aed3aa1_1600x828.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 aria-hidden="true" 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><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>This helps you make decisions about how much to delegate to your agents, but you still can engineer your pipeline to enable higher autonomy for any specific task.</p><div><hr></div><h2><span>Level 0: Agent as assistant</span></h2><p><em><span>When the work is </span><strong><span>hard to check</span></strong><span> + </span><strong><span>costly to undo</span></strong></em></p><p><span>This is the lowest level of agent autonomy. Think asking ChatGPT for advice, or auto-complete in Cursor, just like the good ol&#8217; days of 2024.</span></p><p><span>But just because it&#8217;s old-fashioned doesn&#8217;t mean it&#8217;s bad; this mode is ideal when dealing with tricky problems in sensitive code surfaces.</span></p><p><span>For example, when </span><a href="https://posthog.com/community/profiles/30455?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-autonomy"><span>Dylan</span></a><span> updated our feature flag engine to support generic property targeting last year, he had to migrate an assumption that was indirectly baked into every feature flag at PostHog. </span></p><p><span>This would have been hard for agents to check deterministically since it wasn&#8217;t possible to </span><code>grep </code><span>for. The update also had a huge blast radius since it touched live customer flags, API response shapes, and reason-scoring functions.</span></p><h3><span>How to level up from here</span></h3><p><strong><span>Break the task down.</span></strong><span> </span>Small pieces make it obvious where delegation is safe or not. Dylan handed off less critical work, like propagating the new targeting logic across our JavaScript, PHP, Ruby, and Flutter SDKs, to agents while doing the riskier core migration by hand.</p><div><hr></div><h2><span>Level 1: Human-in-the-loop</span></h2><p><em><span>When the work is </span><strong><span>hard to check</span></strong><span> + </span><strong><span>cheap to undo</span></strong></em></p><p><span>This level of agent autonomy is common for tasks that need subjective evaluation since it&#8217;s hard to teach agents taste and judgment (for now, at least).</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0Qs7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66fe69c5-2059-4181-b41d-01ff90a0037a_1600x710.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0Qs7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66fe69c5-2059-4181-b41d-01ff90a0037a_1600x710.png 424w, https://substackcdn.com/image/fetch/$s_!0Qs7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66fe69c5-2059-4181-b41d-01ff90a0037a_1600x710.png 848w, https://substackcdn.com/image/fetch/$s_!0Qs7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66fe69c5-2059-4181-b41d-01ff90a0037a_1600x710.png 1272w, https://substackcdn.com/image/fetch/$s_!0Qs7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66fe69c5-2059-4181-b41d-01ff90a0037a_1600x710.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0Qs7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66fe69c5-2059-4181-b41d-01ff90a0037a_1600x710.png" width="1456" height="646" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/66fe69c5-2059-4181-b41d-01ff90a0037a_1600x710.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:646,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:112333,&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://newsletter.posthog.com/i/208273504?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66fe69c5-2059-4181-b41d-01ff90a0037a_1600x710.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_!0Qs7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66fe69c5-2059-4181-b41d-01ff90a0037a_1600x710.png 424w, https://substackcdn.com/image/fetch/$s_!0Qs7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66fe69c5-2059-4181-b41d-01ff90a0037a_1600x710.png 848w, https://substackcdn.com/image/fetch/$s_!0Qs7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66fe69c5-2059-4181-b41d-01ff90a0037a_1600x710.png 1272w, https://substackcdn.com/image/fetch/$s_!0Qs7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66fe69c5-2059-4181-b41d-01ff90a0037a_1600x710.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 aria-hidden="true" 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><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><span>Human-in-the-loop tasks are considered cheap to undo since the code stays in draft mode and won&#8217;t get merged until it&#8217;s verified by a human. An undo just means kicking off another iteration.</span></p><p><a href="https://github.com/PostHog/posthog/pull/35127"><span>This code readability refactor</span></a><span> by </span><a href="https://posthog.com/community/profiles/30210?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-autonomy"><span>Thomas</span></a><span> was mostly done by hand, but it's a good example of something an agent wouldn't know how to grade. It was just a few lines that made it easier for humans to understand &#8211; adding comments, grouping actions, swapping strings for an enum &#8211; and didn't introduce any breaking changes.</span></p><h3><span>How to level up from here</span></h3><ul><li><p><strong><span>Use LLM-as-judge.</span></strong><span> This is how most people are building their agentic code review systems. As models continue to improve, more tasks that require human judgment can be </span><a href="https://posthog.com/blog/testing-ai-agents?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-autonomy#non-deterministic-evaluators"><span>checked with LLMs</span></a><span>.</span></p></li><li><p><strong><span>Define a scoped, measurable goal.</span></strong><span> Success metrics or contracts can work as a proxy for a subjective evaluation. For example, you could instruct a system to experiment with landing page copy until a variant reaches 3% conversion.</span></p></li><li><p><strong><a href="http://posthog.com/newsletter/agent-first-product-engineering?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-autonomy#4-writing-skills-is-a-human-skill"><span>Write custom skills.</span></a></strong><span> This helps agents produce work that reliably fits your standards, conventions, and taste with less steering required. For example, many developers write custom code review skills to follow team-specific standards.</span></p></li></ul><div><hr></div><h2><span>Level 2: Agent delegation</span></h2><p><em><span>When the work is </span><strong><span>easy to check</span></strong><span> + </span><strong><span>costly to undo</span></strong></em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W_Ho!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec383514-0369-4f64-b8da-a116f938c2f3_1600x710.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W_Ho!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec383514-0369-4f64-b8da-a116f938c2f3_1600x710.png 424w, https://substackcdn.com/image/fetch/$s_!W_Ho!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec383514-0369-4f64-b8da-a116f938c2f3_1600x710.png 848w, https://substackcdn.com/image/fetch/$s_!W_Ho!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec383514-0369-4f64-b8da-a116f938c2f3_1600x710.png 1272w, https://substackcdn.com/image/fetch/$s_!W_Ho!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec383514-0369-4f64-b8da-a116f938c2f3_1600x710.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W_Ho!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec383514-0369-4f64-b8da-a116f938c2f3_1600x710.png" width="1456" height="646" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ec383514-0369-4f64-b8da-a116f938c2f3_1600x710.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:646,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:104553,&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://newsletter.posthog.com/i/208273504?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec383514-0369-4f64-b8da-a116f938c2f3_1600x710.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_!W_Ho!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec383514-0369-4f64-b8da-a116f938c2f3_1600x710.png 424w, https://substackcdn.com/image/fetch/$s_!W_Ho!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec383514-0369-4f64-b8da-a116f938c2f3_1600x710.png 848w, https://substackcdn.com/image/fetch/$s_!W_Ho!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec383514-0369-4f64-b8da-a116f938c2f3_1600x710.png 1272w, https://substackcdn.com/image/fetch/$s_!W_Ho!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec383514-0369-4f64-b8da-a116f938c2f3_1600x710.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 aria-hidden="true" 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><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><span>This is the level that most developer tasks are today. An agent writes code that can be tested deterministically, but the final act of merging it is gated behind a final safety check.</span></p><p><span>When </span><a href="https://posthog.com/community/profiles/29292?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-autonomy"><span>Robbie</span></a><span> </span><a href="https://posthog.com/blog/sql-parser?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-autonomy"><span>rewrote our SQL parser</span></a><span> in Rust from scratch, he barely read the code since he had a machine oracle to check the work. But since the parser touches every query at PostHog, the agent&#8217;s work was gated behind multiple safety checks: shadow mode in production, then a staged cutover.</span></p><h3><span>How to level up from here</span></h3><p><strong><span>Enforce policies and guardrails with code. </span></strong><span>Most people default to gating Level 2 tasks behind a human (a.k.a., themselves), but this habit turns you into your own bottleneck. Instead, encode as many of your guardrails directly into your pipeline with policies like dry-running by default, scoping credentials, and putting changes behind </span><a href="https://posthog.com/feature-flags?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-autonomy"><span>feature flags</span></a><span>.</span></p><div><hr></div><h2>Level 3: Self-driving mode</h2><p><em><span>When the work is </span><strong><span>easy to check</span></strong><span> + </span><strong><span>cheap to undo</span></strong></em></p><p><span>There aren&#8217;t very many tasks in this category yet &#8211; just smaller ones like dependency bumps, lint fixes, adding test coverage to existing code. But the category is growing quickly, especially with long-running agents, goal-driven loops, and more complex orchestration.</span></p><p><span>We&#8217;re going all-in at PostHog on making </span><a href="http://posthog.com/docs/self-driving?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-autonomy"><span>self-driving</span></a><span> mode a reality for builders. Last month, for example, we launched </span><a href="https://posthog.com/blog/what-is-a-scout?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-autonomy"><span>Scouts</span></a><span> &#8211; agents that run on a schedule, investigate signals from product data, and draft a PR based on what they find.</span></p><h3><span>How to level up from here</span></h3><ul><li><p><strong><span>Train domain-specific models. </span></strong><span>Much of the next wave of tooling will be about improving verification tasks that are difficult for LLMs today. One obvious path is purpose-trained models that know what &#8220;good&#8221; looks like in a specific domain, which is why we&#8217;re </span><a href="http://posthog.com/blog/training-ai-models?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-autonomy"><span>training our own AI models</span></a><span> at PostHog. </span></p></li><li><p><strong><span>Build expert-level context banks. </span></strong><span>A lack of agent autonomy is often just due to a context deficit. We learned firsthand from </span><a href="http://posthog.com/newsletter/context-engineering?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-autonomy"><span>engineering our context layer</span></a><span> for the PostHog Wizard that closing this gap with structured and fresh knowledge is one of the highest-leverage things you can build for reliable agents.</span></p></li><li><p><strong><span>Design clear signals for scouts. </span></strong><span>The bottleneck for long-running agents is going to be whether they know when there&#8217;s work worth doing, and how to distinguish valid </span><a href="http://posthog.com/docs/self-driving/signals?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-autonomy"><span>signals</span></a><span> from random noise.</span></p></li></ul><p><em><span>Words by </span><a href="https://x.com/jinayoon_"><span>Jina Yoon</span></a><span>, who writes these newsletters at Level 0.</span></em></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.posthog.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe for more content like this. Or don&#8217;t. You have full autonomy.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2><span>&#128373;&#65039; Have your agents talk to our agents</span></h2><ul><li><p><strong><a href="https://posthog.com/careers/technical-customer-success-manager-americas?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-autonomy"><span>Technical Customer Success Manager - Americas</span></a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/technical-customer-success-manager-emea?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-autonomy"><span>Technical Customer Success Manager - EMEA</span></a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/bdr-team-lead?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-autonomy"><span>BDR Team Lead</span></a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/revenue-ops-manager-(sales-focused)?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-autonomy"><span>Revenue Ops Manager (sales focused)</span></a></strong></p></li></ul><div><hr></div><h2><span>&#128314; More ways to level up</span></h2><ul><li><p><strong><a href="https://addyo.substack.com/p/agentic-autonomy-levels"><span>Agentic Autonomy Levels</span></a><span> &#8211; Addy Osmani</span></strong></p></li><li><p><strong><a href="https://posthog.com/blog/repositioning-posthog?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-autonomy">Repositioning PostHog</a> &#8211; Charles Cook</strong></p></li><li><p><strong><a href="https://www.cerebras.ai/blog/how-we-built-our-knowledge-base"><span>How Cerebras Built Its Enterprise Knowledge Base</span></a><span> &#8211; Isaac Tai, Daniel Kim, Mike Gao</span></strong></p></li><li><p><strong><a href="https://posthog.com/blog/what-is-a-context-warehouse?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-autonomy">What is a context warehouse?</a> &#8211; Lizzie Epton</strong></p></li><li><p><strong><span> </span><a href="https://x.com/trq212/status/2080710971228918066"><span>The new rules of context engineering for Claude 5 models</span></a><span> &#8211; Thariq Shihipar</span></strong></p></li></ul><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Note that scale isn&#8217;t a factor for determining agent autonomy levels. People often conflate the two because multi-agent orchestration makes autonomy urgent. But if you get autonomy right at the task level, scale takes care of itself.</p></div></div>]]></content:encoded></item><item><title><![CDATA[2030-shaped software]]></title><description><![CDATA[The future of software we&#8217;re building for at PostHog]]></description><link>https://newsletter.posthog.com/p/2030-shaped-software</link><guid isPermaLink="false">https://newsletter.posthog.com/p/2030-shaped-software</guid><dc:creator><![CDATA[Ian Vanagas]]></dc:creator><pubDate>Mon, 20 Jul 2026 17:52:08 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/5ec2eea0-f996-446f-a569-5363b38340fd_2912x2096.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>By 2030, AI agents will be the primary users of software.</span></p><p><span>Many of the conversations and decisions about what we&#8217;re building now are impacted by this. More and more, we&#8217;re aiming towards building &#8220;2030-shaped software.&#8221;</span></p><p><span>This is a vague aspiration and &#8220;</span><a href="https://posthog.com/newsletter/agent-first-product-engineering?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=2030-software"><span>agent-first software</span></a><span>&#8221; isn&#8217;t much better. But, while we can&#8217;t predict the future, we can share how we&#8217;re thinking about the problem.</span></p><h2><span>Human and agent work is split</span></h2><p><span>The current era of software is designed for humans to do all the work, but in 2030, agents will be the ones </span><strong><span>doing</span></strong><span>. Agents have shown that they can do the obvious stuff themselves. What does this leave humans to do?</span></p><ol><li><p><strong><span>Judging and deciding.</span></strong><span> Humans will approve, prioritize, choose direction, and resolve ambiguity.</span></p></li><li><p><strong><span>Understanding and trusting.</span></strong><span> Humans will evaluate whether it worked, if it&#8217;s safe, and what&#8217;s changed.</span></p></li></ol><p><span>&#8220;Doing&#8221; UI like buttons and forms are going away. They will be replaced with UI that supports the two types of work above. This helps optimize humans&#8217; limited time and energy by pointing them where their input actually matters.</span></p><h2><span>Product infrastructure is agent-first</span></h2><p><span>If a human can do something with your product, agents should be able to do it too. This means complete APIs, an </span><a href="https://posthog.com/mcp?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=2030-software"><span>MCP server</span></a><span>, tools, and permissions. Build for </span><a href="http://posthog.com/newsletter/agent-first-product-engineering?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=2030-software"><span>agents as a primary surface</span></a><span>, not an afterthought.</span></p><p><span>Missing capabilities are a failure mode. Say you ask an agent to set up an </span><a href="http://posthog.com/experiments?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=2030-software"><span>A/B test</span></a><span>. It creates the </span><a href="https://posthog.com/feature-flags?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=2030-software"><span>feature flag</span></a><span>, builds the insight, wires up the events, and stops because you never exposed a tool to create the experiment. It now has to ask you to do that part which defeats the purpose of using agents.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!g9_Z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8608cb4a-a666-42d7-b8a7-02e022b2bf2d_923x379.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!g9_Z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8608cb4a-a666-42d7-b8a7-02e022b2bf2d_923x379.png 424w, https://substackcdn.com/image/fetch/$s_!g9_Z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8608cb4a-a666-42d7-b8a7-02e022b2bf2d_923x379.png 848w, https://substackcdn.com/image/fetch/$s_!g9_Z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8608cb4a-a666-42d7-b8a7-02e022b2bf2d_923x379.png 1272w, https://substackcdn.com/image/fetch/$s_!g9_Z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8608cb4a-a666-42d7-b8a7-02e022b2bf2d_923x379.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!g9_Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8608cb4a-a666-42d7-b8a7-02e022b2bf2d_923x379.png" width="923" height="379" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8608cb4a-a666-42d7-b8a7-02e022b2bf2d_923x379.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:379,&quot;width&quot;:923,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Agent-first infrastructure&quot;,&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="Agent-first infrastructure" title="Agent-first infrastructure" srcset="https://substackcdn.com/image/fetch/$s_!g9_Z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8608cb4a-a666-42d7-b8a7-02e022b2bf2d_923x379.png 424w, https://substackcdn.com/image/fetch/$s_!g9_Z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8608cb4a-a666-42d7-b8a7-02e022b2bf2d_923x379.png 848w, https://substackcdn.com/image/fetch/$s_!g9_Z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8608cb4a-a666-42d7-b8a7-02e022b2bf2d_923x379.png 1272w, https://substackcdn.com/image/fetch/$s_!g9_Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8608cb4a-a666-42d7-b8a7-02e022b2bf2d_923x379.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 aria-hidden="true" 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><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><span>This doesn&#8217;t mean that tools are all you need. It won&#8217;t be enough to just let Claude use your product on its own. Relying entirely on a model provider is too much risk. Building your own harness lets you guarantee quality, protect your brand, and make continuous improvements. Even </span><a href="https://openai.com/index/harness-engineering/"><span>OpenAI notes</span></a><span> that agents struggle not because they are incapable, but because they lack &#8220;the tools, abstractions, and internal structure required to make progress toward high-level goals.&#8221;</span></p><p><span>Context is what makes your agent special. The model is the same for everyone, your moat is the source code, usage data, customer data, and product skills you feed it. This means </span><a href="https://posthog.com/newsletter/context-engineering?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=2030-software"><span>context engineering</span></a><span>, creating pipelines and flows to get fresh, valuable context to the agents when they need it.</span></p><h2><span>Chat is the front door, generative UI inside</span></h2><p><span>People like to complain about chat as an interface, but we think it's a good one. There's a reason why it's still the primary interface to work with agents and companies are doubling down with products like Slack apps &#8211; have you tried the </span><a href="https://posthog.com/slack?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=2030-software"><span>PostHog Slack app</span></a><span> yet? Telling an agent what's needed and letting it go do it is a powerful interaction method.</span></p><p>But chat isn&#8217;t enough because sometimes reading a paragraph is worse than glancing at a chart or flicking a toggle. Text can be too low bandwidth as it&#8217;s flexible but linear; a UI is legible but rigid. Generative UI is in between.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0sZb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf6040f-7a09-49df-aa2f-ed458afbd6dc_1600x1186.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0sZb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf6040f-7a09-49df-aa2f-ed458afbd6dc_1600x1186.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0sZb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf6040f-7a09-49df-aa2f-ed458afbd6dc_1600x1186.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0sZb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf6040f-7a09-49df-aa2f-ed458afbd6dc_1600x1186.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0sZb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf6040f-7a09-49df-aa2f-ed458afbd6dc_1600x1186.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0sZb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf6040f-7a09-49df-aa2f-ed458afbd6dc_1600x1186.jpeg" width="1456" height="1079" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0bf6040f-7a09-49df-aa2f-ed458afbd6dc_1600x1186.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1079,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Generative UI&quot;,&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="Generative UI" title="Generative UI" srcset="https://substackcdn.com/image/fetch/$s_!0sZb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf6040f-7a09-49df-aa2f-ed458afbd6dc_1600x1186.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0sZb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf6040f-7a09-49df-aa2f-ed458afbd6dc_1600x1186.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0sZb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf6040f-7a09-49df-aa2f-ed458afbd6dc_1600x1186.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0sZb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf6040f-7a09-49df-aa2f-ed458afbd6dc_1600x1186.jpeg 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 aria-hidden="true" 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><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 look at the generative UI we&#8217;re working on for PostHog</figcaption></figure></div><p><span>Most generative UI will be disposable, but some will become artifacts: outputs worth keeping, sharing, and forking. Examples include reports, documents, code, pull requests, configuration, and even entire apps. All of them are backed by your app's data. Generative UI is how you work with the agent right now; artifacts are what you walk away with.</span></p><h2><span>Build UI when text isn&#8217;t enough</span></h2><p><span>Text and generative UI cover much of what a product needs, but not everything. Some jobs will continue to need persistent, purpose-built UIs, like:</span></p><ul><li><p><strong><span>Trust and verification surfaces</span></strong><span> confirming the agent did what you wanted. Checking work, not doing it.</span></p></li><li><p><strong><span>Triage and inbox surfaces</span></strong><span> listing decisions that need a human. Approvals, ambiguous calls, unclosed support tickets.</span></p></li></ul><p><span>It's tempting to make your UI agent-first by removing the buttons, forms, and other parts of the UI that power the doing, but this is a half-measure. Most of this new "read-only" UI can be delivered as text by an agent, making it redundant and misaligned with what humans need the UI for.</span></p><p>Take our <a href="https://posthog.com/feature-flags?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=2030-software">feature flags</a> page. The jobs to be done are:</p><ul><li><p><span>Is my flag rolled out?</span></p></li><li><p><span>To whom?</span></p></li><li><p><span>Does it have a payload?</span></p></li><li><p><span>What type is it?</span></p></li></ul><p><span>An agent can answer all these questions in a sentence. You're not verifying the agent's work and there's no decision to be made. You're just checking the flag's state. A 2030 flags page shows how agents change rollouts and previews a pull request to clear up stale flags.</span></p><p>The question to ask is: is a human looking at this for trust and judgement, or to act? If it&#8217;s an action, give the agent the capability. If it&#8217;s to trust or judgement, build for that specifically.</p><h2><span>Be everywhere</span></h2><p><span>Agents don't work like apps. They run on their own, often for a long time. Nobody should have to sit in a browser tab watching them. 2030 products come to their users, no matter if that means </span><a href="https://posthog.com/code?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=2030-software"><span>desktop</span></a><span>, </span><a href="https://posthog.com/slack?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=2030-software"><span>Slack</span></a><span>, mobile, email, API, or voice.</span></p><p>These are a shared control plane between humans and agents. Thin clients over a shared backend, so the experience is the same anywhere and the handoff between surfaces is seamless.</p><p>This pushes you towards cloud-first. The real bottleneck when working with agents is concurrency and babysitting. Builders want to run many agents at once, point them at a backlog, and refine the output from anywhere. On-device execution can&#8217;t do that.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IHTi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fc50f9b-581f-41b6-a424-a7086eaac82a_600x211.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IHTi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fc50f9b-581f-41b6-a424-a7086eaac82a_600x211.png 424w, https://substackcdn.com/image/fetch/$s_!IHTi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fc50f9b-581f-41b6-a424-a7086eaac82a_600x211.png 848w, https://substackcdn.com/image/fetch/$s_!IHTi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fc50f9b-581f-41b6-a424-a7086eaac82a_600x211.png 1272w, https://substackcdn.com/image/fetch/$s_!IHTi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fc50f9b-581f-41b6-a424-a7086eaac82a_600x211.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IHTi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fc50f9b-581f-41b6-a424-a7086eaac82a_600x211.png" width="702" height="246.87" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8fc50f9b-581f-41b6-a424-a7086eaac82a_600x211.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:211,&quot;width&quot;:600,&quot;resizeWidth&quot;:702,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Theo cloud agents&quot;,&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="Theo cloud agents" title="Theo cloud agents" srcset="https://substackcdn.com/image/fetch/$s_!IHTi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fc50f9b-581f-41b6-a424-a7086eaac82a_600x211.png 424w, https://substackcdn.com/image/fetch/$s_!IHTi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fc50f9b-581f-41b6-a424-a7086eaac82a_600x211.png 848w, https://substackcdn.com/image/fetch/$s_!IHTi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fc50f9b-581f-41b6-a424-a7086eaac82a_600x211.png 1272w, https://substackcdn.com/image/fetch/$s_!IHTi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fc50f9b-581f-41b6-a424-a7086eaac82a_600x211.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption"><a href="https://x.com/theo/status/2071083700385955906">Source</a></figcaption></figure></div><p><span>Cloud-first only works if all that infrastructure is excellent. Sandboxes need to be rock solid: fast repo imaging, snappy execution, no crashing or freezing. Your app is ubiquitous, your infrastructure invisible.</span></p><h2><span>Building 2030-shaped software now</span></h2><p>2030 software requires a lot of changes, and 2026 is not 2030. As a company with multiple successful <a href="https://posthog.com/products?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=2030-software">products</a> and thousands of users relying on us, the hard part is getting there while having a real product and revenue to support. Do we retrofit or start fresh?</p><p>Retrofitting maximizes reach, that&#8217;s where our users already are, but we inherit all our 2026 patterns. Every change draws complaints from users attached to the way things work today (not to mention the tech debt).</p><p>Starting fresh means a clean break with years of cumulative UI built on assumptions that might not be valid or relevant. The people who opt in are early adopters who want to co-create the future with us. They don&#8217;t complain about what&#8217;s missing, they tell us what they need. The cost of this is convincing existing users to switch (eventually) and splitting focus with our existing products while we do.</p><p>We&#8217;re cheating a bit and going semi-fresh, using our existing data and infra on a new surface. We&#8217;re expanding our existing <a href="https://posthog.com/desktop?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=2030-software">PostHog Desktop app</a> to fit our 2030 vision first before migrating other surfaces. It&#8217;s already where the best agents live, it draws exactly the early adopters we want, and it&#8217;s simple enough to be a genuine blank slate.</p><p>Without this change, we risk building 2026-shaped software with AI bolted on. We answer &#8220;how do we add AI to this&#8221; rather than &#8220;what is the agent-first version of this?&#8221; We can&#8217;t predict 2030, but don&#8217;t need to be right about the details to build in the right direction. The companies that matter in 2030 will be the ones who started building for it well before they had to.</p><p><em>Words by <a href="https://x.com/ianvanagas">Ian Vanagas</a> who&#8217;s looking forward to 2030 software almost as much as a 2030 World Cup.</em></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.posthog.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe for more posts on building 2030-shaped software.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div><hr></div><h2>&#128197; 2026 blog posts you should read now</h2><ul><li><p><strong><a href="https://posthog.com/blog/session-replays-opening-pull-requests?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=2030-software">Our session replays are opening their own pull requests</a> - Sara Miteva</strong></p></li><li><p><strong><a href="https://akashyap.ai/the-future-of-saas-is-agentic/">The Future of SaaS Is Agentic</a> - Arjun Kashyap</strong></p></li><li><p><strong><a href="https://blog.staysaasy.com/p/riding-technology-waves">Riding Technology Waves</a> - Stay SaaSy</strong></p></li><li><p><strong><a href="https://addyo.substack.com/p/own-the-outer-loop">Own the Outer Loop</a> - Addy Osmani</strong></p></li><li><p><strong><a href="https://www.normaltech.ai/p/why-ai-hasnt-replaced-software-engineers">Why AI hasn&#8217;t replaced software engineers, and won&#8217;t</a> - Arvind Narayanan and Sayash Kapoor</strong></p></li></ul><div><hr></div><h2>&#128188; Join us on our journey</h2><ul><li><p><strong><a href="https://posthog.com/careers/ai-research-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=2030-software"><span>AI Research Engineer</span></a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/site-reliability-engineer-(us-pacific-time)?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=2030-software">Site Reliability Engineer (Pacific timezone)</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/bdr-team-lead?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=2030-software">BDR Team Lead</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/context-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=2030-software">Context Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/backend-engineer-europeuk-timezone?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=2030-software">Backend Engineer</a></strong></p></li></ul>]]></content:encoded></item><item><title><![CDATA[Product for Engineers is now build mode]]></title><description><![CDATA[Same team, same posts. New brand, new focus.]]></description><link>https://newsletter.posthog.com/p/product-for-engineers-is-now-build</link><guid isPermaLink="false">https://newsletter.posthog.com/p/product-for-engineers-is-now-build</guid><dc:creator><![CDATA[Ian Vanagas]]></dc:creator><pubDate>Mon, 13 Jul 2026 18:39:17 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/fd61ab64-b689-4d1e-b577-eb1849b29f0f_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>We&#8217;re rebranding Product for Engineers as </span><strong><span>build mode</span></strong><span> to better cover everything it takes to build successful products from now into the future. Here&#8217;s why.</span></p><h2><span>We accomplished our original goal</span></h2><p>We started Product for Engineers to challenge the idea that engineers only care about code.</p><p>We showed that engineers can flex their product muscle, <a href="https://posthog.com/newsletter/talk-to-users?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=build-mode-launch">talk to users directly</a>, <a href="https://posthog.com/newsletter/how-we-decide-what-to-build?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=build-mode-launch">be opinionated about what to work on</a>, work autonomously to ship features, and figure out if they are successful. The tens of thousands of subscribers we amassed, the rise in popularity of the product engineer role, and 100+ YC startups hiring them now are proof we accomplished this.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FtGt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff56b481f-fc00-4d29-84d3-57d952924097_2048x917.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FtGt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff56b481f-fc00-4d29-84d3-57d952924097_2048x917.png 424w, https://substackcdn.com/image/fetch/$s_!FtGt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff56b481f-fc00-4d29-84d3-57d952924097_2048x917.png 848w, https://substackcdn.com/image/fetch/$s_!FtGt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff56b481f-fc00-4d29-84d3-57d952924097_2048x917.png 1272w, https://substackcdn.com/image/fetch/$s_!FtGt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff56b481f-fc00-4d29-84d3-57d952924097_2048x917.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FtGt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff56b481f-fc00-4d29-84d3-57d952924097_2048x917.png" width="1456" height="652" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f56b481f-fc00-4d29-84d3-57d952924097_2048x917.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:652,&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;:false,&quot;topImage&quot;:true,&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_!FtGt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff56b481f-fc00-4d29-84d3-57d952924097_2048x917.png 424w, https://substackcdn.com/image/fetch/$s_!FtGt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff56b481f-fc00-4d29-84d3-57d952924097_2048x917.png 848w, https://substackcdn.com/image/fetch/$s_!FtGt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff56b481f-fc00-4d29-84d3-57d952924097_2048x917.png 1272w, https://substackcdn.com/image/fetch/$s_!FtGt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff56b481f-fc00-4d29-84d3-57d952924097_2048x917.png 1456w" sizes="100vw" fetchpriority="high"></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 aria-hidden="true" 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><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><span>Along the way, we learned product engineers care about more than just </span><em><span>product</span></em><span>. They care about building a successful company and career more broadly. After all, great products come from the people and companies who build them.</span></p><p><span>Following the advice to &#8220;</span><s><span>build</span></s><span> write something people want,&#8221; we wrote about everything from </span><a href="https://posthog.com/newsletter/finding-a-job-product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=build-mode-launch"><span>finding a job</span></a><span> to </span><a href="https://posthog.com/newsletter/building-a-startup-that-scales?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=build-mode-launch"><span>scaling a startup</span></a><span> to </span><a href="https://posthog.com/newsletter/marketing-for-devs?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=build-mode-launch"><span>marketing</span></a><span> to </span><a href="https://posthog.com/newsletter/collaboration-sucks?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=build-mode-launch"><span>collaboration</span></a><span>.</span></p><p><span>But every post like this pulled us away from the &#8220;product&#8221; framing in our name. Helping people build more successful products meant a lot more than just helping engineers do product.</span></p><h2><span>AI changes engineering and the meaning of &#8220;engineer&#8221;</span></h2><p><span>The other part of our name has also seen huge changes because of AI.</span></p><p><span>First, people are building AI-powered products and using AI to do so. Last week, PostHog saw 3.5M </span><a href="https://posthog.com/mcp?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=build-mode-launch"><span>MCP</span></a><span> tool calls, nearly 100K </span><a href="https://posthog.com/ai?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=build-mode-launch"><span>PostHog AI</span></a><span> chats, and 40% of experiments created through our MCP. Our </span><a href="https://posthog.com/ai-observability?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=build-mode-launch"><span>AI observability</span></a><span> product grew 17x in the last year. Building the best products now requires </span><a href="https://posthog.com/newsletter/agent-first-product-engineering?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=build-mode-launch"><span>building for agents</span></a><span>, </span><a href="https://posthog.com/newsletter/loops?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=build-mode-launch"><span>writing loops</span></a><span>, and </span><a href="https://posthog.com/newsletter/ai-coding-mistakes?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=build-mode-launch"><span>making full use of AI coding tools</span></a><span>.</span></p><p><span>Second, AI has made it possible for anyone to build. The</span><a href="https://posthog.com/newsletter/engineeringification-of-everything?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=build-mode-launch"><span> engineeringification of everything</span></a><span> is real.</span><a href="https://posthog.com/blog/slack-app-beta#the-one-where-it-built-a-new-feature-for-the-web-app?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=build-mode-launch"><span> Salespeople ship features</span></a><span>, </span><a href="https://github.com/PostHog/posthog/pull/62065"><span>product managers fix bugs</span></a><span>, </span><a href="https://posthog.com/blog/joe-os-analytics?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=build-mode-launch"><span>marketers build video games</span></a><span>. Our posts are relevant to a new group who don&#8217;t exclusively label themselves as engineers.</span></p><p><span>PostHog as a company is changing to reflect this. Beyond building more for AI, </span><a href="https://posthog.com/handbook/who-we-build-for?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=build-mode-launch"><span>our ICP</span></a><span> has changed from engineers at high growth startups to the people building products in AI-pilled software teams at any scale. Our newsletter should reflect this change too.</span></p><p><span>The Product for Engineers brand wasn&#8217;t resonating for us or our readers, so we&#8217;re changing it and going </span><strong><span>build mode</span></strong><span>.</span></p><h2><span>What is build mode?</span></h2><p><span>The tools, tactics, and taste builders need to build successful products, companies, and careers like:</span></p><ol><li><p><span>How to build </span><a href="https://posthog.com/newsletter/agent-first-product-engineering?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=build-mode-launch"><span>AI-native products</span></a><span> (and</span><a href="https://posthog.com/newsletter/building-ai-agents?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=build-mode-launch"><span> agents</span></a><span>) successfully</span></p></li><li><p><span>How to leverage AI to build more successful products and careers</span></p></li><li><p><span>How to build a successful </span><a href="https://posthog.com/newsletter/what-does-a-product-manager-do?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=build-mode-launch"><span>company</span></a><span>, </span><a href="https://posthog.com/newsletter/hackathons?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=build-mode-launch"><span>culture</span></a><span>, and</span><a href="https://posthog.com/newsletter/startup-marketing-for-noobs?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=build-mode-launch"><span> brand</span></a></p></li><li><p><span>Lessons from the</span><a href="https://newsletter.posthog.com/p/llms-are-picking-winners-heres-how"><span> frontlines</span></a><span> of doing all of the above at </span><a href="https://posthog.com/newsletter/hidden-danger-of-shipping-fast?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=build-mode-launch"><span>PostHog</span></a></p></li></ol><p><strong><span>build mode</span></strong><span> is a reflection of what's happening now and what we think matters to builders going forward. Our upcoming posts will cover what we think the future of software looks like, writing agent skills, and an explainer on effort levels.</span></p><p>It turns out that when code is cheap, the product skills we wrote about become even more important. AI enables more people to build and takes them further, faster, but it still needs the guidance, judgement, and taste only you can provide. Build mode aims to help you with this as best as we can.</p><p><span>Go build mode.</span></p><p><em>Words by <a href="https://x.com/ianvanagas">Ian Vanagas</a> who will miss our mascot Swolehog.</em></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.posthog.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe to go build mode</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Stop being the code review bottleneck]]></title><description><![CDATA[4 ways to make AI code review suck less (with prompts)]]></description><link>https://newsletter.posthog.com/p/code-review-tips</link><guid isPermaLink="false">https://newsletter.posthog.com/p/code-review-tips</guid><dc:creator><![CDATA[Jina Yoon]]></dc:creator><pubDate>Thu, 09 Jul 2026 19:15:14 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/1018b66a-6d94-4190-b34b-60e0072e3840_1317x988.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Agents are writing code faster than any human can review. </p><p>The naive solution would be for developers to review code faster. The 500 IQ take is for developers to review as little code as possible. </p><p>If you need to be involved in every code review, you will always be the bottleneck. Instead, put yourself outside of the code review loop by building a pipeline that delegates tasks to agents.</p><p>We asked engineers at PostHog how they&#8217;ve been reviewing AI-generated code to keep shipping fast without losing quality.</p><p>Here are four workflow changes you can steal (with prompts included) to make your life easier.</p><div><hr></div><h2>1. Make agents review code for you</h2><p>The number one thing to add, if you haven&#8217;t yet, is a way for agents to review code for you.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I0j6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a86da0d-520c-4b49-8693-295f42193f43_900x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I0j6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a86da0d-520c-4b49-8693-295f42193f43_900x720.png 424w, https://substackcdn.com/image/fetch/$s_!I0j6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a86da0d-520c-4b49-8693-295f42193f43_900x720.png 848w, https://substackcdn.com/image/fetch/$s_!I0j6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a86da0d-520c-4b49-8693-295f42193f43_900x720.png 1272w, https://substackcdn.com/image/fetch/$s_!I0j6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a86da0d-520c-4b49-8693-295f42193f43_900x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I0j6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a86da0d-520c-4b49-8693-295f42193f43_900x720.png" width="556" height="444.8" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a86da0d-520c-4b49-8693-295f42193f43_900x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:900,&quot;resizeWidth&quot;:556,&quot;bytes&quot;:421465,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.posthog.com/i/206243478?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a86da0d-520c-4b49-8693-295f42193f43_900x720.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_!I0j6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a86da0d-520c-4b49-8693-295f42193f43_900x720.png 424w, https://substackcdn.com/image/fetch/$s_!I0j6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a86da0d-520c-4b49-8693-295f42193f43_900x720.png 848w, https://substackcdn.com/image/fetch/$s_!I0j6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a86da0d-520c-4b49-8693-295f42193f43_900x720.png 1272w, https://substackcdn.com/image/fetch/$s_!I0j6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a86da0d-520c-4b49-8693-295f42193f43_900x720.png 1456w" sizes="100vw" fetchpriority="high"></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 aria-hidden="true" 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><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><span>The goal is to offload the simpler reviews to agents, and flag if something genuinely needs a human.</span></p><p><span>The key is that the agent that wrote the code can&#8217;t be the one that reviews it. Agents are bad at checking their own work since they&#8217;re often unaware of their own blind spots.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></span></p><p><span>For the same reason, it&#8217;s better to have multiple agents with different instructions and goals to cover more gaps,</span><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a><span> as well as different models and providers for different reviewers.</span><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a></p><p><span>Here&#8217;s how one of our engineers, </span><a href="https://posthog.com/community/profiles/30173?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=code-review"><span>Paul D&#8217;Ambra</span></a><span>, makes his own custom agent review system work:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZlzF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5ce9b3-0ee9-4444-a746-df6a792fbe98_1296x803.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZlzF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5ce9b3-0ee9-4444-a746-df6a792fbe98_1296x803.png 424w, https://substackcdn.com/image/fetch/$s_!ZlzF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5ce9b3-0ee9-4444-a746-df6a792fbe98_1296x803.png 848w, https://substackcdn.com/image/fetch/$s_!ZlzF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5ce9b3-0ee9-4444-a746-df6a792fbe98_1296x803.png 1272w, https://substackcdn.com/image/fetch/$s_!ZlzF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5ce9b3-0ee9-4444-a746-df6a792fbe98_1296x803.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZlzF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5ce9b3-0ee9-4444-a746-df6a792fbe98_1296x803.png" width="1296" height="803" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1e5ce9b3-0ee9-4444-a746-df6a792fbe98_1296x803.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:803,&quot;width&quot;:1296,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:72855,&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://newsletter.posthog.com/i/206243478?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5ce9b3-0ee9-4444-a746-df6a792fbe98_1296x803.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_!ZlzF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5ce9b3-0ee9-4444-a746-df6a792fbe98_1296x803.png 424w, https://substackcdn.com/image/fetch/$s_!ZlzF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5ce9b3-0ee9-4444-a746-df6a792fbe98_1296x803.png 848w, https://substackcdn.com/image/fetch/$s_!ZlzF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5ce9b3-0ee9-4444-a746-df6a792fbe98_1296x803.png 1272w, https://substackcdn.com/image/fetch/$s_!ZlzF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5ce9b3-0ee9-4444-a746-df6a792fbe98_1296x803.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 aria-hidden="true" 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><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><ol><li><p><span>First, </span><strong><a href="https://github.com/pauldambra/dotfiles/tree/main/ai/skills/qa-swarm"><span>qa-swarm</span></a></strong><span> spawns four reviewer agents, each with their own special instructions:</span></p><ul><li><p><strong><span>qa-team</span></strong><span> &#8211; spawns technical subagents that hunt for security, database, performance, etc.</span></p></li><li><p><strong><span>security-audit</span></strong><span> &#8211; probes for vulnerabilities like SQL or prompt injections</span></p></li><li><p><strong><span>paul-reviewer </span></strong><span>&#8211; uses Paul&#8217;s voice and focuses on observability, rollouts, naming</span></p></li><li><p><strong><span>xp-reviewer</span></strong><span> &#8211; applies an Extreme Programming lens to review</span></p></li></ul></li><li><p><span>Then,</span><strong><span> </span><a href="https://github.com/pauldambra/dotfiles/blob/main/ai/skills/review-triage/SKILL.md"><span>review-triage</span></a><span> </span></strong><span>sorts those reviews to classify threads into three categories:</span></p><ul><li><p><strong><span>actionable </span></strong><span>&#8594; gets fixed and pushed</span></p></li><li><p><strong><span>nits</span></strong><span> &#8594; get resolved and replied to with a comment</span></p></li><li><p><strong><span>ambiguous</span></strong><span> &#8594; escalated and sorted for Paul to work through with the agent later</span></p></li></ul></li><li><p><span>An outer loop iterates up to three times or until no new actionable threads appear.</span></p></li></ol><p><span>From there, you can connect this to another loop that shepherds the PR until it&#8217;s ready to merge &#8211; more on that in the next section.</span></p><blockquote><p><strong><span>The takeaway: </span></strong><span>Save time reviewing code by making </span><a href="https://posthog.com/newsletter/agent-first-product-engineering?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=code-review"><span>agents</span></a><span> review each other. This knocks out easier reviews so that only the PRs that really need human attention get flagged.</span></p></blockquote><h3>Steal this</h3><p><span>You can check out and copy Paul&#8217;s </span><a href="https://github.com/pauldambra/dotfiles/blob/main/ai/skills/qa-swarm/SKILL.md"><span>qa-swarm</span></a><span> and </span><a href="https://github.com/pauldambra/dotfiles/blob/main/ai/skills/review-triage/SKILL.md"><span>review-triage</span></a><span> skills, or use this prompt to design your own review loop based on his:</span></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:&quot;1d2a46a3-5423-450a-9a13-fd25db41713b&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown">Read Paul D'Ambra's qa-swarm skill, plus its sibling review-triage in the same folder, then help me design my own version: https://github.com/pauldambra/dotfiles/blob/main/ai/skills/qa-swarm/SKILL.md

It should take in a single PR, spawn a reviewer panel, triage every finding and existing PR thread into actionable / nit / ambiguous, and keep going until nothing's left but the ambiguous ones flagged for me.  

Interview me about my stack, tooling, available models, and how autonomous it should be &#8212; what gets auto-fixed vs. only reported, and what it may post to GitHub &#8212; before writing the final SKILL.md, then install it.</code></pre></div><p><span>That said, these systems can get token expensive:</span></p><div class="callout-block" data-callout="true"><p><em><span>&#8220;Something like 60% of my token spend is burned automating the toil of handling CI and review and I don&#8217;t regret a single dollar.&#8221; </span></em><span>&#8211; Paul</span></p></div><p><span>So if running multiple agents or loops isn&#8217;t an option for your team, look for single agent designs like </span><a href="https://github.com/kunchenguid/no-mistakes"><span>this one</span></a><span> by Kun Chen.</span></p><div><hr></div><h2>2. Delegate PR babysitting to loops</h2><p>The context switching that comes with agentic coding is exhausting. One easy way to reduce that fatigue is by automating code review-adjacent tasks that don&#8217;t need your attention.</p><p>For example, babysitting a single PR can involve tedious tasks like monitoring CI, re-running flaky tests, checking notifications for comments, and keeping the branch up to date.</p><p>Why waste your most precious resource &#8211; your energy &#8211; when you can just delegate all of it to a <a href="https://posthog.com/newsletter/loops?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=code-review">loop</a>?</p><blockquote><p><strong><span>The takeaway: </span></strong><span>Reduce context switching and fatigue by delegating simple tasks like PR babysitting to a loop.</span></p></blockquote><h3><span>Steal this</span></h3><p><span>You can implement your own PR babysitter skill, based on </span><a href="https://github.com/haacked/dotfiles/blob/main/ai/skills/babysit-prs/SKILL.md"><span>babysit-prs</span></a><span> by </span><a href="https://posthog.com/community/profiles/32501?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=code-review"><span>Phil Haack </span></a><span>with the prompt below. (It works best if you run it after creating a review loop skill from the previous section.)</span></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:&quot;91d19119-2623-495e-b91e-38bf8d8db510&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown">Read https://github.com/haacked/dotfiles/blob/main/ai/skills/babysit-prs/SKILL.md and adapt it for me: same sweep/state design, but it dispatches my own single-PR review skill via a spawned agent per unreviewed PR. 

Before writing SKILL.md, interview me on: which skill it dispatches and where my skills live, my stack/tooling/models, and which extra tasks to include &#8212; CI monitoring, branch freshness, flaky-test reruns, lint/format autofix, regenerating drifted artifacts, description sync. 

Ground the interview in  facts you can discover yourself (my open PRs, gh auth, clone layout) rather than asking about them.</code></pre></div><div><hr></div><h2>3. Add a PR auto-stamper</h2><p><span>Fast-moving teams generate a lot of small, low-risk PRs, and every one still needs approval on GitHub (a.k.a., a stamp).</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Zsw1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3a309a-d257-4c10-8732-a582edd4d7c7_1976x1037.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Zsw1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3a309a-d257-4c10-8732-a582edd4d7c7_1976x1037.png 424w, https://substackcdn.com/image/fetch/$s_!Zsw1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3a309a-d257-4c10-8732-a582edd4d7c7_1976x1037.png 848w, https://substackcdn.com/image/fetch/$s_!Zsw1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3a309a-d257-4c10-8732-a582edd4d7c7_1976x1037.png 1272w, https://substackcdn.com/image/fetch/$s_!Zsw1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3a309a-d257-4c10-8732-a582edd4d7c7_1976x1037.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Zsw1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3a309a-d257-4c10-8732-a582edd4d7c7_1976x1037.png" width="1456" height="764" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7c3a309a-d257-4c10-8732-a582edd4d7c7_1976x1037.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:764,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:198368,&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://newsletter.posthog.com/i/206243478?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3a309a-d257-4c10-8732-a582edd4d7c7_1976x1037.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_!Zsw1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3a309a-d257-4c10-8732-a582edd4d7c7_1976x1037.png 424w, https://substackcdn.com/image/fetch/$s_!Zsw1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3a309a-d257-4c10-8732-a582edd4d7c7_1976x1037.png 848w, https://substackcdn.com/image/fetch/$s_!Zsw1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3a309a-d257-4c10-8732-a582edd4d7c7_1976x1037.png 1272w, https://substackcdn.com/image/fetch/$s_!Zsw1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3a309a-d257-4c10-8732-a582edd4d7c7_1976x1037.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 aria-hidden="true" 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><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><span>At PostHog, we used to handle this in Slack where you drop your PR in #dev-stamp-exchange and wait for someone to give it a quick approval and react with a stamp emoji. We even built a </span><a href="https://stamphog.vercel.app/"><span>leaderboard</span></a><span> for it.</span></p><p><span>It worked, but each stamp required another engineer to take themselves out of their flow to approve a change they had little to no context on.</span></p><p><span>Now, most of those are done by our StampHog agent instead. And in just one quarter, it gives the final stamp on roughly 1 in 3 PRs merged into our main repo.</span></p><p><span>Our engineers add a </span><code>stamphog</code><span> label on their PR in GitHub, and it runs a few safety checks based on:</span></p><ul><li><p><strong><span>PR state.</span></strong><span> No merge conflicts or changes requested</span></p></li><li><p><strong><span>Blast radius.</span></strong><span> </span><a href="https://github.com/PostHog/posthog/blob/master/tools/pr-approval-agent/README.md#t2--never-ai-approved"><span>Deny-list</span></a><span> keywords (auth, secrets, billing, public APIs, etc.)</span></p></li><li><p><strong><span>Diff size.</span></strong><span> Under 500 lines and 20 files</span></p></li><li><p><strong><span>A simple LLM check.</span></strong><span> For basic showstoppers</span></p></li></ul><p><span>If the agent approves, it&#8217;ll leave a bare GitHub approval with no line comments.</span></p><p><span>Otherwise, it refuses or escalates with a 1-2 sentence reason, risk level rating, and next steps. Usually that means routing to a subject matter expert based on </span><a href="https://github.com/PostHog/posthog/blob/master/.github/CODEOWNERS-soft"><span>CODEOWNERS-soft</span></a><span> and git-blame familiarity.</span></p><p>We still use #dev-stamp-exchange when the agent can&#8217;t auto-accept or route, but it&#8217;s way less active now. Last month, the StampHog agent took care of 1.6K PRs on its own &#8211; that&#8217;s <em>1.6K fewer Slack interruptions</em> for our engineers.</p><blockquote><p><strong><span>The takeaway: </span></strong><span>Let an agent can take care of low-context PR approvals and routing to reduce distractions. Use deterministic checks to route sensitive code to humans.</span></p></blockquote><h3>Steal this</h3><p><span>The code for StampHog is available </span><a href="https://github.com/PostHog/posthog/blob/master/tools/pr-approval-agent/"><span>here</span></a><span>. Many of its inner workings are specific to PostHog, so instead of copying it, here's a prompt to start customizing one for your repo based on ours:</span></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:&quot;046c8374-4e36-43e2-aa0d-e8591ecd2be7&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown">Read https://github.com/PostHog/posthog/blob/master/tools/pr-approval-agent/README.md and build the equivalent for the repo at &lt;path&gt;. 

Copy the architecture; preserve its safety invariants exactly (fail closed, never request changes or merge, LLM can tighten gates but never loosen). 

Their deny-list and thresholds are calibrated to their codebase &#8212; re-derive for me: mine my git history for high-blast-radius deny candidates and calibrate size/tier ceilings from my merged PRs, then propose the full gate config for my sign-off before writing any code. 

At the same time, ask me whatever you can't derive from the repo &#8212; at minimum the CI system and trigger label, escalation routing if there's no CODEOWNERS, and which LLM/SDK to use and how CI gets its credentials. 

Leave the result as uncommitted files on my working tree.</code></pre></div><div><hr></div><h2>4. Verify by observation, not reasoning</h2><p><a href="https://posthog.com/newsletter/building-ai-agents?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=code-review">Agents</a> are good at explaining why their code works. The explanation is often convincing... but also wrong. </p><p>If you run the code end to end, you&#8217;ll frequently find errors the agent never reasoned about, or output that&#8217;s just slightly not what you asked for.</p><p><span>That&#8217;s why </span><a href="https://posthog.com/community/profiles/43453?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=code-review"><span>Daniel Visca</span></a><span>&#8216;s rule of thumb is observability over</span><strong><span> </span></strong><span>reasoning</span><strong><span>.</span></strong><span> Don&#8217;t accept an argument that the code works when you can </span><em><span>watch</span></em><span> it work.</span></p><p><span>The gold standard is something you can observe directly, like sending a real API request and reading the response. If the behavior is in front of you, you don&#8217;t have to trust the agent&#8217;s rationale at all. But this has a scaling problem since a 3,000-line PR would be challenging to trust and observe.</span></p><p><span>His approach is to make agents decompose the work. For example, for a large change (like building a metrics pipeline end to end), he instructs the agent to produce a stack of small, single-purpose PRs and then uses</span><a href="https://graphite.dev"><span> Graphite</span></a><span> for its &#8220;stacking&#8221; functionality. This makes each diff independently runnable and observable:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!d1yr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc414177a-0c80-4351-b7dd-ba6897b46357_2010x668.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!d1yr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc414177a-0c80-4351-b7dd-ba6897b46357_2010x668.png 424w, https://substackcdn.com/image/fetch/$s_!d1yr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc414177a-0c80-4351-b7dd-ba6897b46357_2010x668.png 848w, https://substackcdn.com/image/fetch/$s_!d1yr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc414177a-0c80-4351-b7dd-ba6897b46357_2010x668.png 1272w, https://substackcdn.com/image/fetch/$s_!d1yr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc414177a-0c80-4351-b7dd-ba6897b46357_2010x668.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!d1yr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc414177a-0c80-4351-b7dd-ba6897b46357_2010x668.png" width="1456" height="484" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c414177a-0c80-4351-b7dd-ba6897b46357_2010x668.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:484,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:235179,&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://newsletter.posthog.com/i/206243478?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc414177a-0c80-4351-b7dd-ba6897b46357_2010x668.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_!d1yr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc414177a-0c80-4351-b7dd-ba6897b46357_2010x668.png 424w, https://substackcdn.com/image/fetch/$s_!d1yr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc414177a-0c80-4351-b7dd-ba6897b46357_2010x668.png 848w, https://substackcdn.com/image/fetch/$s_!d1yr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc414177a-0c80-4351-b7dd-ba6897b46357_2010x668.png 1272w, https://substackcdn.com/image/fetch/$s_!d1yr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc414177a-0c80-4351-b7dd-ba6897b46357_2010x668.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 aria-hidden="true" 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><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><span>At each step of the stack, you can run a real check and confirm the output matches what you expect. Then, as you merge bottom-up, each layer only builds on behavior that&#8217;s already been verified.</span></p><p><span>This way, early mistakes can&#8217;t compound, and when something does break, you&#8217;re debugging one small diff instead of the whole change.</span></p><p><span>As a bonus, this lets StampHog from #3 auto-approve the small and focused PRs. You end up with two different checks: the agent reasoning about the code first, and a human observing its actual behavior.</span></p><blockquote><p><strong><span>The takeaway: </span></strong><span>When you can't trust an agent's reasoning, don't read more code; decompose the change until you can watch each piece run. Observation scales better than review.</span></p></blockquote><h3>Steal this</h3><p>You can set this up by using Graphite to stack smaller PRs produced by your agents with these instructions:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:&quot;1b335181-461e-4a16-82f2-ac429484172f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown">Split work into a stack of small PRs, each under 400 changed lines and focused on a single change, building only on the PRs below it. 

Every PR must ship with its own tests and end with a way to observe it working directly &#8212; a command to run and the output I should expect.</code></pre></div><p><span>This approach is especially valuable for frontend work since deterministic tests don&#8217;t always capture the visual or behavioral functionality you&#8217;re looking for.</span></p><p><span>You can use this prompt to copy the </span><a href="https://github.com/PostHog/posthog/blob/master/.agents/skills/qa-frontend/SKILL.md"><span>qa-frontend</span></a><span> skill </span><a href="https://posthog.com/community/profiles/33209?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=code-review"><span>Pawel Cebula</span></a><span> created for this. It&#8217;s a huge timesaver to have an agent run the code and take screenshots and GIFs for you:</span></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:&quot;4f8df943-d5bf-4d8e-89a2-fe666b63a3a7&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown">Read https://github.com/PostHog/posthog/blob/master/.agents/skills/qa-frontend/SKILL.md and build the equivalent for the repo at &lt;path&gt;. Copy the architecture and preserve every safety invariant it states exactly.

Its file-classification, route-finding, local-stack/login, and evidence-upload rules are calibrated to PostHog &#8212; re-derive mine: mine my repo for the diff-pattern &#8594; frontend-test-type map, route heuristics, and the "never auto-edit" deny-list (from my high-blast-radius areas). Propose the full config for my sign-off before writing any code.

Ask me whatever you can't derive from the repo &#8212; at minimum: which browser MCP to drive, how my local stack starts and on what URL, how the app authenticates locally, and how PR mode checks out PRs and posts comments (platform + CLI/token).

Leave the result as uncommitted files on my working tree.</code></pre></div><p><em><span>Words by </span><a href="https://x.com/jinayoon_"><span>Jina Yoon</span></a><span> who was, admittedly, the bottleneck for this post.</span></em></p><div><hr></div><h2><span>&#129770;  Blogs worth human review</span></h2><ul><li><p><strong><a href="https://posthog.com/blog/why-we-rebuilt-our-data-warehouse?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=code-review"><span>Why we rebuilt our data warehouse and how it unlocks self-driving products</span></a><span> &#8211; Eric Duong</span></strong></p></li><li><p><strong><a href="https://dylanamartin.com/2026/03/24/agentic-failure-modes.html"><span>Agentic Failure Modes</span></a><span> &#8211; Dylan Martin</span></strong></p></li><li><p><strong><a href="https://lucumr.pocoo.org/2026/7/4/better-models-worse-tools/"><span>Better Models: Worse Tools</span></a><span> &#8211; Armin Ronacher</span></strong></p></li><li><p><strong><a href="https://addyo.substack.com/p/agentic-code-review"><span>Agentic Code Review</span></a><span> &#8211; Addy Osmani</span></strong></p></li><li><p><strong><a href="https://x.com/geoffreylitt/status/2072522251300409556"><span>Understanding is the new bottleneck</span></a><span> &#8211; Geoffrey Litt</span></strong></p></li></ul><div><hr></div><h2><span>&#129302; We can&#8217;t automate these yet</span></h2><ul><li><p><strong><a href="https://posthog.com/careers/ai-research-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=code-review"><span>AI Research Engineer</span></a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/technical-customer-success-manager-americas?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=code-review"><span>Technical Customer Success Manager - Americas</span></a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/context-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=code-review"><span>Context Engineer</span></a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/revenue-ops-manager-(sales-focused)?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=code-review"><span>Revenue Ops Manager (sales focused)</span></a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/developer-who-connects-with-other-developers?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=code-review">Developer who connects with other developers</a></strong></p></li></ul><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.posthog.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe for more stealable dev tips</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p><a href="https://research.google/blog/can-large-language-models-identify-and-correct-their-mistakes/">Tyen et al., "LLMs cannot find reasoning errors, but can correct them given the error location" (2024)</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p><a href="https://www.amazon.science/publications/enhancing-llm-as-a-judge-via-multi-agent-collaboration">Qian et al., &#8220;Enhancing LLM-as-a-judge via multi-agent collaboration&#8221; (2025)</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p><a href="https://arxiv.org/abs/2404.18796">Verga et al., &#8220;Replacing Judges with Juries: Evaluating LLM Generations with a Panel of Diverse Models&#8221; (2024)</a></p></div></div>]]></content:encoded></item><item><title><![CDATA[We used context engineering to 5x conversion and 2x activation]]></title><description><![CDATA[The magic behind our AI onboarding wizard]]></description><link>https://newsletter.posthog.com/p/we-used-ai-to-5x-conversion-and-2x</link><guid isPermaLink="false">https://newsletter.posthog.com/p/we-used-ai-to-5x-conversion-and-2x</guid><dc:creator><![CDATA[Edwin Lim]]></dc:creator><pubDate>Wed, 24 Jun 2026 20:01:49 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8b27cd51-6130-413b-bd94-a61af1985aa9_2912x2096.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>It all started with a friction log.</span></p><p><span>A year ago, </span><a href="https://posthog.com/community/profiles/32497?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=context-engineering"><span>Josh Snyder</span></a><span>, then on the growth team, binged session recordings of users trying to onboard to PostHog. The long list of failure modes was painful.</span></p><p><span>But it jolted an idea loose: what if AI could handle the onboarding for you? So we built an AI onboarding wizard.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Poz0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b4402a7-a6d8-4173-bb4e-dd9cae3e6164_1481x880.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Poz0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b4402a7-a6d8-4173-bb4e-dd9cae3e6164_1481x880.png 424w, https://substackcdn.com/image/fetch/$s_!Poz0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b4402a7-a6d8-4173-bb4e-dd9cae3e6164_1481x880.png 848w, https://substackcdn.com/image/fetch/$s_!Poz0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b4402a7-a6d8-4173-bb4e-dd9cae3e6164_1481x880.png 1272w, https://substackcdn.com/image/fetch/$s_!Poz0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b4402a7-a6d8-4173-bb4e-dd9cae3e6164_1481x880.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Poz0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b4402a7-a6d8-4173-bb4e-dd9cae3e6164_1481x880.png" width="1456" height="865" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1b4402a7-a6d8-4173-bb4e-dd9cae3e6164_1481x880.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:865,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:331362,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.posthog.com/i/203333056?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b4402a7-a6d8-4173-bb4e-dd9cae3e6164_1481x880.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_!Poz0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b4402a7-a6d8-4173-bb4e-dd9cae3e6164_1481x880.png 424w, https://substackcdn.com/image/fetch/$s_!Poz0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b4402a7-a6d8-4173-bb4e-dd9cae3e6164_1481x880.png 848w, https://substackcdn.com/image/fetch/$s_!Poz0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b4402a7-a6d8-4173-bb4e-dd9cae3e6164_1481x880.png 1272w, https://substackcdn.com/image/fetch/$s_!Poz0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b4402a7-a6d8-4173-bb4e-dd9cae3e6164_1481x880.png 1456w" sizes="100vw" fetchpriority="high"></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 aria-hidden="true" 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><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><span>The </span><a href="https://posthog.com/wizard?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=context-engineering"><span>PostHog Wizard</span></a><span> is an AI agent that fully integrates PostHog into any codebase with a single CLI command. No manual SDK installation, no docs spelunking. Just </span><code>npx @posthog/wizard</code><span>.</span></p><p><span>Early versions were primitive, but today&#8217;s wizard completes two hours of work in just 8 minutes. It&#8217;s a genuinely magical experience. People LOVE it.</span></p><p><span>Building it taught us some important lessons about how to build agents people genuinely love (with great ROI, too!), starting with the most important lesson of all...</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZOpn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9392eb22-9717-47ed-ada6-02ba3dd359f5_1345x638.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZOpn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9392eb22-9717-47ed-ada6-02ba3dd359f5_1345x638.png 424w, https://substackcdn.com/image/fetch/$s_!ZOpn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9392eb22-9717-47ed-ada6-02ba3dd359f5_1345x638.png 848w, https://substackcdn.com/image/fetch/$s_!ZOpn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9392eb22-9717-47ed-ada6-02ba3dd359f5_1345x638.png 1272w, https://substackcdn.com/image/fetch/$s_!ZOpn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9392eb22-9717-47ed-ada6-02ba3dd359f5_1345x638.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZOpn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9392eb22-9717-47ed-ada6-02ba3dd359f5_1345x638.png" width="1345" height="638" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9392eb22-9717-47ed-ada6-02ba3dd359f5_1345x638.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:638,&quot;width&quot;:1345,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:409113,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.posthog.com/i/203333056?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9392eb22-9717-47ed-ada6-02ba3dd359f5_1345x638.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_!ZOpn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9392eb22-9717-47ed-ada6-02ba3dd359f5_1345x638.png 424w, https://substackcdn.com/image/fetch/$s_!ZOpn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9392eb22-9717-47ed-ada6-02ba3dd359f5_1345x638.png 848w, https://substackcdn.com/image/fetch/$s_!ZOpn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9392eb22-9717-47ed-ada6-02ba3dd359f5_1345x638.png 1272w, https://substackcdn.com/image/fetch/$s_!ZOpn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9392eb22-9717-47ed-ada6-02ba3dd359f5_1345x638.png 1456w" sizes="100vw"></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 aria-hidden="true" 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><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><div><hr></div><h2>Lesson #1: Reasoning isn&#8217;t the bottleneck</h2><p><span>We initially tried solving everything at the agent layer &#8211; better </span><a href="https://posthog.com/blog/optimizing-agent-cost?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=context-engineering"><span>progressive disclosure</span></a><span> techniques, multi-step planning, subagents, pruning, compaction &#8211; but the gains were marginal.</span></p><p><span>The biggest improvements came from simply giving the agent more context. A lot more. That told us something about the shape of the problem.</span></p><p><span>With 20+ products, 17+ SDKs, and 25+ frameworks, there are thousands of ways to integrate PostHog, and each setup requires some piece of technical trivia, like:</span></p><ul><li><p><span>Where should PostHog initialize? Client, server, both, or serverless?</span></p></li><li><p><span>How do events get sent? Direct, or through a reverse proxy?</span></p></li><li><p><span>How are pages rendered? SSR or SSG? RSC?</span></p></li></ul><p><span>The agent routinely got these details wrong because it was operating in a context deficit. So we started engineering the context that powered it.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DK_8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bb056fe-b646-4155-b497-9c1b3c52b4a7_1454x722.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DK_8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bb056fe-b646-4155-b497-9c1b3c52b4a7_1454x722.png 424w, https://substackcdn.com/image/fetch/$s_!DK_8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bb056fe-b646-4155-b497-9c1b3c52b4a7_1454x722.png 848w, https://substackcdn.com/image/fetch/$s_!DK_8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bb056fe-b646-4155-b497-9c1b3c52b4a7_1454x722.png 1272w, https://substackcdn.com/image/fetch/$s_!DK_8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bb056fe-b646-4155-b497-9c1b3c52b4a7_1454x722.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DK_8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bb056fe-b646-4155-b497-9c1b3c52b4a7_1454x722.png" width="1454" height="722" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8bb056fe-b646-4155-b497-9c1b3c52b4a7_1454x722.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:722,&quot;width&quot;:1454,&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_!DK_8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bb056fe-b646-4155-b497-9c1b3c52b4a7_1454x722.png 424w, https://substackcdn.com/image/fetch/$s_!DK_8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bb056fe-b646-4155-b497-9c1b3c52b4a7_1454x722.png 848w, https://substackcdn.com/image/fetch/$s_!DK_8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bb056fe-b646-4155-b497-9c1b3c52b4a7_1454x722.png 1272w, https://substackcdn.com/image/fetch/$s_!DK_8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bb056fe-b646-4155-b497-9c1b3c52b4a7_1454x722.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 aria-hidden="true" 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><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 style="text-align: center;"><em><span>(The wizard is </span><a href="https://github.com/PostHog/wizard?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=context-engineering"><span>open source</span></a><span>. You should steal it!)</span></em></p><p><span>Our Docs team of technical writers became a Docs &amp; Wizard team of context engineers &#8211; same people, different mission. Their job became building a library of context for agents, and a delivery system that made it accessible.</span></p><p><span>The result was a company-wide context layer that could pull from everything we maintained: docs, source code, SDK references, example apps, anything that could widen the scope of what the agent could handle.</span></p><blockquote><p><strong><span>Remember: </span></strong><span>If your agent is tackling a high-variance problem like onboarding, reasoning usually isn&#8217;t the bottleneck. Context supply is.</span></p></blockquote><div><hr></div><h2><span>Lesson #2: Don&#8217;t hardcode knowledge</span></h2><p><span>The naive way to supply more context (which we did) was to hardcode it into its harness.</span></p><p><span>In </span><a href="https://posthog.com/blog/correct-llm-code-generation?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=context-engineering"><span>v1</span></a><span>, the wizard&#8217;s context and code were locked together, so the two couldn&#8217;t scale independently. Supporting a new framework or product in the wizard meant shipping a whole new agent.</span></p><p><span>Our answer was the </span><a href="https://github.com/PostHog/context-mill/tree/main"><span>context mill</span></a><span>, an assembly-line service for turning scattered PostHog knowledge into portable, versioned zip files that agents can consume remotely.</span></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EJFu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f5c922-fab1-47d8-bc83-f1e512b40181_1909x448.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EJFu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f5c922-fab1-47d8-bc83-f1e512b40181_1909x448.png 424w, https://substackcdn.com/image/fetch/$s_!EJFu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f5c922-fab1-47d8-bc83-f1e512b40181_1909x448.png 848w, https://substackcdn.com/image/fetch/$s_!EJFu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f5c922-fab1-47d8-bc83-f1e512b40181_1909x448.png 1272w, https://substackcdn.com/image/fetch/$s_!EJFu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f5c922-fab1-47d8-bc83-f1e512b40181_1909x448.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EJFu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f5c922-fab1-47d8-bc83-f1e512b40181_1909x448.png" width="1456" height="342" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a5f5c922-fab1-47d8-bc83-f1e512b40181_1909x448.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:342,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:87824,&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://newsletter.posthog.com/i/203333056?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f5c922-fab1-47d8-bc83-f1e512b40181_1909x448.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_!EJFu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f5c922-fab1-47d8-bc83-f1e512b40181_1909x448.png 424w, https://substackcdn.com/image/fetch/$s_!EJFu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f5c922-fab1-47d8-bc83-f1e512b40181_1909x448.png 848w, https://substackcdn.com/image/fetch/$s_!EJFu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f5c922-fab1-47d8-bc83-f1e512b40181_1909x448.png 1272w, https://substackcdn.com/image/fetch/$s_!EJFu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f5c922-fab1-47d8-bc83-f1e512b40181_1909x448.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><span>Here&#8217;s how the context mill works:</span></p><ol><li><p><span>It pulls context from our docs, source code, Open API specs, example apps, and other maintained sources.</span></p></li><li><p><span>It assembles the source material into a collection of zip files and cuts a versioned GitHub release.</span></p></li><li><p><span>It delivers each one as a skill or registers it with an MCP server as a resource.</span></p></li><li><p><span>It reaches every downstream agent without a redeploy or update.</span></p></li></ol><p><span>This lets us generate large libraries of skills that cover our entire platform with just a few simple build scripts. Then, at runtime, the wizard can browse a &#8220;skill menu&#8221; from the context mill&#8217;s manifest and choose the best skill for the job.</span></p><p><span>For example, if there&#8217;s a framework we don&#8217;t support yet, like serverless Next.js, we load the context into the mill and send it straight to the agent. It&#8217;s continuous context delivery.</span></p><p><span>The same pipeline also delivers skills to our </span><a href="https://github.com/PostHog/ai-plugin"><span>AI plugins</span></a><span>, </span><a href="https://posthog.com/code?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=context-engineering"><span>PostHog Code</span></a><span>, and our </span><a href="https://posthog.com/docs/model-context-protocol?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=context-engineering"><span>MCP</span></a><span> server.</span></p><blockquote><p><strong><span>Remember:</span></strong><span> The fastest way to make an agent obsolete is to hardcode its knowledge. Decouple the context from your harness and assemble it from sources of truth.</span></p></blockquote><div><hr></div><h2><span>Lesson #3: Fix context drift at the source</span></h2><p><span>The context mill solved packaging and distribution, but the wizard was still instrumenting out-of-date SDK versions and settings. We realized its context was going stale further upstream, at the source.</span></p><p><span>The culprit was something we&#8217;re very proud of: we ship fast. Like, </span><a href="https://posthog.com/newsletter/hidden-danger-of-shipping-fast?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=context-engineering"><span>weirdly fast</span></a><span>. Our cracked engineers were moving faster than our documentation could keep up with, which meant drift crept into the context mill&#8217;s output.</span></p><p><span>So we added a docs agent to close the loop on knowledge management.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!b753!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc13f0b7b-8f32-436a-b273-51ccee2a27d3_1251x788.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!b753!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc13f0b7b-8f32-436a-b273-51ccee2a27d3_1251x788.png 424w, https://substackcdn.com/image/fetch/$s_!b753!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc13f0b7b-8f32-436a-b273-51ccee2a27d3_1251x788.png 848w, https://substackcdn.com/image/fetch/$s_!b753!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc13f0b7b-8f32-436a-b273-51ccee2a27d3_1251x788.png 1272w, https://substackcdn.com/image/fetch/$s_!b753!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc13f0b7b-8f32-436a-b273-51ccee2a27d3_1251x788.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!b753!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc13f0b7b-8f32-436a-b273-51ccee2a27d3_1251x788.png" width="1251" height="788" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c13f0b7b-8f32-436a-b273-51ccee2a27d3_1251x788.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:788,&quot;width&quot;:1251,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:199184,&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://newsletter.posthog.com/i/203333056?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc13f0b7b-8f32-436a-b273-51ccee2a27d3_1251x788.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_!b753!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc13f0b7b-8f32-436a-b273-51ccee2a27d3_1251x788.png 424w, https://substackcdn.com/image/fetch/$s_!b753!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc13f0b7b-8f32-436a-b273-51ccee2a27d3_1251x788.png 848w, https://substackcdn.com/image/fetch/$s_!b753!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc13f0b7b-8f32-436a-b273-51ccee2a27d3_1251x788.png 1272w, https://substackcdn.com/image/fetch/$s_!b753!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc13f0b7b-8f32-436a-b273-51ccee2a27d3_1251x788.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 aria-hidden="true" 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><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><span>It uses a system of deep research subagents with RAG powered by </span><a href="https://inkeep.com/"><span>Inkeep</span></a><span>. The docs agent retrieves embeddings across our entire platform and internal repos, follows our style guide, and uses skills and MCPs to draft documentation.</span></p><p><span>Now every merged feature PR creates a corresponding docs PR, cross-referenced across multiple sources, diffed against existing pages, and ready for a human to review.</span></p><p><span>Within weeks, our docs velocity matched our code velocity. We&#8217;re at an all-time high in both.</span></p><blockquote><p><strong><span>Remember: </span></strong><span>If your context drifts, so does every agent consuming it. Build tight feedback loops, human-reviewed where necessary, between your sources and their maintained knowledge bases.</span></p></blockquote><div><hr></div><h2><span>Lesson #4: Reuse context to compose new skills</span></h2><p><span>Our context mill was delivering fresh but unstructured context at first. We needed a way to shape it into skills the agent could run.</span></p><p><span>So we gave the wizard a declarative YAML spec &#8211; a recipe for which pieces of context to pull together and how to assemble them into skills.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5fbB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27cdda2e-0566-4fcb-bbd4-438a2092f200_975x639.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5fbB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27cdda2e-0566-4fcb-bbd4-438a2092f200_975x639.png 424w, https://substackcdn.com/image/fetch/$s_!5fbB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27cdda2e-0566-4fcb-bbd4-438a2092f200_975x639.png 848w, https://substackcdn.com/image/fetch/$s_!5fbB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27cdda2e-0566-4fcb-bbd4-438a2092f200_975x639.png 1272w, https://substackcdn.com/image/fetch/$s_!5fbB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27cdda2e-0566-4fcb-bbd4-438a2092f200_975x639.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5fbB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27cdda2e-0566-4fcb-bbd4-438a2092f200_975x639.png" width="975" height="639" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/27cdda2e-0566-4fcb-bbd4-438a2092f200_975x639.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:639,&quot;width&quot;:975,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:230413,&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://newsletter.posthog.com/i/203333056?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27cdda2e-0566-4fcb-bbd4-438a2092f200_975x639.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_!5fbB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27cdda2e-0566-4fcb-bbd4-438a2092f200_975x639.png 424w, https://substackcdn.com/image/fetch/$s_!5fbB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27cdda2e-0566-4fcb-bbd4-438a2092f200_975x639.png 848w, https://substackcdn.com/image/fetch/$s_!5fbB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27cdda2e-0566-4fcb-bbd4-438a2092f200_975x639.png 1272w, https://substackcdn.com/image/fetch/$s_!5fbB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27cdda2e-0566-4fcb-bbd4-438a2092f200_975x639.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 aria-hidden="true" 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><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><span>Say we want to teach the wizard how to set up </span><a href="https://posthog.com/docs/error-tracking?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=context-engineering"><span>Error Tracking</span></a><span>. The context spec might include:</span></p><ul><li><p><span>A product overview</span></p></li><li><p><span>The relevant SDK reference</span></p></li><li><p><span>An example app</span></p></li></ul><p><span>But error tracking doesn&#8217;t work the same way in every language, so the spec also defines variants. The shared content stays put, and each variation swaps in its own specifics:</span></p><ul><li><p><strong><span>Shared</span></strong><span>: the product overview, the core instructions</span></p></li><li><p><strong><span>Python</span></strong><span>: the Python SDK reference, a Flask example app</span></p></li><li><p><strong><span>JavaScript</span></strong><span>: the JS SDK reference, a React example app</span></p></li></ul><p><span>The context mill then stitches everything into a collection of skills. Namespacing keeps the Python skill and the JavaScript skill from getting tangled up, even though they came from the same context recipe.</span></p><p><span>That&#8217;s how the wizard went from supporting 5 frameworks to 25+ in a few days. Composing context from shared pieces was more flexible and efficient than writing from scratch, even with AI&#8217;s help.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-6-t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a64391c-9059-4c89-83d4-b62bf4511b2c_1532x544.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-6-t!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a64391c-9059-4c89-83d4-b62bf4511b2c_1532x544.png 424w, https://substackcdn.com/image/fetch/$s_!-6-t!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a64391c-9059-4c89-83d4-b62bf4511b2c_1532x544.png 848w, https://substackcdn.com/image/fetch/$s_!-6-t!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a64391c-9059-4c89-83d4-b62bf4511b2c_1532x544.png 1272w, https://substackcdn.com/image/fetch/$s_!-6-t!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a64391c-9059-4c89-83d4-b62bf4511b2c_1532x544.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-6-t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a64391c-9059-4c89-83d4-b62bf4511b2c_1532x544.png" width="1456" height="517" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a64391c-9059-4c89-83d4-b62bf4511b2c_1532x544.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:517,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:336177,&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://newsletter.posthog.com/i/203333056?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a64391c-9059-4c89-83d4-b62bf4511b2c_1532x544.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_!-6-t!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a64391c-9059-4c89-83d4-b62bf4511b2c_1532x544.png 424w, https://substackcdn.com/image/fetch/$s_!-6-t!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a64391c-9059-4c89-83d4-b62bf4511b2c_1532x544.png 848w, https://substackcdn.com/image/fetch/$s_!-6-t!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a64391c-9059-4c89-83d4-b62bf4511b2c_1532x544.png 1272w, https://substackcdn.com/image/fetch/$s_!-6-t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a64391c-9059-4c89-83d4-b62bf4511b2c_1532x544.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 aria-hidden="true" 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><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><span>Once we had building blocks, we started seeing context shapes that should exist but didn&#8217;t, kind of like how building a REST API makes you notice endpoints inside your data model.</span></p><p><span>Take our </span><a href="https://github.com/PostHog/context-mill/pull/130"><span>audit-3000</span></a><span> skill from our recent hackathon. It chains multiple product guides, privacy pages, pricing, and a dozen other docs into a hyper-robust workflow that audits a PostHog setup for data integrity. It also comes with arcade games, because why not?</span></p><p><span>The skill&#8217;s shape and scope completely surprised us. But to the team who built it, it was obvious because the pieces were already there. The spec just made the combination easy to see.</span></p><blockquote><p><strong><span>Remember: </span></strong><span>Make context easy to compose, so anyone can mix and match knowledge and rapidly expand what your agents can do. Once experimentation is cheap, you can build powerful new skills based on intuition.</span></p></blockquote><div><hr></div><h2><span>Lesson #5: Eliminate context silos</span></h2><p><span>Going in, we assumed making the wizard work would mean creating context. We spent most of our time digging it out.</span></p><p><span>Like data, context is generated everywhere, but most of it sits stuck in silos.</span></p><p><span>We found those barriers everywhere at PostHog. The API references live in the codebase, the installation steps in the docs, and the troubleshooting steps in a runbook. All of it valuable context to the wizard, all of it trapped in separate systems.</span></p><p><span>We connected the gaps with a network of APIs, MCPs, CI/CD, and gateways, so context can circulate across the company. It looks less like a monolith and more like an ecosystem.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZItA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd02ecc74-89a5-4736-a333-6220a67c126f_1321x831.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZItA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd02ecc74-89a5-4736-a333-6220a67c126f_1321x831.png 424w, https://substackcdn.com/image/fetch/$s_!ZItA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd02ecc74-89a5-4736-a333-6220a67c126f_1321x831.png 848w, https://substackcdn.com/image/fetch/$s_!ZItA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd02ecc74-89a5-4736-a333-6220a67c126f_1321x831.png 1272w, https://substackcdn.com/image/fetch/$s_!ZItA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd02ecc74-89a5-4736-a333-6220a67c126f_1321x831.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZItA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd02ecc74-89a5-4736-a333-6220a67c126f_1321x831.png" width="1321" height="831" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d02ecc74-89a5-4736-a333-6220a67c126f_1321x831.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:831,&quot;width&quot;:1321,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:75883,&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://newsletter.posthog.com/i/203333056?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd02ecc74-89a5-4736-a333-6220a67c126f_1321x831.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_!ZItA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd02ecc74-89a5-4736-a333-6220a67c126f_1321x831.png 424w, https://substackcdn.com/image/fetch/$s_!ZItA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd02ecc74-89a5-4736-a333-6220a67c126f_1321x831.png 848w, https://substackcdn.com/image/fetch/$s_!ZItA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd02ecc74-89a5-4736-a333-6220a67c126f_1321x831.png 1272w, https://substackcdn.com/image/fetch/$s_!ZItA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd02ecc74-89a5-4736-a333-6220a67c126f_1321x831.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 aria-hidden="true" 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><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><span>It&#8217;s the same plumbing you already use for general software infrastructure, but landscaped for context, so it can run downhill to wherever it&#8217;s needed.</span></p><p><span>When a PR is merged, or a docs page is updated at PostHog, that context can reach an agent within minutes.</span></p><p><span>With the wizard&#8217;s context layer as shared infrastructure, we can ship a new customer-facing agent to production in an afternoon.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NEld!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b5a5b70-8b11-4049-b9f2-2a7924e7c61c_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NEld!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b5a5b70-8b11-4049-b9f2-2a7924e7c61c_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!NEld!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b5a5b70-8b11-4049-b9f2-2a7924e7c61c_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!NEld!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b5a5b70-8b11-4049-b9f2-2a7924e7c61c_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!NEld!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b5a5b70-8b11-4049-b9f2-2a7924e7c61c_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NEld!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b5a5b70-8b11-4049-b9f2-2a7924e7c61c_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3b5a5b70-8b11-4049-b9f2-2a7924e7c61c_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:247136,&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://newsletter.posthog.com/i/203333056?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b5a5b70-8b11-4049-b9f2-2a7924e7c61c_1920x1080.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_!NEld!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b5a5b70-8b11-4049-b9f2-2a7924e7c61c_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!NEld!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b5a5b70-8b11-4049-b9f2-2a7924e7c61c_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!NEld!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b5a5b70-8b11-4049-b9f2-2a7924e7c61c_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!NEld!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b5a5b70-8b11-4049-b9f2-2a7924e7c61c_1920x1080.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 aria-hidden="true" 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><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><span>Arguably the most powerful source of context we unlocked wasn&#8217;t even technical, it was our </span><a href="https://posthog.com/handbook?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=context-engineering"><span>company handbook</span></a><span>.</span></p><p><span>Because our business playbooks are open source alongside our docs, the same context system that produces skills for Next.js integrations can produce skills to support enterprise customers, or run marketing campaigns.</span></p><p><span>Today our </span><a href="https://posthog.com/teams?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=context-engineering"><span>small teams</span></a><span> are building their own fleet of wizards. Many as forward-deployed agents to help users with support, outreach, sales playbooks, and other business motions.</span></p><p><span>Turns out being a </span><a href="https://posthog.com/founders/how-to-run-a-transparent-company?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=context-engineering"><span>transparent company</span></a><span> also makes you agent-ready.</span></p><blockquote><p><strong><span>Remember:</span></strong><span> The context with the most leverage is the context you already have. Building shared infrastructure will free the context trapped within your systems to accelerate agent development across teams.</span></p></blockquote><div><hr></div><h2><span>Lesson #6: Investing in context pays off</span></h2><p><span>The wizard is one of the highest-impact things we&#8217;ve shipped, and the context behind it is the main reason why.</span></p><p><span>Here&#8217;s how it changed our onboarding:</span></p><ul><li><p><strong><span>5x paid conversion</span></strong><span>: 14.2% of wizard users convert to paid usage vs 2.6%</span></p></li><li><p><strong><span>2x faster activation</span></strong><span>: first event in 1.9 hours vs 3.8, with 94% activating within one hour vs 67%</span></p></li><li><p><strong><span>80% larger</span></strong><span> </span><strong><span>MRR</span></strong><span> in the first paying month</span></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_!qcsX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a19b89f-5592-4037-a9d3-536595f481b1_2002x876.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qcsX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a19b89f-5592-4037-a9d3-536595f481b1_2002x876.png 424w, https://substackcdn.com/image/fetch/$s_!qcsX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a19b89f-5592-4037-a9d3-536595f481b1_2002x876.png 848w, https://substackcdn.com/image/fetch/$s_!qcsX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a19b89f-5592-4037-a9d3-536595f481b1_2002x876.png 1272w, https://substackcdn.com/image/fetch/$s_!qcsX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a19b89f-5592-4037-a9d3-536595f481b1_2002x876.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qcsX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a19b89f-5592-4037-a9d3-536595f481b1_2002x876.png" width="1456" height="637" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7a19b89f-5592-4037-a9d3-536595f481b1_2002x876.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:637,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:118185,&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://newsletter.posthog.com/i/203333056?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a19b89f-5592-4037-a9d3-536595f481b1_2002x876.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_!qcsX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a19b89f-5592-4037-a9d3-536595f481b1_2002x876.png 424w, https://substackcdn.com/image/fetch/$s_!qcsX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a19b89f-5592-4037-a9d3-536595f481b1_2002x876.png 848w, https://substackcdn.com/image/fetch/$s_!qcsX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a19b89f-5592-4037-a9d3-536595f481b1_2002x876.png 1272w, https://substackcdn.com/image/fetch/$s_!qcsX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a19b89f-5592-4037-a9d3-536595f481b1_2002x876.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 aria-hidden="true" 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><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><span>Building a context layer is high-leverage for any company shipping agents, but it takes real investment and a shift in how you think about the work.</span></p><p><span>We created a whole </span><a href="https://posthog.com/teams/docs-wizard?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=context-engineering"><span>new team</span></a><span> for it. It&#8217;s a kind of work that didn&#8217;t exist a year ago, and it&#8217;s only going to get bigger as more of what companies ship runs on agents.</span></p><p><span>The job is context.</span></p><p><em>Words by Edwin Lim, who listed &#8220;context engineer&#8221; as an occupation and then had to explain it to his landlord over the phone.</em></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.posthog.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe for more magical tips</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2>&#128187; Other jobs at PostHog</h2><ul><li><p><strong><a href="https://posthog.com/careers/ai-research-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=context-engineering">AI Research Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/technical-customer-success-manager?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=context-engineering">Technical Customer Success Manager</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=context-engineering">Product Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/revenue-ops-manager-(sales-focused)?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=context-engineering">Revenue Ops Manager (sales focused)</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/technical-account-executive?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=context-engineering">Technical Account Executive</a></strong></p></li></ul><div><hr></div><h2>&#10133; Add these to your context layer</h2><ul><li><p><strong><a href="https://posthog.com/product-engineers/what-is-distributed-tracing?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=context-engineering">What is distributed tracing? (A guide for engineers)</a> &#8211; Daniel Visca</strong></p></li><li><p><strong><a href="https://lucumr.pocoo.org/2026/6/23/the-coming-loop/">The Coming Loop</a> &#8211; Armin Ronacher</strong></p></li><li><p><strong><a href="https://posthog.com/blog/what-if-your-product-built-itself?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=context-engineering">What if your product built itself?</a> &#8211; Josh Snyder, Cleo Lant </strong></p></li><li><p><strong><a href="https://posthog.com/blog/social-media-metrics-are-all-bad?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=context-engineering">All social media metrics are bad</a> &#8211; Liam Graham</strong></p></li><li><p><strong><a href="https://posthog.com/blog/what-is-a-scout?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=context-engineering">What is a scout? A technical deep dive</a> &#8211; Andy Maguire</strong></p></li><li><p><strong><a href="https://posthog.com/blog/everything-is-build-mode?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=context-engineering">Everything (and everyone) is build mode now</a> &#8211; Cleo Lant</strong></p></li></ul>]]></content:encoded></item><item><title><![CDATA[Why we're bullish on loops]]></title><description><![CDATA[WTF are loops, why is everyone arguing about them, and why do they actually matter?]]></description><link>https://newsletter.posthog.com/p/why-were-bullish-on-loops</link><guid isPermaLink="false">https://newsletter.posthog.com/p/why-were-bullish-on-loops</guid><dc:creator><![CDATA[Ian Vanagas]]></dc:creator><pubDate>Wed, 17 Jun 2026 17:48:56 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/67da4d23-4902-4607-9536-1440c2fb5a8c_2912x2096.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DZd_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3e8d8e1-40a3-4033-8205-5df87d0bbd40_1272x574.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DZd_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3e8d8e1-40a3-4033-8205-5df87d0bbd40_1272x574.png 424w, https://substackcdn.com/image/fetch/$s_!DZd_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3e8d8e1-40a3-4033-8205-5df87d0bbd40_1272x574.png 848w, https://substackcdn.com/image/fetch/$s_!DZd_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3e8d8e1-40a3-4033-8205-5df87d0bbd40_1272x574.png 1272w, https://substackcdn.com/image/fetch/$s_!DZd_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3e8d8e1-40a3-4033-8205-5df87d0bbd40_1272x574.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DZd_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3e8d8e1-40a3-4033-8205-5df87d0bbd40_1272x574.png" width="1272" height="574" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b3e8d8e1-40a3-4033-8205-5df87d0bbd40_1272x574.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:574,&quot;width&quot;:1272,&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;:false,&quot;topImage&quot;:true,&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_!DZd_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3e8d8e1-40a3-4033-8205-5df87d0bbd40_1272x574.png 424w, https://substackcdn.com/image/fetch/$s_!DZd_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3e8d8e1-40a3-4033-8205-5df87d0bbd40_1272x574.png 848w, https://substackcdn.com/image/fetch/$s_!DZd_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3e8d8e1-40a3-4033-8205-5df87d0bbd40_1272x574.png 1272w, https://substackcdn.com/image/fetch/$s_!DZd_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3e8d8e1-40a3-4033-8205-5df87d0bbd40_1272x574.png 1456w" sizes="100vw" fetchpriority="high"></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 aria-hidden="true" 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><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>When the creators of both OpenClaw and Claude Code speak, people listen. And last week <a href="https://x.com/steipete/status/2063697162748260627">Peter Steinberger</a> and Boris Cherny were <a href="https://www.youtube.com/watch?v=PfWVVI9ALd8&amp;t=1s">both talking about</a> the same concept: loops. </p><p>Their argument? You shouldn&#8217;t be prompting agents to write code, but building loops that prompt themselves to write code, so agents can complete long running tasks and you can use multiple agents at once to go further, faster.</p><h2>What&#8217;s needed to engineer a loop?</h2><p>You need four things:</p><h3>1. A goal</h3><p>Agents are capable, but you need to scope the loop so they know what you want them achieve. A loop without a goal is a slop cannon.</p><h3>2. Context</h3><p>Context is fuel and loops are often starved of it. Context can include tools, skills, analytics data, errors, memories &#8211; any information that helps the agent find work and complete the loop. It&#8217;s best to curate context and feed it throughout, rather than dump it all upfront. The agent needs to be able to fetch and react to new inputs.</p><h3>3.  Evaluation</h3><p>This is how the agent checks itself. <a href="https://posthog.com/blog/testing-ai-agents?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=loops">Tests</a>, evals, metrics, <a href="https://posthog.com/blog/stop-ai-slop?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=loops">LLM-as-judge</a>, playgrounds. Test-driven development is <em>so</em> <em>back</em>, or maybe it never left? This is a big difference between loops and prompting: agents do the verification, not engineers.</p><h3>4. An agent (obviously)</h3><p>The most basic is using something like Claude Code with a <code>while true</code> (aka <a href="https://ghuntley.com/ralph/">Ralph</a>) or using <code>/goal</code>. More complicated is purpose-built harnesses and context systems &#8211; e.g. an agent on a cron that pulls signals from your product data and emit work to subagents, or a loop that codegens its own test suite to verify itself. </p><p>Good examples of loops include:</p><ul><li><p><strong>PR babysitter.</strong> The goal is to get a pull request to pass tests and &#8220;get CI green.&#8221; The context is the changes (diff) as well as the testing suite, and the evaluation is done by the CI.</p></li><li><p><strong>Bug fixer.</strong> The goal is to fix the bug. The context is the bug report and error trace. The evaluation is the test suite, snapshots, logs.</p></li><li><p><strong>Flaky test hunter.</strong> The goal is to kill flaky tests. The context is CI history and retry logs. The eval is consecutive green runs.</p></li><li><p><strong>Performance autoresearcher.</strong> The goal is to beat a benchmark. The context is the system, metrics, and budget. The eval is whether it is faster, better, etc. on that metric. We recently used Karpathy&#8217;s autoresearcher loop and it <a href="https://posthog.com/blog/karpathy-autoresearch-query-engine-bug?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=loops">fixed a 3-year-old bug in our query engine</a> and increased performance by 11%.</p></li></ul><h2>Why is everyone talking about loops right now?</h2><p>Because it works. Yes, Peter and Boris lit the fire, but they&#8217;re doing so because it&#8217;s a real thing. The real &#8220;why now&#8221; is new and improved capabilities:</p><ol><li><p><strong>Models are better at long running tasks</strong>.<strong> </strong>METR finds that <a href="https://metr.org/time-horizons/">Opus 4.6 can complete 50% of tasks that take 12 hours</a>, over 6x the 1 hour 40 minutes of Opus 4 from a year ago. Fable (RIP) pushed this even further.</p></li><li><p><strong>Stories about huge tasks completed</strong>. Stripe performed a <a href="https://www.anthropic.com/news/claude-fable-5-mythos-5">codebase-wide migration in a day</a> that would take a team two months by hand. Lovable found it can now one shot apps that previously took hundreds of prompts to build.</p></li><li><p><strong>Loops are built-in now</strong>. Claude Code shipped a <code>/loop</code> command, both it and Codex have automations, and there&#8217;s even a <a href="https://github.com/anthropics/claude-code/tree/main/plugins/ralph-wiggum">Ralph plugin for Claude Code</a>.</p></li><li><p><strong>Subagents separate the loop from the work</strong>. The main loop can spin up subagents that do the work and report back, saving tokens and preventing degradation.</p></li><li><p><strong>Harnesses are maturing</strong>. Compaction keeps context windows from filling. Skills and <a href="https://posthog.com/blog/machine-copy-paste-mcp-intro">MCP</a> enable agents to use more tools. Cloud execution lets you kick off a loop and walk away.</p></li></ol><p>Loops didn&#8217;t magic themselves into existence based on a couple of tweets. They&#8217;re an expression of real industry-wide progress.</p><h2>Loops are not just a new AI thing</h2><p>Critics deride loops as a ploy from OpenAI and Anthropic to get everyone tokenmaxxing, but we think there&#8217;s a greater goal here: <a href="https://posthog.com/blog/self-driving-product?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=loops">self-driving products</a>. </p><p>Rather than an engineer needing to prompt an agent to progress a project, the agent can prompt itself. The product improves itself without input. User problems get solved faster and yes, numbers go up.</p><p>And here&#8217;s the thing, <a href="https://posthog.com/product-engineer/what-is-a-product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=loops">product engineers</a> already complete this loop manually by:</p><ol><li><p>Collecting data through analytics and talking to users</p></li><li><p>Building and shipping improvements to their products based on that data</p></li><li><p>Evaluating how that improvement performed to guide future development</p></li><li><p>Repeating constantly</p></li></ol><p>PostHog has helped product engineers complete this loop for years now, so we think we&#8217;re in a great position to help agents with it too. It&#8217;s why we&#8217;re betting on building features that help make your product self-driving, like <a href="https://posthog.com/slack?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=loops">our Slack app</a>, <a href="https://posthog.com/code?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=loops">PostHog Code</a>, and <a href="https://posthog.com/replay-vision?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=loops">Replay Vision</a>. Yes, we&#8217;re a little AI-pilled.</p><p>There are, of course, limits. Loops aren&#8217;t about to eliminate all engineering work, but they can put the 1% gains on cruise control: the bugs, UX issues, <a href="https://posthog.com/blog/slack-app-beta?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=loops">paper cuts</a>, and conversion tweaks. The things that drain engineering hours, but rarely need strategic input.</p><p>The more you can automate these tasks, the more time you can spend on more impactful and (frankly) interesting work. The &#8220;self&#8221; in self-driving doesn&#8217;t mean autonomy from the engineer, it&#8217;s autonomy from user instruction as the starting point.</p><h2>Code was never the problem</h2><p>The opposition to loops is easy to understand: it&#8217;s another shift in the way software is built. Being told they should be &#8220;designing loops&#8221; makes engineers feel like they&#8217;re being replaced. The work is increasingly abstracted away from writing code.</p><p>But the rise of product engineers already showed that writing code was only a small portion of the work. The direction, taste, and empathy of a product engineer remain critical for building successful products in a loop-driven future.</p><p><em>Words by Ian Vanagas whose favorite type of loop is froot.</em></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.posthog.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe to power the loop that produces more posts like this one.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[LLMs are picking winners. Here’s how to become one]]></title><description><![CDATA[A startup's guide to answer engine optimization]]></description><link>https://newsletter.posthog.com/p/llms-are-picking-winners-heres-how</link><guid isPermaLink="false">https://newsletter.posthog.com/p/llms-are-picking-winners-heres-how</guid><dc:creator><![CDATA[Natalia Amorim]]></dc:creator><pubDate>Mon, 08 Jun 2026 18:11:58 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/540f98b0-57fc-4156-99a6-b499d4736334_1569x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the last two years, our traffic from LLMs grew 41x. Every quarter set a new record with no signs of slowing down.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8AOB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfc7437a-2953-4385-913e-18cd245ee9f7_1456x1048.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8AOB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfc7437a-2953-4385-913e-18cd245ee9f7_1456x1048.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8AOB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfc7437a-2953-4385-913e-18cd245ee9f7_1456x1048.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8AOB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfc7437a-2953-4385-913e-18cd245ee9f7_1456x1048.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8AOB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfc7437a-2953-4385-913e-18cd245ee9f7_1456x1048.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8AOB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfc7437a-2953-4385-913e-18cd245ee9f7_1456x1048.jpeg" width="1456" height="1048" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dfc7437a-2953-4385-913e-18cd245ee9f7_1456x1048.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1048,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;AI chatbot traffic count&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="AI chatbot traffic count" title="AI chatbot traffic count" srcset="https://substackcdn.com/image/fetch/$s_!8AOB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfc7437a-2953-4385-913e-18cd245ee9f7_1456x1048.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8AOB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfc7437a-2953-4385-913e-18cd245ee9f7_1456x1048.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8AOB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfc7437a-2953-4385-913e-18cd245ee9f7_1456x1048.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8AOB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfc7437a-2953-4385-913e-18cd245ee9f7_1456x1048.jpeg 1456w" sizes="100vw" fetchpriority="high"></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 aria-hidden="true" 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><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&#8217;re a skeptic like me, you&#8217;re probably about to ask: <em>&#8220;WeLL, BuT dOeS iT cOnvErT?&#8221;</em></p><p>Yes, yes it does. Better than almost anything else we have.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xlrz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c67a89a-9a68-462e-bf7e-b38023216433_1456x1048.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xlrz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c67a89a-9a68-462e-bf7e-b38023216433_1456x1048.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xlrz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c67a89a-9a68-462e-bf7e-b38023216433_1456x1048.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xlrz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c67a89a-9a68-462e-bf7e-b38023216433_1456x1048.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xlrz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c67a89a-9a68-462e-bf7e-b38023216433_1456x1048.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xlrz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c67a89a-9a68-462e-bf7e-b38023216433_1456x1048.jpeg" width="1456" height="1048" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4c67a89a-9a68-462e-bf7e-b38023216433_1456x1048.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1048,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;LLM conversion rates&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="LLM conversion rates" title="LLM conversion rates" srcset="https://substackcdn.com/image/fetch/$s_!xlrz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c67a89a-9a68-462e-bf7e-b38023216433_1456x1048.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xlrz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c67a89a-9a68-462e-bf7e-b38023216433_1456x1048.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xlrz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c67a89a-9a68-462e-bf7e-b38023216433_1456x1048.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xlrz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c67a89a-9a68-462e-bf7e-b38023216433_1456x1048.jpeg 1456w" sizes="100vw"></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 aria-hidden="true" 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><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>I&#8217;m not telling you this to humble brag <em>(well, maybe a little)</em>. I&#8217;m telling you because the inverse is also true.</p><p>PostHog has <a href="https://posthog.com/products?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo">14 products and counting</a>, and (sadly) not all of them are recommended by LLMs at the same scale or rate. While most models know us for <a href="http://posthog.com/product-analytics?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo">product analytics</a>, <a href="https://posthog.com/session-replay?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo">session replay</a>, <a href="http://posthog.com/error-tracking?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo">error tracking</a>, and <a href="https://posthog.com/feature-flags?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo">feature flags</a>, fewer acknowledge we also offer a <a href="https://posthog.com/data-stack?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo">data warehouse</a>, <a href="https://posthog.com/ai-observability?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo">AI observability</a>, <a href="https://posthog.com/logs?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo">logs</a>, and a lot more.</p><p>This is likely the case for your product too. Changing it requires dipping into the mystical new field of answer engine optimization (AEO), which I&#8217;ve learned a lot about as the person responsible for it at PostHog over the last year.</p><h2>1. Do LLMs even know you exist?</h2><p>Your first step should be finding out if you&#8217;re being mentioned at all.</p><ol><li><p>Go to ChatGPT, Claude, and Gemini (make sure memory is off or private mode is on).</p></li><li><p>Run 3-5 basic prompts a real customer would use like &#8220;best X tool&#8221; or &#8220;alternative to Y&#8221; or &#8220;recommended Z product.&#8221; Being more specific is <em>less</em> helpful here.</p></li><li><p>See where you show up, are missing, or are misrepresented.</p></li></ol><p>If you want a more robust opinion, pick one of the dozens of AEO tools that have launched in the last year.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> A decent tool runs hundreds of prompts for you every day, which gives a clearer picture into your LLM visibility over time and across models.</p><p>Don&#8217;t overthink this, choose a tool that fits your budget comfortably and matches your usual analysis workflow.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!puTk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedef3539-1388-4c8b-a791-18fbe782d05d_2048x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!puTk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedef3539-1388-4c8b-a791-18fbe782d05d_2048x1474.png 424w, https://substackcdn.com/image/fetch/$s_!puTk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedef3539-1388-4c8b-a791-18fbe782d05d_2048x1474.png 848w, https://substackcdn.com/image/fetch/$s_!puTk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedef3539-1388-4c8b-a791-18fbe782d05d_2048x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!puTk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedef3539-1388-4c8b-a791-18fbe782d05d_2048x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!puTk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedef3539-1388-4c8b-a791-18fbe782d05d_2048x1474.png" width="1456" height="1048" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/edef3539-1388-4c8b-a791-18fbe782d05d_2048x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1048,&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_!puTk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedef3539-1388-4c8b-a791-18fbe782d05d_2048x1474.png 424w, https://substackcdn.com/image/fetch/$s_!puTk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedef3539-1388-4c8b-a791-18fbe782d05d_2048x1474.png 848w, https://substackcdn.com/image/fetch/$s_!puTk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedef3539-1388-4c8b-a791-18fbe782d05d_2048x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!puTk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedef3539-1388-4c8b-a791-18fbe782d05d_2048x1474.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 aria-hidden="true" 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><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 LLMs and your AEO tool will reveal you almost certainly aren&#8217;t in the place you want to be (we aren&#8217;t). This doesn&#8217;t mean you&#8217;re doomed, it&#8217;s where the rest of this post comes in.</p><p>Models rely on both their training data (often from 6+ months ago) and search to create responses. To get into the game, you need your product to show up in the places LLMs are looking.</p><p>How do you do this?</p><h2>2. SEO isn&#8217;t dead, it just got a new job</h2><p>Here&#8217;s the least sexy but most obvious piece of advice: <strong>most of <a href="https://posthog.com/newsletter/seo-for-startups">traditional SEO</a> still works.</strong></p><p>Good structure, clear writing, semantic HTML, internal linking, fast load times, answering the damn question instead of burying it under 400 words of <em>&#8220;in today&#8217;s fast-paced digital landscape&#8230;&#8221;</em> all still matters.</p><p>The takeaway here isn&#8217;t &#8220;SEO is dead, long live AEO.&#8221; It&#8217;s that SEO and AEO are drinking from the same well, the difference is how they drink it.</p><p>Now, the unit of consumption is a chunk, not a page. Your content needs to be citable in pieces, not just useful as a whole.</p><p>Which means the &#8220;AEO checklist&#8221;<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> most of the industry already agrees on looks something like:</p><ul><li><p><strong>Make your content scannable.</strong> Subheadings, short paragraphs, lists where lists belong.</p></li><li><p><strong>Use natural language.</strong> Write like a person explaining something to another person.</p></li><li><p><strong>Answer questions directly.</strong> If someone asks &#8220;what is X,&#8221; tell them in the first sentence. Supporting context comes after.</p></li><li><p><strong>Structure for retrieval.</strong> H2s that are actual questions, definitions that can stand alone, summary tables, clear data, FAQs.</p></li><li><p><strong>Be specific.</strong> Models favor content with concrete details (real numbers, named tools, specific scenarios) over vague gesturing. <strong>&#8220;Most teams hate GA4&#8221;</strong> is forgettable; <strong>&#8220;73% of teams using GA4 fantasize about leaving&#8221;</strong> is citable. <em>(I made that up. Google legal team, don&#8217;t @ me... it&#8217;s probably true anyway.)</em></p></li></ul><p>I'm not going to pretend I'm reinventing the wheel over here; everything I just listed would also be considered <a href="https://posthog.com/newsletter/seo-for-startups?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo">good SEO advice</a> in 2019. The stakes are just higher now, and we have the benefit of hindsight to back it up.</p><p>Spoiler: if you&#8217;re looking for examples for how to do this... you&#8217;re reading it right now.</p><h2>3. Pick your battles</h2><p>If "the basics" above sound underwhelming, you're not alone.</p><p>Most people read a list like that and immediately wonder what else is there to do &#8211; and lucky for them, AEO has no shortage of side quests to embark on:</p><ul><li><p>Optimize your Reddit presence</p></li><li><p>Claim your Wikipedia page</p></li><li><p>Build a YouTube strategy</p></li><li><p>Get mentioned in traditional press</p></li><li><p>Chase down that one blog post a guy wrote on Medium in 2023 that&#8217;s outranking your product page</p></li></ul><p>There's this underlying pressure to show up on every surface that might influence how LLMs talk about you &#8211; and it's true, they all might. That's the catch.</p><p>When you don&#8217;t really know what&#8217;s feeding the models, everything is a potential input, which means everything becomes a candidate for your time.</p><p>Here&#8217;s the rule I&#8217;ve settled on: <strong>clean your house first</strong>. Making sure your owned content is genuinely great is step one. Everything else comes after.</p><p>That doesn&#8217;t mean ignore the extra stuff forever; it means <strong>do them when you have the capacity to do them well</strong>, not when you&#8217;re panicking that your competitor has a Reddit thread and you don&#8217;t.</p><h2>4. Call the bullshit, especially your own</h2><p>There has never been an easier time to be a charlatan in this industry. It is trivially easy to say <em>&#8220;I increased prompt visibility 50x&#8221;</em> when you&#8217;re the one who chose the prompts &#8211; and god knows if anyone actually asked them.</p><p><em>&#8220;Who is the best Brazilian-Canadian content marketer with copper hair and a birthmark on her left hip?&#8221;</em> OH MY GOD IT&#8217;S ME!</p><p>I optimized the result to be me. Groundbreaking AEO work.</p><p>See what I did there?</p><p>In a world with no real prompt volume data <em>(and no, please don&#8217;t come at me with tales of clickstream</em><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a><em>)</em>, there are no definitive results either.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fwcP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5dda62e-1315-4df3-973e-ab0a3741d7de_978x730.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fwcP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5dda62e-1315-4df3-973e-ab0a3741d7de_978x730.png 424w, https://substackcdn.com/image/fetch/$s_!fwcP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5dda62e-1315-4df3-973e-ab0a3741d7de_978x730.png 848w, https://substackcdn.com/image/fetch/$s_!fwcP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5dda62e-1315-4df3-973e-ab0a3741d7de_978x730.png 1272w, https://substackcdn.com/image/fetch/$s_!fwcP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5dda62e-1315-4df3-973e-ab0a3741d7de_978x730.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fwcP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5dda62e-1315-4df3-973e-ab0a3741d7de_978x730.png" width="978" height="730" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5dda62e-1315-4df3-973e-ab0a3741d7de_978x730.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:730,&quot;width&quot;:978,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Prompt volume data&quot;,&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="Prompt volume data" title="Prompt volume data" srcset="https://substackcdn.com/image/fetch/$s_!fwcP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5dda62e-1315-4df3-973e-ab0a3741d7de_978x730.png 424w, https://substackcdn.com/image/fetch/$s_!fwcP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5dda62e-1315-4df3-973e-ab0a3741d7de_978x730.png 848w, https://substackcdn.com/image/fetch/$s_!fwcP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5dda62e-1315-4df3-973e-ab0a3741d7de_978x730.png 1272w, https://substackcdn.com/image/fetch/$s_!fwcP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5dda62e-1315-4df3-973e-ab0a3741d7de_978x730.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 aria-hidden="true" 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><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 whole discipline is mostly propped up on assumptions and operating on vibes. Which is fine (we&#8217;re early) but it means your job is to be the most honest person in every room you&#8217;re in.</p><p>That means questioning <em>everything</em>, especially the stuff that makes you look good. When your own dashboard tells you something flattering, be twice as suspicious as when it tells you something bad.</p><p>When a vendor shows you a case study, ask <em>50x over what baseline? Measured how?</em> Especially watch for &#8220;we tracked it&#8221; being passed off as &#8220;we caused it&#8221; &#8211; a lot of &#8220;AEO impact&#8221; case studies are correlation dressed up as causation.</p><p>And when the honest answer is &#8220;I don&#8217;t know yet,&#8221; say that.</p><p>This will save you a lot of pain that comes from building a strategy on a lie you told yourself.</p><h2>5. You can just&#8230; ask</h2><p>I&#8217;m not great at the whole not knowing thing, so I worked around it. We added a conditional question to our onboarding flow: whenever someone says they heard about us through AI, we ask them which prompt they used.</p><p>To my surprise, people answer. In detail. Sometimes long, long paragraphs of detail.</p><p>Now we have first-party data on the prompts actually leading people to us. Real sentences typed by real humans with real credit cards.</p><p>As of today, <strong>9,214</strong> of them to be exact (and we&#8217;ve only been doing this for 3 months).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wnCk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7030fa0-8426-45c5-a869-6b71d5b9ba06_776x472.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wnCk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7030fa0-8426-45c5-a869-6b71d5b9ba06_776x472.png 424w, https://substackcdn.com/image/fetch/$s_!wnCk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7030fa0-8426-45c5-a869-6b71d5b9ba06_776x472.png 848w, https://substackcdn.com/image/fetch/$s_!wnCk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7030fa0-8426-45c5-a869-6b71d5b9ba06_776x472.png 1272w, https://substackcdn.com/image/fetch/$s_!wnCk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7030fa0-8426-45c5-a869-6b71d5b9ba06_776x472.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wnCk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7030fa0-8426-45c5-a869-6b71d5b9ba06_776x472.png" width="776" height="472" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c7030fa0-8426-45c5-a869-6b71d5b9ba06_776x472.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:472,&quot;width&quot;:776,&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_!wnCk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7030fa0-8426-45c5-a869-6b71d5b9ba06_776x472.png 424w, https://substackcdn.com/image/fetch/$s_!wnCk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7030fa0-8426-45c5-a869-6b71d5b9ba06_776x472.png 848w, https://substackcdn.com/image/fetch/$s_!wnCk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7030fa0-8426-45c5-a869-6b71d5b9ba06_776x472.png 1272w, https://substackcdn.com/image/fetch/$s_!wnCk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7030fa0-8426-45c5-a869-6b71d5b9ba06_776x472.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 aria-hidden="true" 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><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>Every morning, our PostHog Slack automation drops a report with 50&#8211;100+ real prompts submitted by users who signed up on the previous day. <a href="https://posthog.com/ai?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo">PostHog AI</a> helps me identify patterns and pull out useful little nuggets of information, which I feed straight back into our strategy.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JGSt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac7f151a-2e4a-4be8-b3ba-eb953a3a30f1_1602x1012.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JGSt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac7f151a-2e4a-4be8-b3ba-eb953a3a30f1_1602x1012.png 424w, https://substackcdn.com/image/fetch/$s_!JGSt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac7f151a-2e4a-4be8-b3ba-eb953a3a30f1_1602x1012.png 848w, https://substackcdn.com/image/fetch/$s_!JGSt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac7f151a-2e4a-4be8-b3ba-eb953a3a30f1_1602x1012.png 1272w, https://substackcdn.com/image/fetch/$s_!JGSt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac7f151a-2e4a-4be8-b3ba-eb953a3a30f1_1602x1012.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JGSt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac7f151a-2e4a-4be8-b3ba-eb953a3a30f1_1602x1012.png" width="1456" height="920" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ac7f151a-2e4a-4be8-b3ba-eb953a3a30f1_1602x1012.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:920,&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_!JGSt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac7f151a-2e4a-4be8-b3ba-eb953a3a30f1_1602x1012.png 424w, https://substackcdn.com/image/fetch/$s_!JGSt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac7f151a-2e4a-4be8-b3ba-eb953a3a30f1_1602x1012.png 848w, https://substackcdn.com/image/fetch/$s_!JGSt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac7f151a-2e4a-4be8-b3ba-eb953a3a30f1_1602x1012.png 1272w, https://substackcdn.com/image/fetch/$s_!JGSt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac7f151a-2e4a-4be8-b3ba-eb953a3a30f1_1602x1012.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 aria-hidden="true" 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><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>It&#8217;s an amazing feedback loop. The best part is that it cost roughly zero dollars to set up, and it&#8217;s become one of the most (if not the most) valuable strategic inputs in my entire reporting stack.</p><p>It has also been a goldmine of unfiltered user thoughts, which I love.</p><p>Best was the user who found out about PostHog in Fortnite voice chat, specifically talking to a Darth Vader NPC about analyzing the Fortnite economy. I think about him often.</p><h2>6. AEO reporting is a quilt, not a blanket</h2><p>No single data source tells the full story. Not yet, anyway.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nGef!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3d2b938-06af-4d86-ad94-96bbc3e40355_1456x1416.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nGef!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3d2b938-06af-4d86-ad94-96bbc3e40355_1456x1416.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nGef!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3d2b938-06af-4d86-ad94-96bbc3e40355_1456x1416.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nGef!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3d2b938-06af-4d86-ad94-96bbc3e40355_1456x1416.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nGef!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3d2b938-06af-4d86-ad94-96bbc3e40355_1456x1416.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nGef!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3d2b938-06af-4d86-ad94-96bbc3e40355_1456x1416.jpeg" width="1456" height="1416" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a3d2b938-06af-4d86-ad94-96bbc3e40355_1456x1416.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1416,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Reporting stack&quot;,&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="Reporting stack" title="Reporting stack" srcset="https://substackcdn.com/image/fetch/$s_!nGef!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3d2b938-06af-4d86-ad94-96bbc3e40355_1456x1416.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nGef!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3d2b938-06af-4d86-ad94-96bbc3e40355_1456x1416.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nGef!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3d2b938-06af-4d86-ad94-96bbc3e40355_1456x1416.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nGef!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3d2b938-06af-4d86-ad94-96bbc3e40355_1456x1416.jpeg 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 aria-hidden="true" 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><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><ul><li><p><strong>Referrer traffic</strong> catches some of it, but not everything is properly tagged.</p></li><li><p><strong>Self-reported attribution</strong> catches more, but not everyone answers the question.</p></li><li><p><strong>Bot analytics</strong> (who&#8217;s crawling you, how often, for what) helps you understand what the models are <em>seeing</em>, which is a different question than what the models are <em>saying</em>.</p></li><li><p><strong>Prompt visibility tools</strong> tell you what the models are saying, but only for the prompts you thought to track.</p></li></ul><p>We can poke holes in every one of these sources.</p><p>Is it annoying? Yes, very. The last decade of clean(ish) attribution coddled us &#8211; anyone in growth, marketing, or analytics got used to a dashboard where everything reconciled. AEO isn&#8217;t going to give us that anytime soon.</p><p>If you&#8217;re a founder watching your team try to report on this, give them grace; if you&#8217;re the one reporting on it, godspeed.</p><p>So does that mean you don&#8217;t report on it? No. Sometimes you tell the story even if all you have is duct tape and a dream.</p><p>The good news is that this has gotten dramatically easier <a href="https://posthog.com/docs/model-context-protocol?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo">thanks to MCPs</a>. If your data sources have them, your agent can fetch from each one and help you see the bigger picture.</p><p>Mine pulls from <a href="https://posthog.com/blog/aeo-advice?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo#3-dont-overthink-the-tools">Gauge</a> for prompt visibility; Google Search Console for clicks, impressions, and rankings; and <a href="https://posthog.com/docs/model-context-protocol?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo">PostHog</a> for traffic, conversion, product-level breakdowns, our self-attribution survey, and prompt data for the qualitative side.</p><p>It&#8217;s not magic, and it&#8217;s not always clear cut, but it&#8217;s a hell of a lot better than copy-pasting between four tabs and praying the numbers line up.</p><h2>7. Be prepared to start over</h2><p>A few months in, I realized we were tracking hundreds of AI-generated prompts, but they had little overlap with the prompts real people were actually using to find us. <em>(How did I figure that out? See #4 and #5.)</em></p><p>Which meant six months of historical data aged like milk.</p><p>When you&#8217;re working in a discipline this new, any data feels sacred, so admitting to my team and myself that ours needed to be scrapped was a tough pill to swallow. It would&#8217;ve been easier if there was a playbook to defer to; there isn&#8217;t.</p><p>But we started over anyway, and <a href="https://posthog.com/blog/aeo-advice?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo#frequently-asked-aeo-questions">the new approach</a> is already producing more useful data than the old one ever did.</p><p>Zoom out and the same principle applies to everything else in AEO. The models change constantly; a feature that didn&#8217;t exist last week can completely rewire the landscape you thought you&#8217;d figured out. A win today may not be a win tomorrow.</p><p>What I&#8217;m trying to say here is that <strong>adaptability isn&#8217;t a nice-to-have</strong>. In mature channels, being attached to your v1 is inefficient; in a new one like AEO, it can be fatal.</p><p>The key is to not fear it, but to expect it.</p><p><em>Words by Natalia, who believes in throwing pasta at the wall and seeing what sticks (figuratively and literally)</em></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.posthog.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe for more winning content</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2>&#129302; More content that LLMs will read, but you should too</h2><ul><li><p><strong><a href="https://posthog.com/blog/karpathy-autoresearch-query-engine-bug?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo">Karpathy&#8217;s Autoresearch found a 3-year-old bug in our query engine (and improved performance by 11%)</a> - Robbie Coomber</strong></p></li><li><p><strong><a href="https://posthog.com/blog/pm-pmm-collaboration?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo">Collaboration sucks, but PMs and PMMs need each other</a> - Sara Miteva</strong></p></li><li><p><strong><a href="https://posthog.com/blog/slack-app-beta?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo">We put PostHog in Slack and now everyone&#8217;s an engineer</a> - Cleo Lant</strong></p></li><li><p><strong><a href="https://posthog.com/blog/joe-os-analytics?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo">I didn&#8217;t understand the OS I built with AI until the MCP gave it analytics</a> - Joe Martin</strong></p></li><li><p><strong><a href="https://www.figma.com/blog/what-matters-when-anyone-can-build">What matters when anyone can build</a> - Yuhki Yamashita</strong></p></li></ul><div><hr></div><h2>&#129428; Jobs at PostHog</h2><ul><li><p><strong><a href="https://posthog.com/careers/product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo">Product Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/technical-customer-success-manager?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo">Technical Customer Success Manager</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/backend-engineer-ingestion?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo">Backend Engineer &#8212; Ingestion</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/forward-deployed-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo">Forward Deployed Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/backend-engineer-billing?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo">Backend Engineer &#8212; Billing</a></strong></p></li></ul><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>I went with <a href="https://www.withgauge.com?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo">Gauge</a> for one reason that mattered to me more than anything else: their team builds <em>with</em> us, not <em>at</em> us. More on that <a href="https://posthog.com/blog/aeo-advice?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo#3-dont-overthink-the-tools">here</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>For a deeper look at how we approach all of this in practice, check out <a href="https://posthog.com/handbook/content/seo-guide?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=aeo">our AEO/SEO writing guide</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>&#8220;Clickstream&#8221; is the catch-all term for behavioral data scraped (often without users realizing) from browser extensions, ISPs, or app SDKs. Vendors who sell AEO tools love it because it&#8217;s the only data source that even pretends to estimate prompt volume. The problem: the panels can be limited (relative to the user populations they&#8217;re trying to model), geographically skewed (mostly US, mostly Chrome users), and demographically self-selected. Extrapolating &#8220;global ChatGPT prompt volume&#8221; from a sample of a few million people who installed an extension that promised free coupons is, in my opinion, shaky at best, so tread lightly when using it as a source of truth.</p></div></div>]]></content:encoded></item><item><title><![CDATA[24 tips for giving S-tier demos]]></title><description><![CDATA[An engineer's guide to giving S-tier project demos]]></description><link>https://newsletter.posthog.com/p/how-to-demo</link><guid isPermaLink="false">https://newsletter.posthog.com/p/how-to-demo</guid><dc:creator><![CDATA[Jina Yoon]]></dc:creator><pubDate>Thu, 28 May 2026 18:01:25 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/7b486099-4af3-4730-bd94-85219da88749_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A good demo can be the difference between a project shipping or shutting down, and a startup getting funded or going nowhere.</p><p>Yet most developers don&#8217;t invest in learning how to demo well &#8211; probably because we enjoy building things more than presenting them.</p><p>I watched 50+ <a href="https://posthog.com/newsletter/hackathons?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=how-to-demo">hackathon</a> demos back to back at our offsite last week and, after that many in a row, some patterns became super obvious. </p><p>Here's a practical list of what set the S-tier demos apart from the rest.</p><div><hr></div><h2>The basic structure</h2><p>1. Pick one main point you want people to remember and make everything else in your demo revolve around it. Typically, this should be the problem you&#8217;re solving and how you&#8217;re solving it.</p><p>2. Get to your main point as soon as possible. No one needs the whole story behind the idea &#8211; if you need context, keep it 1-2 sentences max.</p><p>3. Treat the demo like a pitch, not a product walkthrough. The goal isn&#8217;t to just show off the cool thing you made, it&#8217;s to get people excited about it. </p><p>4. End with something immediately actionable. It can be as literal as a QR code, or simply calling for contributors and inviting audience questions.</p><p>One team during our offsite hackathon created a system that lets you interact with PostHog over any messaging app, so they put up a phone number in their last slide (which I texted right away):</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bpPS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d173f69-7714-4bb8-a1cb-d789fd1d8a1a_1584x865.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bpPS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d173f69-7714-4bb8-a1cb-d789fd1d8a1a_1584x865.png 424w, https://substackcdn.com/image/fetch/$s_!bpPS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d173f69-7714-4bb8-a1cb-d789fd1d8a1a_1584x865.png 848w, https://substackcdn.com/image/fetch/$s_!bpPS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d173f69-7714-4bb8-a1cb-d789fd1d8a1a_1584x865.png 1272w, https://substackcdn.com/image/fetch/$s_!bpPS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d173f69-7714-4bb8-a1cb-d789fd1d8a1a_1584x865.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bpPS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d173f69-7714-4bb8-a1cb-d789fd1d8a1a_1584x865.png" width="1456" height="795" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d173f69-7714-4bb8-a1cb-d789fd1d8a1a_1584x865.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:795,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:350975,&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://newsletter.posthog.com/i/199406149?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d173f69-7714-4bb8-a1cb-d789fd1d8a1a_1584x865.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_!bpPS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d173f69-7714-4bb8-a1cb-d789fd1d8a1a_1584x865.png 424w, https://substackcdn.com/image/fetch/$s_!bpPS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d173f69-7714-4bb8-a1cb-d789fd1d8a1a_1584x865.png 848w, https://substackcdn.com/image/fetch/$s_!bpPS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d173f69-7714-4bb8-a1cb-d789fd1d8a1a_1584x865.png 1272w, https://substackcdn.com/image/fetch/$s_!bpPS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d173f69-7714-4bb8-a1cb-d789fd1d8a1a_1584x865.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 aria-hidden="true" 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><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 MCP Analytics team even announced that their project was already rolled out to 25% of PostHog users. <a href="https://posthog.com/newsletter/hackathons?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=how-to-demo#the-best-hackathon-projects-ship">Shipping before you even demo</a> adds a huge "wow" factor, especially if you can show real user data flowing.</p><div><hr></div><h2>Storytelling tactics</h2><p>5. Lead with a shared pain point that everyone in the audience understands. </p><p>Two of our designers built a web app that automatically tags and indexes illustrations. They opened their demo by asking who has had trouble finding a specific hedgehog in their <s>chaotic</s> lovely &#8220;Hoggies&#8221; Figma file. Everyone raised their hand.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KMaG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777852b3-ebb6-4016-ba7a-c8858210f059_1584x865.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KMaG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777852b3-ebb6-4016-ba7a-c8858210f059_1584x865.png 424w, https://substackcdn.com/image/fetch/$s_!KMaG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777852b3-ebb6-4016-ba7a-c8858210f059_1584x865.png 848w, https://substackcdn.com/image/fetch/$s_!KMaG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777852b3-ebb6-4016-ba7a-c8858210f059_1584x865.png 1272w, https://substackcdn.com/image/fetch/$s_!KMaG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777852b3-ebb6-4016-ba7a-c8858210f059_1584x865.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KMaG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777852b3-ebb6-4016-ba7a-c8858210f059_1584x865.png" width="1456" height="795" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/777852b3-ebb6-4016-ba7a-c8858210f059_1584x865.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:795,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:658763,&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://newsletter.posthog.com/i/199406149?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777852b3-ebb6-4016-ba7a-c8858210f059_1584x865.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_!KMaG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777852b3-ebb6-4016-ba7a-c8858210f059_1584x865.png 424w, https://substackcdn.com/image/fetch/$s_!KMaG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777852b3-ebb6-4016-ba7a-c8858210f059_1584x865.png 848w, https://substackcdn.com/image/fetch/$s_!KMaG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777852b3-ebb6-4016-ba7a-c8858210f059_1584x865.png 1272w, https://substackcdn.com/image/fetch/$s_!KMaG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777852b3-ebb6-4016-ba7a-c8858210f059_1584x865.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 aria-hidden="true" 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><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>6. Borrow a familiar concept to explain a new one. For example, one hackathon team explored building our own take on <a href="https://posthog.com/blog/making-claude-cowork-actually-useful?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=how-to-demo">Claude Cowork</a> inside <a href="https://posthog.com/code?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=how-to-demo">PostHog Code</a>, so they creatively named their project PostHog Work. </p><p>7. Create a separate demo app, especially if you&#8217;re showing off a dev tool. </p><p>Dev tools are easier to grasp once people see them applied. For example, one team created a tool to instruct and deploy agents that manually test your UI. The idea only clicked once they showed it on a separate demo app called OnlyHogs (it&#8217;s fake, I checked):</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7SPu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e8e839-9e9e-4a9e-9831-38632116fba2_2165x761.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7SPu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e8e839-9e9e-4a9e-9831-38632116fba2_2165x761.png 424w, https://substackcdn.com/image/fetch/$s_!7SPu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e8e839-9e9e-4a9e-9831-38632116fba2_2165x761.png 848w, https://substackcdn.com/image/fetch/$s_!7SPu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e8e839-9e9e-4a9e-9831-38632116fba2_2165x761.png 1272w, https://substackcdn.com/image/fetch/$s_!7SPu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e8e839-9e9e-4a9e-9831-38632116fba2_2165x761.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7SPu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e8e839-9e9e-4a9e-9831-38632116fba2_2165x761.png" width="1456" height="512" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/06e8e839-9e9e-4a9e-9831-38632116fba2_2165x761.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:589925,&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://newsletter.posthog.com/i/199406149?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e8e839-9e9e-4a9e-9831-38632116fba2_2165x761.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_!7SPu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e8e839-9e9e-4a9e-9831-38632116fba2_2165x761.png 424w, https://substackcdn.com/image/fetch/$s_!7SPu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e8e839-9e9e-4a9e-9831-38632116fba2_2165x761.png 848w, https://substackcdn.com/image/fetch/$s_!7SPu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e8e839-9e9e-4a9e-9831-38632116fba2_2165x761.png 1272w, https://substackcdn.com/image/fetch/$s_!7SPu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e8e839-9e9e-4a9e-9831-38632116fba2_2165x761.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 aria-hidden="true" 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><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>8. Use &#8220;you&#8221; framing to put the audience in the right perspective. Instead of saying &#8220;we built an app to manage support tickets&#8221;, one team asked the audience to &#8220;imagine you&#8217;re on-call and you&#8217;re trying to resolve six incidents at once.&#8221;</p><p>9. Demo against the alternative. Show the painful 6-step current workflow side-by-side with your 1-step version. Comparisons create stakes; without them, the audience has no reference for whether what you built is actually good.</p><p>10. Save how it works for later. Like how magicians never reveal their tricks, you shouldn&#8217;t tell people how you built it (at least, not up front). Sharing a link to a video, or blog post, where you explain this can make a good ending CTA for your demo.</p><div><hr></div><h2>Setup and delivery</h2><p>11. Channel your inner <a href="https://www.youtube.com/watch?v=Vhh_GeBPOhs">Steve Ballmer</a>. A great demo is often just a good one from someone with a lot of energy.</p><p>12. Don&#8217;t apologize. &#8220;Sorry, it&#8217;s still kind of rough,&#8221; trains the audience to lower expectations before you&#8217;ve shown anything. Just start.</p><p>13. Make it obvious when you&#8217;re done. This prevents that awkward moment when people aren&#8217;t sure if it&#8217;s time to clap.<strong> </strong>End with a closing sentence, descending intonation, or celebratory visual:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vT1p!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7faf038c-6b9e-4882-a38e-99985eb47e64_1584x865.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vT1p!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7faf038c-6b9e-4882-a38e-99985eb47e64_1584x865.png 424w, https://substackcdn.com/image/fetch/$s_!vT1p!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7faf038c-6b9e-4882-a38e-99985eb47e64_1584x865.png 848w, https://substackcdn.com/image/fetch/$s_!vT1p!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7faf038c-6b9e-4882-a38e-99985eb47e64_1584x865.png 1272w, https://substackcdn.com/image/fetch/$s_!vT1p!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7faf038c-6b9e-4882-a38e-99985eb47e64_1584x865.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vT1p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7faf038c-6b9e-4882-a38e-99985eb47e64_1584x865.png" width="1456" height="795" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7faf038c-6b9e-4882-a38e-99985eb47e64_1584x865.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:795,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:494808,&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://newsletter.posthog.com/i/199406149?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7faf038c-6b9e-4882-a38e-99985eb47e64_1584x865.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_!vT1p!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7faf038c-6b9e-4882-a38e-99985eb47e64_1584x865.png 424w, https://substackcdn.com/image/fetch/$s_!vT1p!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7faf038c-6b9e-4882-a38e-99985eb47e64_1584x865.png 848w, https://substackcdn.com/image/fetch/$s_!vT1p!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7faf038c-6b9e-4882-a38e-99985eb47e64_1584x865.png 1272w, https://substackcdn.com/image/fetch/$s_!vT1p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7faf038c-6b9e-4882-a38e-99985eb47e64_1584x865.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 aria-hidden="true" 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><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>14. Do everything in your power to please the demo gods. We even have a <a href="https://posthog.com/handbook/marketing/speaker-guide?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=how-to-demo#demo-setup-checklist">demo setup checklist</a> just for this:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:&quot;c269ce17-7812-4cc4-81a6-32b723f1040d&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown">[ ] Use a demo project, not a live account with customer data
[ ] Disable notifications on your laptop
[ ] Silence your phone
[ ] Bookmark your demo URL &#8212; don't type it live
[ ] Know what happens if WiFi dies (screenshots as backup)
[ ] Zoom your browser to 125&#8211;150% so the back row can read it
[ ] Test the projector before anyone arrives</code></pre></div><p>15. Use real data wherever possible. Obviously fake data just looks lame.</p><p>When the HogNet team demoed their hackathon-in-a-box rental service concept, they created a website with pricing and shipping logistics. This felt way more realistic than if they had used lorem ipsum:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LH7N!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81acb265-1b82-4b6d-9778-7bd1c366a9c9_1584x865.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LH7N!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81acb265-1b82-4b6d-9778-7bd1c366a9c9_1584x865.png 424w, https://substackcdn.com/image/fetch/$s_!LH7N!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81acb265-1b82-4b6d-9778-7bd1c366a9c9_1584x865.png 848w, https://substackcdn.com/image/fetch/$s_!LH7N!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81acb265-1b82-4b6d-9778-7bd1c366a9c9_1584x865.png 1272w, https://substackcdn.com/image/fetch/$s_!LH7N!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81acb265-1b82-4b6d-9778-7bd1c366a9c9_1584x865.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LH7N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81acb265-1b82-4b6d-9778-7bd1c366a9c9_1584x865.png" width="1456" height="795" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/81acb265-1b82-4b6d-9778-7bd1c366a9c9_1584x865.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:795,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:834459,&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://newsletter.posthog.com/i/199406149?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81acb265-1b82-4b6d-9778-7bd1c366a9c9_1584x865.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_!LH7N!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81acb265-1b82-4b6d-9778-7bd1c366a9c9_1584x865.png 424w, https://substackcdn.com/image/fetch/$s_!LH7N!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81acb265-1b82-4b6d-9778-7bd1c366a9c9_1584x865.png 848w, https://substackcdn.com/image/fetch/$s_!LH7N!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81acb265-1b82-4b6d-9778-7bd1c366a9c9_1584x865.png 1272w, https://substackcdn.com/image/fetch/$s_!LH7N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81acb265-1b82-4b6d-9778-7bd1c366a9c9_1584x865.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 aria-hidden="true" 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><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>16. Pre-load and cache as much as you can (without taking away from the demo, of course). It&#8217;s like how TV chefs prepare their ingredients in advance to make every second on air interesting. </p><p>Common places where you can eliminate dead time include agent responses, long queries, and slow builds.</p><p>17. Practice out loud at least once. It helps you build confidence in what you&#8217;re saying, so it comes out naturally.</p><p>18. Don&#8217;t let perfectionism stop you from demoing. Everyone presents at our hackathons, no matter what shape their project was in. Demos are for in-progress work anyways.</p><div><hr></div><h2>Make it fun</h2><p>19. Avoid showing plain old code. Even if your project doesn&#8217;t have a UI, there&#8217;s simply no excuse for skipping visuals anymore. You can generate an architecture diagram in seconds: </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!U80Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea892e8-ccc2-415e-9fe5-e92c378fc166_2048x1120.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!U80Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea892e8-ccc2-415e-9fe5-e92c378fc166_2048x1120.png 424w, https://substackcdn.com/image/fetch/$s_!U80Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea892e8-ccc2-415e-9fe5-e92c378fc166_2048x1120.png 848w, https://substackcdn.com/image/fetch/$s_!U80Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea892e8-ccc2-415e-9fe5-e92c378fc166_2048x1120.png 1272w, https://substackcdn.com/image/fetch/$s_!U80Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea892e8-ccc2-415e-9fe5-e92c378fc166_2048x1120.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!U80Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea892e8-ccc2-415e-9fe5-e92c378fc166_2048x1120.png" width="1456" height="796" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ea892e8-ccc2-415e-9fe5-e92c378fc166_2048x1120.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:796,&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_!U80Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea892e8-ccc2-415e-9fe5-e92c378fc166_2048x1120.png 424w, https://substackcdn.com/image/fetch/$s_!U80Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea892e8-ccc2-415e-9fe5-e92c378fc166_2048x1120.png 848w, https://substackcdn.com/image/fetch/$s_!U80Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea892e8-ccc2-415e-9fe5-e92c378fc166_2048x1120.png 1272w, https://substackcdn.com/image/fetch/$s_!U80Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea892e8-ccc2-415e-9fe5-e92c378fc166_2048x1120.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 aria-hidden="true" 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><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>20. Don&#8217;t just show plain old slides, either. Active demos always win. Anyone can talk about a cool idea; the point of a demo is to build it and <em>show</em> it.</p><p>21. Default screen recording tools suck. There are plenty of apps like <a href="https://screen.studio/">Screen Studio</a> that zoom in and add animations so it&#8217;s easier to see what&#8217;s going on:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yS__!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ed29ab4-c031-4de6-8af0-8cdad2f47ce0_1584x865.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yS__!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ed29ab4-c031-4de6-8af0-8cdad2f47ce0_1584x865.png 424w, https://substackcdn.com/image/fetch/$s_!yS__!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ed29ab4-c031-4de6-8af0-8cdad2f47ce0_1584x865.png 848w, https://substackcdn.com/image/fetch/$s_!yS__!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ed29ab4-c031-4de6-8af0-8cdad2f47ce0_1584x865.png 1272w, https://substackcdn.com/image/fetch/$s_!yS__!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ed29ab4-c031-4de6-8af0-8cdad2f47ce0_1584x865.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yS__!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ed29ab4-c031-4de6-8af0-8cdad2f47ce0_1584x865.png" width="1456" height="795" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4ed29ab4-c031-4de6-8af0-8cdad2f47ce0_1584x865.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:795,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:298986,&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://newsletter.posthog.com/i/199406149?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ed29ab4-c031-4de6-8af0-8cdad2f47ce0_1584x865.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_!yS__!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ed29ab4-c031-4de6-8af0-8cdad2f47ce0_1584x865.png 424w, https://substackcdn.com/image/fetch/$s_!yS__!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ed29ab4-c031-4de6-8af0-8cdad2f47ce0_1584x865.png 848w, https://substackcdn.com/image/fetch/$s_!yS__!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ed29ab4-c031-4de6-8af0-8cdad2f47ce0_1584x865.png 1272w, https://substackcdn.com/image/fetch/$s_!yS__!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ed29ab4-c031-4de6-8af0-8cdad2f47ce0_1584x865.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 aria-hidden="true" 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><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>22. Your visuals don&#8217;t need to be beautiful. They just need to highlight what&#8217;s important. This demo had simple graphics, but each callout provided useful information:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MkRC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b826dc9-b6db-4660-93d8-2e33708a0571_1584x865.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MkRC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b826dc9-b6db-4660-93d8-2e33708a0571_1584x865.png 424w, https://substackcdn.com/image/fetch/$s_!MkRC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b826dc9-b6db-4660-93d8-2e33708a0571_1584x865.png 848w, https://substackcdn.com/image/fetch/$s_!MkRC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b826dc9-b6db-4660-93d8-2e33708a0571_1584x865.png 1272w, https://substackcdn.com/image/fetch/$s_!MkRC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b826dc9-b6db-4660-93d8-2e33708a0571_1584x865.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MkRC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b826dc9-b6db-4660-93d8-2e33708a0571_1584x865.png" width="1456" height="795" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6b826dc9-b6db-4660-93d8-2e33708a0571_1584x865.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:795,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:425384,&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://newsletter.posthog.com/i/199406149?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b826dc9-b6db-4660-93d8-2e33708a0571_1584x865.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_!MkRC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b826dc9-b6db-4660-93d8-2e33708a0571_1584x865.png 424w, https://substackcdn.com/image/fetch/$s_!MkRC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b826dc9-b6db-4660-93d8-2e33708a0571_1584x865.png 848w, https://substackcdn.com/image/fetch/$s_!MkRC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b826dc9-b6db-4660-93d8-2e33708a0571_1584x865.png 1272w, https://substackcdn.com/image/fetch/$s_!MkRC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b826dc9-b6db-4660-93d8-2e33708a0571_1584x865.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 aria-hidden="true" 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><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>23. Audio is underrated. One team generated a sea shanty voiceover, while another project that does quick calls for AI-powered user research made their demo fully audio-only.</p><p>24. Do more weird. No one asked for clips of <a href="https://www.linkedin.com/in/dmarticus">Dylan</a> sipping pi&#241;a coladas in the background, but the <a href="https://posthog.com/code?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=how-to-demo">PostHog Code</a> mobile app team did it anyway. It&#8217;s also the demo I remember most. &#127865;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-zpm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3003cef1-0ed6-4428-8635-eefaf4bd7343_1584x865.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-zpm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3003cef1-0ed6-4428-8635-eefaf4bd7343_1584x865.png 424w, https://substackcdn.com/image/fetch/$s_!-zpm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3003cef1-0ed6-4428-8635-eefaf4bd7343_1584x865.png 848w, https://substackcdn.com/image/fetch/$s_!-zpm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3003cef1-0ed6-4428-8635-eefaf4bd7343_1584x865.png 1272w, https://substackcdn.com/image/fetch/$s_!-zpm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3003cef1-0ed6-4428-8635-eefaf4bd7343_1584x865.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-zpm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3003cef1-0ed6-4428-8635-eefaf4bd7343_1584x865.png" width="1456" height="795" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3003cef1-0ed6-4428-8635-eefaf4bd7343_1584x865.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:795,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1416420,&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://newsletter.posthog.com/i/199406149?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3003cef1-0ed6-4428-8635-eefaf4bd7343_1584x865.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_!-zpm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3003cef1-0ed6-4428-8635-eefaf4bd7343_1584x865.png 424w, https://substackcdn.com/image/fetch/$s_!-zpm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3003cef1-0ed6-4428-8635-eefaf4bd7343_1584x865.png 848w, https://substackcdn.com/image/fetch/$s_!-zpm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3003cef1-0ed6-4428-8635-eefaf4bd7343_1584x865.png 1272w, https://substackcdn.com/image/fetch/$s_!-zpm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3003cef1-0ed6-4428-8635-eefaf4bd7343_1584x865.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 aria-hidden="true" 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><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><em>Words by <a href="https://x.com/jinayoon_">Jina Yoon</a>, who had to overcome her fear of public speaking without these tips.</em></p><div><hr></div><h2>&#128161; More memorable content</h2><ul><li><p><strong><a href="https://posthog.com/blog/local-flag-evals-rust?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=how-to-demo">From 270GB RAM to 5GB: Moving local flag evaluation from Django to Rust</a> &#8211; Patricio Tarantino</strong></p></li><li><p><strong><a href="https://posthog.com/blog/ai-native-hiring?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=how-to-demo">Being AI-native matters more than experience</a> &#8211; Fraser Hopper</strong></p></li><li><p><strong><a href="https://posthog.com/founders/growth-metrics-for-startups?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=how-to-demo">A guide to growth metrics for startups that don&#8217;t fit in</a> &#8211; Mine Kansu</strong></p></li><li><p><strong><a href="https://posthog.com/blog/aeo-advice?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=how-to-demo">How to grow your AEO function (without losing your mind)</a> &#8211; Natalia Amorim</strong></p></li><li><p><strong><a href="https://posthog.com/blog/minimum-viable-product-marketing?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=how-to-demo">The do&#8217;s and don&#8217;ts of minimum viable product marketing</a> &#8211; Joe Martin</strong></p></li><li><p><strong><a href="https://posthog.com/blog/future-of-support-is-human?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=how-to-demo">Stop adding AI between you and your customers</a> &#8211; Abigail Richardson</strong></p></li></ul><blockquote></blockquote><div><hr></div><h2>&#127796; Join our next offsite</h2><ul><li><p><strong><a href="https://posthog.com/careers/ai-research-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=how-to-demo">AI Research Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/backend-engineer-ingestion?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=how-to-demo">Backend Engineer (Ingestion)</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/forward-deployed-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=how-to-demo">Forward Deployed Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/technical-customer-success-manager?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=how-to-demo">Technical Customer Success Manager</a></strong></p></li></ul><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.posthog.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe for more S-tier tips</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The stuff nobody tells you about startup marketing]]></title><description><![CDATA[Doing weird stuff on the internet is optional but recommended]]></description><link>https://newsletter.posthog.com/p/the-stuff-nobody-tells-you-about</link><guid isPermaLink="false">https://newsletter.posthog.com/p/the-stuff-nobody-tells-you-about</guid><dc:creator><![CDATA[Charles Cook]]></dc:creator><pubDate>Wed, 06 May 2026 18:01:37 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/81aa278c-cc30-4ac1-b99c-c929bb846051_2912x2096.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Every few weeks, a founder emails me some version of the same thing:</p><p>&#8220;We&#8217;re getting early traction. How do we start doing marketing?&#8221;</p><p>Most advice is written for people at companies that already know what they&#8217;re doing. You don&#8217;t. That&#8217;s fine. I didn&#8217;t either when I joined PostHog in 2020, and somehow I&#8217;m still here!</p><p>This is everything about marketing that I&#8217;d tell the Charles who doesn&#8217;t know anything in 2020.</p><div><hr></div><h2>1. You <em>do</em> have experience</h2><p>People who contact me think marketing is a thing they haven&#8217;t started yet.</p><p>I used to think the same, but it turns out a bunch of things we were already doing at PostHog <em>was</em> marketing. We just didn&#8217;t think of it like that.</p><p>Our <a href="https://news.ycombinator.com/item?id=22376732">launch post</a> on Hacker News? Marketing.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-pGN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcbdb0f6-3347-4082-aac5-df63698d5cf7_1389x982.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-pGN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcbdb0f6-3347-4082-aac5-df63698d5cf7_1389x982.png 424w, https://substackcdn.com/image/fetch/$s_!-pGN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcbdb0f6-3347-4082-aac5-df63698d5cf7_1389x982.png 848w, https://substackcdn.com/image/fetch/$s_!-pGN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcbdb0f6-3347-4082-aac5-df63698d5cf7_1389x982.png 1272w, https://substackcdn.com/image/fetch/$s_!-pGN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcbdb0f6-3347-4082-aac5-df63698d5cf7_1389x982.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-pGN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcbdb0f6-3347-4082-aac5-df63698d5cf7_1389x982.png" width="1389" height="982" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dcbdb0f6-3347-4082-aac5-df63698d5cf7_1389x982.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:982,&quot;width&quot;:1389,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:340858,&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://newsletter.posthog.com/i/196421903?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcbdb0f6-3347-4082-aac5-df63698d5cf7_1389x982.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_!-pGN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcbdb0f6-3347-4082-aac5-df63698d5cf7_1389x982.png 424w, https://substackcdn.com/image/fetch/$s_!-pGN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcbdb0f6-3347-4082-aac5-df63698d5cf7_1389x982.png 848w, https://substackcdn.com/image/fetch/$s_!-pGN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcbdb0f6-3347-4082-aac5-df63698d5cf7_1389x982.png 1272w, https://substackcdn.com/image/fetch/$s_!-pGN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcbdb0f6-3347-4082-aac5-df63698d5cf7_1389x982.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 aria-hidden="true" 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><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>An unusually deep <a href="https://posthog.com/handbook?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=marketing-for-beginners">employee handbook</a> on a weird-looking website? Also marketing.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Q1ta!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5008195-2ea8-445c-a58b-e8d436e57b97_1210x810.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Q1ta!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5008195-2ea8-445c-a58b-e8d436e57b97_1210x810.png 424w, https://substackcdn.com/image/fetch/$s_!Q1ta!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5008195-2ea8-445c-a58b-e8d436e57b97_1210x810.png 848w, https://substackcdn.com/image/fetch/$s_!Q1ta!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5008195-2ea8-445c-a58b-e8d436e57b97_1210x810.png 1272w, https://substackcdn.com/image/fetch/$s_!Q1ta!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5008195-2ea8-445c-a58b-e8d436e57b97_1210x810.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Q1ta!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5008195-2ea8-445c-a58b-e8d436e57b97_1210x810.png" width="1210" height="810" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5008195-2ea8-445c-a58b-e8d436e57b97_1210x810.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:810,&quot;width&quot;:1210,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:130052,&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://newsletter.posthog.com/i/196421903?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5008195-2ea8-445c-a58b-e8d436e57b97_1210x810.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_!Q1ta!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5008195-2ea8-445c-a58b-e8d436e57b97_1210x810.png 424w, https://substackcdn.com/image/fetch/$s_!Q1ta!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5008195-2ea8-445c-a58b-e8d436e57b97_1210x810.png 848w, https://substackcdn.com/image/fetch/$s_!Q1ta!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5008195-2ea8-445c-a58b-e8d436e57b97_1210x810.png 1272w, https://substackcdn.com/image/fetch/$s_!Q1ta!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5008195-2ea8-445c-a58b-e8d436e57b97_1210x810.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 aria-hidden="true" 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><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>Posting what is basically your diary to your company website? Marketingggggg!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!T0FV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4242199-db53-4304-bbcd-c42317e609b0_811x664.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T0FV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4242199-db53-4304-bbcd-c42317e609b0_811x664.png 424w, https://substackcdn.com/image/fetch/$s_!T0FV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4242199-db53-4304-bbcd-c42317e609b0_811x664.png 848w, https://substackcdn.com/image/fetch/$s_!T0FV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4242199-db53-4304-bbcd-c42317e609b0_811x664.png 1272w, https://substackcdn.com/image/fetch/$s_!T0FV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4242199-db53-4304-bbcd-c42317e609b0_811x664.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T0FV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4242199-db53-4304-bbcd-c42317e609b0_811x664.png" width="811" height="664" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f4242199-db53-4304-bbcd-c42317e609b0_811x664.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:664,&quot;width&quot;:811,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:310881,&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://newsletter.posthog.com/i/196421903?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4242199-db53-4304-bbcd-c42317e609b0_811x664.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_!T0FV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4242199-db53-4304-bbcd-c42317e609b0_811x664.png 424w, https://substackcdn.com/image/fetch/$s_!T0FV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4242199-db53-4304-bbcd-c42317e609b0_811x664.png 848w, https://substackcdn.com/image/fetch/$s_!T0FV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4242199-db53-4304-bbcd-c42317e609b0_811x664.png 1272w, https://substackcdn.com/image/fetch/$s_!T0FV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4242199-db53-4304-bbcd-c42317e609b0_811x664.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 aria-hidden="true" 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><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>Marketing is simply closing the gap between what you&#8217;re building and the people who&#8217;d care about it. Our handbook is a good example: James and Tim knew early users might doubt there was a real company behind PostHog, so they published all internal processes and values on the main website to build credibility fast. </p><p>So no, you don&#8217;t need a fancy strategy, brand guidelines, a content calendar, or a paid budget. Just figure out what your audience finds interesting and talk about it. Plus, when you treat marketing this way, your brand will be that much more authentic. </p><div><hr></div><h2>2. Depth-first &gt; breadth-first</h2><p>So you have something working. Yay.</p><p>The instinct at this point is to write a list of 5-10 other channels to try in the hope that one of them also works. This is a great way to end up, six months later, with a pile of stuff that didn&#8217;t work and no idea why.</p><p>It&#8217;s much better to do more of the thing that&#8217;s already showing signs of life. If you went mildly viral on LinkedIn, keep posting every day. If a podcast appearance converted, email another hundred. If a blog post got picked up, write the next one. And the next one.</p><p>That&#8217;s what we did early on to get <a href="https://newsletter.posthog.com/p/how-we-got-our-first-1000-users?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=marketing-for-beginners">our first 1,000 users</a>. When we saw early success with our HN launch, James kept serial posting founder blogs about everything behind the scenes:</p><ul><li><p>A reflection <a href="https://posthog.com/blog/after-the-hn-launch?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=marketing-for-beginners">after the HN launch</a> on what made it successful, and what we wanted to do with the momentum.</p></li><li><p>An explainer about <a href="https://posthog.com/blog/raising-3m-for-os?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=marketing-for-beginners">how we raised $3M in seed funding as an open source company</a> (including all the tactical details of VC meetings to the boring paperwork).</p></li><li><p>A retro about <a href="https://posthog.com/founders/story-about-pivots?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=marketing-for-beginners">how we pivoted through six failed product ideas</a> before landing on open source product analytics.</p></li></ul><p>Going niche forces you to develop something unique in a way that others can&#8217;t copy. A big company could never write a &#8220;founder blog&#8221; series the way we did &#8211; being small and relatively unknown allowed us to be as transparent as we are.</p><p>So go deep, not wide, and resist the temptation to half-ass a bunch of things.</p><div><hr></div><h2>3. Match your channels to your sales motion</h2><p>The right first channels depend on whether you&#8217;re running a PLG (<a href="https://posthog.com/founders/product-led-growth?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=marketing-for-beginners">product-led growth</a>) or sales-led motion. If you&#8217;re not sure which one you are yet , you need to <a href="https://posthog.com/newsletter/ideal-customer-profile-framework?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=marketing-for-beginners">define your ICP</a> first &#8211; it&#8217;s your map converting potential users into paying customers.</p><p>If you&#8217;re PLG, your early wins are going to come from places where your users already hang out: Hacker News, Reddit, X, dev communities, tutorials, docs, etc. The goal here is to widen the beginning of your funnel. Other things that help with this include branding, ads, and word of mouth growth. If done well, customers will come to you rather than the other way around.</p><p>(We are obviously hideously biased, but if you are seeing early signs of PLG working, keep going! It&#8217;s an incredibly efficient way to build a business.)</p><p>If you&#8217;re sales-led, from what I&#8217;ve heard from marketers at other companies, your early wins are going to come from more targeted approaches. You&#8217;ll be the one going up to them. Think direct outreach, industry events, partnerships, and the founder&#8217;s own network. Get on the podcasts your buyers listen to. Turn up to AWS Re:invent. &#128548;&#128293;</p><p>In either case, however, don&#8217;t start with SEO. SEO is also one of those domains that takes a very long time, and requires you to know what you&#8217;re doing. It is <em>very</em> hard to vibe-SEO. Same goes for AEO. See <a href="https://posthog.com/newsletter/seo-for-startups?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=marketing-for-beginners">Non-obvious SEO advice for startups </a>for more on this.</p><div><hr></div><h2>4. Think in terms of experiments</h2><p>Just like how you measure success for product launches, you need a similar mindset for marketing.</p><p>Before you start anything new, write down your prediction for what &#8220;worked&#8221; would look like. A simple yes or no question like:</p><p>&#8220;Did more people who look like our ICP sign up, use our product, and become enthusiastic recommenders?&#8221;</p><p>It doesn&#8217;t need to be a metric target &#8211; in fact, I&#8217;d strongly discourage it at this stage (sorry, John Doerr). You haven&#8217;t done this before so any number you&#8217;d choose is basically made up. You just need to design your goal so that it&#8217;s unambiguous whether you succeeded or failed.</p><p>As for how long to run an experiment, six weeks is usually enough time to tell. We&#8217;ve never had something run for longer where the results magically became good. You can always shut off your experiment if you&#8217;re getting clear signals before then.</p><p>But if you can&#8217;t obviously say &#8220;it worked&#8221; by then, you&#8217;ve either designed the experiment poorly, or the answer is no &#8211; which is great, actually! You now know <em>not</em> to do the thing again. The worst outcome of marketing is actually &#8220;I&#8217;m not sure.&#8221; That ends up producing a pile of half-working content that nobody can justify turning off.</p><p>This will also keep you from spreading too thin while still making forward progress (&#224; la depth-first). For example, when we started doing paid ads, we ran 2-3 small experiments at a time in phases instead of launching on all ad platforms at once.</p><p>The first experiment for each platform was to get targeting right: were we getting clicks from people who looked like our ICP? If not, we&#8217;d keep adjusting the audience, keywords, and placements until we got it right.</p><p>Once a channel passed that initial bar, we&#8217;d move on to optimizing with better copy, lower cost per acquisition, etc. We only started experimenting on new platforms once we felt like the previous one was in a good state for &#8220;maintenance mode&#8221;.</p><div><hr></div><h2>5. Attribution is a lie</h2><p>As you start to think about marketing in terms of experiments, you&#8217;ll inevitably run into problems with attribution.</p><p>Let me explain. Say someone sees your viral tweet on X, looks up your company, clicks on a Google Ad, and signs up. Your analytics are going to attribute that user to the Google Ad, but this is a lie since it really started with the tweet.</p><p>If you&#8217;re not careful about this, you&#8217;ll end up drawing the wrong conclusions about your data and spending money in all the wrong places. This is how people end up burning their money on paid ads.</p><p>Accept that attribution is a 7/10 problem, not a 10/10 one. Don&#8217;t try to build or buy a model with fancy multi-touch attribution software. You don&#8217;t need one.</p><p>What you <em>do</em> need is a &#8220;where did you hear about us?&#8221; text box in your signup flow. This is the single highest-signal piece of marketing data you will collect, and it costs nothing. Make it optional &#8211; 5 to 10% of people will fill it in. <em>Read them every week.</em></p><p>Adding this was essential for our early growth. The responses (and <a href="https://newsletter.posthog.com/p/talk-to-users?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=marketing-for-beginners">conversations that followed</a>) confirmed for us that developers hated feeling &#8220;sold&#8221; to, but they inherently found our startup journey interesting.</p><p>So, two rules of thumb for dealing with the attribution mirage:</p><ol><li><p>Trust attribution when the signal is overwhelming. Ignore when it&#8217;s ambiguous.</p></li><li><p>If your &#8220;where did you hear about us?&#8221; box and your attribution data agree, believe them. If they don&#8217;t, believe the box.</p></li></ol><div><hr></div><h2>6. Don&#8217;t outsource to an agency</h2><p>This is the other thing founders email me about: &#8220;Should we hire a marketing agency to do blah?&#8221;</p><p>No. Well, not yet.</p><p>An agency can&#8217;t build your positioning, understand your users, or decide what &#8220;good&#8221; looks like for your brand. That&#8217;s your job, and you can&#8217;t delegate it until you&#8217;ve done it yourself.</p><p>As a bonus, when you learn what types of marketing works well for your target audience, it will also improve your product decisions. It&#8217;s an extension of <a href="https://posthog.com/newsletter/talk-to-users?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=marketing-for-beginners">talking to your users</a>.</p><p>If you hand your earliest marketing to an agency, the output will be generic, the feedback loop will be slow, and you&#8217;ll learn nothing.</p><p>Only use agencies for things you genuinely can&#8217;t do internally, like we <a href="https://posthog.com/founders/dev-marketing-paid-ads#an-agency-will-solve-all-your-problems?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=marketing-for-beginners">eventually did for paid ads</a>. Managing them was a time intensive task that didn&#8217;t require much PostHog-specific context and clearly benefited from long-term experience. It just made sense for us to outsource this at $5k/month as it&#8217;s not a skill we necessarily felt the need to grow in-house.</p><p>Never use agencies to replace thinking you haven&#8217;t done yet.</p><div><hr></div><h2>7. When to make the first hire</h2><p>Founders always want to hire a marketing person too early. Like, the-microsecond-they-have-budget early. Personally, for a hire to be worth it, I think you need these first:</p><ul><li><p>Users who actually use the product</p></li><li><p>Users who enthusiastically recommend it to other people</p></li><li><p>Users who pay for it</p></li><li><p>&#8230; and ideally, they&#8217;re doing all of the above despite the product still being a bit janky</p></li></ul><p>When you do hire your first marketer, hire a generalist.</p><p>Titles are not terribly useful in your search here. In different companies, this person might be called a content marketer, a product marketer, or a growth marketer.</p><p>What you actually want is someone who can write, think in funnels, talk to users, and figure things out without a playbook. You don&#8217;t want someone who&#8217;s a specialist in one channel, because you don&#8217;t yet know which channel matters. Specialists are also more likely to depend on playbooks.</p><p>Our first marketing hire was <a href="https://www.linkedin.com/in/joemartinwords/">Joe</a>, who had a background across journalism, content marketing, copywriting, and product marketing. We didn&#8217;t have a ton of direction for him, so he spent as much time talking to engineers as writing copy, because figuring out what we actually needed was part of the job.</p><p>Your first hire should also be someone who is pretty experienced since you won&#8217;t have a long-term strategy to present to them. The most you can provide is context on what&#8217;s been working well, and it&#8217;ll be up to them to figure out the rest.</p><p><em>Words by <a href="https://www.linkedin.com/in/wololo/">Charles Cook</a>, generic exec person at PostHog, who has a suspicious amount of opinions about marketing for someone with an MBA.</em></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.posthog.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe for more interesting stuff delivered to your inbox every other week.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2>&#129428; Jobs at PostHog </h2><ul><li><p><strong><a href="https://posthog.com/careers/ai-research-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=marketing-for-beginners">AI Research Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/technical-customer-success-manager">Technical CSM</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/payroll-manager?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=marketing-for-beginners">Payroll Manager</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/partnership-marketer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=marketing-for-beginners">Partnership Marketer</a></strong></p></li></ul><div><hr></div><h2>&#128218; More good stuff to read </h2><ul><li><p><strong><a href="https://posthog.com/blog/posthogs-next-chapter?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=marketing-for-beginners">PostHog's next chapter</a> &#8211; James Hawkins</strong></p></li><li><p><strong><a href="https://posthog.com/blog/self-driving-product">PostHog Code and the self-driving product</a> &#8211; Cleo Lant</strong></p></li><li><p><strong><a href="https://posthog.com/blog/making-claude-cowork-actually-useful?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=marketing-for-beginners">Making Claude Cowork actually useful</a> &#8211; Charles Cook</strong></p></li><li><p><strong><a href="https://posthog.com/blog/duckdb-vs-clickhouse?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=marketing-for-beginners">DuckDB vs ClickHouse: Why we use both at PostHog</a> &#8211; Mathew Pregasen</strong></p></li><li><p><strong><a href="https://www.news.aakashg.com/p/in-app-surveys-guide?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=marketing-for-beginners">In-App Surveys: The Playbook from 4M PostHog Responses</a> &#8211; Aakash Gupta</strong></p></li><li><p><strong><a href="https://dziban.net/posts/yabu/">Yabu: A language designed to make LLM agents iterate faster</a> &#8211; Marce Coll</strong></p></li><li><p><strong><a href="https://github.com/AndrewVos/endless-toil">Endless Toil: Hear your agent suffer through your code</a> &#8211; Andrew Vos</strong></p></li></ul>]]></content:encoded></item><item><title><![CDATA[Great companies are built in hackathons]]></title><description><![CDATA[You should run more hackathons. Here&#8217;s how to do them well.]]></description><link>https://newsletter.posthog.com/p/great-companies-are-built-in-hackathons</link><guid isPermaLink="false">https://newsletter.posthog.com/p/great-companies-are-built-in-hackathons</guid><dc:creator><![CDATA[Ian Vanagas]]></dc:creator><pubDate>Tue, 21 Apr 2026 18:12:27 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/7bf0320b-e7db-4bee-9814-0a38c84bb44c_2912x2096.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>PostHog hackathons have generated millions in revenue. <a href="https://posthog.com/session-replay?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">Session Replay</a>, <a href="https://posthog.com/data-stack?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">Data Warehouse</a>, <a href="https://posthog.com/logs?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">Logs</a>, <a href="https://posthog.com/workflows?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">Workflows</a>, and <a href="https://posthog.com/ai?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">PostHog AI</a> wouldn&#8217;t exist without them.</p><p>We take multiple days out of every year to do them. They are days our team looks forward to all year. They&#8217;re an integral part of our culture.</p><p>Yet for many companies and people, hackathons are seen as a waste of time. A distraction from important &#8220;real work.&#8221; An act of performative participation.</p><p>This is because they think about and do hackathons wrong.</p><div><hr></div><h2>Hackathons are an innovation engine, but only if separate from work</h2><p>Hackathons fail when they&#8217;re not separate from regular work or used as cover to accelerate existing work. We have two simple rules to prevent this:</p><ol><li><p><strong>You should work on totally new things. </strong>Hackathons are for ambitious, weird ideas, trying new things, and learning new technologies. Pitching ideas on the roadmap is forbidden.</p></li><li><p><strong>You should focus 100% on the hackathon. </strong>We protect people from regular work by running our hackathons during <a href="https://posthog.com/handbook/company/offsites?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">offsites</a>, where we have dedicated time and coverage plans for support and incidents. DigitalOcean employs <a href="https://www.digitalocean.com/blog/company-hackathons?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">work embargoes</a> for hackathons run in an office.</p></li></ol><p>These rules fuel the innovation engine because people are unconstrained by their day-to-day work, and have a safe space to work on ambitious bets without distractions.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!o_UU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b5db2f4-03d3-415a-9168-0695ae483e7b_1032x1030.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!o_UU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b5db2f4-03d3-415a-9168-0695ae483e7b_1032x1030.png 424w, https://substackcdn.com/image/fetch/$s_!o_UU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b5db2f4-03d3-415a-9168-0695ae483e7b_1032x1030.png 848w, https://substackcdn.com/image/fetch/$s_!o_UU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b5db2f4-03d3-415a-9168-0695ae483e7b_1032x1030.png 1272w, https://substackcdn.com/image/fetch/$s_!o_UU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b5db2f4-03d3-415a-9168-0695ae483e7b_1032x1030.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!o_UU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b5db2f4-03d3-415a-9168-0695ae483e7b_1032x1030.png" width="1032" height="1030" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5b5db2f4-03d3-415a-9168-0695ae483e7b_1032x1030.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1030,&quot;width&quot;:1032,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1843784,&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://newsletter.posthog.com/i/194905377?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b5db2f4-03d3-415a-9168-0695ae483e7b_1032x1030.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_!o_UU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b5db2f4-03d3-415a-9168-0695ae483e7b_1032x1030.png 424w, https://substackcdn.com/image/fetch/$s_!o_UU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b5db2f4-03d3-415a-9168-0695ae483e7b_1032x1030.png 848w, https://substackcdn.com/image/fetch/$s_!o_UU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b5db2f4-03d3-415a-9168-0695ae483e7b_1032x1030.png 1272w, https://substackcdn.com/image/fetch/$s_!o_UU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b5db2f4-03d3-415a-9168-0695ae483e7b_1032x1030.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 aria-hidden="true" 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><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>We&#8217;ve seen first-hand how running hackathons like this can lead to transformative new products and features that influence the direction of the whole company.</p><p>In PostHog&#8217;s earliest days, an engineer decided to build Session Replay during a hackathon based on user feedback, despite co-CEO James arguing it would take too long and split the focus of the company.</p><p>It ended up being wildly popular, with over 50,000 daily active users, and led us to become the multi-product company we are today. As an early Facebook engineer noted, <a href="https://arc.net/l/quote/zqzhqlxe">code wins arguments</a> and hackathons are a great venue for this to play out.</p><blockquote><p><strong>Remember this:</strong> Give permission and cover for your team to focus on the hackathon and ignore day-to-day work. Not doing so leads to low participation, burnout, and unambitious hackathon projects.</p></blockquote><div><hr></div><h2>Hackathons are for everyone</h2><p>When you think about hackathons, you picture a bunch of engineers huddled around laptops, coding up a storm. This is mostly what our hackathons look like with one difference: they&#8217;re not just for engineers.</p><p><a href="https://posthog.com/newsletter/engineeringification-of-everything?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">LLMs let anyone build software</a>. When this is combined with specific domain expertise and a sprinkle of motivation, it leads to the dozens of hackathon projects our &#8220;non-technical&#8221; team members have built, including:</p><ul><li><p>Games like Three Button Dungeon, Awkwardness Avoider, and Flappy Hog for <a href="https://posthog.com/deskhog?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">DeskHog</a>, our open-source developer toy.</p></li><li><p><a href="https://x.com/nizzyabi/status/1943312440709558643">Instagram Stories</a> for PostHog showcasing our latest features in a format everyone&#8217;s familiar with.</p></li><li><p><a href="https://posthog.com/dpa?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">A DPA generator</a> that automates and brings joy to an otherwise boring legal document.</p></li></ul><p>Non-technical team members can require more encouragement to pitch projects and support to ensure they can contribute, but the cultural benefits of getting them involved are worth it.</p><p>Getting unfamiliar parts of the organization to work together breaks down silos between technical and non-technical teammates. <a href="https://www.digitalocean.com/blog/company-hackathons">DigitalOcean</a> finds &#8220;the teams that have created truly innovative products and addressed real, practical problems are cross-functional teams with members from all across the company.&#8221; <a href="https://venturebeat.com/dev/inside-the-hackathon-that-keeps-twilio-innovating">Twilio</a> actively discourages &#8220;lone wolf&#8221; ideas to make this happen, as do we.</p><p>Beyond the hackathon, getting non-technical people building opens their eyes to what&#8217;s possible and encourages them to explore more. Trying out new technologies often leads to adopting them in day-to-day work. That&#8217;s why companies like <a href="https://building.jane.app/hackathon-part-1-janes-company-wide-ai-hackathon/">Jane</a>, <a href="https://www.linkedin.com/posts/uberengineering_last-week-ubers-global-tech-teams-came-activity-7409300313096040448-n6wR">Uber</a>, and <a href="https://www.linkedin.com/feed/update/urn:li:activity:7316494445594501120/">Vanta</a> are all driving AI adoption with hackathons.</p><p>Ultimately, we agree with <a href="https://slack.com/blog/collaboration/lessons-from-five-years-of-hackathons-at-slack">Slack</a>, who found that &#8220;the more people participate, the better your outcomes&#8221; &#8211; both during the hackathon and beyond.</p><blockquote><p><strong>Remember this: </strong>Encourage everyone to participate in hackathons, including people who would never see themselves as hackathon participants. Give them the tools they need to succeed (like Claude Code) and create cross-functional teams.</p></blockquote><div><hr></div><p><em>Curious what a PostHog hackathon actually looks like? We filmed a behind-the-scenes documentary about one and you can watch it below:</em></p><div id="youtube2-dGaSxBs3OsU" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;dGaSxBs3OsU&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/dGaSxBs3OsU?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div><hr></div><h2>Demos aren&#8217;t optional</h2><p>At our <a href="https://posthog.com/blog/mykonos-hackathon?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">2024 hackathon</a>, the &#8220;RealTimeHog 3000&#8221; team built a livestream service that displayed events as soon as they hit our ingestion Kafka topic using server-sent events.</p><p>It was cool when they showed this by getting people to click around on the demo site they built, it was even cooler when they had a &#8220;one more thing&#8221; moment and showed off a globe on <code>posthog.com</code> of all the events being captured worldwide into our US and EU Cloud services.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gKij!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc160ff9-ccba-43b6-8034-d559192ad060_1354x1104.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gKij!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc160ff9-ccba-43b6-8034-d559192ad060_1354x1104.png 424w, https://substackcdn.com/image/fetch/$s_!gKij!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc160ff9-ccba-43b6-8034-d559192ad060_1354x1104.png 848w, https://substackcdn.com/image/fetch/$s_!gKij!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc160ff9-ccba-43b6-8034-d559192ad060_1354x1104.png 1272w, https://substackcdn.com/image/fetch/$s_!gKij!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc160ff9-ccba-43b6-8034-d559192ad060_1354x1104.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gKij!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc160ff9-ccba-43b6-8034-d559192ad060_1354x1104.png" width="1354" height="1104" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cc160ff9-ccba-43b6-8034-d559192ad060_1354x1104.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1104,&quot;width&quot;:1354,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1566961,&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://newsletter.posthog.com/i/194905377?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc160ff9-ccba-43b6-8034-d559192ad060_1354x1104.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_!gKij!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc160ff9-ccba-43b6-8034-d559192ad060_1354x1104.png 424w, https://substackcdn.com/image/fetch/$s_!gKij!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc160ff9-ccba-43b6-8034-d559192ad060_1354x1104.png 848w, https://substackcdn.com/image/fetch/$s_!gKij!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc160ff9-ccba-43b6-8034-d559192ad060_1354x1104.png 1272w, https://substackcdn.com/image/fetch/$s_!gKij!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc160ff9-ccba-43b6-8034-d559192ad060_1354x1104.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 aria-hidden="true" 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><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>Requiring demos is a forcing function. You want to have something worth showing off, so initially ambitious plans quickly become more realistic to ship something real.</p><p>They&#8217;re also fun. When someone says &#8220;this is available now&#8221; or &#8220;we already have users using this,&#8221; there are always &#8220;ooohs&#8221; and &#8220;ahhhs.&#8221; People love a little showmanship and it&#8217;s fun to be in the spotlight.</p><p>While demos are mandatory, judging and prizes are optional and arguably undesirable. <a href="https://posthog.com/newsletter/43-lessons-about-hiring-for-startups?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">We hire people</a> to &#8220;<a href="https://posthog.com/handbook/values?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">be the driver</a>.&#8221; They don&#8217;t need artificial motivation like gift cards or merch to do that. We also don&#8217;t want people to only build projects they think will win, or what the bosses want to see.</p><p>When you give a self-motivated and autonomous team time and space to work on what they think is best, they&#8217;ll surprise and delight you with what they build. The results of our hackathons are proof of that.</p><blockquote><p><strong>Remember this:</strong> Let people know they&#8217;ll be demoing at the start and make sure everyone does. As a bonus, keep track of what people demo. It&#8217;s easy for these valuable ideas to get lost. Writing about what people built also makes for <a href="https://posthog.com/blog/mykonos-hackathon?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">great</a> <a href="https://posthog.com/blog/rome-hackathon?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">blog</a> <a href="https://posthog.com/blog/aruba-hackathon?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">content</a>.</p></blockquote><div><hr></div><h2>The best hackathon projects ship</h2><p>A common complaint about hackathons is that they are a waste of time. You spend a lot of time and effort that&#8217;s all lost after a few days, but it doesn&#8217;t have to be like that.</p><p>What does this look like in reality? Our <a href="https://posthog.com/logs?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">Logs</a> product can give you an idea:</p><ol><li><p>By the end of the 2025 offsite hackathon, the team had built OTEL log capture into ClickHouse, a query API, and a basic frontend.</p></li><li><p>After the offsite, the team felt it was worth continuing as Frank was looking into an internal logging solution anyways. He thought it could be &#8220;good enough&#8221; within one sprint.</p></li><li><p>Two weeks later, it was! It had the features we needed: filtering, search, and speed.</p></li><li><p>Logs then went on the backburner, but Tim mentioned it as a product we wanted to build soon and customers requested it.</p></li><li><p>Four months later, Frank revisited it, which was made easier because the product had already shipped internally. Ahead of Q4 planning, Logs was identified as a priority, made its own team, and moved quickly towards a proper launch.</p></li></ol><p>We don&#8217;t have a perfect hackathon-to-production pipeline. Instead we rely on a <a href="https://posthog.com/product-engineer/what-is-a-product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">product engineer</a> &#8220;being the driver,&#8221; pushing the project forward, and having the freedom to do so.</p><p>This wouldn&#8217;t have been possible without some slack after the hackathon to wrap up the project, ship what we&#8217;ve built, and make longer term plans. Doing this makes it easier to revisit and improve in the future.</p><p>Getting real customer demand was a big help, even if that customer was us. We looked at what Datadog would charge us for Logs and saw it was a minimum of $260,000 per month, providing a big incentive to work on it.</p><p>We don&#8217;t expect all projects to ship to production, deadend hackathon projects are part of the messy process of innovation, but everyone starts knowing that great projects can end up in production.</p><blockquote><p><strong>Remember this:</strong> Encourage people to &#8220;be the driver&#8221; to take their project as far as they can and give them some slack after the hackathon for them to do it.</p></blockquote><div><hr></div><h2>Make hackathons a tradition</h2><p>Out of 17 projects from at our <a href="https://www.youtube.com/watch?v=dGaSxBs3OsU">2025 hackathon in Mexico</a>, 10 were shared in our <code>#hackathon-ideas</code> Slack channel in advance.</p><p>This is the power of making a hackathon a tradition. People are more likely to share ideas throughout the year when they have a space for it and know they might actually get worked on. Good ideas can come at any time and often sound like weird ideas.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PEKU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb4ebc3c-8e4a-4eeb-ba0a-cc910294e222_1104x656.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PEKU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb4ebc3c-8e4a-4eeb-ba0a-cc910294e222_1104x656.png 424w, https://substackcdn.com/image/fetch/$s_!PEKU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb4ebc3c-8e4a-4eeb-ba0a-cc910294e222_1104x656.png 848w, https://substackcdn.com/image/fetch/$s_!PEKU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb4ebc3c-8e4a-4eeb-ba0a-cc910294e222_1104x656.png 1272w, https://substackcdn.com/image/fetch/$s_!PEKU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb4ebc3c-8e4a-4eeb-ba0a-cc910294e222_1104x656.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PEKU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb4ebc3c-8e4a-4eeb-ba0a-cc910294e222_1104x656.png" width="1104" height="656" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db4ebc3c-8e4a-4eeb-ba0a-cc910294e222_1104x656.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:656,&quot;width&quot;:1104,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:315918,&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://newsletter.posthog.com/i/194905377?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb4ebc3c-8e4a-4eeb-ba0a-cc910294e222_1104x656.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_!PEKU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb4ebc3c-8e4a-4eeb-ba0a-cc910294e222_1104x656.png 424w, https://substackcdn.com/image/fetch/$s_!PEKU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb4ebc3c-8e4a-4eeb-ba0a-cc910294e222_1104x656.png 848w, https://substackcdn.com/image/fetch/$s_!PEKU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb4ebc3c-8e4a-4eeb-ba0a-cc910294e222_1104x656.png 1272w, https://substackcdn.com/image/fetch/$s_!PEKU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb4ebc3c-8e4a-4eeb-ba0a-cc910294e222_1104x656.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 aria-hidden="true" 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><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>This is not an original idea. <a href="https://www.facebook.com/notes/10158791571967200/">Early Facebook hackathons</a> featured an internal wiki to share ideas. Some of their &#8220;most-loved products&#8221; started this way like Video, the Like button, Chat, Hip Hop for PHP, and even Timeline.</p><p>The added benefits of making your hackathon a tradition are:</p><ul><li><p>People are less restless working on things because they know they&#8217;ll have a chance to flex their other muscles at hackathons.</p></li><li><p>Many hackathon ideas are just inspiration for features that should be built as part of a team&#8217;s day-to-day work. A roadmap often misses the ambitious ideas hackathons encourage.</p></li><li><p>It&#8217;s a perk and cultural cornerstone. The hackathons show we value autonomy and give people the time to make the most of it. It also creates lore, like the time our AI chatbot was insistent PostHog&#8217;s mascot was a character named &#8220;Hoge.&#8221;</p></li></ul><blockquote></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MNrv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0df54718-6eb9-4f7a-a633-4278e3ce592f_1238x464.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MNrv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0df54718-6eb9-4f7a-a633-4278e3ce592f_1238x464.png 424w, https://substackcdn.com/image/fetch/$s_!MNrv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0df54718-6eb9-4f7a-a633-4278e3ce592f_1238x464.png 848w, https://substackcdn.com/image/fetch/$s_!MNrv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0df54718-6eb9-4f7a-a633-4278e3ce592f_1238x464.png 1272w, https://substackcdn.com/image/fetch/$s_!MNrv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0df54718-6eb9-4f7a-a633-4278e3ce592f_1238x464.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MNrv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0df54718-6eb9-4f7a-a633-4278e3ce592f_1238x464.png" width="1238" height="464" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0df54718-6eb9-4f7a-a633-4278e3ce592f_1238x464.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:464,&quot;width&quot;:1238,&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_!MNrv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0df54718-6eb9-4f7a-a633-4278e3ce592f_1238x464.png 424w, https://substackcdn.com/image/fetch/$s_!MNrv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0df54718-6eb9-4f7a-a633-4278e3ce592f_1238x464.png 848w, https://substackcdn.com/image/fetch/$s_!MNrv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0df54718-6eb9-4f7a-a633-4278e3ce592f_1238x464.png 1272w, https://substackcdn.com/image/fetch/$s_!MNrv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0df54718-6eb9-4f7a-a633-4278e3ce592f_1238x464.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 aria-hidden="true" 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><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>Making your hackathon a tradition turns them into a promise: that the company will keep making space for the weird and wonderful things they believe in, not just what&#8217;s on the roadmap. This is what really helps a hackathon turn into a foundation for building a great company.</p><blockquote><p><strong>Remember this:</strong> Start referring to your hackathon as your &#8220;annual hackathon.&#8221; Manifest it. Create a #hackathon-ideas Slack channel and post your random &#8220;we should build this&#8221; ideas in there.</p></blockquote><p><em>Words by <a href="https://x.com/ianvanagas">Ian Vanagas</a>, who has not forgotten about Hoge.</em></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.posthog.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe for everything you need to crush your next hackathon</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div><hr></div><h2>&#129428; Jobs at PostHog</h2><p>Join us at our next hackathon with this one easy trick (applying):</p><ul><li><p><strong><a href="https://posthog.com/careers/product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">Product Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/technical-account-manager?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">Technical Account Manager</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/payroll-manager?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">Payroll Manager</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/backend-engineer-ingestion?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">Backend Engineer - Ingestion</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/bdr?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">BDR</a></strong></p></li></ul><div><hr></div><h2>&#128715;&#65039; Late night reads to procrastinate to</h2><ul><li><p><strong><a href="https://posthog.com/blog/testing-ai-agents?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">A beginner&#8217;s guide to testing AI agents</a> - Radu Raicea</strong></p></li><li><p><strong><a href="https://posthog.com/blog/your-lifecycle-emails-are-wrong?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">You&#8217;re doing lifecycle emails wrong</a> - Sara Miteva</strong></p></li><li><p><strong><a href="https://posthog.com/blog/untangling-rayon-and-tokio?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=hackathons">Untangling Tokio and Rayon in production: From 2s latency spikes to 94ms flat</a> - Matheus Batista</strong></p></li><li><p><strong><a href="https://alexcwatt.com/hack-days/">Hack Days</a> - Alex Watt</strong></p></li><li><p><strong><a href="https://craigmod.com/essays/software_bonkers/">Software Bonkers</a> - Craig Mod</strong></p></li></ul>]]></content:encoded></item><item><title><![CDATA[The golden rules of agent-first product engineering]]></title><description><![CDATA[Five principles to develop your product intuition for agents]]></description><link>https://newsletter.posthog.com/p/the-golden-rules-of-agent-first-product</link><guid isPermaLink="false">https://newsletter.posthog.com/p/the-golden-rules-of-agent-first-product</guid><dc:creator><![CDATA[Jina Yoon]]></dc:creator><pubDate>Wed, 08 Apr 2026 19:01:23 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/29ab8f16-efac-4eaa-a09c-6124ef07b6de_2912x2096.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Companies building for agents often treat them as a bolt-on feature.</p><p>This is a mistake.</p><p>Agents today are more like a new form factor &#8211; an interaction layer that sits between your product and your users: </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jNb2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48f74cbd-ced6-4d38-ab24-4414a6685a75_923x379.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jNb2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48f74cbd-ced6-4d38-ab24-4414a6685a75_923x379.png 424w, https://substackcdn.com/image/fetch/$s_!jNb2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48f74cbd-ced6-4d38-ab24-4414a6685a75_923x379.png 848w, https://substackcdn.com/image/fetch/$s_!jNb2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48f74cbd-ced6-4d38-ab24-4414a6685a75_923x379.png 1272w, https://substackcdn.com/image/fetch/$s_!jNb2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48f74cbd-ced6-4d38-ab24-4414a6685a75_923x379.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jNb2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48f74cbd-ced6-4d38-ab24-4414a6685a75_923x379.png" width="923" height="379" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/48f74cbd-ced6-4d38-ab24-4414a6685a75_923x379.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:379,&quot;width&quot;:923,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:28089,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.posthog.com/i/193549431?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48f74cbd-ced6-4d38-ab24-4414a6685a75_923x379.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_!jNb2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48f74cbd-ced6-4d38-ab24-4414a6685a75_923x379.png 424w, https://substackcdn.com/image/fetch/$s_!jNb2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48f74cbd-ced6-4d38-ab24-4414a6685a75_923x379.png 848w, https://substackcdn.com/image/fetch/$s_!jNb2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48f74cbd-ced6-4d38-ab24-4414a6685a75_923x379.png 1272w, https://substackcdn.com/image/fetch/$s_!jNb2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48f74cbd-ced6-4d38-ab24-4414a6685a75_923x379.png 1456w" sizes="100vw" fetchpriority="high"></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 aria-hidden="true" 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><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>That means you need to build for agents as a <em>primary</em> surface, not an afterthought.</p><p>When done right, this opens up a whole new space of possibilities for your product, like autonomous work and asynchronous flows.</p><p>Implement it poorly and you&#8217;ll lose users&#8217; trust due to slow, buggy experiences and incorrect results.</p><p>We learned this the hard way and overhauled our AI architecture <a href="https://posthog.com/blog/8-learnings-from-1-year-of-agents-posthog-ai?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">two</a> <a href="https://posthog.com/newsletter/building-ai-agents?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">times</a> in the last year. Now, our <a href="https://posthog.com/ai?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">agent</a> and <a href="https://posthog.com/docs/model-context-protocol?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">MCP</a> have 6K+ daily active users.</p><p>Here are the golden rules of agent-first product engineering we learned along the way.</p><div><hr></div><h2>1. Let agents do everything users can</h2><p>If a human can do something in your product, an agent should be able to do it as well.</p><p>For example, let&#8217;s say you ask an agent to set up an <a href="https://posthog.com/experiments?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">A/B test</a> for a <a href="https://posthog.com/newsletter/pricing-advice?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">new pricing page</a>.</p><p>The agent would use the PostHog MCP to create the <a href="https://posthog.com/feature-flags?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">feature flag</a>, create the experiment, link it to the flag it just created, and set up the insight and metrics.</p><p>Now imagine if the <code>experiment-create</code> tool was missing because we just hadn&#8217;t prioritized it yet. The agent creates the flag and insight, but must stop and ask you to go to posthog.com, create the experiment yourself, and paste the experiment ID.</p><p>This is annoying and defeats the entire point.</p><p>The benefit of agents is that they reduce the time, attention, and expertise needed to complete a task. If your product doesn&#8217;t give agents the same capabilities as users, you&#8217;ll always be limited by the human in the loop.</p><p>Of course, there are situations where requiring human input makes sense, like if you&#8217;re dealing with sensitive data. But these should be deliberate exceptions, not accidental gaps.</p><h3>What this looks like in practice</h3><p>In practice, this means nearly everything in your API needs to be accessible to agents.</p><p>That doesn&#8217;t mean converting every endpoint into an MCP tool; we made that mistake in v1. (More on why that's bad in the next rule.)</p><p>Here&#8217;s how we do it now in v2:</p><ol><li><p>Our <a href="https://posthog.com/handbook/engineering/ai/implementing-mcp-tools?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first#code-generation-pipeline">pipeline</a> autogenerates an OpenAPI spec from our typed Django endpoints.</p></li><li><p>It then converts them into TypeScript validation (Zod) schemas.</p></li><li><p>In parallel, product teams have to manually opt-in each endpoint via YAML config files. Nothing is exposed by default.</p></li><li><p>The pipeline then combines the Zod schemas + YAML configs to generate the final TypeScript tool handlers.</p></li></ol><p>The result is a set of tool handlers &#8211; one file per product area<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> &#8211; ready to go in our MCP server. Agents are able to do anything that a human can through the PostHog API, even if the tools don&#8217;t exactly match the endpoints 1:1.</p><div><hr></div><h2>2. Meet agents at their level of abstraction</h2><p>To build an agent-first experience, you have to find the semantic layer where agents already reason best and meet them there.</p><p>This saves a ton of context (a precious resource) but the benefits are more than practical. They&#8217;re fundamental. The more &#8220;raw&#8221; your product&#8217;s agent interface is, the more creative potential you unlock.</p><p>Think about giving a child a Lego set for their birthday. If it comes with tires and axles already glued together, they&#8217;re going to make cars, trucks, and airplanes &#8211; vehicles that everyone has seen before.</p><p>If the parts come separated, they&#8217;re free to mix and match to build motorcycles, tire swings,<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> snow sleds, and who knows what else?</p><h3>What this looks like in practice</h3><p>In the old version of our MCP, to answer &#8220;why did signups drop last week?&#8221;, an agent had to make four separate calls: <code>projects-get</code>, <code>insight-get</code>, and <code>insight-query</code> (twice).</p><p><code>get-insight</code> or <code>get-funnel</code> may be meaningful to humans navigating the PostHog UI, but to an agent, it&#8217;s just an unnecessary translation step.</p><p>So in our MCP v2, we let agents query PostHog data in <a href="https://posthog.com/newsletter/building-ai-features?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first#2-identify-problems-that-ai-might-solve">a language they already speak fluently</a>: SQL.</p><p>By exposing our product at this layer of abstraction, we were able to turn off all our read/get endpoints off since they get subsumed by <a href="https://github.com/PostHog/posthog/blob/master/services/mcp/src/tools/posthogAiTools/executeSql.ts">executeSql.ts</a>.</p><p>Now, answering &#8220;why did signups drop last week?&#8221; can be answered with just a single, elegant query:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;sql&quot;,&quot;nodeId&quot;:&quot;c610fc92-f518-4319-935d-2d8cd8ced09f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-sql">SELECT
    toStartOfWeek(timestamp) AS week,
    countIf(event = 'signed_up') AS signups
FROM events
WHERE timestamp &gt;= now() - INTERVAL 2 WEEK
GROUP BY week
ORDER BY week</code></pre></div><div><hr></div><h2>3. Front-load universal context</h2><p>In the early days of AI, developers had to front-load <em>everything</em> into agents to compensate for smaller context windows and less capable models.</p><p>But as the technology keeps improving, there&#8217;s a new trend that removes as much context as possible and trusts the model to figure out the rest.</p><p>That works for general-purpose agents since they&#8217;re designed to be flexible. Anthropic can&#8217;t predict everything that everyone is <a href="https://posthog.com/newsletter/ai-coding-mistakes?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">using Claude for</a>.</p><p>But if you&#8217;re building an agent experience for your specific product, the problem space is much smaller. You already know the key scenarios, tools, and use cases.</p><p>So for <a href="https://posthog.com/product-engineer/what-is-a-product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">product engineers</a>, you can strike that balance by front-loading what you know every session will need, and defer the rest.</p><h3>What this looks like in practice</h3><p>We didn&#8217;t think about it this way at first, so our v1 system prompt was four lines that essentially said &#8220;Here are some tools for using PostHog, GLHF.&#8221;</p><p>Every agent would waste time and tokens to rediscover the same things every time they connected.</p><p>In v2, we made use of the fact that anyone connecting to the PostHog MCP is there to query their PostHog data. That&#8217;s the whole point.</p><p>Now, we load these at the start of every PostHog MCP session:</p><ul><li><p><strong>PostHog-specific taxonomy.</strong> What&#8217;s a feature flag, experiment, <a href="https://posthog.com/session-replay?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">session replay</a>, etc.</p></li><li><p><strong>Our SQL syntax.</strong> How to use <a href="https://posthog.com/docs/sql?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">our custom translation layer over ClickHouse SQL</a>.</p></li><li><p><strong>Critical querying rules.</strong> Hard constraints that apply to every query (e.g., always filter by time range).</p></li></ul><p>Everything else gets pulled later. We let the agent figure out when.</p><div><hr></div><h2>4. Writing skills is a human skill</h2><p>Skills help you fill the gap between what your product can do and what an agent can do out of the box with your tools:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EhKh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb23b7d60-1b02-477f-b37f-98e9dfab5690_569x436.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EhKh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb23b7d60-1b02-477f-b37f-98e9dfab5690_569x436.png 424w, https://substackcdn.com/image/fetch/$s_!EhKh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb23b7d60-1b02-477f-b37f-98e9dfab5690_569x436.png 848w, https://substackcdn.com/image/fetch/$s_!EhKh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb23b7d60-1b02-477f-b37f-98e9dfab5690_569x436.png 1272w, https://substackcdn.com/image/fetch/$s_!EhKh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb23b7d60-1b02-477f-b37f-98e9dfab5690_569x436.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EhKh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb23b7d60-1b02-477f-b37f-98e9dfab5690_569x436.png" width="569" height="436" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b23b7d60-1b02-477f-b37f-98e9dfab5690_569x436.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:436,&quot;width&quot;:569,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:28587,&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://newsletter.posthog.com/i/193549431?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb23b7d60-1b02-477f-b37f-98e9dfab5690_569x436.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_!EhKh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb23b7d60-1b02-477f-b37f-98e9dfab5690_569x436.png 424w, https://substackcdn.com/image/fetch/$s_!EhKh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb23b7d60-1b02-477f-b37f-98e9dfab5690_569x436.png 848w, https://substackcdn.com/image/fetch/$s_!EhKh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb23b7d60-1b02-477f-b37f-98e9dfab5690_569x436.png 1272w, https://substackcdn.com/image/fetch/$s_!EhKh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb23b7d60-1b02-477f-b37f-98e9dfab5690_569x436.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 aria-hidden="true" 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><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 biggest mistake people make is writing them like step-by-step manuals. If you&#8217;re too prescriptive, agents will follow your instructions too rigidly and lose the ability to improvise (see rule #3).</p><p>Instead, think of it like onboarding a new employee who&#8217;s already highly qualified.</p><p>A bad manager micromanages every process &#8212; do A, then B, never C, and always D. A good manager trusts the hire and only steps in with the specific things they couldn&#8217;t have known on their own.</p><p>That&#8217;s <a href="https://posthog.com/handbook/engineering/ai/writing-skills?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">what good skills look like</a>.</p><p>They should only contain context that a human can provide since an agent can&#8217;t discover by itself, such as:</p><ul><li><p><strong>Idiosyncratic knowledge.</strong> Internal acronyms, naming conventions, and style guides.</p></li><li><p><strong>Edge cases.</strong> The uncommon places where things break, and how to handle them.</p></li><li><p><strong><a href="https://posthog.com/newsletter/good-taste-great-products?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">Taste</a> and craft. </strong>Not just how to use your product correctly, but how to use it well.</p></li></ul><div><hr></div><h3>What this looks like in practice</h3><p>To figure out what goes into a skill, ask yourself: what would an agent get wrong about your product without you?</p><p>For us, it&#8217;s in the connective tissue between our products, the domain knowledge buried in our data, and our niche developer takes. For Linear, it&#8217;s the opinionated issue hierarchy. For Figma, it&#8217;s their design system coherence.</p><p>As an example, here&#8217;s a line we added to <a href="https://github.com/PostHog/posthog/blob/master/services/mcp/definitions/prompts/query-retention.md">query-retention.md</a>:</p><blockquote><p>For <a href="https://posthog.com/newsletter/wtf-is-activation?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">activation</a> and <a href="https://posthog.com/docs/product-analytics/retention?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">retention</a> events, use the <code>$pageview</code> event by default. Avoid infrequent or inconsistent events like <code>signed in</code> unless asked explicitly, as they skew the data.</p></blockquote><p>Without this guidance, an agent would just use whatever event the user mentions, which is usually misleading. Retention would look worse than it actually is, and there&#8217;s no way a user would know unless they&#8217;d done this analysis themselves before.</p><p>By adding this line in the skill, we&#8217;re embedding a PostHog Certified&#8482; opinion about what good metrics and analysis actually look like. This ensures agents use our product correctly, and users aren&#8217;t inadvertently misled.</p><div><hr></div><h2>5. Treat agents like real users</h2><p>In traditional software, even if user behavior isn&#8217;t predictable, the code is. With AI, you lose that stability; the same inputs <a href="https://posthog.com/blog/correct-llm-code-generation?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">won&#8217;t produce the same outputs anymore</a>.</p><p>This means <a href="https://posthog.com/blog/testing-ai-agents?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">classic testing methods will leave a gap</a>, so you need new ways to catch the things automated tests no longer will.</p><p>You need to treat the agent like you would treat a user. <a href="https://posthog.com/newsletter/talk-to-users?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">Talk to them</a>, build empathy for them, and develop an intuition of what they want.</p><p>This helps you see your product like they would and get familiar with all the interaction patterns and quirks they have.</p><h3>What this looks like in practice</h3><p>Here are a few habits and behaviors we adopt at PostHog to achieve this:</p><ul><li><p><strong><a href="https://posthog.com/product-engineers/dogfooding?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">Dogfooding</a> headlessly.</strong> When testing our agent features, we reach for the CLI before the UI. This puts us in the same environment the agent operates in and exposes us to the same types of errors, syntax, and friction they&#8217;d experience. It&#8217;s how we caught an issue internally and found that our MCP tool descriptions were eating up way more tokens than it should.</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_!LMkd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F917de8f4-bbdc-402f-8120-97eb8ae21da9_2605x1973.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LMkd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F917de8f4-bbdc-402f-8120-97eb8ae21da9_2605x1973.png 424w, https://substackcdn.com/image/fetch/$s_!LMkd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F917de8f4-bbdc-402f-8120-97eb8ae21da9_2605x1973.png 848w, https://substackcdn.com/image/fetch/$s_!LMkd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F917de8f4-bbdc-402f-8120-97eb8ae21da9_2605x1973.png 1272w, https://substackcdn.com/image/fetch/$s_!LMkd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F917de8f4-bbdc-402f-8120-97eb8ae21da9_2605x1973.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LMkd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F917de8f4-bbdc-402f-8120-97eb8ae21da9_2605x1973.png" width="1456" height="1103" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/917de8f4-bbdc-402f-8120-97eb8ae21da9_2605x1973.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1103,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6930522,&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://newsletter.posthog.com/i/193549431?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F917de8f4-bbdc-402f-8120-97eb8ae21da9_2605x1973.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_!LMkd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F917de8f4-bbdc-402f-8120-97eb8ae21da9_2605x1973.png 424w, https://substackcdn.com/image/fetch/$s_!LMkd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F917de8f4-bbdc-402f-8120-97eb8ae21da9_2605x1973.png 848w, https://substackcdn.com/image/fetch/$s_!LMkd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F917de8f4-bbdc-402f-8120-97eb8ae21da9_2605x1973.png 1272w, https://substackcdn.com/image/fetch/$s_!LMkd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F917de8f4-bbdc-402f-8120-97eb8ae21da9_2605x1973.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 aria-hidden="true" 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><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><blockquote></blockquote><ul><li><p><strong>Doing <a href="https://posthog.com/blog/standup-bot-revenge?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first#tracing">manual trace reviews</a>.</strong> We hold a weekly &#8220;traces hour&#8221; where we go through real user sessions that have user feedback ratings. For example, we found a case where PostHog AI confidently told a user that feature flags don&#8217;t support <a href="https://posthog.com/docs/feature-flags/scheduled-flag-changes?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">scheduled releases</a> and then backtracked. Automated tests wouldn&#8217;t have caught that since the agent did respond; the response was just incorrect.<s><br></s></p></li><li><p><strong><a href="https://posthog.com/blog/testing-ai-agents?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">Feeding our intuition into a loop</a>.</strong> We then amplify the value of those manual reviews by building evals based on what our human eyes caught &#8211; both the good and the bad. Once, we found a session where PostHog AI correctly intervened when it spotted a weird data pattern that the user hadn&#8217;t noticed. We turned that into an eval case so that future model or prompt changes don&#8217;t regress the good behaviors we want to keep.</p></li></ul><p><em>Words by <a href="https://x.com/jinayoon_">Jina Yoon</a> who hereby declares herself agentpilled.</em></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.posthog.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe for more gilded content</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2>&#128220; Related texts</h2><ul><li><p><strong><a href="https://justin.poehnelt.com/posts/rewrite-your-cli-for-ai-agents/">You Need to Rewrite Your CLI for AI Agents</a> &#8211; Justin Poehnelt</strong></p></li><li><p><strong><a href="https://newsletter.pragmaticengineer.com/p/mcp-deepdive">Building MCP servers in the real world</a> &#8211; Gergely Orosz and Elin Nilsson (The Pragmatic Engineer)</strong></p></li><li><p><strong><a href="https://engineering.block.xyz/blog/blocks-playbook-for-designing-mcp-servers">Block&#8217;s Playbook for Designing MCP Servers</a> &#8211; Salman Mohammed and Kalvin Chau (Block)</strong></p></li><li><p><strong> <a href="https://www.arcade.dev/patterns">Patterns for Agentic Tools</a> &#8211; Arcade </strong></p></li><li><p><strong><a href="https://posthog.com/blog/standup-bot-revenge?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">I hate the standup bot (so I built an agent to do it for me) </a>&#8211; Andy Maguire<br></strong></p></li></ul><h2>&#129428; Join the order</h2><ul><li><p><strong><a href="https://posthog.com/careers/product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">Product Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/product-manager-(ex-founder-or-ex-product-engineer)?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">Product Manager (ex-founder or ex-product engineer)</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/technical-account-manager?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">Technical Account Manager</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/security-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">Security Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/ai-product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">AI Product Engineer</a><a href="https://posthog.com/careers/security-engineerhttps://posthog.com/careers/ai-research-engineer"><br></a></strong></p></li></ul><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>As a nice bonus, this pipeline keeps tool ownership with the people closest to the product, which fits <a href="https://posthog.com/newsletter/small-teamshttps://posthog.com/careers/ai-product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-first">our small team culture</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>We fact checked with our resident Lego experts who confirmed that it is indeed possible to build <a href="https://www.youtube.com/watch?v=4Xb-OdMEE7U">a tire swing out of Legos</a>.</p></div></div>]]></content:encoded></item><item><title><![CDATA[What we wish we knew about building AI agents]]></title><description><![CDATA[Lessons learned from two years of building AI agents at PostHog]]></description><link>https://newsletter.posthog.com/p/what-we-wish-we-knew-before-building</link><guid isPermaLink="false">https://newsletter.posthog.com/p/what-we-wish-we-knew-before-building</guid><dc:creator><![CDATA[Ian Vanagas]]></dc:creator><pubDate>Tue, 24 Mar 2026 18:04:41 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c76757e8-e900-405e-b4a2-e97823ebf2f0_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>One thing on every startup&#8217;s mind: Should we build an AI agent?</p><p>We had this thought two years ago, released an &#8220;AI product assistant&#8221; 6 months later, iterated, and then relaunched as <a href="https://posthog.com/ai?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">PostHog AI</a> in November last year.</p><p>We learned a lot along the way that we wished we knew when we started. With that knowledge, we could have&#8230;</p><ol><li><p>Launched months earlier.</p></li><li><p>Provided a better early experience to users.</p></li><li><p>Made progress on capabilities faster.</p></li></ol><p>To help you build a better agent faster, we&#8217;re sharing what we wished we had known about building AI agents.</p><h2>1. Should you build an MCP server instead?</h2><p>Should you even build an AI agent into your product? The capabilities of agents are unquestionably valuable but this does not mean you need to build a custom one. Making your product accessible to agents is often a better option.</p><p>Could your agent capabilities just be an <a href="https://posthog.com/docs/model-context-protocol?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">MCP server</a>? These are simpler to build and require less maintenance, and for us, is used as much as our built-in agent, PostHog AI. For example, 34% of dashboards created by AI were done through our MCP server (18% of all dashboards created).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!br3m!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9a8666-c384-4c20-aa69-d4860b8e570a_1513x999.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!br3m!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9a8666-c384-4c20-aa69-d4860b8e570a_1513x999.png 424w, https://substackcdn.com/image/fetch/$s_!br3m!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9a8666-c384-4c20-aa69-d4860b8e570a_1513x999.png 848w, https://substackcdn.com/image/fetch/$s_!br3m!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9a8666-c384-4c20-aa69-d4860b8e570a_1513x999.png 1272w, https://substackcdn.com/image/fetch/$s_!br3m!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9a8666-c384-4c20-aa69-d4860b8e570a_1513x999.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!br3m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9a8666-c384-4c20-aa69-d4860b8e570a_1513x999.png" width="1456" height="961" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb9a8666-c384-4c20-aa69-d4860b8e570a_1513x999.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:961,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:233980,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.posthog.com/i/191968306?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9a8666-c384-4c20-aa69-d4860b8e570a_1513x999.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_!br3m!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9a8666-c384-4c20-aa69-d4860b8e570a_1513x999.png 424w, https://substackcdn.com/image/fetch/$s_!br3m!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9a8666-c384-4c20-aa69-d4860b8e570a_1513x999.png 848w, https://substackcdn.com/image/fetch/$s_!br3m!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9a8666-c384-4c20-aa69-d4860b8e570a_1513x999.png 1272w, https://substackcdn.com/image/fetch/$s_!br3m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9a8666-c384-4c20-aa69-d4860b8e570a_1513x999.png 1456w" sizes="100vw" fetchpriority="high"></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 aria-hidden="true" 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><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">Sources of dashboards created last week</figcaption></figure></div><p>MCP servers are great if you expect your users to be developers or people combining your product with others in their &#10024;<em>agentic workflows</em>&#10024;. Just as importantly, MCP servers validate demand for further agentic capabilities.</p><p>Custom agents are better when your users are <a href="https://posthog.com/newsletter/engineeringification-of-everything?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">non-engineers</a>, when compliance blocks external agents, or when you need full control of the user experience (for example, custom image generation).</p><p>Even when you decide to go custom, consider if simpler alternatives fit your use case:</p><ul><li><p>For one-shot Q&amp;A like generating product descriptions, try a simple LLM call with good prompting</p></li><li><p>For a single task like SQL or code generation, use a specialized model with structured output</p></li><li><p>For a multi-step but predictable flow like email classification plus response drafting, create a hardcoded workflow with LLM steps</p></li></ul><p>Although PostHog AI is an agent now, we validated demand for it with a simpler use case and system. We built a workflow for data-related questions like &#8220;How many people signed up last week?&#8221; which lead directly to insight generation.</p><p>Only once this workflow saw adoption and users demanded other use cases (like answering docs questions or <a href="https://posthog.com/docs/feature-flags/creating-feature-flags?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">creating feature flags</a>) did the team build an agent.</p><h2>2. Your harness is not your moat</h2><p>Once you decide to build an agent, the next question is how will it work. The answer to this is an agent harness: the code and infrastructure that combines with a model to help it understand and use your product.</p><p>You aren&#8217;t going to win because you&#8217;ve created some genius new harness, especially if you&#8217;re building your first AI agent. Don&#8217;t use innovation points here. Anthropic wrote a <a href="https://platform.claude.com/docs/en/agent-sdk/overview">perfectly good SDK</a>, and both <a href="https://www.anthropic.com/engineering/building-effective-agents">Anthropic</a> and <a href="https://ampcode.com/notes/how-to-build-an-agent">AmpCode</a> have helpful guides.</p><p>If we were restarting today, we would have skipped building a custom harness and made MCP the canonical interface. We learned this the hard way through three iterations of PostHog AI this year.</p><p>The <a href="https://posthog.com/blog/8-learnings-from-1-year-of-agents-posthog-ai?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">first harness</a> was a coordinator that routed user messages to specialized sub-agents, but this created a black box problem as the coordinator couldn&#8217;t see what sub-agents were doing leading to context loss and confusion.</p><p>The <a href="https://posthog.com/handbook/engineering/ai/architecture?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">second</a> was a single agent loop with self contained modes and tools within each mode. This solved the visibility issue, but didn&#8217;t scale. If we didn&#8217;t write a tool, the capability wouldn&#8217;t exist. This led us to spending a lot of time writing tools (44 by the end) rather than improving in other ways.</p><p>Our third and current harness uses the Claude Agent SDK with MCP tools and skills. This change came from two realizations:</p><ol><li><p><strong>Our agent could be more creative.</strong> The Claude Agent SDK gives PostHog AI access to a code-execution sandbox. The agent can use it to query with SQL and run custom scripts, unlocking new capabilities without us needing to build them.</p></li><li><p><strong>Agents are a primary persona.</strong> Our &#8220;users&#8221; are increasingly agents, whether that is through PostHog AI or <a href="https://posthog.com/docs/model-context-protocol?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">our MCP server</a>. Our work here should converge and support both using a single architecture.</p></li></ol><p>The flexibility of the sandbox plus the scalability of MCP tools and skill standards (which I&#8217;ll explain more about later) solves the issues of the second harness and positions us better for an agent-first future.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-WJX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19c1b5d2-b203-46aa-9aa8-5e62404c7b06_2188x958.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-WJX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19c1b5d2-b203-46aa-9aa8-5e62404c7b06_2188x958.png 424w, https://substackcdn.com/image/fetch/$s_!-WJX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19c1b5d2-b203-46aa-9aa8-5e62404c7b06_2188x958.png 848w, https://substackcdn.com/image/fetch/$s_!-WJX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19c1b5d2-b203-46aa-9aa8-5e62404c7b06_2188x958.png 1272w, https://substackcdn.com/image/fetch/$s_!-WJX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19c1b5d2-b203-46aa-9aa8-5e62404c7b06_2188x958.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-WJX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19c1b5d2-b203-46aa-9aa8-5e62404c7b06_2188x958.png" width="1456" height="637" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/19c1b5d2-b203-46aa-9aa8-5e62404c7b06_2188x958.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:637,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:104283,&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://newsletter.posthog.com/i/191968306?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19c1b5d2-b203-46aa-9aa8-5e62404c7b06_2188x958.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_!-WJX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19c1b5d2-b203-46aa-9aa8-5e62404c7b06_2188x958.png 424w, https://substackcdn.com/image/fetch/$s_!-WJX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19c1b5d2-b203-46aa-9aa8-5e62404c7b06_2188x958.png 848w, https://substackcdn.com/image/fetch/$s_!-WJX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19c1b5d2-b203-46aa-9aa8-5e62404c7b06_2188x958.png 1272w, https://substackcdn.com/image/fetch/$s_!-WJX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19c1b5d2-b203-46aa-9aa8-5e62404c7b06_2188x958.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 aria-hidden="true" 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><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><h2>3. Your context is your advantage</h2><p>When building an agent, there&#8217;s ultimately one question you need to answer to succeed: How does this beat Claude?</p><p>Context is the most important part of an answer. The combination of your app&#8217;s functionality and user data create a unique blend no other product can match.</p><p>Although you have product and user context sitting around, you need structure and format it to be useful for the agent. We do this with:</p><ol><li><p><strong><a href="https://github.com/PostHog/posthog/blob/master/products/data_warehouse/mcp/tools.yaml">MCP tools</a>. </strong>Capabilities <a href="https://posthog.com/handbook/engineering/ai/implementing-mcp-tools?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">selected and extracted from the PostHog API</a> to expose all possible actions that agents can perform in PostHog. Examples include list feature flags, create a survey, or execute an SQL query.</p></li><li><p><strong><a href="https://github.com/PostHog/posthog/blob/master/products/posthog_ai/skills/query-examples/SKILL.md">Skills</a>.</strong> Markdown files <a href="https://posthog.com/handbook/engineering/ai/writing-skills?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">we write to teach the agent complete workflows</a> and how to use our product. These include query patterns, system table schemas, examples, and MCP tool references. They are templates rendered at build time, so they can pull live context from the codebase like model schemas.</p></li><li><p><strong><a href="https://github.com/PostHog/posthog/blob/master/ee/hogai/context/context.py">Layered runtime context injection</a>. </strong>The frontend sends the user&#8217;s current view and state such as dashboards, insights, <a href="https://posthog.com/session-replay?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">session recordings</a>, and filters. This is enriched with actual queries results and project metadata like timezone and organization name.</p></li><li><p><strong><a href="https://github.com/PostHog/posthog/blob/master/ee/hogai/tools/read_taxonomy/mcp_tool.py">A taxonomy tool</a>. </strong>This lets the agent explore the user&#8217;s event names, properties, and property values on demand rather than stuffing them all into the prompt upfront.</p></li><li><p><strong><a href="https://github.com/PostHog/posthog/blob/master/ee/hogai/chat_agent/memory/nodes.py">A memory onboarding flow</a>.</strong> This collects company and product context through conversation and persists it across sessions, so the agent builds understanding of each user&#8217;s setup over time.</p></li></ol><p>Without this structured product context, the agent struggles to understand both our product and the user&#8217;s goals. It can get lost on simple questions because the context behind those questions is complex.</p><p>Reality has a surprising amount of detail and people define tasks in ambiguous ways. How would you answer &#8220;where do users drop off in CFMP<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> conversion&#8221; without context?</p><h2>4. Set up observability and evaluation from day one</h2><p>These are essential as AI agents are non-deterministic and can <a href="https://posthog.com/newsletter/ai-coding-mistakes?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">fail in unpredictable ways</a>. Without visibility into this, you can&#8217;t improve them or catch regressions.</p><p>We didn&#8217;t have observability and evaluation early and regretted it. We wish we had:</p><ul><li><p><a href="https://posthog.com/docs/llm-analytics/traces?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">Tracing</a> for every LLM call with inputs, outputs, latency, and cost</p></li><li><p>Trace IDs that span the full conversation</p></li><li><p>The ability to replay and debug <a href="https://posthog.com/docs/llm-analytics/sessions?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">specific interactions</a></p></li><li><p>A <a href="https://posthog.com/docs/llm-analytics/clusters?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">curated datasets</a> of real user queries</p></li><li><p>Automated scorers like <a href="https://posthog.com/blog/stop-ai-slop?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">LLM-as-judge</a> and deterministic checks</p></li></ul><p>Basically, <a href="https://posthog.com/llm-analytics?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">LLM analytics</a>.</p><p>Unfortunately, LLM analytics alone isn&#8217;t enough. Reality is gnarly and to deal with it, our team often looks at real usage.</p><p>They run a &#8220;traces hour,&#8221; where they meet, manually analyze LLM traces (AKA real user interactions), and find areas to improve. <a href="https://posthog.com/docs/llm-analytics/evaluations?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">Evals</a> make the most sense when they stem from these investigations.</p><p>Like building any successful product, understanding a user&#8217;s experience is critical to building a successful agent.</p><h2>5. It doesn&#8217;t matter how cool your capabilities are</h2><p>After getting buried in technical details, it&#8217;s important to poke your head out and remember who you&#8217;re building for. You&#8217;re not building for some hypothetical &#8220;coolest AI agent&#8221; contest, you&#8217;re building for your users.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Wka-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F593d31ae-b447-4042-9919-fa998e9e44bc_1600x899.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wka-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F593d31ae-b447-4042-9919-fa998e9e44bc_1600x899.png 424w, https://substackcdn.com/image/fetch/$s_!Wka-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F593d31ae-b447-4042-9919-fa998e9e44bc_1600x899.png 848w, https://substackcdn.com/image/fetch/$s_!Wka-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F593d31ae-b447-4042-9919-fa998e9e44bc_1600x899.png 1272w, https://substackcdn.com/image/fetch/$s_!Wka-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F593d31ae-b447-4042-9919-fa998e9e44bc_1600x899.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wka-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F593d31ae-b447-4042-9919-fa998e9e44bc_1600x899.png" width="1456" height="818" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/593d31ae-b447-4042-9919-fa998e9e44bc_1600x899.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:818,&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_!Wka-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F593d31ae-b447-4042-9919-fa998e9e44bc_1600x899.png 424w, https://substackcdn.com/image/fetch/$s_!Wka-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F593d31ae-b447-4042-9919-fa998e9e44bc_1600x899.png 848w, https://substackcdn.com/image/fetch/$s_!Wka-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F593d31ae-b447-4042-9919-fa998e9e44bc_1600x899.png 1272w, https://substackcdn.com/image/fetch/$s_!Wka-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F593d31ae-b447-4042-9919-fa998e9e44bc_1600x899.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 aria-hidden="true" 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><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>What users want is often at odds with what&#8217;s coolest. The most common pain points users faced weren&#8217;t our agent&#8217;s range of capabilities or functionality, but things like:</p><ul><li><p>Inconsistent performance</p></li><li><p>Unexpected failures</p></li><li><p>Generic error messages without clear explanation</p></li><li><p>Unclear capabilities leading to complex queries failing</p></li><li><p>Lack of signs of uncertainty, source of insights, and progress</p></li></ul><p>While new capabilities are cool, ensuring your agent actually solves your customer&#8217;s problems is even cooler. Ultimately, building an AI agent is not just a showcase of your AI skillz, but a <a href="https://posthog.com/blog/what-is-a-product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">product engineering problem</a>. This requires you to talk to users, ship features they want, and iterate.</p><p><em>Words by <a href="https://x.com/ianvanagas">Ian Vanagas</a> who has plenty of agentic capabilities himself if you ask nicely.</em></p><div><hr></div><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://newsletter.posthog.com/p/what-we-wish-we-knew-before-building?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Share with someone building an agent to save them a few months </p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.posthog.com/p/what-we-wish-we-knew-before-building?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.posthog.com/p/what-we-wish-we-knew-before-building?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><div><hr></div><h2>&#129428; Jobs at PostHog</h2><p>Unlike many AI companies, we don&#8217;t think agents are going to take over every job in the next 6 months. In fact, we&#8217;re hiring!</p><ul><li><p><strong><a href="https://posthog.com/careers/product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">Product Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/security-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">Security Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/finops-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">FinOps Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/technical-account-manager?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">Technical Account Manager</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/forward-deployed-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">Forward Deployed Engineer</a></strong></p></li></ul><div><hr></div><h2>&#128218; More good reads</h2><ul><li><p><strong><a href="https://posthog.com/blog/llm-analytics-clustering-how-it-works?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">How we built automatic clustering for LLM traces</a> &#8211; Andy Maguire</strong></p></li><li><p><strong><a href="https://itnext.io/mcp-is-dead-long-live-mcp-a67bd74a6576">MCP is Dead; Long Live MCP!</a> &#8211; Charles Chen</strong></p></li><li><p><strong><a href="https://www.linkedin.com/pulse/production-telemetry-spec-survived-vidhya-ranganathan-vvkyc/">Production Telemetry Is the Spec That Survived</a> &#8211; Vidhya R.</strong></p></li><li><p><strong><a href="https://justin.poehnelt.com/posts/rewrite-your-cli-for-ai-agents/">You Need to Rewrite Your CLI for AI Agents</a> &#8211; Justin Poehnelt</strong></p></li><li><p><strong><a href="https://posthog.com/blog/8-learnings-from-1-year-of-agents-posthog-ai?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=agent-lessons">8 learnings from 1 year of agents</a> &#8211; Michael Matloka</strong></p></li></ul><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>What&#8217;s CFMP? Exactly my point &#128521;.</p></div></div>]]></content:encoded></item><item><title><![CDATA[WTF does a product manager do? (and why engineers should care)]]></title><description><![CDATA[Skills for developers from the product manager playbook]]></description><link>https://newsletter.posthog.com/p/an-engineers-guide-to-product-management</link><guid isPermaLink="false">https://newsletter.posthog.com/p/an-engineers-guide-to-product-management</guid><dc:creator><![CDATA[Jina Yoon]]></dc:creator><pubDate>Wed, 11 Mar 2026 21:11:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!K4n9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4a363d3-63ed-4d48-a8c7-492c61fea786_2912x2096.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In our last issue, Ian Vanagas wrote about how <a href="https://posthog.com/newsletter/engineeringification-of-everything?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm">engineering has escaped the codebase.</a> How engineering tools, mindset, and identity increasingly shape every function, especially at startups.</p><p>We&#8217;ve seen this first-hand at <a href="https://posthog.com?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm">PostHog</a>, but it&#8217;s not an isolated trend. The lines between product management and engineering are blurring, too.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><p>Thanks to LLMs, figuring out what to build is now a greater bottleneck than how to build it, and it&#8217;s forcing engineers to think more like product managers (PMs).</p><p>In this issue, we&#8217;ll help you take advantage of what product managers have already figured out by going over the top three skills in their playbook.</p><div><hr></div><h2>1. Gather the right context</h2><p>Providing context is a product manager&#8217;s most important job.</p><p>What exactly do we mean by context? In the same way that sailors used to navigate by the stars, engineers depend on <strong>context</strong> to make the right product decisions.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!K4n9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4a363d3-63ed-4d48-a8c7-492c61fea786_2912x2096.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!K4n9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4a363d3-63ed-4d48-a8c7-492c61fea786_2912x2096.jpeg 424w, https://substackcdn.com/image/fetch/$s_!K4n9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4a363d3-63ed-4d48-a8c7-492c61fea786_2912x2096.jpeg 848w, https://substackcdn.com/image/fetch/$s_!K4n9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4a363d3-63ed-4d48-a8c7-492c61fea786_2912x2096.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!K4n9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4a363d3-63ed-4d48-a8c7-492c61fea786_2912x2096.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!K4n9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4a363d3-63ed-4d48-a8c7-492c61fea786_2912x2096.jpeg" width="1456" height="1048" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e4a363d3-63ed-4d48-a8c7-492c61fea786_2912x2096.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1048,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1676442,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.posthog.com/i/190640421?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4a363d3-63ed-4d48-a8c7-492c61fea786_2912x2096.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!K4n9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4a363d3-63ed-4d48-a8c7-492c61fea786_2912x2096.jpeg 424w, https://substackcdn.com/image/fetch/$s_!K4n9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4a363d3-63ed-4d48-a8c7-492c61fea786_2912x2096.jpeg 848w, https://substackcdn.com/image/fetch/$s_!K4n9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4a363d3-63ed-4d48-a8c7-492c61fea786_2912x2096.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!K4n9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4a363d3-63ed-4d48-a8c7-492c61fea786_2912x2096.jpeg 1456w" sizes="100vw" fetchpriority="high"></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 aria-hidden="true" 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><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>Good context points teams in the right direction; great context can change a company&#8217;s entire trajectory.</p><p>Take Duolingo for example.</p><p>In <a href="https://www.lennysnewsletter.com/p/how-duolingo-reignited-user-growth">a guest edition of Lenny&#8217;s Newsletter</a>, Duolingo&#8217;s Head of Product, Jorge Mazal, recounted how the company fixed its stalling growth problem. The team initially focused on friend referrals, premium trials, and in-game mechanics. Nothing worked, and daily active users (DAU) continued to decline.</p><p>But then Mazal and the data science team discovered that current user retention rates (CURR) were <em>5x more impactful</em> on DAU than any other projected metric. That single piece of context completely shifted the product roadmap.</p><p>Instead of trying to acquire new users, the team invested in keeping <em>existing</em> learners hooked with leaderboards, daily streaks, and &#8211; of course &#8211; passive-aggressive push notifications from everybody&#8217;s favorite lime green owl.</p><p>Four years later, Duolingo successfully exited with massive 4.5x DAU gainz.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qIfS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff02bb757-9483-43ae-85db-c4a0f8b09f95_811x373.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qIfS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff02bb757-9483-43ae-85db-c4a0f8b09f95_811x373.png 424w, https://substackcdn.com/image/fetch/$s_!qIfS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff02bb757-9483-43ae-85db-c4a0f8b09f95_811x373.png 848w, https://substackcdn.com/image/fetch/$s_!qIfS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff02bb757-9483-43ae-85db-c4a0f8b09f95_811x373.png 1272w, https://substackcdn.com/image/fetch/$s_!qIfS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff02bb757-9483-43ae-85db-c4a0f8b09f95_811x373.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qIfS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff02bb757-9483-43ae-85db-c4a0f8b09f95_811x373.png" width="811" height="373" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f02bb757-9483-43ae-85db-c4a0f8b09f95_811x373.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:373,&quot;width&quot;:811,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:148796,&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://newsletter.posthog.com/i/190640421?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff02bb757-9483-43ae-85db-c4a0f8b09f95_811x373.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_!qIfS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff02bb757-9483-43ae-85db-c4a0f8b09f95_811x373.png 424w, https://substackcdn.com/image/fetch/$s_!qIfS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff02bb757-9483-43ae-85db-c4a0f8b09f95_811x373.png 848w, https://substackcdn.com/image/fetch/$s_!qIfS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff02bb757-9483-43ae-85db-c4a0f8b09f95_811x373.png 1272w, https://substackcdn.com/image/fetch/$s_!qIfS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff02bb757-9483-43ae-85db-c4a0f8b09f95_811x373.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 aria-hidden="true" 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><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>Product metrics like CURR and DAU in Duolingo&#8217;s story are just one form of context. There are many more, such as:</p><ul><li><p><strong>Competitor landscape.</strong> <em>What are our competitors doing, and should we do that, too? </em>In <a href="https://techcrunch.com/2016/08/02/silicon-copy/">an interview with TechCrunch</a>, Instagram&#8217;s CEO described how the company copied and outperformed Snapchat Stories in 2016.</p></li><li><p><strong>User research.</strong> <em>What do prospective users say they want?</em> Buffer <a href="https://buffer.com/resources/talking-to-users/">interviewed 30+ content creators</a> to discover what people actually want from creative AI assistants.</p></li><li><p><strong>Industry news.</strong> <em>What&#8217;s happening in the industry that we should pay attention to? </em>When generative AI took off in 2023, Canva <a href="https://www.canva.com/newsroom/news/canva-2023-wrap/">turned it into its core feature</a> and doubled revenue in two years ($1.7B &#8594; $3.3B).</p></li><li><p><strong>Customer feedback. </strong><em>What do current customers say they want, and is it actually what they want? </em>When Linear users requested &#8220;custom fields&#8221;, they dug deeper and <a href="https://linear.app/now/building-what-customers-need">built Customer Requests</a> to track support tickets, Slack messages, and calls.</p></li></ul><p>Gathering context can be difficult since it&#8217;s not always obvious what information is useful at any given point in time.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> You could spend weeks analyzing bug reports to improve feature adoption, only to realize after one user interview that it was a discoverability problem all along.</p><p>The good news is that you can develop an intuition for this by tracking what types of context led to measurable success through accountability loops (we&#8217;ll cover what that looks like in the next section).</p><h3>Takeaway for engineers</h3><p>Don&#8217;t wait around for someone else to give you the right context for your product. Instead, generate it yourself by creating your own systems for discovery.</p><p>In addition to helping you ship faster, this gives you an unfiltered view of the data. For example, <a href="https://posthog.com/newsletter/talk-to-users?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm">talking to users</a> provides clearer insight than reading secondhand notes from your PM since information gets lost at each step along the way:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!g3wa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b80c1a6-12a9-4286-a47f-177e35918f1c_1181x543.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!g3wa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b80c1a6-12a9-4286-a47f-177e35918f1c_1181x543.png 424w, https://substackcdn.com/image/fetch/$s_!g3wa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b80c1a6-12a9-4286-a47f-177e35918f1c_1181x543.png 848w, https://substackcdn.com/image/fetch/$s_!g3wa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b80c1a6-12a9-4286-a47f-177e35918f1c_1181x543.png 1272w, https://substackcdn.com/image/fetch/$s_!g3wa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b80c1a6-12a9-4286-a47f-177e35918f1c_1181x543.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!g3wa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b80c1a6-12a9-4286-a47f-177e35918f1c_1181x543.png" width="1181" height="543" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3b80c1a6-12a9-4286-a47f-177e35918f1c_1181x543.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:543,&quot;width&quot;:1181,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:75804,&quot;alt&quot;:&quot;Information is compressed at each stage from user to PM to engineer.&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://newsletter.posthog.com/i/190640421?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74b09f76-cedc-4f4d-8adb-d65ddf7e990a_1251x665.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Information is compressed at each stage from user to PM to engineer." title="Information is compressed at each stage from user to PM to engineer." srcset="https://substackcdn.com/image/fetch/$s_!g3wa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b80c1a6-12a9-4286-a47f-177e35918f1c_1181x543.png 424w, https://substackcdn.com/image/fetch/$s_!g3wa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b80c1a6-12a9-4286-a47f-177e35918f1c_1181x543.png 848w, https://substackcdn.com/image/fetch/$s_!g3wa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b80c1a6-12a9-4286-a47f-177e35918f1c_1181x543.png 1272w, https://substackcdn.com/image/fetch/$s_!g3wa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b80c1a6-12a9-4286-a47f-177e35918f1c_1181x543.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 aria-hidden="true" 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><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>Another reason engineers should do this is that your teammates might not understand the technical options and constraints as well as you do. Sometimes only the person with the full context of a problem can ask the right questions.</p><blockquote><p><strong>Try this: </strong>Book 2 <a href="https://pauldambra.dev/2026/02/how-i-do-user-interviews.html">user interviews</a> per week. Run a feedback survey for your product and review <a href="https://posthog.com/newsletter/how-to-uncover-your-users-real-problems?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm">survey data</a> every sprint. Set up an <a href="https://posthog.com/blog/stop-ai-slop?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm">LLM eval</a> that detects when users struggle. Create a weekly email digest for competitor blogs.</p></blockquote><div><hr></div><h2>2. Track success with feedback loops</h2><p>All that context is useless if your team doesn&#8217;t know if they&#8217;re winning.</p><p>Product managers at PostHog track and ensure success<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> by running <a href="https://posthog.com/handbook/product/per-product-growth-reviews?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm">growth reviews</a>: monthly meetings where they go over revenue trends, user feedback, usage metrics, and <a href="https://posthog.com/newsletter/quarterly-planning-mistakes?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm">quarterly goals</a> with the engineers building the product. </p><p>If the numbers aren&#8217;t moving in the right direction, the PM presents a well-researched explanation to the team so that they can come up with an informed hypothesis and solution:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jtlx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0495eaa-733f-4123-88f4-af73af4786a5_863x593.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jtlx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0495eaa-733f-4123-88f4-af73af4786a5_863x593.png 424w, https://substackcdn.com/image/fetch/$s_!jtlx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0495eaa-733f-4123-88f4-af73af4786a5_863x593.png 848w, https://substackcdn.com/image/fetch/$s_!jtlx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0495eaa-733f-4123-88f4-af73af4786a5_863x593.png 1272w, https://substackcdn.com/image/fetch/$s_!jtlx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0495eaa-733f-4123-88f4-af73af4786a5_863x593.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jtlx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0495eaa-733f-4123-88f4-af73af4786a5_863x593.png" width="863" height="593" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b0495eaa-733f-4123-88f4-af73af4786a5_863x593.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:593,&quot;width&quot;:863,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:143592,&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://newsletter.posthog.com/i/190640421?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0495eaa-733f-4123-88f4-af73af4786a5_863x593.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_!jtlx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0495eaa-733f-4123-88f4-af73af4786a5_863x593.png 424w, https://substackcdn.com/image/fetch/$s_!jtlx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0495eaa-733f-4123-88f4-af73af4786a5_863x593.png 848w, https://substackcdn.com/image/fetch/$s_!jtlx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0495eaa-733f-4123-88f4-af73af4786a5_863x593.png 1272w, https://substackcdn.com/image/fetch/$s_!jtlx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0495eaa-733f-4123-88f4-af73af4786a5_863x593.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 aria-hidden="true" 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><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>When the team meets again in the following month, they&#8217;ll review what worked and what didn&#8217;t. Each iteration levels up the product &#8211; and the team&#8217;s product sense, too.</p><p>Here&#8217;s an example from our <a href="https://posthog.com/docs/error-tracking?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm">Error Tracking</a> team:</p><ol><li><p><strong>The problem: </strong><a href="https://posthog.com/community/profiles/34160?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm">Cory</a>, the PM, noticed that <a href="https://posthog.com/product-engineers/churn-rate-vs-retention-rate?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm">churn rates</a> were disproportionately high, even though new customer acquisition was strong.</p></li><li><p><strong>The context: </strong>A series of customer interviews all pointed to the same theme: trust. Users were leaving because of rough edges, such as missing recordings or unhandled stack trace edge cases.</p></li><li><p><strong>The hypothesis:</strong> This is a product-quality problem, not a &#8220;missing features&#8221; problem. Systematically improving papercuts, ergonomics, and reliability will reduce churn.</p></li><li><p><strong>The solution:</strong> The team catalogued every trust-related issue from customer feedback and shipped dozens of fixes (see below). Churn improved from 21% to 10% in the following quarter.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fpGL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F963d53a5-a343-4dd5-be98-623143f63a03_854x478.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fpGL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F963d53a5-a343-4dd5-be98-623143f63a03_854x478.png 424w, https://substackcdn.com/image/fetch/$s_!fpGL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F963d53a5-a343-4dd5-be98-623143f63a03_854x478.png 848w, https://substackcdn.com/image/fetch/$s_!fpGL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F963d53a5-a343-4dd5-be98-623143f63a03_854x478.png 1272w, https://substackcdn.com/image/fetch/$s_!fpGL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F963d53a5-a343-4dd5-be98-623143f63a03_854x478.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F963d53a5-a343-4dd5-be98-623143f63a03_854x478.png" width="854" height="478" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/963d53a5-a343-4dd5-be98-623143f63a03_854x478.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:478,&quot;width&quot;:854,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:86410,&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://newsletter.posthog.com/i/190640421?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F963d53a5-a343-4dd5-be98-623143f63a03_854x478.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_!fpGL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F963d53a5-a343-4dd5-be98-623143f63a03_854x478.png 424w, https://substackcdn.com/image/fetch/$s_!fpGL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F963d53a5-a343-4dd5-be98-623143f63a03_854x478.png 848w, https://substackcdn.com/image/fetch/$s_!fpGL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F963d53a5-a343-4dd5-be98-623143f63a03_854x478.png 1272w, https://substackcdn.com/image/fetch/$s_!fpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F963d53a5-a343-4dd5-be98-623143f63a03_854x478.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 aria-hidden="true" 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><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>Without Cory&#8217;s investigation, the team could have easily spent months on new features that they <em>thought</em> would solve the churn problem, without addressing the root cause.</p><p>Feedback loops like these create accountability and, in turn, give developers more autonomy. Engineers at PostHog can <a href="https://posthog.com/newsletter/product-management-is-broken?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm">make product decisions more freely</a> (without PMs micromanaging roadmaps) since the system ensures they&#8217;re always contributing to the company&#8217;s bottom line.</p><h3>Takeaway for engineers</h3><p>You can turn every sprint into a mini growth review by setting aside time to define and <a href="https://posthog.com/handbook/engineering/development-process?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm#evaluate-success">evaluate success</a> in each session.</p><p>We do this at PostHog by classifying each milestone with one of the following:</p><ul><li><p><strong>Nailed it:</strong> We hit the goal spectacularly. High fives all round.</p></li><li><p><strong>Scraped it: </strong>We almost hit the goal, but we need to do a bit more to tidy up.</p></li><li><p><strong>Failed it:</strong> We were nowhere near hitting the goal, but we learned some valuable lessons. Back to the drawing board for this one.</p></li></ul><p>This ensures we&#8217;re learning from each cycle and <a href="https://posthog.com/newsletter/50-product-learnings?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm">not just shipping mindlessly</a>. It&#8217;s way more useful than just marking tasks as &#8220;Completed&#8221;.</p><blockquote><p><strong>Try this</strong>: In your next sprint, apply the concept of feedback loops by defining and evaluating success for each task. Then in the next sprint, review if you met those goals (and if not, what you learned or how you&#8217;ll <a href="https://posthog.com/handbook/engineering/product-engineering?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm#ship-things-iteratively-and-follow-up">follow up</a>).</p><p>You could <a href="https://posthog.com/product-engineers/ab-testing-mistakes?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm">run an A/B test</a> to compare behavior between groups, <a href="https://posthog.com/newsletter/how-we-decide-what-to-build?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm#5-test-with-minimal-effort">test early prototypes</a> to get user feedback, <a href="https://posthog.com/product-engineers/dogfooding?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm">dogfood your product</a> to get internal data, or <a href="https://posthog.com/newsletter/talk-to-users#7-talking-to-users-doesnt-stop-at-user-interviews?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm">message a customer</a> to see if you addressed their issue.</p></blockquote><div><hr></div><h2>3. Communicate towards action</h2><p>To make all of the above actually work, you need to <a href="https://posthog.com/newsletter/communication-mistakes?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm#6-not-making-communication-actionable">make communication actionable</a>. We know this sounds like classic PM fluff, but give us a minute to explain.</p><p>It&#8217;s easy for anyone to state a problem:</p><blockquote><p>&#8220;We&#8217;re losing enterprise deals to competitors because we&#8217;re missing features.&#8221;</p></blockquote><p>But this doesn&#8217;t help engineers understand what to build or why. </p><p>Communicating towards action looks like:</p><blockquote><p>&#8220;We&#8217;ve lost five deals worth $200k in the last three months over SSO, audit logs, and role-based permissions. We should prioritize these over shipping v2 of the MCP for our core segment since we already have strong retention there. The enterprise requests are more aligned with company-wide goals for Q2.&#8221;</p></blockquote><p>This is better, but why? It reduces friction by surfacing important information from the start:</p><ul><li><p><strong>Stating the impact.</strong> Not &#8220;we are losing deals&#8221;, but &#8220;we lost three enterprise contracts.&#8221;</p></li><li><p><strong><a href="https://posthog.com/newsletter/how-to-give-feedback?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm#3-youre-not-being-specific-enough">Being specific</a>. </strong>They don&#8217;t just state that features are missing; they investigate and list the top three.</p></li><li><p><strong>Sharing relevant context. </strong>The revenue loss, strong core retention, and the Q2 company-wide goal are all factors that will help make the decision.</p></li><li><p><strong>Making trade-offs visible.</strong> The former doesn&#8217;t mention competing priorities; the latter points out exactly what to choose between.</p></li><li><p><strong><a href="https://posthog.com/newsletter/communication-mistakes?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm#3-lacking-an-opinion">Having an opinion</a>. </strong>Instead of just vaguely asking &#8220;Thoughts?&#8221;, they express which option they think is better and why.</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_!K9t9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f1bcdf-4cca-483a-b766-674f8361868c_811x412.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!K9t9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f1bcdf-4cca-483a-b766-674f8361868c_811x412.png 424w, https://substackcdn.com/image/fetch/$s_!K9t9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f1bcdf-4cca-483a-b766-674f8361868c_811x412.png 848w, https://substackcdn.com/image/fetch/$s_!K9t9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f1bcdf-4cca-483a-b766-674f8361868c_811x412.png 1272w, https://substackcdn.com/image/fetch/$s_!K9t9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f1bcdf-4cca-483a-b766-674f8361868c_811x412.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!K9t9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f1bcdf-4cca-483a-b766-674f8361868c_811x412.png" width="811" height="412" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9f1bcdf-4cca-483a-b766-674f8361868c_811x412.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:412,&quot;width&quot;:811,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:149092,&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://newsletter.posthog.com/i/190640421?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f1bcdf-4cca-483a-b766-674f8361868c_811x412.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_!K9t9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f1bcdf-4cca-483a-b766-674f8361868c_811x412.png 424w, https://substackcdn.com/image/fetch/$s_!K9t9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f1bcdf-4cca-483a-b766-674f8361868c_811x412.png 848w, https://substackcdn.com/image/fetch/$s_!K9t9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f1bcdf-4cca-483a-b766-674f8361868c_811x412.png 1272w, https://substackcdn.com/image/fetch/$s_!K9t9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f1bcdf-4cca-483a-b766-674f8361868c_811x412.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 aria-hidden="true" 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><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>This is where all three skills come together. Product managers know <em>what </em>information to provide thanks to all the <strong>context</strong> they&#8217;ve gathered and <strong>feedback loops</strong> they&#8217;ve experienced. And <em>how</em> they deliver it &#8211; by <strong>communicating actionably</strong> &#8211; makes all the difference.</p><h3>Takeaway for engineers</h3><p>Since action is the goal, it&#8217;s best to default to shipping when you can. That&#8217;s why pull requests are the <a href="https://posthog.com/newsletter/communication-mistakes?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm#6-not-making-communication-actionable">S-tier form of communication</a> at PostHog. (Email is F-tier, obviously.)</p><p>But when the next step is unclear and you need to bring it up for discussion, <em>work backwards. </em>Think about what types of context and success criteria a PM would provide to make the information as actionable as possible.</p><blockquote><p><strong>Try this: </strong>Next time you&#8217;re about to post &#8220;should we do X?&#8221;, make it actionable by including:</p><ol><li><p>The specific problem and its impact</p></li><li><p>What you&#8217;ve already investigated</p></li><li><p>At least one other option and the trade-offs</p></li><li><p>Which one you&#8217;d pick and why</p></li></ol></blockquote><p><em>Words by <a href="https://substack.com/@jinajay">Jina Yoon</a>, reformed PM who once learned the dark arts and now shares the secrets with you.</em></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.posthog.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe for more forbidden product knowledge</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2>&#128218; From the library</h2><ul><li><p><strong><a href="https://www.iankduncan.com/engineering/2026-02-07-your-best-thinking-is-wasted-on-the-wrong-decisions/">Your Best Thinking Is Wasted on the Wrong Decisions</a> &#8211;&nbsp;Ian Duncan</strong></p></li><li><p><strong><a href="https://www.focusedchaos.co/p/product-management-is-communication">Product Management is Communication </a>&#8211; Ben Yoskovitz</strong></p></li><li><p><strong><a href="https://www.lennysnewsletter.com/p/how-close-is-ai-to-replacing-product">How close is AI to replacing product managers?</a> &#8211;&nbsp;Lenny Rachitsky &amp; Mike Taylor</strong></p></li><li><p><strong><a href="https://grith.ai/blog/clinejection-when-your-ai-tool-installs-another">A GitHub Issue Title Compromised 4,000 Developer Machines </a>&#8211;&nbsp;grith.ai</strong></p></li><li><p><strong><a href="https://posthog.com/blog/llm-analytics-clustering-how-it-works?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm">How we built automatic clustering for LLM traces</a> &#8211; Andy Maguire</strong></p></li></ul><div><hr></div><h2><strong>&#129428;</strong> Join the prickle</h2><ul><li><p><strong><a href="https://posthog.com/careers/product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm">Product Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/sales-lead?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm">Sales Lead</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/application-security-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm">Application Security Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/dev-advocate-(youtube-team)?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm">Dev Advocate (YouTube Team)</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/mobile-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm">Mobile Engineer</a></strong></p><p></p></li></ul><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>A recent <a href="https://www.figma.com/blog/2025-shifting-roles-report/">survey by Figma</a> found that 64% of designers, developers, and marketers say their work spans multiple product roles. </p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>PM work typically follows a pattern based on what stage of the<a href="https://posthog.com/handbook/product/releasing-new-products-and-features?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm"> product lifecycle</a> the team is in. This can help narrow down what types of context will be most relevant.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>At PostHog, product managers are also in charge of the most direct lever to revenue: <a href="https://posthog.com/newsletter/pricing-advice?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=guide_to_pm">pricing</a>.</p></div></div>]]></content:encoded></item><item><title><![CDATA[The engineeringification of everything]]></title><description><![CDATA[Why every role seems like an engineering role now (and what it means for you)]]></description><link>https://newsletter.posthog.com/p/the-engineeringification-of-everything</link><guid isPermaLink="false">https://newsletter.posthog.com/p/the-engineeringification-of-everything</guid><dc:creator><![CDATA[Ian Vanagas]]></dc:creator><pubDate>Mon, 23 Feb 2026 19:04:07 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/b06de6cd-5664-4964-93ca-949d8a287664_3840x2742.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Engineering has escaped the codebase. The tools, mindset, and identity increasingly shape every function.</p><p>Spend enough time in startup circles and you&#8217;ll hear this engineeringification of everything:</p><blockquote><p>&#8220;Oh, I&#8217;m a design engineer&#8221; <br>&#8220;We&#8217;re following best practice of GTM engineering&#8221; <br>&#8220;I need to talk to their sales engineer about implementation&#8221;</p></blockquote><p>This raises two questions:</p><ol><li><p>Why is every role becoming an engineering one?</p></li><li><p>Should I be worried?</p></li></ol><p>This post answers both of these.</p><h2>The engineeringification loop</h2><p>The spread of engineering tools, skills, and identity into non-engineering roles, AKA &#8220;engineeringification,&#8221; is driven by a feedback loop that looks like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BSb1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51910143-b67b-48d1-9fad-c3d91c0215d6_1218x836.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BSb1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51910143-b67b-48d1-9fad-c3d91c0215d6_1218x836.png 424w, https://substackcdn.com/image/fetch/$s_!BSb1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51910143-b67b-48d1-9fad-c3d91c0215d6_1218x836.png 848w, https://substackcdn.com/image/fetch/$s_!BSb1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51910143-b67b-48d1-9fad-c3d91c0215d6_1218x836.png 1272w, https://substackcdn.com/image/fetch/$s_!BSb1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51910143-b67b-48d1-9fad-c3d91c0215d6_1218x836.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BSb1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51910143-b67b-48d1-9fad-c3d91c0215d6_1218x836.png" width="1218" height="836" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/51910143-b67b-48d1-9fad-c3d91c0215d6_1218x836.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:836,&quot;width&quot;:1218,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:145561,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.posthog.com/i/188623451?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51910143-b67b-48d1-9fad-c3d91c0215d6_1218x836.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_!BSb1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51910143-b67b-48d1-9fad-c3d91c0215d6_1218x836.png 424w, https://substackcdn.com/image/fetch/$s_!BSb1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51910143-b67b-48d1-9fad-c3d91c0215d6_1218x836.png 848w, https://substackcdn.com/image/fetch/$s_!BSb1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51910143-b67b-48d1-9fad-c3d91c0215d6_1218x836.png 1272w, https://substackcdn.com/image/fetch/$s_!BSb1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51910143-b67b-48d1-9fad-c3d91c0215d6_1218x836.png 1456w" sizes="100vw" fetchpriority="high"></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 aria-hidden="true" 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><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>Take the role of design engineer as a specific example:</p><ul><li><p><strong>Design tools get more powerful.</strong> They&#8217;re not just for wireframing. Tools like Figma, Tailwind, and design systems baked into frameworks mean decisions shape production code. A button goes from being &#8220;just a rectangle&#8221; to a set of responsive, accessible variants that fit with your existing system.</p></li><li><p><strong>Using them is complicated. </strong>Fully leveraging a design tool like Figma or a framework like Tailwind requires understanding product features, configurations, syntax, hotkeys, best practices, limitations, and constraints. At some point, you might even need to read the code.</p></li><li><p><strong>Non-technical people learn anyway.</strong> Because engineering time is scarce and iteration speed matters, designers learn enough to ship. LLMs make this easier: they can generate Tailwind components, UIs, or even prototypes rather than hand-coding them.</p></li><li><p><strong>Skills accumulate and identity shifts.</strong> At some point, the designers stop handing off work and do it themselves. They ship product code, debug layouts, and make tradeoffs between design and performance. Calling this just &#8220;design&#8221; makes less sense.</p></li><li><p><strong>A new identity emerges and startups latch onto it. </strong>The label appears: <em>design engineer</em>. Power users adopt it, companies like Vercel start <a href="https://vercel.com/careers/design-engineer-us-5709080004">hiring for it</a>, and tools begin marketing to it. The loop restarts, now with a clearer identity to build around.</p></li></ul><p>Tools change skills, skills reshape identity, and identity demands new tools.</p><h2>Why is engineeringification happening now?</h2><p>People have been building powerful tools for many roles for a long time now. What makes this time different?</p><h3>1. LLMs make it possible</h3><p>LLMs make complex, domain-specific tools more accessible. Seemingly every tool has an <a href="https://posthog.com/ai?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=engineeringification">AI assistant</a>, an <a href="https://posthog.com/docs/model-context-protocol?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=engineeringification">MCP server</a>, or an AI-powered alternative.</p><p>Non-technical people can learn how to use the powerful tools once exclusive to engineers faster and easier. With them, they can:</p><ul><li><p>Generate apps and prototypes with tools like <a href="https://posthog.com/customers/lovable?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=engineeringification">Lovable</a>, <a href="https://posthog.com/blog/vercel-integration?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=engineeringification">v0</a>, and <a href="https://posthog.com/newsletter/ai-coding-mistakes?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=engineeringification">Claude Code</a>.</p></li><li><p>Automate and optimize go-to-market with tools like Clay, Pocus, Vitally, and Lemlist.</p></li><li><p>Build and configure workflows with <a href="https://posthog.com/docs/workflows?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=engineeringification">PostHog</a>, <a href="https://posthog.com/docs/cdp/destinations/make?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=engineeringification">Make</a>, and <a href="https://posthog.com/docs/libraries/n8n?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=engineeringification">n8n</a>.</p></li></ul><blockquote></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mLzL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e192940-c3ce-421a-81c8-173454247a27_1600x1091.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mLzL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e192940-c3ce-421a-81c8-173454247a27_1600x1091.png 424w, https://substackcdn.com/image/fetch/$s_!mLzL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e192940-c3ce-421a-81c8-173454247a27_1600x1091.png 848w, https://substackcdn.com/image/fetch/$s_!mLzL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e192940-c3ce-421a-81c8-173454247a27_1600x1091.png 1272w, https://substackcdn.com/image/fetch/$s_!mLzL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e192940-c3ce-421a-81c8-173454247a27_1600x1091.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mLzL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e192940-c3ce-421a-81c8-173454247a27_1600x1091.png" width="1456" height="993" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8e192940-c3ce-421a-81c8-173454247a27_1600x1091.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:993,&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_!mLzL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e192940-c3ce-421a-81c8-173454247a27_1600x1091.png 424w, https://substackcdn.com/image/fetch/$s_!mLzL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e192940-c3ce-421a-81c8-173454247a27_1600x1091.png 848w, https://substackcdn.com/image/fetch/$s_!mLzL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e192940-c3ce-421a-81c8-173454247a27_1600x1091.png 1272w, https://substackcdn.com/image/fetch/$s_!mLzL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e192940-c3ce-421a-81c8-173454247a27_1600x1091.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 aria-hidden="true" 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><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><h3>2. Capital makes it inevitable</h3><p>Engineeringification is a good business (we know because we&#8217;re in it). It&#8217;s where B2B SaaS is heading as companies are willing to pay for it, VCs are willing to invest in it, and <a href="https://posthog.com/newsletter/marketing-for-devs?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=engineeringification">playbooks for success exist</a>.</p><p>You can see this reflected in the growth and valuation of AI-powered B2B SaaS startups serving non-engineers like <a href="https://sierra.ai/blog/year-two-in-review">Sierra</a>, <a href="https://lovable.dev/blog/series-b">Lovable</a>, <a href="http://fin.ai">Fin.ai</a>, <a href="https://www.growthunhinged.com/p/boltnew-growth-journey">Bolt.new</a>, <a href="https://decagon.ai/resources/series-c-announcement">Decagon</a>, <a href="https://www.clay.com/blog/100m-arr">Clay</a>, and <a href="https://replit.com/news/funding-announcement">Replit</a>.</p><p>The capital flooding into the space improves the tools, provides users more capabilities, encourages new startups entrants, and increases marketing toward the engineeringification of identities.</p><h3>3. Identity makes it permanent</h3><p>The final driver of engineeringification is identity. Once people start seeing themselves as engineers, the loop becomes self-sustaining.</p><p>You don&#8217;t have to look far to see this shift in action. <a href="https://www.ycombinator.com/jobs">YC job posts</a> show how non-technical roles are increasingly engineering focused:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mObJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa46550d-b01c-4c26-9905-319d79620ce2_1511x957.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mObJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa46550d-b01c-4c26-9905-319d79620ce2_1511x957.png 424w, https://substackcdn.com/image/fetch/$s_!mObJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa46550d-b01c-4c26-9905-319d79620ce2_1511x957.png 848w, https://substackcdn.com/image/fetch/$s_!mObJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa46550d-b01c-4c26-9905-319d79620ce2_1511x957.png 1272w, https://substackcdn.com/image/fetch/$s_!mObJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa46550d-b01c-4c26-9905-319d79620ce2_1511x957.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mObJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa46550d-b01c-4c26-9905-319d79620ce2_1511x957.png" width="1456" height="922" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fa46550d-b01c-4c26-9905-319d79620ce2_1511x957.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:922,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:118001,&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://newsletter.posthog.com/i/188623451?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa46550d-b01c-4c26-9905-319d79620ce2_1511x957.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_!mObJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa46550d-b01c-4c26-9905-319d79620ce2_1511x957.png 424w, https://substackcdn.com/image/fetch/$s_!mObJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa46550d-b01c-4c26-9905-319d79620ce2_1511x957.png 848w, https://substackcdn.com/image/fetch/$s_!mObJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa46550d-b01c-4c26-9905-319d79620ce2_1511x957.png 1272w, https://substackcdn.com/image/fetch/$s_!mObJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa46550d-b01c-4c26-9905-319d79620ce2_1511x957.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 aria-hidden="true" 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><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>Engineeringification gives individuals new autonomy while saving engineers time. Success encourages non-technical people to expand their skills and use the tools more. As they spend more time on engineering-like work, they begin to identify less with their old role as it undersells the value of their work and how technical they are.</p><p>Instead, people identify more with what they&#8217;re building and the people who build (AKA engineers). This new identity eventually crystallizes often via blog post, conference talk, meetup or even tweet. Think Andrej Karpathy on<a href="https://twitter.com/karpathy/status/1886192184808149383?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1886192184808149383%7Ctwgr%5E85ade16f76f25ccfdc2ea49746f6de80dc670174%7Ctwcon%5Es1_&amp;ref_url=https%3A%2F%2Fwww.notion.so%2Fianv%2FThe-engineeringification-of-everything-2bc7b2876a45806689ded8e9f6ba9e75"> vibe coding</a>, Anthropic hiring a <a href="https://www.bloomberg.com/news/articles/2023-03-29/ai-chatgpt-related-prompt-engineer-jobs-pay-up-to-335-000?embedded-checkout=true#xj4y7vzkg">prompt engineer</a>, and Vercel promoting <a href="https://vercel.com/blog/design-engineering-at-vercel">design engineering</a>.</p><p>New identities compound the loop: people adopt it, tools are built for them, and marketing reinforces it. This feeds the cycle all over again.</p><h2>The meaning of engineer is changing</h2><p>What it means to call yourself an &#8220;engineer&#8221; is a sensitive topic. It&#8217;s literally illegal to call yourself one without accreditation <a href="https://www.egbc.ca/complaints-discipline/unauthorized-practice-or-title/unauthorized-practice-misuse-of-title">where I&#8217;m from</a>.</p><p>Engineering once meant a specific set of skills in a bounded domain reinforced with formal training and gatekeeping. This remains true in physical domains as failure has physical consequences, but software&#8217;s low cost of failure makes gatekeeping harder to sustain. Boundaries are eroding.</p><p>The defining line of engineering is moving away from &#8220;who is allowed to build&#8221; toward &#8220;who has the ideas and dedication to actually build it.&#8221; It&#8217;s less about knowing all the theory and more putting it into practice.</p><p>To some, this looks like a loss. Engineering feels deprofessionalized: more self-taught practitioners, less depth, titles lose meaning.</p><p>For many more, it&#8217;s a gain: more autonomy, faster iteration, increased leverage and a better ability to ship solutions to real, valuable problems.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VIrr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f3c38aa-6a39-4b49-ad3d-459c20d61cf5_1600x840.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VIrr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f3c38aa-6a39-4b49-ad3d-459c20d61cf5_1600x840.jpeg 424w, https://substackcdn.com/image/fetch/$s_!VIrr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f3c38aa-6a39-4b49-ad3d-459c20d61cf5_1600x840.jpeg 848w, https://substackcdn.com/image/fetch/$s_!VIrr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f3c38aa-6a39-4b49-ad3d-459c20d61cf5_1600x840.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!VIrr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f3c38aa-6a39-4b49-ad3d-459c20d61cf5_1600x840.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VIrr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f3c38aa-6a39-4b49-ad3d-459c20d61cf5_1600x840.jpeg" width="1456" height="764" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6f3c38aa-6a39-4b49-ad3d-459c20d61cf5_1600x840.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:764,&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_!VIrr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f3c38aa-6a39-4b49-ad3d-459c20d61cf5_1600x840.jpeg 424w, https://substackcdn.com/image/fetch/$s_!VIrr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f3c38aa-6a39-4b49-ad3d-459c20d61cf5_1600x840.jpeg 848w, https://substackcdn.com/image/fetch/$s_!VIrr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f3c38aa-6a39-4b49-ad3d-459c20d61cf5_1600x840.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!VIrr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f3c38aa-6a39-4b49-ad3d-459c20d61cf5_1600x840.jpeg 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 aria-hidden="true" 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><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><h2>Should you be worried?</h2><p>The line between technical and non-technical work isn&#8217;t disappearing, it&#8217;s being redrawn. Whether you&#8217;re an engineer or not, the winners will be those who think like builders:</p><ul><li><p>For <strong>non-technical people</strong>, don&#8217;t be afraid to take on more &#8220;engineering&#8221; tasks. Tools have become more powerful and specialized and people like you are succeeding in using them. The combination of LLMs and MCP have made it easier to both learn and interact with more tools.</p></li><li><p>For <strong>engineers</strong>, congrats! The world is investing a ton in making YOU more powerful. Use these same tools to turn yourself into a full stack shipping machine AKA a <a href="https://posthog.com/blog/what-is-a-product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=engineeringification">product engineer</a>. For example, you can use <a href="https://exa.ai?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=engineeringification">Exa</a> for competitive research, <a href="https://buildbetter.ai?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=engineeringification">BuildBetter</a> for user interviews, Figma Make to design a UI, and <a href="https://posthog.com/ai?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=engineeringification">PostHog AI</a> to analyze your product usage.</p></li><li><p>For <strong>startups</strong>, build for these new types of engineers. At a minimum, let people do engineering: have an API, make your docs <a href="https://posthog.com/docs/ai-engineering/markdown-llms-txt?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=engineeringification">machine readable</a> (I love a &#8220;Copy as Markdown&#8221; button), publish an MCP server, and connect with other tools.</p></li></ul><p>Those who embrace the engineeringification of everything will find themselves riding the wave it is creating. The <s>billions</s> trillions invested here has to benefit someone. Why not you?</p><p><em>Words by <a href="https://x.com/ianvanagas">Ian Vanagas</a> who, after all this, is still a bit skeptical of the &#8220;content engineer&#8221; role.</em></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.posthog.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">If everyone is becoming an engineer, what better newsletter to subscribe to than this one?</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2>&#129428; Jobs at PostHog</h2><p>We&#8217;re hiring for many kinds of engineers (and almost engineers) like:</p><ul><li><p><strong><a href="https://posthog.com/careers/product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=engineeringification">Product Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/technical-account-manager?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=engineeringification">Technical Account Manager</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/technical-account-manager?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=engineeringification">Software Engineer &#8211; AI-Enabled Product Autonomy</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/product-manager-(ex-founder-or-ex-product-engineer)?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=engineeringification">Product Manager (ex-founder or ex-product engineer)</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/sre-clickhouse-team?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=engineeringification">SRE &#8211; Clickhouse Team</a></strong></p></li></ul><div><hr></div><h2>&#128218; More good reads</h2><ul><li><p><strong><a href="https://posthog.com/blog/forward-deployed-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=engineeringification">WTF is a forward deployed engineer? (and why everyone is hiring them)</a> &#8211; <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Jina Yoon&quot;,&quot;id&quot;:420952212,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5d67e7e8-df41-4563-9dad-f60d18204d7f_1024x1024.jpeg&quot;,&quot;uuid&quot;:&quot;cf8b7ab9-e899-4e12-b200-8b2542f9811c&quot;}" data-component-name="MentionToDOM"></span></strong> </p></li><li><p><strong><a href="https://dylanamartin.com/2026/02/02/spinning-the-wheel.html">Spinning the Wheel</a> &#8211; Dylan Martin</strong></p></li><li><p><strong><a href="https://pauldambra.dev/2026/02/how-i-do-user-interviews.html">How I do user interviews</a> &#8211; Paul D&#8217;Ambra</strong></p></li><li><p><strong><a href="https://youtu.be/KVMZgY2KNto">The startup interview questions that actually matter</a> &#8211; James Hawkins</strong></p></li><li><p><strong><a href="https://playbooks.hypergrowthpartners.com/p/the-rise-of-the-gtm-engineer">The Rise of the GTM engineer</a> &#8211; <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Matteo Tittarelli&quot;,&quot;id&quot;:4647602,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b7154de3-abc2-467a-8813-21ef7b23f1f2_800x800.png&quot;,&quot;uuid&quot;:&quot;115b0a65-70de-4991-9c91-506be47f43de&quot;}" data-component-name="MentionToDOM"></span> and <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Maxence Vanderswalmen&quot;,&quot;id&quot;:19194540,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5ade3ecc-d2ff-4cb7-b5fc-8931532c2d02_1290x858.jpeg&quot;,&quot;uuid&quot;:&quot;86df2dfd-bf44-4859-89ce-3c434e1e17b6&quot;}" data-component-name="MentionToDOM"></span></strong> </p></li><li><p><strong><a href="https://www.latent.space/p/ai-engineer">The Rise of the AI Engineer</a> &#8211; <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Latent.Space&quot;,&quot;id&quot;:89230629,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db0f8d45-1eb8-4c02-a120-650d377ee52d_640x640.jpeg&quot;,&quot;uuid&quot;:&quot;b8a2e634-e2d7-4d19-ae42-c9cc8498e6b1&quot;}" data-component-name="MentionToDOM"></span></strong></p></li></ul><div><hr></div><h2>&#128250; PostHog on YouTube</h2><p>Are you asking the right questions in interviews? <a href="https://www.youtube.com/watch?v=KVMZgY2KNto">James Hawkins argues not</a>.</p><div id="youtube2-KVMZgY2KNto" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;KVMZgY2KNto&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/KVMZgY2KNto?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div>]]></content:encoded></item><item><title><![CDATA[The hidden danger of shipping fast]]></title><description><![CDATA[What to do when product velocity breaks the speed of adoption]]></description><link>https://newsletter.posthog.com/p/the-hidden-danger-of-shipping-fast</link><guid isPermaLink="false">https://newsletter.posthog.com/p/the-hidden-danger-of-shipping-fast</guid><dc:creator><![CDATA[Cleo]]></dc:creator><pubDate>Mon, 09 Feb 2026 19:19:18 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/b179d54d-f1b4-464d-8dfa-59418305d362_2912x2096.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iDQ8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0b4ce2-ca3d-4db2-9f82-0db9f861ec6f_554x829.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iDQ8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0b4ce2-ca3d-4db2-9f82-0db9f861ec6f_554x829.png 424w, https://substackcdn.com/image/fetch/$s_!iDQ8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0b4ce2-ca3d-4db2-9f82-0db9f861ec6f_554x829.png 848w, https://substackcdn.com/image/fetch/$s_!iDQ8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0b4ce2-ca3d-4db2-9f82-0db9f861ec6f_554x829.png 1272w, https://substackcdn.com/image/fetch/$s_!iDQ8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0b4ce2-ca3d-4db2-9f82-0db9f861ec6f_554x829.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iDQ8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0b4ce2-ca3d-4db2-9f82-0db9f861ec6f_554x829.png" width="416" height="622.4981949458484" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1e0b4ce2-ca3d-4db2-9f82-0db9f861ec6f_554x829.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:829,&quot;width&quot;:554,&quot;resizeWidth&quot;:416,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;product marketing at PostHog&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="product marketing at PostHog" title="product marketing at PostHog" srcset="https://substackcdn.com/image/fetch/$s_!iDQ8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0b4ce2-ca3d-4db2-9f82-0db9f861ec6f_554x829.png 424w, https://substackcdn.com/image/fetch/$s_!iDQ8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0b4ce2-ca3d-4db2-9f82-0db9f861ec6f_554x829.png 848w, https://substackcdn.com/image/fetch/$s_!iDQ8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0b4ce2-ca3d-4db2-9f82-0db9f861ec6f_554x829.png 1272w, https://substackcdn.com/image/fetch/$s_!iDQ8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0b4ce2-ca3d-4db2-9f82-0db9f861ec6f_554x829.png 1456w" sizes="100vw" fetchpriority="high"></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 aria-hidden="true" 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><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>Is it possible to ship too much &#8211; or too fast?</p><p>Yes. Probably. Unfortunately.</p><p>A handful of people with good judgment and a lot of tokens can now do what used to take a full product org. As a result, software powered by LLMs is <a href="https://martinalderson.com/posts/has-the-cost-of-software-just-dropped-90-percent/">cheaper to build</a> and <a href="https://www.linkedin.com/posts/tracecohen_the-fastest-startups-to-100m-arr-the-verdict-activity-7376056270933626880-wQ6g/">scaling faster</a> than at any point in history.</p><p>Once you cross a certain threshold, however, product velocity stops compounding and starts competing with itself. You&#8217;re no longer constrained by your capacity to ship new things, but by your users&#8217; capacity to adopt them.</p><p>As a company that&#8217;s obsessed with shipping fast, we&#8217;re acutely familiar with this problem, so I&#8217;m sharing how we&#8217;re solving it, so you can too.</p><h2>The Theory of Constraints</h2><p>Since PostHog is a work tool &#8211; not a <a href="https://posthog.com/merch?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=shipping-fast-danger">lifestyle brand</a> &#8211; even our most enthusiastic users won&#8217;t adopt an infinite number of new things per week.</p><p>In practice, B2B SaaS users tend to adopt:</p><ul><li><p>One big new thing every few months</p></li><li><p>A couple of medium improvements</p></li><li><p>A handful of small quality-of-life upgrades</p></li></ul><p>Everything else gets ignored until someone explains why it matters. This is a classic bottleneck.</p><p>Luckily, bottlenecks have solutions. Manufacturers discovered this and crystallized it in a concept called <strong>Theory of Constraints</strong> (TOC). There&#8217;s one principle of TOC that is particularly relevant here:</p><blockquote><p>When upstream output increases without increasing downstream capacity, the system destabilizes.</p></blockquote><p>In our case:</p><ul><li><p><strong>Upstream</strong> we have 40+ small teams <a href="http://posthog.com/newsletter/how-we-work-async?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=shipping-fast-danger">working asynchronously</a>, shipping at a high velocity, and <a href="https://posthog.com/newsletter/ai-coding-mistakes?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=shipping-fast-danger">AI accelerating productivity</a>.</p></li><li><p><strong>Downstream</strong> we have limited user attention, comprehension, and engagement capacity.</p></li></ul><p>Recognizing this, TOC can again help us understand the consequences of this mismatched capacity:</p><h3>1. Queue buildup</h3><p>In manufacturing, this looks like excess inventory. In software, this creates an invisible backlog &#8211; work that&#8217;s finished on your side, but unfinished in terms of user awareness and understanding.</p><p>The result is diffuse impact: lots of progress shipped, but less progress felt.</p><h3>2. Time-to-value increases</h3><p>As that backlog grows, the gap between production and adoption stretches. Your team keeps shipping code, but each new capability takes longer to move from &#8220;available&#8221; to &#8220;useful.&#8221;</p><p>Users struggle to keep up with what&#8217;s changed. Support and sales spend more time explaining context. Marketing lags releases instead of amplifying them.</p><h3>3. Quality degradation</h3><p>When a bottleneck is overloaded, quality degrades through forced tradeoffs.</p><p>In software, that shows up as:</p><ul><li><p>Partial adoption instead of full behavior change</p></li><li><p>Misunderstood capabilities</p></li><li><p>Features used narrowly when they were designed to be foundational</p></li></ul><p>Your product keeps getting bigger and better, but not proportionally clearer.</p><h2>Does that mean you should slow down?</h2><p>Definitely not.</p><p>Slowing down is what companies do when they run out of ideas (and clearly that&#8217;s not the problem). Fortunately, Theory of Constraints is quite explicit about what <em>not</em> to do here:</p><blockquote><p>Improving non-bottlenecks is a waste of resources. You improve the system by elevating the bottleneck.</p></blockquote><p>Product adoption happens one human at a time, and each individual user has a finite amount of mental bandwidth. So the real question isn&#8217;t whether to slow down, it&#8217;s this:</p><p><strong>How do you elevate adoption without killing velocity?</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BTtH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d1849c1-e672-4e6b-ab18-6c3908eccbdc_1600x833.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BTtH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d1849c1-e672-4e6b-ab18-6c3908eccbdc_1600x833.png 424w, https://substackcdn.com/image/fetch/$s_!BTtH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d1849c1-e672-4e6b-ab18-6c3908eccbdc_1600x833.png 848w, https://substackcdn.com/image/fetch/$s_!BTtH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d1849c1-e672-4e6b-ab18-6c3908eccbdc_1600x833.png 1272w, https://substackcdn.com/image/fetch/$s_!BTtH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d1849c1-e672-4e6b-ab18-6c3908eccbdc_1600x833.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BTtH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d1849c1-e672-4e6b-ab18-6c3908eccbdc_1600x833.png" width="1456" height="758" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d1849c1-e672-4e6b-ab18-6c3908eccbdc_1600x833.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:758,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;no hedgehogs were harmed in the making of this image&quot;,&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="no hedgehogs were harmed in the making of this image" title="no hedgehogs were harmed in the making of this image" srcset="https://substackcdn.com/image/fetch/$s_!BTtH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d1849c1-e672-4e6b-ab18-6c3908eccbdc_1600x833.png 424w, https://substackcdn.com/image/fetch/$s_!BTtH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d1849c1-e672-4e6b-ab18-6c3908eccbdc_1600x833.png 848w, https://substackcdn.com/image/fetch/$s_!BTtH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d1849c1-e672-4e6b-ab18-6c3908eccbdc_1600x833.png 1272w, https://substackcdn.com/image/fetch/$s_!BTtH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d1849c1-e672-4e6b-ab18-6c3908eccbdc_1600x833.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 aria-hidden="true" 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><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><h2>How to address the real bottleneck of user attention</h2><p>If you&#8217;re building anything serious (and using AI to increase throughput), you&#8217;ll hit this wall eventually.</p><p>At PostHog, we&#8217;re still figuring out the best way around it, but a few points are now painfully obvious.</p><h3>1. Treat attention like a scarce resource (because it is)</h3><p><a href="https://posthog.com/blog/why-small-teams-crush-tiger-teams?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=shipping-fast-danger">Small autonomous teams</a> naturally optimize for their slice of the product. They own a feature and make it better.</p><p>Users don&#8217;t experience a product that way. They&#8217;re hit with <em>every product change</em> through a finite amount of attention they&#8217;re willing to spend.</p><p>That mismatch is where things start to break.</p><p><strong>What failure looks like:</strong></p><p>You treat launches as <a href="https://productschool.com/blog/analytics/output-vs-outcome">outputs instead of outcomes</a>.</p><p>You see this when companies (especially startups) excitedly announce every new feature, and when changelogs or emails become the main way users are expected to keep up.</p><p>There&#8217;s only a limited amount of attention these methods capture. Ship fast enough and even engaged users will start showing <a href="https://www.linkedin.com/pulse/feature-fatigue-love-focus-derek-francis-mezxc/">feature fatigue</a>.</p><p>If you&#8217;ve ever heard &#8220;I didn&#8217;t know you could do that&#8221; from a long-time customer &#8211; congratulations, you&#8217;ve shipped past the speed of adoption.</p><p><strong>Do this instead:</strong></p><p>Keep shipping, but be aggressively opinionated about what matters <em>right now</em>.</p><p>Not everything needs a launch, a blog post, or to be explained immediately.</p><p>Define a <a href="https://aakashgupta.medium.com/the-launch-tier-system-that-transforms-product-teams-fddbb55a785c">launch tier framework</a> such as:</p><ol><li><p><strong>Category definers: </strong>New product rollouts or major designs that change how customers think about your category. Require full company alignment. For example, <a href="https://www.linkedin.com/feed/update/urn:li:activity:7398759974686076928">PostHog AI</a>.</p></li><li><p><strong>Strategic upgrades: </strong>Meaningful product improvements (not redefinitions) that don&#8217;t require the full machinery of a major campaign. For example, <a href="https://posthog.com/blog/logs-ga?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=shipping-fast-danger">PostHog Logs launch</a>.</p></li><li><p><strong>Steady improvements: </strong>Standard product development that doesn&#8217;t require coordination beyond the product team. For example, LLM Analytics adding <a href="https://posthog.com/changelog?id=2558&amp;utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=shipping-fast-danger">time to first token</a>.</p></li></ol><p>This is where brand helps. Things like <a href="https://www.youtube.com/playlist?list=PLnOY1RYHjDfxcuWI_L1xwuhoXAsxR59VL">humor</a>, narrative, and deliberate <a href="https://www.youtube.com/watch?v=EXisgy6eWJ0&amp;list=PLnOY1RYHjDfw2joBxUPADaadeX5IradbH&amp;index=4">absurdity</a> work because they lower the cost of paying attention. <a href="https://www.linkedin.com/feed/update/urn:li:activity:7401713037386379265">Partnering with influencers</a> that own trust with your ICP is another way to extend mindshare beyond your brand channels.</p><blockquote><p><strong>What this looks like:</strong> Notion ships constantly, but markets selectively. Many features land with almost no fanfare, while a small number (AI, databases, templates) get sustained narrative investment over months.</p></blockquote><h3>2. Build discovery into the product</h3><p>If realizing value requires explanation <em>outside</em> of the product, you haven&#8217;t removed the adoption bottleneck &#8211; you&#8217;ve just moved it downstream to marketing, sales, or support.</p><p>Users don&#8217;t wake up wanting product updates. They&#8217;re trying to get something done and move on with their life.</p><p>That&#8217;s why feature discovery strategically tied to intent works better than announcements that land out of context.</p><p><strong>What failure looks like:</strong></p><p>Relying on external channels for discovery is brittle. As Andrew Chen argues in <a href="https://andrewchen.substack.com/p/every-marketing-channel-sucks-right">Every marketing channel sucks right now</a>, most channels are noisy and saturated. And despite the internet clout you may think it awards, focusing your efforts on Product Hunt, G2, or Hacker News probably isn&#8217;t <a href="https://news.ycombinator.com/item?id=29864157">worth the investment</a>.</p><p>Your owned channels can easily make things worse. You&#8217;ve no doubt been a victim of generic product emails without meaningful <a href="https://www.reforge.com/blog/what-is-user-segmentation">segmentation</a> (&#8221;why did I receive this?&#8221;) or a disruptive in-app experience full of tooltips, banners and popups.</p><p>Worst of all are launch videos or press releases that promise &#8220;revolutionary&#8221; outcomes but don&#8217;t clearly explain what changed in the product. <a href="https://posthog.com/newsletter/marketing-for-devs?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=shipping-fast-danger">Marketing features over benefits</a> is a good pattern breaker, but be warned: too much focus on &#8220;what&#8221; rather than &#8220;now what&#8221; makes product adoption someone else&#8217;s problem.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wuoh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4344d474-65ac-4642-8622-905d51bd6ac5_500x567.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wuoh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4344d474-65ac-4642-8622-905d51bd6ac5_500x567.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wuoh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4344d474-65ac-4642-8622-905d51bd6ac5_500x567.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wuoh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4344d474-65ac-4642-8622-905d51bd6ac5_500x567.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wuoh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4344d474-65ac-4642-8622-905d51bd6ac5_500x567.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wuoh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4344d474-65ac-4642-8622-905d51bd6ac5_500x567.jpeg" width="500" height="567" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4344d474-65ac-4642-8622-905d51bd6ac5_500x567.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:567,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;never log off&quot;,&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="never log off" title="never log off" srcset="https://substackcdn.com/image/fetch/$s_!wuoh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4344d474-65ac-4642-8622-905d51bd6ac5_500x567.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wuoh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4344d474-65ac-4642-8622-905d51bd6ac5_500x567.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wuoh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4344d474-65ac-4642-8622-905d51bd6ac5_500x567.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wuoh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4344d474-65ac-4642-8622-905d51bd6ac5_500x567.jpeg 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 aria-hidden="true" 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><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>Do this instead:</strong></p><p>Surface features when they&#8217;re relevant to what the user is already doing.</p><p>Start by defining clear <a href="https://posthog.com/product-engineers/activation-metrics?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=shipping-fast-danger">activation criteria</a> &#8211; the signals that indicate a user is engaged with certain parts of your product. Once you discover these signals, you can anchor new features to tasks users already care about.</p><p>For example:</p><ul><li><p>When a HubSpot user captures 10+ leads, lead scoring tools gets surfaced</p></li><li><p>When an Asana user creates a second project, the team invitation flow triggers</p></li><li><p>When a Zapier user has run multiple successful automations, multi-step templates are emphasized</p></li></ul><p>Another name for this is <a href="https://www.youtube.com/watch?v=9RFaz9ZBXpk">continuous discovery</a>: letting user behavior and feedback influence what gets amplified next.</p><p><a href="https://posthog.com/workflows?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=shipping-fast-danger">Emails</a> and <a href="https://posthog.com/docs/product-tours/start-here?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=shipping-fast-danger">tooltips</a> can help here, but only when they&#8217;re contextual: &#8220;you&#8217;re using X, so Y might be useful.&#8221; Better is adding features to existing habit loops, encouraging users to build new habit loops with the features, or making the features sharable.</p><blockquote><p><strong>What this looks like:</strong> Atlassian famously struggled with feature sprawl across Jira, Confluence, and their other products. Users couldn&#8217;t keep up with so much surface area. The solution wasn&#8217;t more marketing, it was investing heavily in in-product discovery, clearer use-case documentation, and opinionated defaults to guide users to success.</p></blockquote><h3>3. Measure learning, not just usage</h3><p>Product adoption isn&#8217;t only about feature usage, it&#8217;s about helping users get better at their jobs because those features exist. That&#8217;s why a lot of our content marketing isn&#8217;t really about PostHog at all &#8211; it&#8217;s about <a href="https://posthog.com/blog/what-is-a-product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=shipping-fast-danger">how to become a product engineer</a>.</p><p>Sharing knowledge and being helpful builds trust and brand recognition in a way feature announcements never will.</p><p><strong>What failure looks like:</strong></p><p>When teams get this wrong, they focus on vanity metrics, push product teams toward being a <a href="https://xenoss.io/blog/product-velocity-trap-solutions">feature factory</a>, and publish content that only makes sense if someone already cares about the product.</p><p>One of the biggest mistakes you can make is believing other people care about the product as much as you do.</p><p>They don&#8217;t.</p><p><strong>Do this instead:</strong></p><p>What works better is publishing things that are useful even without your product:</p><ul><li><p>Real learnings, like <a href="https://posthog.com/blog/correct-llm-code-generation?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=shipping-fast-danger">how we built our AI setup wizard</a></p></li><li><p>Internal knowledge turned into <a href="http://posthog.com/handbook?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=shipping-fast-danger">public artifacts</a></p></li><li><p>Honest writeups like <a href="https://posthog.com/blog/nov-24-shai-hulud-attack-post-mortem?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=shipping-fast-danger">postmortems</a> for incidents</p></li></ul><p>Even better, teach the domain you operate in &#8211; not just how your product works. Figma, for example, teaches people how to be <a href="https://www.figma.com/blog/insights/">better designers</a>, not just how to use Figma.</p><p>Events are another great tactic to build a community adjacent to your product. For example, Lovable&#8217;s <a href="https://shebuilds.lovable.app/">SheBuilds</a> hackathon encourages more women to try vibe coding.</p><blockquote><p><strong>What this looks like:</strong> HubSpot pioneered inbound marketing by teaching people how to be better marketers before selling them software. For many young professionals, that learning happened years before any purchasing decision &#8211; and by then, brand equity was already baked in.</p></blockquote><h2>Fast, not frantic</h2><p>It's tempting to treat &#8220;shipping too fast&#8221; as a humblebrag, but that&#8217;s lazy thinking. If users can&#8217;t adopt what you ship, it&#8217;s not velocity, it&#8217;s waste.</p><p>Practically, that means being explicit about what actually deserves attention &#8211; and just as explicit about what doesn&#8217;t.</p><p><strong>So when </strong><em><strong>should</strong></em><strong> you market a specific feature?</strong></p><ul><li><p>It changes a core workflow, not just adds another option</p></li><li><p>It compounds with an existing behavior (and you can surface it in-context)</p></li><li><p>It has a clear &#8220;aha&#8221; moment you can design for</p></li><li><p>You&#8217;re able to support it with docs, onboarding, and follow-up content (not just a blog post)</p></li></ul><p>Everything else should move through the system quietly, without competing for attention it doesn&#8217;t need.</p><p>Product velocity only compounds when adoption keeps up. If user attention is the bottleneck, your job isn&#8217;t to slow down &#8211; it&#8217;s to be selective. Make a few things loud on purpose, and let the rest be quietly excellent.</p><p><em>Words by <a href="https://posthog.com/community/profiles/36864?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=shipping-fast-danger">Cleo Lant</a> who prefers light mode for most SaaS products (sue me).</em></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.posthog.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">You know what else compounds? This newsletter when you subscribe&#8230;</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2>&#129428; Jobs at PostHog</h2><p>Want to join a team that&#8217;s shipping this fast? We&#8217;re hiring:</p><ul><li><p><strong><a href="https://posthog.com/careers/product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=shipping-fast-danger">Product Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/software-engineer-warehouse-sources?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=shipping-fast-danger">Software Engineer &#8212; Warehouse Sources</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/talent-sourcer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=shipping-fast-danger">Founding Talent Sourcer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/software-engineer-ai-enabled-product-autonomy?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=shipping-fast-danger">Software Engineer &#8212; AI-Enabled Product Autonomy</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/clickhouse-operations-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=shipping-fast-danger">ClickHouse Operations Engineer</a></strong></p></li></ul><h2>&#128218; More good reads</h2><ul><li><p><strong><a href="https://www.leanproduction.com/theory-of-constraints/">An overview of Theory of Constraints</a></strong></p></li><li><p><strong><a href="https://posthog.com/blog/logs-ga?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=shipping-fast-danger">Your logs&#8217; final destination is in GA. You always end up here anyway</a> - Sara Miteva</strong></p></li><li><p><strong><a href="https://newsletter.mkt1.co/p/mkt1-field-guide-to-b2b-startup-marketing-part-1">The MKT1 Field Guide to B2B startup marketing</a> - <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Emily Kramer&quot;,&quot;id&quot;:18675193,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3c81a5af-135d-4e6d-9e91-0685edf60cde_750x750.png&quot;,&quot;uuid&quot;:&quot;feafe33d-0501-4815-acb4-58f6078415c8&quot;}" data-component-name="MentionToDOM"></span> </strong></p></li><li><p><strong><a href="https://posthog.com/blog/behind-the-scenes-posthog-hackathon?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=shipping-fast-danger">Behind the scenes of a PostHog hackathon</a> - <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Andy Vandervell&quot;,&quot;id&quot;:241930739,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2925ff0c-e9ff-4bb9-ae63-40bd00f7f87b_800x800.png&quot;,&quot;uuid&quot;:&quot;2c27dfff-934f-4999-bcab-311d199ff4ac&quot;}" data-component-name="MentionToDOM"></span> </strong></p></li><li><p><strong><a href="https://tailscale.com/blog/hypergrowth-isnt-always-easy?utm_source=posthog-newsletter">Hypergrowth isn&#8217;t always easy</a> - Avery Pennarun</strong></p></li></ul>]]></content:encoded></item><item><title><![CDATA[10x job posts for 10x engineers]]></title><description><![CDATA[The most underrated part of building your startup]]></description><link>https://newsletter.posthog.com/p/10x-job-posts-for-10x-engineers</link><guid isPermaLink="false">https://newsletter.posthog.com/p/10x-job-posts-for-10x-engineers</guid><dc:creator><![CDATA[Jina Yoon]]></dc:creator><pubDate>Mon, 26 Jan 2026 19:30:46 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/943b634b-f43f-4086-8596-66880b585f8f_3071x1727.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Writing great job posts is the most underrated part of building a startup.</p><p>Your company is your people, and your job posts are how you find them. Yet most founders treat them like paperwork.</p><p>At <a href="https://posthog.com/?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=job-posts">PostHog</a>, we&#8217;ve taken a different approach, and it&#8217;s worked. Our job posts have attracted tens of thousands of candidates, consistent praise, and ultimately, the talented team we now have.</p><p>Here&#8217;s everything we&#8217;ve learned about writing job posts that attract 10x talent.</p><div><hr></div><h2>1. Include real projects</h2><p>The most powerful thing you can do is to give candidates a taste of what they&#8217;d <em>actually</em> do at your company.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Vguk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea8fa11d-cf9e-43e9-8441-5bb41c26ccf9_1088x862.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Vguk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea8fa11d-cf9e-43e9-8441-5bb41c26ccf9_1088x862.png 424w, https://substackcdn.com/image/fetch/$s_!Vguk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea8fa11d-cf9e-43e9-8441-5bb41c26ccf9_1088x862.png 848w, https://substackcdn.com/image/fetch/$s_!Vguk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea8fa11d-cf9e-43e9-8441-5bb41c26ccf9_1088x862.png 1272w, https://substackcdn.com/image/fetch/$s_!Vguk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea8fa11d-cf9e-43e9-8441-5bb41c26ccf9_1088x862.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Vguk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea8fa11d-cf9e-43e9-8441-5bb41c26ccf9_1088x862.png" width="1088" height="862" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ea8fa11d-cf9e-43e9-8441-5bb41c26ccf9_1088x862.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:862,&quot;width&quot;:1088,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:431697,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.posthog.com/i/185359470?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea8fa11d-cf9e-43e9-8441-5bb41c26ccf9_1088x862.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_!Vguk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea8fa11d-cf9e-43e9-8441-5bb41c26ccf9_1088x862.png 424w, https://substackcdn.com/image/fetch/$s_!Vguk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea8fa11d-cf9e-43e9-8441-5bb41c26ccf9_1088x862.png 848w, https://substackcdn.com/image/fetch/$s_!Vguk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea8fa11d-cf9e-43e9-8441-5bb41c26ccf9_1088x862.png 1272w, https://substackcdn.com/image/fetch/$s_!Vguk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea8fa11d-cf9e-43e9-8441-5bb41c26ccf9_1088x862.png 1456w" sizes="100vw" fetchpriority="high"></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 aria-hidden="true" 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><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>Instead of rambling on about the job responsibilities, include a list of sample projects.</p><p>For example, Cursor posted these sample projects in an infra <a href="https://cursor.com/careers/software-engineer-infrastructure?utm_source=posthog-newsletter">Software Engineer</a> role:</p><ul><li><p>Creating a retrieval system that processes 10,000,000,000+ files</p></li><li><p>Staring at esoteric flame graphs to performance engineer our reranking library</p></li><li><p>Working with many databases, proxies, caches, task queues, and orchestration systems</p></li><li><p>Shipping infra for safely computing import graphs and shadow lints </p></li></ul><p>Lovable&#8217;s current open <a href="https://jobs.ashbyhq.com/lovable/920b4099-00bc-4d5e-9469-2c955ef3a662?utm_source=posthog-newsletter">Platform Engineer</a> position has a couple as well:</p><ul><li><p>A runtime environment for running AI agent workloads in a secure, scalable way.</p></li><li><p>High throughput Sandbox scheduler across multiple cloud providers. </p></li></ul><p>You can take it even further and add links to actual PRs if your company is <a href="https://posthog.com/newsletter/open-source-benefits?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=job-posts">open source</a>. At PostHog, we often add public examples of work you might do, like in this <a href="https://posthog.com/careers/devex-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=job-posts">DevEx Engineer</a> post:</p><ul><li><p><a href="https://github.com/PostHog/posthog/pull/39965">Hogli, a unified CLI for PostHog developer workflows</a></p></li><li><p><a href="https://github.com/PostHog/posthog/pull/39400">Django migration safety checks and guide</a></p></li><li><p><a href="https://github.com/PostHog/posthog/pull/41758">Upgrade Django to 5.2</a></p></li></ul><p>This has a hidden benefit for your team, too. It helps you focus your evaluation on real work rather than just credentials and experience.</p><blockquote><p><strong>The takeaway: </strong>Real projects help people see if they&#8217;re actually interested in the work, not just qualified to do it.</p></blockquote><div><hr></div><h2>2. Say what&#8217;s in it for <em>them</em></h2><p>Perks are nice. <a href="https://posthog.com/founders/write-great-job-ads?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=job-posts#salary">Transparent compensation</a> is even better.</p><p>But the ultimate thing that&#8217;s going to convince another <a href="https://posthog.com/founders/cracked-manifesto?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=job-posts">cracked engineer</a> to come work with you is work they&#8217;re excited by. Some examples:</p><ul><li><p><strong>Impact from day one:</strong> You&#8217;re building agents on top of real customer data &#8212; not toy demos, not &#8220;when we get users&#8221; (<a href="https://posthog.com/careers/ai-product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=job-posts">AI Product Engineer, PostHog</a>).</p></li><li><p>You will engage with the open-source community and participate in discussions, aligning with our commitment to <strong>giving back to the developer community</strong> (<a href="https://vercel.com/careers/software-engineer-ai-sdk-5474915004?utm_source=posthog-newsletter">Software Engineer, Vercel</a>).</p></li><li><p>We also own <strong>a $5M H200 GPU cluster</strong> that regularly lights up tens of thousands of machines (<a href="https://jobs.ashbyhq.com/exa/913d2b71-39d5-4d3a-ab8d-ffffa34cd069?utm_source=posthog-newsletter">Software Engineer, Exa</a>).</p></li><li><p><strong>Massive reach: </strong>Our docs platform serves 100 million+ developers every year and powers documentation for 18,000+ companies, including Anthropic, Cursor, PayPal, Coinbase, X, and over 20% of the last YC batch (<a href="https://jobs.ashbyhq.com/mintlify/e132acd4-ec23-41bb-b33a-9e694fc63f99?utm_source=posthog-newsletter">Product Engineer, Mintlify</a>).</p></li><li><p><strong>Autonomy:</strong> We have very few meetings. Just a Monday and a Friday to go over the Company Board. We think your time is sacred, whether it&#8217;s at work, or outside of work (<a href="https://jobs.ashbyhq.com/Railway/6ddcfe47-6cce-469b-ba6d-4f0e83440c9d?utm_source=posthog-newsletter">Senior Full-Stack Engineer, Railway</a>). </p></li></ul><p>Talk to your current team and ask what made them join. Those answers are what belongs in your job post, not your mission statement.</p><blockquote><p><strong>The takeaway: </strong>Ambitious people are looking for places to learn, grow, and find fulfillment, not just collect a paycheck. Your value prop is the work, culture, and equity &#8211; sell them!</p></blockquote><div><hr></div><h2>3. Avoid generic job titles</h2><p>Generic job titles attract generic candidates.</p><p>For months, we had trouble hiring a product marketer. We got hundreds of applications from people who had been product marketers at other companies, but their experience was a bit too corporate for us.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RxeR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89a6b945-39fa-42d3-b6b0-ef0a4be0fef4_1822x897.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RxeR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89a6b945-39fa-42d3-b6b0-ef0a4be0fef4_1822x897.png 424w, https://substackcdn.com/image/fetch/$s_!RxeR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89a6b945-39fa-42d3-b6b0-ef0a4be0fef4_1822x897.png 848w, https://substackcdn.com/image/fetch/$s_!RxeR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89a6b945-39fa-42d3-b6b0-ef0a4be0fef4_1822x897.png 1272w, https://substackcdn.com/image/fetch/$s_!RxeR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89a6b945-39fa-42d3-b6b0-ef0a4be0fef4_1822x897.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RxeR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89a6b945-39fa-42d3-b6b0-ef0a4be0fef4_1822x897.png" width="1456" height="717" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/89a6b945-39fa-42d3-b6b0-ef0a4be0fef4_1822x897.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:717,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:181642,&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://newsletter.posthog.com/i/185359470?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89a6b945-39fa-42d3-b6b0-ef0a4be0fef4_1822x897.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_!RxeR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89a6b945-39fa-42d3-b6b0-ef0a4be0fef4_1822x897.png 424w, https://substackcdn.com/image/fetch/$s_!RxeR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89a6b945-39fa-42d3-b6b0-ef0a4be0fef4_1822x897.png 848w, https://substackcdn.com/image/fetch/$s_!RxeR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89a6b945-39fa-42d3-b6b0-ef0a4be0fef4_1822x897.png 1272w, https://substackcdn.com/image/fetch/$s_!RxeR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89a6b945-39fa-42d3-b6b0-ef0a4be0fef4_1822x897.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 aria-hidden="true" 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><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>It wasn&#8217;t until we changed the title to Developer Marketer that we started getting the right kind of candidates. Developers who could write, marketers who could code, the weird generalists we were looking for.</p><p>We do this now for a lot of roles like &#8220;Developers who love teaching&#8221; for the docs team, or &#8220;Developer who organizes events&#8221; for an event marketer.</p><p>One of our current openings is for an ad copywriter. The last thing we want is someone who writes &#8220;unlock growth&#8221; or &#8220;leverage your data stack&#8221;, so we&#8217;ve named it <a href="https://posthog.com/careers/propagandist?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=job-posts">Propagandist</a> to capture the unhinged energy we want to find.</p><p>This helps filter out people who want more traditional roles (nothing wrong with that, it&#8217;s just <a href="https://posthog.com/founders/write-great-job-ads?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=job-posts#who-this-role-is-not-for">not what we do</a>). More importantly though, it gets the M- and T-shaped people we want more excited and likely to apply.</p><blockquote><p><strong>The takeaway: </strong>Every job title comes with baggage. You&#8217;ll attract the unconventional candidates you want by clarifying what makes the role unique.</p></blockquote><div><hr></div><h2>4. Detail your interview process</h2><p>Everyone&#8217;s heard a story of a dreaded 10 step interview process with multiple on-site interviews and (unpaid) take home assignments that ends in a company ghosting them without an offer.</p><p>This nightmare scenario is what every candidate thinks your interview process is like if you don&#8217;t tell them.</p><p>Talented people are busy. Being <a href="https://posthog.com/founders/how-to-run-a-transparent-company?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=job-posts">transparent</a> about your interview process respects their time. Some examples include:</p><ul><li><p><a href="https://jobs.ashbyhq.com/supabase/497d99f8-a848-4e33-8dba-1fd64f83f48b?utm_source=posthog-newsletter">Supabase</a> details their &#8220;simple, async-friendly&#8221; four step process, the bulk of which is up to four calls with the founders and future teammates.</p></li><li><p>We, at <a href="https://posthog.com/careers/product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=job-posts">PostHog</a>, have a four step process with culture, technical, and founder interviews, then our paid ($1000) SuperDay of work.</p></li><li><p><a href="https://railway.com/careers/full-stack?utm_source=posthog-newsletter">Railway</a> also has a six step process with async project work and review, interviews, and a chat with the CEO.</p></li></ul><p>This has the added benefit of forcing you to clarify and be accountable for your interview process, and provides a good first impression of your company values.</p><blockquote><p><strong>The takeaway:</strong> Clarifying, then including your interview process has a huge impact on candidate experience and makes your role more accessible to talented (but busy) potential hires.</p></blockquote><div><hr></div><h2>5. Treat job posts like marketing</h2><blockquote></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!V15m!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd95fa370-5985-4dd2-bdad-b04301b68d14_1238x968.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V15m!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd95fa370-5985-4dd2-bdad-b04301b68d14_1238x968.png 424w, https://substackcdn.com/image/fetch/$s_!V15m!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd95fa370-5985-4dd2-bdad-b04301b68d14_1238x968.png 848w, https://substackcdn.com/image/fetch/$s_!V15m!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd95fa370-5985-4dd2-bdad-b04301b68d14_1238x968.png 1272w, https://substackcdn.com/image/fetch/$s_!V15m!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd95fa370-5985-4dd2-bdad-b04301b68d14_1238x968.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V15m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd95fa370-5985-4dd2-bdad-b04301b68d14_1238x968.png" width="1238" height="968" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d95fa370-5985-4dd2-bdad-b04301b68d14_1238x968.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:968,&quot;width&quot;:1238,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:249315,&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://newsletter.posthog.com/i/185359470?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd95fa370-5985-4dd2-bdad-b04301b68d14_1238x968.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_!V15m!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd95fa370-5985-4dd2-bdad-b04301b68d14_1238x968.png 424w, https://substackcdn.com/image/fetch/$s_!V15m!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd95fa370-5985-4dd2-bdad-b04301b68d14_1238x968.png 848w, https://substackcdn.com/image/fetch/$s_!V15m!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd95fa370-5985-4dd2-bdad-b04301b68d14_1238x968.png 1272w, https://substackcdn.com/image/fetch/$s_!V15m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd95fa370-5985-4dd2-bdad-b04301b68d14_1238x968.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 aria-hidden="true" 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><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>Job posts are often someone&#8217;s first impression of your company.</p><p>This is especially true in early stages. There&#8217;s a good chance your LinkedIn job ad is literally your most-viewed piece of content. Every view is a chance to build your brand to a potential customer, investor, or teammate, so you need to stand out.</p><p>The same rules for marketing copy apply here - lead with your value prop, skip the jargon, and write with personality.</p><p>The creators of <a href="https://posthog.com/newsletter/inside-bolt-dot-new?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=job-posts">Bolt.new</a> do this well in their intro for this <a href="https://job-boards.greenhouse.io/stackblitz/jobs/4005468009?utm_source=posthog-newsletter">Full Stack Engineer</a> role:</p><blockquote><p>We&#8217;re StackBlitz!</p><p>We&#8217;re the team behind WebContainers, the groundbreaking technology that made it possible to run Node.js right in your browser. No installs, no setup, just instant dev environments. That innovation kickstarted our journey in 2019 and powers the blazing-fast online IDE used by over a million developers every month.</p><p>But we didn&#8217;t stop there.</p><p>We took everything we learned from building WebContainers and used it to create Bolt.new.</p></blockquote><p>At PostHog, we keep that energy going throughout the entire post:</p><ul><li><p>You love getting things done. Engineers at PostHog have an incredible amount of autonomy to decide what to work on, so you&#8217;ll need to be proactive and just <strong>git</strong> it done (<a href="https://posthog.com/careers/platform-engineer-(us)?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=job-posts">Platform Engineer, PostHog</a>). </p></li><li><p>Have created short-form videos (TikTok, Reels, Shorts) for companies. We don&#8217;t think most dance trends are relevant to B2B SaaS, but it would be helpful if you could confirm that for us (<a href="https://posthog.com/careers/social-poster-(in-chief)?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=job-posts">Social Poster (in chief), PostHog</a>).</p></li><li><p>Implementing AI features. LLMs, eh? They&#8217;re getting prettaaay, prettaay good. All our products integrate with PostHog AI, so you&#8217;ll likely be working with the PostHog AI team to implement AI features in your products (<a href="https://posthog.com/careers/ai-product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=job-posts">AI Product Engineer, PostHog</a>).</p></li></ul><p>Write these like how you would talk to a friend. Add what makes you unique. Lean into being super technical (or super weird). Brag a little, but not too much. Mention your traction, the money you&#8217;ve raised, and a bit of background, not your CEO&#8217;s high school pedigree. Make a joke; we say our founder interview is the &#8220;final boss&#8221;.</p><blockquote><p><strong>The takeaway:</strong> More people will read your job post than your landing page. Make it count.</p></blockquote><p><em>Words by <a href="https://posthog.com/community/profiles/38655?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=job-posts">Jina Yoon</a>, who applied to one of these job posts recently.</em></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.posthog.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe to get more example job posts like the ones below (and newsletters too&#8230;)</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2>&#129428; Jobs at PostHog</h2><p>We&#8217;re biased but we&#8217;re proud of our job posts. Check them out (and apply):</p><ul><li><p><strong><a href="https://posthog.com/careers/product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=job-posts">Product Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/founding-talent-sourcer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=job-posts">Founding Talent Sourcer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/software-engineer-warehouse-pipelines?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=job-posts">Software Engineer &#8212; Warehouse Pipelines</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/ai-product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=job-posts">AI Product Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/forward-deployed-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=job-posts">Forward Deployed Engineer</a></strong></p></li></ul><div><hr></div><h2>&#128218; More good reads</h2><ul><li><p><strong><a href="https://builders.ramp.com/post/why-we-built-our-background-agent?utm_source=posthog-newsletter">Why We Built Our Own Background Agent</a> - Ramp</strong></p></li><li><p><strong><a href="https://www.ablg.io/blog/no-management-needed?utm_source=posthog-newsletter">No management needed: anti-patterns in early-stage engineering teams</a> - Antoine Boulange</strong></p></li><li><p><strong><a href="https://posthog.com/blog/stop-ai-slop?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=job-posts">Stop AI slop: Run evals with LLM-as-a-Judge</a> - Cleo Lant</strong></p></li><li><p><strong><a href="https://posthog.com/founders/cracked-manifesto?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=job-posts">Hiring (and managing) cracked engineers</a> - Charles Cook</strong></p></li><li><p><strong><a href="https://posthog.com/newsletter/how-to-get-job-startup?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=job-posts">How to get a job at a startup</a> - James Temperton</strong></p></li></ul>]]></content:encoded></item><item><title><![CDATA[How I actually get good advice]]></title><description><![CDATA[Ironic coming from the "collaboration sucks" guy]]></description><link>https://newsletter.posthog.com/p/how-i-actually-get-good-advice</link><guid isPermaLink="false">https://newsletter.posthog.com/p/how-i-actually-get-good-advice</guid><dc:creator><![CDATA[Charles Cook]]></dc:creator><pubDate>Mon, 12 Jan 2026 18:17:48 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/768f4913-0a9a-4b18-bc5d-cf6cc9653241_2912x2096.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Every 6 months, I spend 2 weeks intensively gathering advice from people who are much more experienced and successful than me at what we do at <a href="https://posthog.com?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=good-advice">PostHog</a>. </p><p>I&#8217;ve talked with people who have scaled some of the most successful software companies in the world and built tools that millions use every day. What I learned from them has fundamentally changed how we do things at PostHog.</p><p>I also increasingly have people asking me for advice about what they should do with their company. The main thing I&#8217;ve learned from both sides of the conversation is that getting good advice doesn&#8217;t just happen. It&#8217;s a skill.</p><p>These are the things I do to get good advice. </p><h2>Be intentional and cast a wide net</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZLQG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc177aeef-91b6-4ba9-a87a-40d4a2cf5fed_3840x2160.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZLQG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc177aeef-91b6-4ba9-a87a-40d4a2cf5fed_3840x2160.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZLQG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc177aeef-91b6-4ba9-a87a-40d4a2cf5fed_3840x2160.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZLQG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc177aeef-91b6-4ba9-a87a-40d4a2cf5fed_3840x2160.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZLQG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc177aeef-91b6-4ba9-a87a-40d4a2cf5fed_3840x2160.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZLQG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc177aeef-91b6-4ba9-a87a-40d4a2cf5fed_3840x2160.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c177aeef-91b6-4ba9-a87a-40d4a2cf5fed_3840x2160.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3184545,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.posthog.com/i/183910305?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc177aeef-91b6-4ba9-a87a-40d4a2cf5fed_3840x2160.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZLQG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc177aeef-91b6-4ba9-a87a-40d4a2cf5fed_3840x2160.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZLQG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc177aeef-91b6-4ba9-a87a-40d4a2cf5fed_3840x2160.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZLQG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc177aeef-91b6-4ba9-a87a-40d4a2cf5fed_3840x2160.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZLQG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc177aeef-91b6-4ba9-a87a-40d4a2cf5fed_3840x2160.jpeg 1456w" sizes="100vw" fetchpriority="high"></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 aria-hidden="true" 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><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>My process is:</p><ol><li><p>Pick a topic where I have ideas but not strong conviction about what to do</p></li><li><p>Find 4 people who have done that thing successfully</p></li><li><p>Either get intros or cold message them on LinkedIn</p></li></ol><p>You need to talk to multiple people because they will all say different things, even if they worked at the same company. Pick companies that serve a similar <a href="https://posthog.com/newsletter/ideal-customer-profile-framework?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=good-advice">ideal customer profile</a>. If you are building a <a href="https://posthog.com/founders/dev-marketing-for-startups?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=good-advice">devtool</a>, get advice about sales from someone at GitHub, not LinkedIn. If you are product-led, talk to someone from Figma, not Salesforce. </p><p>Cold messaging works because people are nice, but you need to a) have mutuals, and b) ask a specific question. Don&#8217;t say &#8220;I&#8217;d love to pick your brain&#8221; &#8211; a specific question from you lessens the mental load for them so they can be helpful.</p><p>Here&#8217;s basically the message I send:</p><blockquote><p><em>Hi ____, if you have a minute to share some wisdom with someone building the sales machine at a heavily product-led company, I&#8217;d love to get your thoughts!</em></p><p><em>I lead the commercial teams at PostHog (joined as first non-eng hire), and we&#8217;re scaling up across sales, CS, demand gen, etc. fast. </em></p><p><em>One thing I&#8217;m trying to figure out is what our first BDR hire should look like &#8211; someone who has built a function before and knows what they&#8217;re doing, or a less experience/more cracked IC type who will just try things? Or something else entirely?</em></p><p><em>If you don&#8217;t see this no worries &#8211; huge fanboy of how you guys scaled [insert personal, genuine reason why you admire their work]</em></p></blockquote><p>&#8220;But Charles, that won&#8217;t work for me &#8211; I&#8217;m not a fancy generic exec person like you are!&#8221;</p><p>Maybe I&#8217;m weird, but I hop on calls with people I don&#8217;t know about once a week to give them advice. Usually the ones I&#8217;ve said yes to have done similar to the above &#8211; if your story resonates, people will want to help you out. </p><p>Here&#8217;s an example of a message I received a couple of weeks ago that led to a call:</p><blockquote><p><em>Hi Charles, </em></p><p><em>My name is ______. I recently applied to (and was then rejected by) PostHog. Sucks, but all part of the game. I&#8217;m reaching out because in my research of PostHog (I research every startup I apply to, I am still lucky to have the luxury of choosing where I apply to), I came across your website and writings and I became hooked, I especially loved your <a href="https://dictatorortechbro.com/">dictator or tech bro game</a>, that was amazing, I think you need to introduce some quotes from Gurbanguly Berdymukhammedov (Turkmenistan&#8217;s dictator) because that guy is wild &#8211; <a href="https://www.youtube.com/watch?v=-9QYu8LtH2E.">here is a link</a> to a last week tonight episode about him but careful because Turkmenistan is a youtube video rabbit hole.</em></p><p><em>Anyways. I really resonated with how you entered the world of startups and I am trying to do the same (I am a very new corporate lawyer, who is trying to leave the field all together) and was hoping I could get a few minutes of your time so that you could get give me some advice on breaking into the world of startups and so that I may ask you a few more questions about your &#8220;What startup recruiters actually see when you apply for a job&#8221; article.</em> </p><p><em>Thank you so much for your time and for the great content you create!</em> </p></blockquote><h2>Ask the &#8220;right&#8221; people</h2><p>How do I know that people have done something successfully? Sure, LinkedIn, but that doesn&#8217;t give the full picture&#8230;</p><p>Honestly &#8211; I can&#8217;t really know! But I still learn something useful in every call:</p><ul><li><p>Sometimes, the person just validates that you are doing the right thing</p></li><li><p>They may have made a bunch of mistakes, which is still great &#8211; now you can avoid making them</p></li></ul><p>Generally, I&#8217;ve found that the most helpful people have done a decent stint &#8211; i.e. 5+ years at a good company. 5 years is long enough to genuinely help build something, and people who aren&#8217;t good generally get found out before then. </p><p>If they&#8217;ve collected 18 month stints at a bunch of cool companies, they may still be good, but they&#8217;ve left too quickly to ever really get found out. Generally, I&#8217;m looking for people who have been leaders at companies I admire and have 15+ years of overall experience. </p><h2>Do some legwork</h2><p>Once a call is set up, I write a one pager that summarizes where we are at and outline 3-4 questions I&#8217;d like to ask. I share this with them before the call. <a href="https://docs.google.com/document/d/1a5f9DsV5gG8U-QECUdN6ugdhNYspkBi3klkI4tTwjd4/edit?tab=t.0#heading=h.18ofjr9n20hn">Here&#8217;s an example of what it looks like.</a></p><p><strong>This is the single most important thing I&#8217;ve done to get better advice.</strong> Do not just turn up and start talking. </p><p>A one pager:</p><ul><li><p>Saves you precious time on a call telling someone all about your business they just heard about</p></li><li><p>Helps you clarify and focus your thinking on what really matters</p></li><li><p>Shows you are a person to take seriously</p></li></ul><p>Here&#8217;s a template I use:</p><pre><code><strong>Summary</strong>
- Where our company/function was
- Where our company/function is today
- Where we&#8217;re heading in the near future

<strong>Team</strong>
- What the team looks like 

<strong>What we need help with
</strong>- Specific questions

<strong>Call notes
</strong>- </code></pre><p>When it comes to the questions, the best approach is to pick a specific area but ask for their general take or mental model. Don&#8217;t ask them how to solve a specific problem &#8211; you&#8217;ll never give them enough context and they&#8217;ll feel obliged to say something anyway. People are nice and don&#8217;t want to say &#8220;you have to figure that out for yourself.&#8221;  </p><p>The person I am talking to may have already spoken about these topics in an article they wrote or an interview they did, but I don&#8217;t worry about that. If I&#8217;m trying to get in touch with someone because they were on <a href="https://www.lennysnewsletter.com/podcast">Lenny&#8217;s Podcast</a>, they are probably too busy/famous to talk to me anyway!</p><h2>Start closer to home</h2><p>If it&#8217;s an option, your own team can be a great source of advice! For example, I went through a period of interviewing every new sales hire about a month after they joined PostHog to get as much specific, detailed information out of them. </p><p>Here&#8217;s a template you can use:</p><pre><code><strong>Your background</strong>
- Tell me about the most successful _____ team(s) you have ever been a part of
- What were the specific things that made them successful?
- What were the processes? Team personality traits? Training?
- What were the mistakes you made?

<strong>At PostHog</strong>
- What are the things you think we are doing well as a ____ team?
- Why do you think we would fail to achieve our goals?
- What are 3 things we could start doing tomorrow that would make a difference?
</code></pre><p>You don&#8217;t really need to have a specific agenda &#8211; I find these conversations less good for solving specific problems, and better for casting the net wide and seeing what you find.</p><p>For example, we didn&#8217;t watch sales call recordings early on &#8211; we&#8217;re too busy selling to watch calls! But Scott convinced me that this is actually extremely important at any stage &#8211; &#8220;there isn&#8217;t a basketball team that doesn&#8217;t watch recordings of how they play.&#8221; (This is probably why I suck at basketball right?)</p><h2>Diagnoses &gt; solutions</h2><p>Statistically speaking, the person giving you advice is not going to nail the solution every time. In fact, they&#8217;ll probably be right 50% of the time. If you get two people giving you conflicting advice, the number of correct opinions is either 0 or 1. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hKOt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda5eacbd-c35b-4259-b47d-af207c945ee7_1600x491.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hKOt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda5eacbd-c35b-4259-b47d-af207c945ee7_1600x491.png 424w, https://substackcdn.com/image/fetch/$s_!hKOt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda5eacbd-c35b-4259-b47d-af207c945ee7_1600x491.png 848w, https://substackcdn.com/image/fetch/$s_!hKOt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda5eacbd-c35b-4259-b47d-af207c945ee7_1600x491.png 1272w, https://substackcdn.com/image/fetch/$s_!hKOt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda5eacbd-c35b-4259-b47d-af207c945ee7_1600x491.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hKOt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda5eacbd-c35b-4259-b47d-af207c945ee7_1600x491.png" width="1456" height="447" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/da5eacbd-c35b-4259-b47d-af207c945ee7_1600x491.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:447,&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_!hKOt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda5eacbd-c35b-4259-b47d-af207c945ee7_1600x491.png 424w, https://substackcdn.com/image/fetch/$s_!hKOt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda5eacbd-c35b-4259-b47d-af207c945ee7_1600x491.png 848w, https://substackcdn.com/image/fetch/$s_!hKOt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda5eacbd-c35b-4259-b47d-af207c945ee7_1600x491.png 1272w, https://substackcdn.com/image/fetch/$s_!hKOt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda5eacbd-c35b-4259-b47d-af207c945ee7_1600x491.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 aria-hidden="true" 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><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://x.com/sequence_film/status/1686119553229795328">Bill Hader on receiving feedback</a></figcaption></figure></div><p>They will however be pretty likely to nail the problem you&#8217;re facing, because there are exponentially more potential solutions than there are problems, and problems tend not to vary as much over time. Everyone is dealing with <a href="https://posthog.com/newsletter/43-lessons-about-hiring-for-startups?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=good-advice">how to hire</a>, fire, <a href="https://posthog.com/newsletter/tech-lead-failure-modes?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=good-advice">manage</a>, pay, acquire customers, retain customers, etc. </p><p>For example, I spoke to three companies who all agreed that relying on solely inbound sales won&#8217;t scale beyond a certain point, and you need to figure out outbound before you actually need it. However, one suggested hiring a senior BDR, another a go-to-market engineer, and the other an account executive who could do BDR experiments. We&#8217;re solving this with the first option, because that makes the most sense in the context of our business, customer base, and existing systems.</p><p>It&#8217;s a meme, but 80% of figuring out the right solution is getting to the root of the actual problem first. </p><h2>Don&#8217;t underestimate the role of luck</h2><p>One thing you should always ask yourself is &#8220;how much can I attribute this person&#8217;s success to their brilliance vs. external factors such as luck?&#8221;</p><p>We love a good Napoleon or Caesar biography where their success is attributed to a series of extremely smart decisions made after a period of intense contemplation, but the reality is that a lot of anybody&#8217;s success is down to a specific time/place/economy/environment/weather. </p><p>Many of our best decisions weren&#8217;t the result of deep, careful thinking &#8211; they were vibes that turned out to be right because that&#8217;s the way the wind was blowing. And we&#8217;ve got plenty of things wrong anyway that came after a bunch of analysis.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RJI5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92b75bea-d5a8-40f4-a082-f21e246bee78_1334x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RJI5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92b75bea-d5a8-40f4-a082-f21e246bee78_1334x768.png 424w, https://substackcdn.com/image/fetch/$s_!RJI5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92b75bea-d5a8-40f4-a082-f21e246bee78_1334x768.png 848w, https://substackcdn.com/image/fetch/$s_!RJI5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92b75bea-d5a8-40f4-a082-f21e246bee78_1334x768.png 1272w, https://substackcdn.com/image/fetch/$s_!RJI5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92b75bea-d5a8-40f4-a082-f21e246bee78_1334x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RJI5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92b75bea-d5a8-40f4-a082-f21e246bee78_1334x768.png" width="1334" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/92b75bea-d5a8-40f4-a082-f21e246bee78_1334x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1334,&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_!RJI5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92b75bea-d5a8-40f4-a082-f21e246bee78_1334x768.png 424w, https://substackcdn.com/image/fetch/$s_!RJI5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92b75bea-d5a8-40f4-a082-f21e246bee78_1334x768.png 848w, https://substackcdn.com/image/fetch/$s_!RJI5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92b75bea-d5a8-40f4-a082-f21e246bee78_1334x768.png 1272w, https://substackcdn.com/image/fetch/$s_!RJI5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92b75bea-d5a8-40f4-a082-f21e246bee78_1334x768.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 aria-hidden="true" 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><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>Getting advice from someone who has only worked at Google, Meta, and Netflix mayyy be helpful because they&#8217;ve probably worked with a lot of excellent people, but remember that you&#8217;ll be trying to apply lessons from some of the biggest outliers in history to your situation. </p><p>I think the best way to figure out whether the person is brilliant or lucky is gut feel:</p><ul><li><p>Do you find the person you&#8217;re talking to extremely impressive, or do you come away thinking &#8220;wow, this company nailed it?&#8221; </p></li><li><p>Would you pay $1m to hire that person tomorrow to help you, or did you come away thinking &#8220;that was mildly interesting?&#8221; </p></li></ul><p>If it&#8217;s the latter in both cases, the advice won&#8217;t necessarily be bad, but they might have been more lucky than good.</p><p><em>Words by Charles Cook, who is currently working on a billboard campaign around the slogan &#8220;what doesn&#8217;t kill you makes you PostHog&#8221;</em></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.posthog.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe for more advice.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2><strong>&#129428; </strong>Jobs at PostHog</h2><p>Really, the best advice I can give you is to join us, we&#8217;re hiring these roles <a href="https://posthog.com/careers?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=good-advice">and more</a>:</p><ul><li><p><strong><a href="https://posthog.com/careers/product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=good-advice">Product Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/forward-deployed-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=good-advice">Forward Deployed Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/product-manager-(ex-founder-or-ex-product-engineer)?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=good-advice">Product Manager (ex-founder or ex-product engineer)</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/ai-product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=good-advice">AI Product Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/software-engineer-data-stack-tooling?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=good-advice">Software Engineer &#8212; Data Stack Tooling</a></strong></p></li></ul><div><hr></div><h2>&#128218; More good reads</h2><ul><li><p><strong><a href="https://posthog.com/blog/why-small-teams-crush-tiger-teams?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=good-advice">Why small teams crush tiger teams</a> - Natalia Amorim</strong></p></li><li><p><strong><a href="https://dynomight.substack.com/p/advice">Why doesn&#8217;t advice work?</a> - <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;dynomight&quot;,&quot;id&quot;:33289192,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dbf51052-648c-42f6-af15-f76c3d84ba48_320x320.png&quot;,&quot;uuid&quot;:&quot;a3d982f1-d261-438e-87ca-2ac544738cb1&quot;}" data-component-name="MentionToDOM"></span></strong> </p></li><li><p><strong><a href="https://sunilpai.dev/posts/seven-ways/">where good ideas come from (for coding agents)</a> - Sunil Pai</strong></p></li><li><p><strong><a href="https://haacked.com/archive/2026/01/06/one-year-at-posthog/">One Year at PostHog</a> - haacked</strong></p></li><li><p><strong><a href="https://posthog.com/blog/correct-llm-code-generation?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=good-advice">What the AI Wizard taught us about LLM code generation at scale</a> - Danilo Campos</strong></p></li></ul>]]></content:encoded></item><item><title><![CDATA[The best of Product for Engineers in 2025]]></title><description><![CDATA[Popular, underrated, and favorite posts (and hedgehogs) from 2025]]></description><link>https://newsletter.posthog.com/p/the-best-of-product-for-engineers</link><guid isPermaLink="false">https://newsletter.posthog.com/p/the-best-of-product-for-engineers</guid><dc:creator><![CDATA[Ian Vanagas]]></dc:creator><pubDate>Mon, 22 Dec 2025 18:16:28 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ab0b541c-36ab-405c-927c-a939be628006_1456x1048.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>2025 was a big year for this newsletter (and <a href="https://posthog.com/?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=best-of-2025">PostHog</a>).</p><ul><li><p>We published 28 posts that were read over 1M times.</p></li><li><p>We started the year at ~38k subscribers and ended it at over 100k.</p></li><li><p>PostHog launched <a href="https://posthog.com/error-tracking?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=best-of-2025">error tracking</a>, <a href="https://posthog.com/ai?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=best-of-2025">PostHog AI</a>, <a href="https://posthog.com/llm-analytics?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=best-of-2025">LLM analytics</a>, a fully revamped <a href="https://posthog.com/docs/experiments/start-here?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=best-of-2025">experiments experience</a>, <a href="https://posthog.com/blog/mobile-session-replay?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=best-of-2025">mobile session replay</a>, <a href="https://posthog.com/docs/model-context-protocol?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=best-of-2025">an MCP server</a>, <a href="https://posthog.com/cool-tech-jobs?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=best-of-2025">a job board</a>, <a href="https://posthog.com/deskhog?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=best-of-2025">Deskhog</a>, our <a href="https://posthog.com/blog/envoy-wizard-llm-agent?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=best-of-2025">install wizard</a>, <a href="https://posthog.com/blog/why-os?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=best-of-2025">a new website</a>, and much more.</p></li><li><p>We also raised a <a href="https://posthog.com/blog/series-d?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=best-of-2025">Series D</a> and <a href="https://posthog.com/blog/series-e?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=best-of-2025">Series E</a> and are now at 159 people and <a href="https://posthog.com/careers?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=best-of-2025">hiring many more</a>.</p></li></ul><p>To wrap up 2025, we&#8217;re rounding up the most noteworthy of our work this year.</p><h2>Most popular posts</h2><ol><li><p><strong><a href="https://newsletter.posthog.com/p/collaboration-sucks">Collaboration sucks</a></strong> &#8211; <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Charles Cook&quot;,&quot;id&quot;:26794794,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6e301a28-8afc-4ebe-b463-3415d8dce3fe_302x365.png&quot;,&quot;uuid&quot;:&quot;a3d538de-8417-4600-a77f-1ca4ac7307ae&quot;}" data-component-name="MentionToDOM"></span>&#8216;s anti-collaboration manifesto was our most popular post of the year with 112,220 views, 167 shares, and a considerable amount of controversy.</p></li><li><p><strong><a href="https://newsletter.posthog.com/p/50-things-weve-learned-about-building">50 things we&#8217;ve learned about building successful products</a></strong> &#8211; A roundup of many lessons we&#8217;ve learned while building PostHog also made the front page of Hacker News, leading it to be our second most popular post.</p></li><li><p><strong><a href="https://newsletter.posthog.com/p/32-things-weve-learned-from-scaling">32 things we&#8217;ve learned about building a startup that scales</a></strong> &#8211; Charles&#8217; reflections on culture, hiring, product, and marketing as PostHog has grown from 11 people to over 150 rounds out our top 3.</p></li></ol><h2>Lottie&#8217;s favorite hedgehog</h2><p>We&#8217;re lucky to have Lottie&#8217;s illustrations liven up nearly every edition of Product for Engineers. Of the dozens of hedgehogs she drew this year, here are her two favorites:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!de_Z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4b8ab6-9258-4e8c-81ce-a94ef118a774_1870x875.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!de_Z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4b8ab6-9258-4e8c-81ce-a94ef118a774_1870x875.png 424w, https://substackcdn.com/image/fetch/$s_!de_Z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4b8ab6-9258-4e8c-81ce-a94ef118a774_1870x875.png 848w, https://substackcdn.com/image/fetch/$s_!de_Z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4b8ab6-9258-4e8c-81ce-a94ef118a774_1870x875.png 1272w, https://substackcdn.com/image/fetch/$s_!de_Z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4b8ab6-9258-4e8c-81ce-a94ef118a774_1870x875.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!de_Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4b8ab6-9258-4e8c-81ce-a94ef118a774_1870x875.png" width="1456" height="681" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cc4b8ab6-9258-4e8c-81ce-a94ef118a774_1870x875.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:681,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:302302,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.posthog.com/i/181737871?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4b8ab6-9258-4e8c-81ce-a94ef118a774_1870x875.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!de_Z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4b8ab6-9258-4e8c-81ce-a94ef118a774_1870x875.png 424w, https://substackcdn.com/image/fetch/$s_!de_Z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4b8ab6-9258-4e8c-81ce-a94ef118a774_1870x875.png 848w, https://substackcdn.com/image/fetch/$s_!de_Z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4b8ab6-9258-4e8c-81ce-a94ef118a774_1870x875.png 1272w, https://substackcdn.com/image/fetch/$s_!de_Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4b8ab6-9258-4e8c-81ce-a94ef118a774_1870x875.png 1456w" sizes="100vw" fetchpriority="high"></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 aria-hidden="true" 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><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">No explanation needed</figcaption></figure></div><h2>Underrated posts</h2><p>Although we&#8217;re proud of every post we published, not every one was a winner. Here are three that didn&#8217;t get the attention we thought they deserved:</p><ol><li><p><strong><a href="https://newsletter.posthog.com/p/the-deadline-doom-loop">The deadline doom loop</a></strong> &#8211; James&#8217; post against deadlines is still one we often reference internally and is basically the guide to how we do scheduling at PostHog (spoiler: we don&#8217;t).</p></li><li><p><strong><a href="https://newsletter.posthog.com/p/wtf-is-activation-and-why-should">WTF is activation and why should engineers care?</a></strong> &#8211; Activation is one of the product metrics we care the most about (and you should too). This post was a deep dive on how to do it.</p></li><li><p><strong><a href="https://newsletter.posthog.com/p/good-taste-makes-great-products">Good taste makes great products</a></strong> &#8211; As everyone&#8217;s worried about AI taking their jobs, one concept stood as a valiant guardian: taste. Danilo&#8217;s post on taste&#8217;s importance and how to build it provides a much-needed guide.</p></li></ol><h2>James&#8217; best tweet</h2><p>Name a more iconic duo: <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;James Hawkins&quot;,&quot;id&quot;:12011551,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F3917e6ab-7874-4b89-987b-4b0ced8cbe14_1400x1400.png&quot;,&quot;uuid&quot;:&quot;5f1e9e09-8f9a-45d8-924b-cdb286a5f9c3&quot;}" data-component-name="MentionToDOM"></span> and quick calls.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lC0g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48be638f-3a1e-4124-bb00-4887ec9ccabc_960x1136.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lC0g!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48be638f-3a1e-4124-bb00-4887ec9ccabc_960x1136.png 424w, https://substackcdn.com/image/fetch/$s_!lC0g!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48be638f-3a1e-4124-bb00-4887ec9ccabc_960x1136.png 848w, https://substackcdn.com/image/fetch/$s_!lC0g!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48be638f-3a1e-4124-bb00-4887ec9ccabc_960x1136.png 1272w, https://substackcdn.com/image/fetch/$s_!lC0g!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48be638f-3a1e-4124-bb00-4887ec9ccabc_960x1136.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lC0g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48be638f-3a1e-4124-bb00-4887ec9ccabc_960x1136.png" width="598" height="707.6333333333333" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/48be638f-3a1e-4124-bb00-4887ec9ccabc_960x1136.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1136,&quot;width&quot;:960,&quot;resizeWidth&quot;:598,&quot;bytes&quot;:1508828,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.posthog.com/i/181737871?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48be638f-3a1e-4124-bb00-4887ec9ccabc_960x1136.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!lC0g!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48be638f-3a1e-4124-bb00-4887ec9ccabc_960x1136.png 424w, https://substackcdn.com/image/fetch/$s_!lC0g!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48be638f-3a1e-4124-bb00-4887ec9ccabc_960x1136.png 848w, https://substackcdn.com/image/fetch/$s_!lC0g!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48be638f-3a1e-4124-bb00-4887ec9ccabc_960x1136.png 1272w, https://substackcdn.com/image/fetch/$s_!lC0g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48be638f-3a1e-4124-bb00-4887ec9ccabc_960x1136.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 aria-hidden="true" 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><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://x.com/james406/status/1963633425044189463">Give James another retweet, he needs it</a></figcaption></figure></div><h2>Our favorite posts</h2><p>Beyond being popular or unpopular, here were our favorite posts to work on:</p><ul><li><p><strong>Ian:</strong> <strong><a href="https://newsletter.posthog.com/p/what-engineers-get-wrong-about-communication">What engineers get wrong about communication</a></strong> &#8211; Communicating well is a mystical aspiration. I learned a lot about what that actually means (and how to make it happen) while writing this post. </p></li><li><p><strong>Andy:</strong> <strong><a href="https://newsletter.posthog.com/p/glue-teams-vs-back-office-teams">Glue teams vs back-office teams</a> </strong>&#8211;<strong> </strong>Michael is one of PostHog&#8217;s most talented and delightful engineers. His post is a great example of the writing culture of PostHog at its best, and a great exploration of a subtle but important dilemma that faces every company sooner or later.</p></li><li><p><strong>Charles:</strong> <strong><a href="https://newsletter.posthog.com/p/non-obvious-seo-advice-for-startups">Non-obvious SEO advice for startups</a></strong> &#8211; It&#8217;s marketing-y but I always appreciate Andy&#8217;s SEO wisdom.</p></li></ul><h2>What we learned about writing a newsletter</h2><ul><li><p>We had the goal of &#8220;going weekly&#8221; multiple times this year without realizing we were basically repeatedly running into the good/fast/cheap tradeoff as blocker. To ship the quality of newsletters we want to ship weekly, we simply need more people.</p></li><li><p>Newsletters provide a secondary benefit of crystallizing what our team has already figured out. There is a lot of internal knowledge that we are able to solidify into a clear insight and share because of the newsletter. </p></li><li><p>Unfortunately, Substack as a platform continues to develop in a way that&#8217;s misaligned with us. It focuses on creators with paid subscriptions, but this newsletter is free and always will be.</p></li><li><p>You can&#8217;t predict which newsletters are going to do well or poorly. In another universe, &#8220;The deadline doom loop&#8221; is our most popular newsletter of the year and &#8220;Collaboration sucks&#8221; is a dud.</p></li><li><p>No matter what you do, you&#8217;ll always be writing, editing, and tweaking up to the time you publish. Publishing consistently frees you from needing to make every post perfect.</p></li></ul><h2>Our founders IRL</h2><p>It may surprise you, but our founders don&#8217;t just live inside their computers. Here are their best talks from this year:</p><ul><li><p><strong><a href="https://www.youtube.com/watch?v=5WN8bfG06Hk">From Pivot Hell To $1.4 Billion Unicorn</a></strong> &#8211; A milestone for any founder: an interview on the YC Youtube channel.</p></li><li><p><strong><a href="https://www.heavybit.com/library/video/how-to-not-break-up-with-your-co-founder">How to Not Break Up With Your Co-Founder</a></strong> &#8211; Worth a click purely for the thumbnail. &#128170;</p></li><li><p><strong><a href="https://www.youtube.com/watch?v=4b3b0lkW7es">How to build a cult</a></strong> &#8211; James channeling his inner Adam Neumann or making salient points about startup branding. You&#8217;ll have to click to find out&#8230; </p></li></ul><h2>Our team&#8217;s favorite tools</h2><p>Here are some less well known tools our team loves:</p><ul><li><p><strong><a href="https://atuin.sh/">Atuin</a></strong> &#8211; The shell tool some &#8220;legitimately can&#8217;t live without&#8221;. It solved remembering CLI commands for them.</p></li><li><p><strong><a href="https://flox.dev/">Flox</a></strong> &#8211; Goodbye broken developer environments. We migrated this year and &#8220;it&#8217;s worked exceptionally well for avoiding weird one off config issues.&#8221;</p></li><li><p><strong><a href="https://0github.com/">0github</a></strong> &#8211; A heatmap diff viewer for code reviews. The starting point for code reviews to discover sections that deserve real attention.</p></li><li><p><strong><a href="https://orbstack.dev/">Orbstack</a></strong> &#8211; Basically our whole team has migrated over from Docker.</p></li><li><p><strong><a href="https://mergiraf.org/introduction.html">Mergiraf</a></strong> &#8211; &#8220;If you aren&#8217;t using mergiraf to solve Git merge conflicts, you are missing out.&#8221;</p></li></ul><h2>Top jobs of 2026</h2><p>Want to help us make 2026 even better? We&#8217;re hiring:</p><ul><li><p><strong><a href="https://posthog.com/careers/product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=best-of-2025">Product Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/technical-account-manager?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=best-of-2025">Technical Account Manager</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/product-manager-(ex-founder-or-ex-product-engineer)?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=best-of-2025">Product Manager (ex-founder or ex-product engineer)</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/ai-product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=best-of-2025">AI Product Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/clickhouse-operations-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=best-of-2025">ClickHouse Operations Engineer</a></strong></p></li></ul><p><em>Words in 2025 by Andy, Ian, Charles, Lior, James, Michael, and more who thank you for not completely summarizing everything we write with AI. Maybe next year&#8230;</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.posthog.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe for more Product for Engineers in 2026 and beyond</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p><em> </em></p><p></p>]]></content:encoded></item><item><title><![CDATA[Your product ideas probably suck (that's ok)]]></title><description><![CDATA[A simple guide to validating product ideas]]></description><link>https://newsletter.posthog.com/p/a-simple-guide-to-validating-product</link><guid isPermaLink="false">https://newsletter.posthog.com/p/a-simple-guide-to-validating-product</guid><dc:creator><![CDATA[Ian Vanagas]]></dc:creator><pubDate>Tue, 09 Dec 2025 18:04:37 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/7c4c7121-be8d-406b-aef1-b16c89a7be9a_1456x1048.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>You have an idea for a new product and you think it&#8217;s really, really good. You&#8217;re tempted to dive straight into building it. &#8220;People are going to LOVE this!&#8221;</p><p>This is a trap.</p><p>Many founders learn this the hard way by spending weeks, months (maybe even years?!) building something people don&#8217;t want because they never stopped to do something very simple from the outset.</p><p><strong>Validate their idea.</strong></p><p>We know a bit about this. PostHog&#8217;s co-founders, James and Tim, <a href="https://posthog.com/founders/story-about-pivots?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">pivoted five times</a> before settling on <a href="https://posthog.com?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">PostHog</a>. James admits &#8220;we had a lot of terrible ideas&#8221; and validation was there to tell them just how bad they were.</p><p>I wouldn&#8217;t be writing this newsletter without the success of the validation process they did back in the day, so I&#8217;m sharing their playbook here.</p><p>It has <strong>three simple steps</strong>, but you&#8217;re going to need something first&#8230;</p><h1>A list of problems to solve</h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4vX6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6271252-83c1-4db3-a48f-563a7aefaf43_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4vX6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6271252-83c1-4db3-a48f-563a7aefaf43_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4vX6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6271252-83c1-4db3-a48f-563a7aefaf43_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4vX6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6271252-83c1-4db3-a48f-563a7aefaf43_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4vX6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6271252-83c1-4db3-a48f-563a7aefaf43_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4vX6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6271252-83c1-4db3-a48f-563a7aefaf43_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d6271252-83c1-4db3-a48f-563a7aefaf43_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:&quot;Image&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!4vX6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6271252-83c1-4db3-a48f-563a7aefaf43_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4vX6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6271252-83c1-4db3-a48f-563a7aefaf43_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4vX6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6271252-83c1-4db3-a48f-563a7aefaf43_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4vX6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6271252-83c1-4db3-a48f-563a7aefaf43_1920x1080.jpeg 1456w" sizes="100vw" fetchpriority="high"></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 aria-hidden="true" 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><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>One idea is good; many are better.</p><p>Your ideas should be in the form of <strong>problems</strong>: jobs-to-be-done by your product for a specific customer.</p><p>Often, the specific customer is <strong>you</strong> and the problem is <strong>one you&#8217;ve had</strong>:</p><ul><li><p><a href="https://tearsheet.co/podcasts/there-were-all-these-other-great-services-but-banking-was-kind-of-static-mercurys-immad-akhund-on-banking-startups/?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">Mercury&#8217;s founder</a> &#8220;was just really frustrated&#8221; that, as an entrepreneur, &#8220;banking was this kind of static thing that I was forced to use and rely on.&#8221; </p></li><li><p><a href="https://www.backscoop.com/newsletter-posts/deel-the-founding-story-of-the-17b-company-that-makes-global-work-possible">Deel&#8217;s founders</a> had faced repeated problems hiring internationally in past startups, such as a lack of legal legitimacy and high costs.</p></li><li><p><a href="https://concept.vc/news/founder-stories-elevenlabs?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">ElevenLabs&#8217; founders</a> thought movies dubbed into their native Polish &#8220;were flat and monotonous&#8221; and thought they could do better using AI.</p></li></ul><p>James started with a <a href="https://posthog.com/founders/story-about-pivots?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">three-page Google Doc of ideas</a> based on problems he encountered in his career up until then. More were added as he worked through validating them with Tim.</p><p>Many of their ideas were bad and never got past the first step of validation &#8211; seriously guys, a &#8220;1:1 tool for managers with predictive analytics?&#8221;</p><p>Others got further before being invalidated. Only PostHog, AKA &#8220;open-source product analytics built for engineers,&#8221; made it to the end. Ironically, they landed on this idea through the process of validating their other ideas.</p><p>Every time they built something and tried to deploy analytics, they were frustrated by hard-to-implement tools not designed for builders. They literally stumbled on the right idea by failing multiple times.</p><p>So, once you have some problems like these to solve (or at least one), you&#8217;re ready for&#8230;</p><h1>Step 1: Validate your problem is real</h1><p>You do this by talking to potential users.</p><p>No one else is going to do this for you and not working hard enough is a common failure mode here.</p><p>James got at least two meetings a day, five days a week while doing other random tasks, like building a website. He was constantly asking for intros and doing cold outreach via his network.</p><p>Another risk is caring too much too soon. </p><p>You don&#8217;t need to care about audience, solution, or even that it&#8217;s unique yet. If people have a burning problem, these details sort themselves out.</p><h2>How to get meetings</h2><p>Many guides to validation focus on analysis, but anyone who&#8217;s actually done validation will tell you that <em>getting people to talk to you </em>is the hardest part:</p><ol><li><p><strong>Use your network. </strong>Find people who want to respond to you, such as friends, former teammates, followers, members of communities you&#8217;re a part of. </p></li><li><p><strong>Ask for intros. </strong>Sometimes the people you know can introduce you to other relevant people. Mercury&#8217;s founder, Immad Akhund, says &#8220;some of the most useful people were four intro chains down.&#8221;</p></li><li><p><strong>Be concise.</strong> Two to three sentences, not walls of text. Be clear you want feedback on your idea &#8211; say it&#8217;s an interview. Don&#8217;t try to sell to them yet.</p></li><li><p><strong>Be quick</strong>. Follow up fast. Startups <a href="https://posthog.com/founders/how-come-we-ship-so-much?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">win on speed</a>, be glued to your messages.</p></li><li><p><strong>Do interviews in-person (if possible).</strong> This helps you better understand their context and you can catch more non-verbal cues. Video calls are second best.</p></li></ol><h2>What to ask people</h2><ol><li><p><strong>Validate that they&#8217;ve actually had the problem.</strong> Focus on their situation and get specific. The clearer the problem, the simpler it&#8217;ll be for you to validate.</p></li><li><p><strong>Figure out how they have tried to solve it.</strong> What have they done and what are they doing now? If they have a crappy self-built system, there&#8217;s probably a good business in providing that thing for them.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p></li></ol><ol start="3"><li><p><strong>Get into the details.</strong> Go beyond &#8220;it&#8217;s hard.&#8221; Listen and get into the details. Open-ended questions can reveal why you&#8217;re close but <em>not quite</em> right.</p></li></ol><p>If it&#8217;s not a &#8220;hair on fire&#8221; problem for them, or they&#8217;re not excited to talk about it with you, it&#8217;s probably <a href="https://posthog.com/newsletter/pivot-your-startup?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">time to pivot</a> to a new problem.</p><p>If you can see people are desperate for a solution, and you&#8217;re excited to work on the problem, then you&#8217;re ready to move on to Step 2.</p><h2>Common failure modes</h2><ul><li><p><strong>Just asking people if they like your idea:</strong> Most people will just say &#8220;yes&#8221; or &#8220;it&#8217;s interesting&#8221; to get you to stop talking to them. This doesn&#8217;t equal validation. You need to know if they&#8217;ve encountered the problem and tried to solve it.</p></li><li><p><strong>Asking the wrong people:</strong> Sometimes the problem is right and the audience is wrong. Double check your assumptions here before pivoting to a new idea.</p></li><li><p><strong>Telling people what they need:</strong> If you are reading advice on how to validate your product, you probably don&#8217;t have a product or design sense to &#8220;just make it work&#8221; like Steve Jobs. Validation fills in for this.</p></li><li><p><strong>Doing big business validation:</strong> You don&#8217;t need to run focus groups,<a href="https://posthog.com/newsletter/product-management-is-broken?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide"> start product managing</a>, build a pitch deck, or spend weeks on competitor research. Validating your problem exists isn&#8217;t like writing an academic research paper.</p></li><li><p><strong>Going slow.</strong> James once said &#8220;the quicker you are, the worse you can be at product. If you are bad at product and slow, you are doomed.&#8221; Don&#8217;t worry about looking dumb because you are dead by default.</p></li></ul><h1>Step 2: Validate users want your solution</h1><p>This phase is similar to the first, but now you&#8217;re validating <strong>your solution </strong>to the problem, not whether it&#8217;s a real problem or not.</p><p>Having <a href="https://posthog.com/newsletter/how-to-not-breakup-with-your-cofounder?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">two co-founders</a> helps here. One can focus entirely on building, while the other does everything else necessary for validation.</p><p>In the early days of PostHog, Tim built it, James sold it. One of the first products they built leveraged James&#8217; experience as a salesperson. It was a complicated sales territory management tool to help reps move on from accounts that weren&#8217;t moving forward.</p><p>After 15 sales leaders said they would use it, they built it and sent them a link. Only one person clicked the link and they didn&#8217;t even log in. This was a clear sign this wasn&#8217;t what users wanted and it was time to build something else.</p><p>Beyond just building the wrong thing, there are two other big problems you can run into at this phase:</p><h2>Problem #1: Not explaining your solution clearly</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!toq4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36a4d961-b734-46d0-8e11-1ed394968281_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!toq4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36a4d961-b734-46d0-8e11-1ed394968281_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!toq4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36a4d961-b734-46d0-8e11-1ed394968281_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!toq4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36a4d961-b734-46d0-8e11-1ed394968281_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!toq4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36a4d961-b734-46d0-8e11-1ed394968281_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!toq4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36a4d961-b734-46d0-8e11-1ed394968281_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/36a4d961-b734-46d0-8e11-1ed394968281_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:&quot;Image&quot;,&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="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!toq4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36a4d961-b734-46d0-8e11-1ed394968281_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!toq4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36a4d961-b734-46d0-8e11-1ed394968281_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!toq4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36a4d961-b734-46d0-8e11-1ed394968281_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!toq4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36a4d961-b734-46d0-8e11-1ed394968281_1920x1080.jpeg 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 aria-hidden="true" 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><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>Articulating the problem is only half the battle. You need to articulate your solution, too. Square the circle and explain how your solution solves their problem.</p><p>If you do this well, you might not need to do anything else. Many startups have built huge waitlists before their product even launches, validating demand. </p><p>A classic example is Dropbox, whose <a href="https://www.alexanderjarvis.com/dropbox-doing-things-that-dont-scale/?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">viral demo video</a> led to thousands of signups before they built anything.</p><h2>Problem #2: You lack credibility</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xR0N!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45dff278-daea-483a-a293-47bb4556d148_1740x980.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xR0N!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45dff278-daea-483a-a293-47bb4556d148_1740x980.png 424w, https://substackcdn.com/image/fetch/$s_!xR0N!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45dff278-daea-483a-a293-47bb4556d148_1740x980.png 848w, https://substackcdn.com/image/fetch/$s_!xR0N!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45dff278-daea-483a-a293-47bb4556d148_1740x980.png 1272w, https://substackcdn.com/image/fetch/$s_!xR0N!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45dff278-daea-483a-a293-47bb4556d148_1740x980.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xR0N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45dff278-daea-483a-a293-47bb4556d148_1740x980.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/45dff278-daea-483a-a293-47bb4556d148_1740x980.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1135273,&quot;alt&quot;:&quot;&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://newsletter.posthog.com/i/180784015?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45dff278-daea-483a-a293-47bb4556d148_1740x980.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!xR0N!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45dff278-daea-483a-a293-47bb4556d148_1740x980.png 424w, https://substackcdn.com/image/fetch/$s_!xR0N!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45dff278-daea-483a-a293-47bb4556d148_1740x980.png 848w, https://substackcdn.com/image/fetch/$s_!xR0N!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45dff278-daea-483a-a293-47bb4556d148_1740x980.png 1272w, https://substackcdn.com/image/fetch/$s_!xR0N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45dff278-daea-483a-a293-47bb4556d148_1740x980.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 aria-hidden="true" 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><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&#8217;re still struggling to convince users of your solution, it may be because you don&#8217;t have enough &#8220;street cred.&#8221;</p><p>There is a reason every YC founder brags about their past startup and schooling successes. Even though they might not be successful yet, this gives them the credibility to convince others they can pull it off.</p><p>For PostHog, James and Tim thought of reasons why people wouldn&#8217;t want to use it:</p><ol><li><p><strong>Users might not believe there was a real company behind it.</strong> Publishing the <a href="https://posthog.com/handbook?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">handbook</a> gave the company some legitimacy. They took inspiration from GitLab.</p></li><li><p><strong>Users might not trust others with their data.</strong> Making PostHog <a href="https://posthog.com/newsletter/open-source-benefits?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">open source</a> and self-hostable was the solution to this.</p></li></ol><p>Airbnb hosts famously weren&#8217;t getting bookings because their photos sucked. Brian Chesky and Joe Gebbia flew to New York to <a href="https://www.mousencheese.design/post/the-30-photo-that-built-a-billion-dollar-brand-how-airbnb-s-ux-pivot-changed-everything?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">take better photos for them</a> (while doing more validation). </p><p>The <a href="https://review.firstround.com/goats-path-to-product-market-fit/?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">GOAT founders did something similar</a> with sneakers, buying some and taking photos on different types of flooring to make their stock look more robust.</p><p>A bit of polish in the right places goes a long way at the early stage.</p><h1>Step 3: Validate your solution works</h1><p>You do this by retaining users.</p><p>If you can retain users, you are repeatedly solving their problems. This is rare, valuable, and a sign you should start investing more into product development.</p><p>At an early stage, this doesn&#8217;t need to be complicated. You can follow this simple product improvement loop:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cpJL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174f6091-0161-403a-a323-075f4d0aa53d_1366x1264.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cpJL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174f6091-0161-403a-a323-075f4d0aa53d_1366x1264.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cpJL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174f6091-0161-403a-a323-075f4d0aa53d_1366x1264.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cpJL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174f6091-0161-403a-a323-075f4d0aa53d_1366x1264.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cpJL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174f6091-0161-403a-a323-075f4d0aa53d_1366x1264.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cpJL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174f6091-0161-403a-a323-075f4d0aa53d_1366x1264.jpeg" width="624" height="577.4055636896047" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/174f6091-0161-403a-a323-075f4d0aa53d_1366x1264.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1264,&quot;width&quot;:1366,&quot;resizeWidth&quot;:624,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:&quot;Image&quot;,&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="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!cpJL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174f6091-0161-403a-a323-075f4d0aa53d_1366x1264.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cpJL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174f6091-0161-403a-a323-075f4d0aa53d_1366x1264.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cpJL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174f6091-0161-403a-a323-075f4d0aa53d_1366x1264.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cpJL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174f6091-0161-403a-a323-075f4d0aa53d_1366x1264.jpeg 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 aria-hidden="true" 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><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>Closing the loop above is the way to cement your product-market fit because:</p><ol><li><p><strong>Your product improves fast.</strong> Weight user feedback very heavily compared to your instincts around what to build.</p></li><li><p><strong>It generates word of mouth growth.</strong> The one thing you can compete on is speed. You can outperform any competitors by providing an excellent experience to your early users so they tell their friends.</p></li><li><p><strong>Listening to users compounds.</strong> The more you listen to users and act on their feedback, the more useful feedback they&#8217;ll share with you.</p></li></ol><p>You should have deployed some analytics by now to track how people use your product, and you can create <a href="https://posthog.com/docs/product-analytics/retention?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">retention insights</a> (like the one below) to track this.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YtxF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa00c0266-1d1d-4f09-b86a-045c45a4127a_1910x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YtxF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa00c0266-1d1d-4f09-b86a-045c45a4127a_1910x900.png 424w, https://substackcdn.com/image/fetch/$s_!YtxF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa00c0266-1d1d-4f09-b86a-045c45a4127a_1910x900.png 848w, https://substackcdn.com/image/fetch/$s_!YtxF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa00c0266-1d1d-4f09-b86a-045c45a4127a_1910x900.png 1272w, https://substackcdn.com/image/fetch/$s_!YtxF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa00c0266-1d1d-4f09-b86a-045c45a4127a_1910x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YtxF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa00c0266-1d1d-4f09-b86a-045c45a4127a_1910x900.png" width="652" height="307.1923076923077" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a00c0266-1d1d-4f09-b86a-045c45a4127a_1910x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:686,&quot;width&quot;:1456,&quot;resizeWidth&quot;:652,&quot;bytes&quot;:105577,&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://newsletter.posthog.com/i/181125895?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa00c0266-1d1d-4f09-b86a-045c45a4127a_1910x900.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_!YtxF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa00c0266-1d1d-4f09-b86a-045c45a4127a_1910x900.png 424w, https://substackcdn.com/image/fetch/$s_!YtxF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa00c0266-1d1d-4f09-b86a-045c45a4127a_1910x900.png 848w, https://substackcdn.com/image/fetch/$s_!YtxF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa00c0266-1d1d-4f09-b86a-045c45a4127a_1910x900.png 1272w, https://substackcdn.com/image/fetch/$s_!YtxF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa00c0266-1d1d-4f09-b86a-045c45a4127a_1910x900.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 aria-hidden="true" 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><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>You&#8217;re looking for a retention curve that flattens out like the one above. Other useful signals include:</p><ol><li><p><strong>Qualitative feedback.</strong> <a href="https://posthog.com/newsletter/talk-to-users?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">Talk to users</a>. Run a <a href="https://posthog.com/templates/in-app-feedback-survey?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">feedback survey</a>. Ask the <a href="https://posthog.com/product-engineers/product-survey-questions#using-surveys-to-find-product-market-fit?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">PMF question</a> &#8594; &#8220;How would you feel if you could no longer use the product?&#8221;</p></li><li><p><strong>Session replays.</strong> Watching real users use your product shows which areas are most important and which ones they struggle with or are confused by.</p></li><li><p><strong>Activation.</strong> Before you can retain a user, they have to <a href="https://posthog.com/newsletter/wtf-is-activation?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">activate</a>. If they don&#8217;t, they can&#8217;t experience the value of your product. Get them to this point faster if you can, even <a href="http://paulgraham.com/ds.html#Manual">activate them yourself if you have to</a>.</p></li><li><p><strong>Revenue. </strong>As long as you&#8217;re not selling dollar bills for 50 cents, having people pay you (or desperately want to pay you) is clear evidence.</p></li></ol><p>If you&#8217;re getting conflicting feedback, you might have multiple user personas using your product. Defining your <a href="https://posthog.com/founders/creating-ideal-customer-profile?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">ideal customer profile</a> can help you figure out whose feedback to listen to.</p><h1>What&#8217;s after validation?</h1><p>If you can clear all three stages, congratulations: your idea is validated and you&#8217;re on your way to the promised land of product-market fit.</p><p>The next step is really to turn your validated idea into a successful startup (this makes it seem easy, doesn&#8217;t it?). Some of our other posts will be helpful now like:</p><ul><li><p><a href="https://posthog.com/founders/product-market-fit-game?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide#level-5---onboard-your-first-5-reference-paying-customers">The Product-Market Fit Game (Level 5)</a></p></li><li><p><a href="https://posthog.com/newsletter/50-product-learnings?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">50 things we&#8217;ve learned about building successful products</a></p></li><li><p><a href="https://posthog.com/founders/first-1000-users?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">How we got our first 1,000 users</a></p></li><li><p><a href="https://posthog.com/newsletter/talk-to-users?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">An engineer&#8217;s guide to talking to users</a></p></li><li><p><a href="https://posthog.com/newsletter/first-time-founders?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">How first-time founders fail</a></p></li></ul><p>But the reality is you never stop validating. You still need to:</p><ul><li><p>Validate the features and products on your roadmap</p></li><li><p>Talk to users and figure out their real problems</p></li><li><p>Get people to try what you&#8217;ve built</p></li><li><p>Activate and retain them</p></li><li><p>Iterate on feedback</p></li></ul><p>This can all be clouded by the success of the larger business, so you&#8217;ll probably need to work harder to find the real signal.</p><p>The nice part is that this gets easier when you have existing users. It&#8217;s easier to recruit them, they want to help you as it helps them. As <a href="https://x.com/ROWGHANI">Ali Rowghani</a> once said &#8220;As you get more users, you can start to see around corners.&#8221;</p><p>Validation is thought of as a skill of only the earliest of startups, but it shouldn&#8217;t be. It&#8217;s a fundamental one that is useful at all stages of a company&#8217;s journey. Even if you&#8217;re not a founder, getting better at validation (and practicing it) will create dividends.</p><p><em>Words by <a href="https://x.com/ianvanagas">Ian Vanagas</a>, who believes liking, subscribing, and sharing is a good enough validation signal for this newsletter.</em></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.posthog.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe and share to help me validate this newsletter</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2>&#129428; Jobs at PostHog</h2><p>Want to help us validate more products? We&#8217;re hiring <a href="https://posthog.com/careers/product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">product engineers</a> and more roles like:</p><ul><li><p><strong><a href="https://posthog.com/careers/software-engineer-language-design?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">Software Engineer &#8212; Language Design</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/technical-account-manager?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">Technical Account Manager</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/product-manager-(ex-founder-or-ex-product-engineer)?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">Product Manager (ex-founder or ex-product engineer)</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/ai-product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">AI Product Engineer</a></strong></p></li></ul><div><hr></div><h2>&#128217; More good reads</h2><ul><li><p><strong><a href="https://paulgraham.com/startupideas.html">How To Get Startup Ideas</a> &#8211; Paul Graham</strong></p></li><li><p><strong><a href="https://christinacacioppo.com/interviewing-users.html?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">(User) Interviewing Tips</a> &#8211; Christina Cacioppo</strong></p></li><li><p><strong><a href="https://posthog.com/blog/multi-modal-llm-user-behavior-analysis?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">How we built user behavior analysis with multi-modal LLMs (in 5 not-so-easy steps)</a> &#8211; Alex Lebedev</strong></p></li><li><p><strong><a href="https://posthog.com/blog/8-learnings-from-1-year-of-agents-posthog-ai?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=validation-guide">8 learnings from 1 year of agents</a> &#8211; Michael Matloka</strong></p></li></ul><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Credit to Y Combinator legend Dalton Caldwell for this insight. This was ultimately what helped solidify James and Tim&#8217;s decision to build PostHog.</p></div></div>]]></content:encoded></item><item><title><![CDATA[How startups lose their edge]]></title><description><![CDATA[A first hand account of how "playing not to lose" can accidentally kill your startup]]></description><link>https://newsletter.posthog.com/p/how-startups-lose-their-edge</link><guid isPermaLink="false">https://newsletter.posthog.com/p/how-startups-lose-their-edge</guid><dc:creator><![CDATA[PostHog]]></dc:creator><pubDate>Tue, 25 Nov 2025 18:07:16 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c76a92b4-d1a2-4163-89e2-f6d38d262f46_1456x1048.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p><em>The following was written by a member of the PostHog team about their time at a past startup. We&#8217;ve removed identifying details as it&#8217;s not meant to bash the company, but be a lesson.</em></p></blockquote><p>In American football, there&#8217;s a strategy called &#8220;prevent defense&#8221; that teams use when they&#8217;re leading late in the game. The logic is sound: give up small gains but prevent big plays, run out the clock, and protect your lead. It&#8217;s conservative, it&#8217;s textbook, but it <a href="https://youtu.be/t7XDAN_mox4?si=67zqIxwypGR7uORK&amp;t=11">often backfires</a>.</p><p>The problem isn&#8217;t the strategy itself. It&#8217;s that <strong>you stop doing the things that got you ahead in the first place</strong>. You&#8217;re no longer playing to win, you&#8217;re playing not to lose, and in sports, in startups, in anything competitive, that shift in mindset is how you hand the game to someone hungrier than you.</p><p>I know because <em>I saw this happen</em>. I was one of the first 30 employees at a now public tech company you&#8217;ve probably heard of. When I joined, it had something special: tight culture, developer-first mindset, and a product-led motion that got us to <strong>hundreds of millions of annual revenue before thinking about sales</strong>.</p><p>Importantly, the founding team kept an iron grip on <a href="https://posthog.com/newsletter/43-lessons-about-hiring-for-startups?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=not-lose">who got hired</a>, the bar was high, and everyone who made it through understood what it meant to be part of the culture. But you can&#8217;t scale to IPO with founders interviewing everyone. You have to let go.</p><p>Culture becomes a game of telephone. The message stays mostly the same, but with each repetition, it drifts just slightly. Over years, those slight drifts compound and alter the trajectory of the company into an outcome 5-10x lower than it could have been. </p><p>I don&#8217;t want this to happen to your startup, so here&#8217;s how to avoid it.</p><h2>When priorities shift</h2><p>The inflection point came when an IPO became a tangible reality. When there&#8217;s real life-changing money on the table for everyone involved, it becomes incredibly easy to make concessions. Suddenly &#8220;just this once&#8221; starts to sound reasonable.</p><ul><li><p>The person who&#8217;s 90% culture fit but has IPO experience? Sure.  </p></li><li><p>The strategy that&#8217;s proven but doesn&#8217;t quite align with our values? Let&#8217;s try it.  </p></li><li><p>An idea that&#8217;s <a href="https://posthog.com/blog/brand?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=not-lose">weird and fun, but a little out there</a>? Better not to risk it.</p></li></ul><p>Culture wasn&#8217;t the only thing that mattered anymore. Instead, we needed people who had &#8220;done this before,&#8221; experienced leaders who knew how to navigate public company requirements, quarterly earnings calls, and all the machinery that comes with being a real grown-up company.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3JYY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0211456e-4bd0-46a4-8d5e-f7d0e1731567_1134x1232.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3JYY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0211456e-4bd0-46a4-8d5e-f7d0e1731567_1134x1232.png 424w, https://substackcdn.com/image/fetch/$s_!3JYY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0211456e-4bd0-46a4-8d5e-f7d0e1731567_1134x1232.png 848w, https://substackcdn.com/image/fetch/$s_!3JYY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0211456e-4bd0-46a4-8d5e-f7d0e1731567_1134x1232.png 1272w, https://substackcdn.com/image/fetch/$s_!3JYY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0211456e-4bd0-46a4-8d5e-f7d0e1731567_1134x1232.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3JYY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0211456e-4bd0-46a4-8d5e-f7d0e1731567_1134x1232.png" width="466" height="506.2716049382716" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0211456e-4bd0-46a4-8d5e-f7d0e1731567_1134x1232.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1232,&quot;width&quot;:1134,&quot;resizeWidth&quot;:466,&quot;bytes&quot;:493043,&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://newsletter.posthog.com/i/179436201?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0211456e-4bd0-46a4-8d5e-f7d0e1731567_1134x1232.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_!3JYY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0211456e-4bd0-46a4-8d5e-f7d0e1731567_1134x1232.png 424w, https://substackcdn.com/image/fetch/$s_!3JYY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0211456e-4bd0-46a4-8d5e-f7d0e1731567_1134x1232.png 848w, https://substackcdn.com/image/fetch/$s_!3JYY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0211456e-4bd0-46a4-8d5e-f7d0e1731567_1134x1232.png 1272w, https://substackcdn.com/image/fetch/$s_!3JYY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0211456e-4bd0-46a4-8d5e-f7d0e1731567_1134x1232.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 aria-hidden="true" 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><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 biggest example of this was hiring an <a href="https://posthog.com/founders/startup-sales-strategy?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=not-lose">entire sales team</a> as a siloed function, separate from the product-led sales motion that got us to hundreds of millions in ARR (annual recurring revenue). We needed to grow faster, enterprise sales seemed like the obvious answer, and everyone does it eventually, right?</p><p>Prior to doing this, we had a technical team that was consultative-first, helped businesses leverage the products we built, and taught best practices. We were measured on net revenue retention and customer expansion.</p><p>That shifted. The technical folks took a back seat to the veteran enterprise sales people, who had no domain expertise or technical knowledge. We became a supporting function in service of sales. It sucked. I watched our existing team who got us so far relegated to supporting the traditional sales team.</p><p>I&#8217;m not against building out a sales team, the problem was how we did it. It was a completely separate motion divorced from what had actually worked, optimized for what public companies are supposed to do instead of what had made us successful. It was a cultural concession that completely changed the trajectory of the company.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!A5rh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83797804-3f2b-4249-ac39-56542cb5bde4_948x684.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!A5rh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83797804-3f2b-4249-ac39-56542cb5bde4_948x684.png 424w, https://substackcdn.com/image/fetch/$s_!A5rh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83797804-3f2b-4249-ac39-56542cb5bde4_948x684.png 848w, https://substackcdn.com/image/fetch/$s_!A5rh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83797804-3f2b-4249-ac39-56542cb5bde4_948x684.png 1272w, https://substackcdn.com/image/fetch/$s_!A5rh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83797804-3f2b-4249-ac39-56542cb5bde4_948x684.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!A5rh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83797804-3f2b-4249-ac39-56542cb5bde4_948x684.png" width="948" height="684" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/83797804-3f2b-4249-ac39-56542cb5bde4_948x684.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:684,&quot;width&quot;:948,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:572899,&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://newsletter.posthog.com/i/179436201?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83797804-3f2b-4249-ac39-56542cb5bde4_948x684.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_!A5rh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83797804-3f2b-4249-ac39-56542cb5bde4_948x684.png 424w, https://substackcdn.com/image/fetch/$s_!A5rh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83797804-3f2b-4249-ac39-56542cb5bde4_948x684.png 848w, https://substackcdn.com/image/fetch/$s_!A5rh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83797804-3f2b-4249-ac39-56542cb5bde4_948x684.png 1272w, https://substackcdn.com/image/fetch/$s_!A5rh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83797804-3f2b-4249-ac39-56542cb5bde4_948x684.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 aria-hidden="true" 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><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><h2>The culture dilution problem</h2><p>Although we were making a lot of cultural concessions, the company didn&#8217;t become a bad place to work. It kept doing <em>good</em> things up and through the IPO and beyond. The culture didn&#8217;t become toxic or negative. It just became <em><a href="https://posthog.com/blog/brand?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=not-lose">boring</a></em>. We stopped doing the wild, wacky, weird things that made us special in the first place.</p><p>Culture isn&#8217;t some abstract value statement printed on office walls (that&#8217;s gross and tacky). It&#8217;s every person, decision, priority, and judgment call about what matters. Dilution happens gradually and it&#8217;s almost invisible while it&#8217;s occurring.</p><ul><li><p>When you&#8217;re 20 people, founders set the tone directly through every interaction.  </p></li><li><p>When you&#8217;re 200, managers are making calls based on <a href="https://posthog.com/blog/ceo-diary-6">what they </a><em><a href="https://posthog.com/blog/ceo-diary-6?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=not-lose">think</a></em><a href="https://posthog.com/blog/ceo-diary-6?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=not-lose"> the founders would want</a>, filtered through their own experience and priorities.  </p></li><li><p>When you&#8217;re 2,000, you have <a href="https://posthog.com/newsletter/tech-lead-failure-modes?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=not-lose">managers managing managers</a>, and now you&#8217;re playing telephone across multiple layers where each person is adding their own interpretation of &#8220;what we value here.&#8221;</p></li></ul><p>It&#8217;s not that people are bad at their jobs or don&#8217;t care. It&#8217;s that culture is transmitted through observation and osmosis, not through <a href="https://posthog.com/newsletter/what-nobody-tells-devs-about-docs?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=not-lose">documentation</a>.</p><p>Across enough managers and interpretations, the culture becomes distorted. The edges get sanded down, the things that made you special start to feel risky or off-brand. Suddenly, you&#8217;re optimizing for what feels safe rather than what actually works.</p><h2>Playing not to lose</h2><p>There&#8217;s a scarcity mindset that creeps in <a href="https://posthog.com/newsletter/building-a-startup-that-scales?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=not-lose">as you scale</a>, often without anyone noticing it&#8217;s happening. You become afraid of:</p><ul><li><p>Losing your culture, market position, and momentum  </p></li><li><p>Making the wrong hire  </p></li><li><p>Taking a bet that doesn&#8217;t pay off  </p></li><li><p>Looking stupid to your board, investors, or the market</p></li></ul><p>So you get conservative in ways that feel responsible but are actually corrosive.</p><ul><li><p>You hire the &#8220;safe&#8221; candidate with the impressive resume instead of the weird brilliant one who might be special.  </p></li><li><p>You pursue the &#8220;proven&#8221; strategy that worked for other companies instead of the unproven thing that might work for you.  </p></li><li><p>You optimize for not-screwing-up instead of for winning, and the irony is that this is exactly how you screw up.</p></li></ul><p>I watched this happen to our process for building products. At the start, we would say &#8220;<a href="https://posthog.com/newsletter/this-is-why-youre-not-shipping?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=not-lose">we need to ship this feature</a>,&#8221; have <em>maybe</em> one conversation, and get it done.</p><p>This evolved into a process of pitches, presentations, and approvals:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!i51_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0431e795-9e8e-41ff-9dd8-f97acf975e84_1189x846.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!i51_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0431e795-9e8e-41ff-9dd8-f97acf975e84_1189x846.png 424w, https://substackcdn.com/image/fetch/$s_!i51_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0431e795-9e8e-41ff-9dd8-f97acf975e84_1189x846.png 848w, https://substackcdn.com/image/fetch/$s_!i51_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0431e795-9e8e-41ff-9dd8-f97acf975e84_1189x846.png 1272w, https://substackcdn.com/image/fetch/$s_!i51_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0431e795-9e8e-41ff-9dd8-f97acf975e84_1189x846.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!i51_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0431e795-9e8e-41ff-9dd8-f97acf975e84_1189x846.png" width="1189" height="846" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0431e795-9e8e-41ff-9dd8-f97acf975e84_1189x846.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:846,&quot;width&quot;:1189,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:97268,&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://newsletter.posthog.com/i/179436201?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0431e795-9e8e-41ff-9dd8-f97acf975e84_1189x846.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_!i51_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0431e795-9e8e-41ff-9dd8-f97acf975e84_1189x846.png 424w, https://substackcdn.com/image/fetch/$s_!i51_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0431e795-9e8e-41ff-9dd8-f97acf975e84_1189x846.png 848w, https://substackcdn.com/image/fetch/$s_!i51_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0431e795-9e8e-41ff-9dd8-f97acf975e84_1189x846.png 1272w, https://substackcdn.com/image/fetch/$s_!i51_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0431e795-9e8e-41ff-9dd8-f97acf975e84_1189x846.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 aria-hidden="true" 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><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>By the time you got to actually building something, the original insight that made the idea good had been committee&#8217;d into something safe and unremarkable.</p><p>The scarcity mindset is insidious because it masquerades as prudence, as grown-up decision-making, as the kind of thing serious companies with serious responsibilities should be doing. But it&#8217;s poison.</p><h2>How to avoid this fate</h2><p>The honest truth is I don&#8217;t have a perfect answer. Maybe it&#8217;s unsolvable as startups scale. Maybe every company that grows past a certain point loses some of what made it special.</p><p>But I think there are a few things that matter:</p><ul><li><p><strong>Keep taking big bets.</strong> The moment you stop doing things that could fail spectacularly is the moment you stop doing things that could succeed spectacularly. Keep betting on what got you there.  </p></li><li><p><strong>Resist the &#8220;experienced&#8221; hire.</strong> Of course, sometimes you need specific expertise. But the moment someone&#8217;s resume becomes more important than their culture fit, you&#8217;ve started conceding, and concessions compound. </p></li><li><p><strong>Question the conventional wisdom.</strong> Everyone said we needed a traditional sales team. Everyone was wrong, or at least, the way we did it was wrong. When advice sounds logical but contradicts what&#8217;s been working, be very suspicious.  </p></li><li><p><strong>Understand the trickle-down effect.</strong> Every hire you make will hire people who are slightly different from what you meant. Every layer of management adds interpretation. This is hard to solve, but promoting from within can help.</p></li><li><p><strong>Keep <a href="https://posthog.com/newsletter/small-teams?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=not-lose">teams small</a> and autonomous.</strong> With fewer management layers, more of the original DNA is preserved because there are fewer layers of interpretation between the founders and the people doing the work. You can &#8220;just do it&#8221; rather than running it up the chain.</p></li></ul><p>This means your startup is likely going to be messier and more chaotic. It&#8217;s not going to be &#8220;proper&#8221; or &#8220;grown up,&#8221; but you need to live with it to become exceptional.</p><h2>The real risk</h2><p>For companies with some success and a good culture, the biggest risk isn&#8217;t that they&#8217;ll become a bad company or fail outright, it&#8217;s that they become a <em>fine</em> company that could have been exceptional. They sand down their edges in pursuit of respectability and become indistinguishable from everyone else.</p><p>This company is still around and doing good work, but there was a window, a critical 18 to 24 month period, where different decisions could have changed the trajectory entirely. Staying aggressive could have meant 5-10x the outcome. We chose prevent defense and got a respectable result instead of an exceptional one.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dN8Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6257440a-100c-402d-a77e-997994e687ce_836x517.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dN8Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6257440a-100c-402d-a77e-997994e687ce_836x517.png 424w, https://substackcdn.com/image/fetch/$s_!dN8Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6257440a-100c-402d-a77e-997994e687ce_836x517.png 848w, https://substackcdn.com/image/fetch/$s_!dN8Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6257440a-100c-402d-a77e-997994e687ce_836x517.png 1272w, https://substackcdn.com/image/fetch/$s_!dN8Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6257440a-100c-402d-a77e-997994e687ce_836x517.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dN8Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6257440a-100c-402d-a77e-997994e687ce_836x517.png" width="836" height="517" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6257440a-100c-402d-a77e-997994e687ce_836x517.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:517,&quot;width&quot;:836,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:32958,&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://newsletter.posthog.com/i/179436201?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6257440a-100c-402d-a77e-997994e687ce_836x517.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_!dN8Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6257440a-100c-402d-a77e-997994e687ce_836x517.png 424w, https://substackcdn.com/image/fetch/$s_!dN8Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6257440a-100c-402d-a77e-997994e687ce_836x517.png 848w, https://substackcdn.com/image/fetch/$s_!dN8Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6257440a-100c-402d-a77e-997994e687ce_836x517.png 1272w, https://substackcdn.com/image/fetch/$s_!dN8Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6257440a-100c-402d-a77e-997994e687ce_836x517.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 aria-hidden="true" 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><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>For companies in this window, the question is whether they&#8217;ll recognize when they start playing prevent defense, notice when the &#8220;experienced hire&#8221; starts to matter more than the culture fit, and catch themselves optimizing for safety instead of for winning.</p><p>Because in the end, prevent defense doesn&#8217;t actually prevent anything other than winning.</p><p><em>Written by an anonymous member of the PostHog team, who is also probably one of the only people at PostHog who knows what &#8220;prevent defense&#8221; is.</em></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.posthog.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">We would be playing prevent defense if I didn&#8217;t ask you to SUBSCRIBE and SHARE&#8230;</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2>&#129428;&#128188; Hedgejobs </h2><p>Want to help us make that 10x outcome a reality (or just learn who wrote this piece)? We&#8217;re hiring <a href="https://posthog.com/careers/product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=not-lose">product engineers</a> and more roles like:</p><ul><li><p><strong><a href="https://posthog.com/careers/technical-account-manager">Technical Account Manager</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/backend-engineer-ingestion?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=not-lose">Backend Engineer &#8212; Ingestion (Europe)</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/ai-product-engineer?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=not-lose">AI Product Engineer</a></strong></p></li><li><p><strong><a href="https://posthog.com/careers/product-manager-(ex-founder-or-ex-product-engineer)?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=not-lose">Product Manager (ex-founder or ex-product engineer)</a></strong></p></li></ul><div><hr></div><h2><strong>&#128715;&#65039; More good reads</strong></h2><ul><li><p><strong><a href="https://posthog.com/blog/why-we-killed-our-ai-product-assistant?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=not-lose">Why we killed our AI product assistant</a></strong></p></li><li><p><strong><a href="https://blog.sshh.io/p/how-i-use-every-claude-code-feature?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=not-lose">How I Use Every Claude Code Feature</a></strong></p></li><li><p><strong><a href="https://kellblog.com/2025/11/08/how-to-navigate-the-pipeline-crisis?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=not-lose">How To Navigate the Pipeline Crisis</a></strong></p></li><li><p><strong><a href="https://dylanamartin.com/2025/11/24/widening-the-bottleneck.html?utm_source=posthog-newsletter&amp;utm_medium=post&amp;utm_campaign=not-lose">Racing towards Bethlehem</a></strong></p></li></ul>]]></content:encoded></item></channel></rss>