<script data-pm-proxy="intercept"></script><?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[Will Lowrey]]></title><description><![CDATA[I help people move from "I don't use AI" to "I can't believe what I just built." Career and exec coach working 1:1, in groups, and with companies embracing AI for their teams. Fail forward, have fun, keep imagining.]]></description><link>https://wlowrey.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!9Xtj!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1202a171-a6bf-4d20-9acb-6079d1146c4b_800x800.jpeg</url><title>Will Lowrey</title><link>https://wlowrey.substack.com</link></image><generator>Substack</generator><lastBuildDate>Thu, 03 Sep 2026 21:07:27 GMT</lastBuildDate><atom:link href="/__u/wlowrey.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Will Lowrey]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[wlowrey@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[wlowrey@substack.com]]></itunes:email><itunes:name><![CDATA[Will Lowrey]]></itunes:name></itunes:owner><itunes:author><![CDATA[Will Lowrey]]></itunes:author><googleplay:owner><![CDATA[wlowrey@substack.com]]></googleplay:owner><googleplay:email><![CDATA[wlowrey@substack.com]]></googleplay:email><googleplay:author><![CDATA[Will Lowrey]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Your team doesn't need another AI tool. It needs reps.]]></title><description><![CDATA[Why teams actually resist (it's not the tools), a two-week practice loop, and the common objections, handled.]]></description><link>https://wlowrey.substack.com/p/your-team-doesnt-need-another-ai</link><guid isPermaLink="false">https://wlowrey.substack.com/p/your-team-doesnt-need-another-ai</guid><dc:creator><![CDATA[Will Lowrey]]></dc:creator><pubDate>Tue, 28 Jul 2026 12:55:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!LOdC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c5710b-cb2a-4007-ae04-b459b81d170e_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I spend my weeks inside other companies&#8217; product and engineering orgs: coaching the leaders, running AI adoption programs for the teams. Three scenes from the last few weeks, three different companies.</p><p>A team with a deadline bearing down and a big chunk of the build left flinches at a late design change that threatens rework. The engineers aren&#8217;t being difficult. They&#8217;re tired of building things twice.</p><p>A product org where every PM has asked the director for clear priorities and gotten deflection back instead of an answer.</p><p>An enterprise where the layer above the program expects AI to deliver 10x velocity, full stop.</p><p>In every one of those rooms, the biggest friction has very little to do with the actual work. It has everything to do with attitude about the work: the team&#8217;s, and leadership&#8217;s.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!LOdC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c5710b-cb2a-4007-ae04-b459b81d170e_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!LOdC!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c5710b-cb2a-4007-ae04-b459b81d170e_1456x816.png 424w, /__u/substackcdn.com/image/fetch/$s_!LOdC!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c5710b-cb2a-4007-ae04-b459b81d170e_1456x816.png 848w, /__u/substackcdn.com/image/fetch/$s_!LOdC!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c5710b-cb2a-4007-ae04-b459b81d170e_1456x816.png 1272w, /__u/substackcdn.com/image/fetch/$s_!LOdC!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c5710b-cb2a-4007-ae04-b459b81d170e_1456x816.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!LOdC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c5710b-cb2a-4007-ae04-b459b81d170e_1456x816.png" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/15c5710b-cb2a-4007-ae04-b459b81d170e_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:63495,&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://wlowrey.substack.com/i/208824299?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c5710b-cb2a-4007-ae04-b459b81d170e_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!LOdC!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c5710b-cb2a-4007-ae04-b459b81d170e_1456x816.png 424w, /__u/substackcdn.com/image/fetch/$s_!LOdC!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c5710b-cb2a-4007-ae04-b459b81d170e_1456x816.png 848w, /__u/substackcdn.com/image/fetch/$s_!LOdC!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c5710b-cb2a-4007-ae04-b459b81d170e_1456x816.png 1272w, /__u/substackcdn.com/image/fetch/$s_!LOdC!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c5710b-cb2a-4007-ae04-b459b81d170e_1456x816.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><h2><strong>The thought experiment that reframes rework</strong></h2><p>Let&#8217;s start with the first team. Their instinct was to get it right the first time. So we walked that path out loud. What does &#8220;right the first time&#8221; actually cost?</p><p>You build mockups. Throwaway versions, plural (almost always, right?). You circulate them to stakeholders and wait for feedback. You adjust, circulate again, wait again. Two or three weeks of calendar time burn away, and all of those mockup cycles were rework. </p><p>This is all &#8216;WAIT-STATE&#8217;. It&#8217;s wasted&#8230;waiting for responses, alignment, agreement.</p><p>Here&#8217;s the thing, though, that gets me every time - nobody grieved the thrown-away prototypes. The habit is to throw-away non-engineering prototypes frequently (paper prototypes, mockups, etc). It&#8217;s because for a long time we had to guard the engineering time. But is that really the priority now? </p><p>OK - I got off track - so, let&#8217;s keep it going. We throw away the prototypes and the build the &#8220;final&#8221; version, ship it to real users, and guess what? The users change it anyway (or at least they want it changed!) <em><strong>You&#8217;ve eaten up three weeks trying to get to something perfect, which is really just V1.</strong></em></p><p>Here&#8217;s an alternative to consider: <s>engineers</s> builders (prod/eng/design combo) build a small, reversible version in a week and real users touch it. You&#8217;ll still change it afterward, and changing production code costs more than changing a mockup, which is exactly why the first rep stays small and away from the high-consequence surfaces. But when people start actually using the thing, you get to see truth instead of opinions. That first process was wait-heavy and at the pace of AI - we can&#8217;t afford to spend time waiting around forever.</p><p>The only way you get to something that doesn&#8217;t change is by not paying attention to your users (not recommended). Users will always dislike something about what you built. Doesn&#8217;t matter what you build. Rework isn&#8217;t a waste unless you frame it that way. Rework is the way things get built, improved, refined, and used!</p><h2><strong>Why teams actually resist</strong></h2><p>When I asked why that team resists redoing things, nobody complained about the talent, character, or work ethic of the team. These are good engineers, competent people, easy to work with. The answer, in the leader&#8217;s own rough words: we don&#8217;t have many reps doing it a different way.</p><p style="text-align: center;"><em><strong>It&#8217;s all new and change is hard.</strong></em> </p><p>The team wasn&#8217;t rejecting fast iteration on principle. They&#8217;d never lived a version of it. Their muscle memory was built when rework meant weeks of hand-rewriting, and nobody has updated the price tag since. Beliefs follow reps, and they had no reps.</p><p>The second and third rooms fail the same way for different reasons. Nobody runs a brave experiment in a fog: when a team can&#8217;t get a straight answer about priorities, every rep looks like a career risk. It gets worse when a senior leader tells people they should be scared for their jobs because of AI (yuck!). And at the enterprise, the VP spends real energy tempering the 10x expectation from above, because generating code was never the bottleneck. Product decision-making and the path to production are.</p><h2><strong>What the research actually says</strong></h2><p>The <a href="https://dora.dev/dora-report-2025/">2025 DORA report</a>, built on nearly 5,000 technology professionals, put it bluntly: AI is an amplifier. <em><strong>It magnifies the strengths of healthy teams and the dysfunctions of struggling ones.</strong></em> 90 percent of respondents use AI at work, 30 percent report little or no trust in AI-generated code, and adoption still correlates with worse delivery stability where the surrounding system is weak. DORA&#8217;s companion <a href="https://services.google.com/fh/files/misc/2025_dora_ai_capabilities_model.pdf">capabilities model</a> puts a clear and communicated AI stance first among the seven things that separate teams getting returns from teams getting chaos: ambiguity creates risk, and a written policy creates the safety to experiment. That&#8217;s the thing the deflecting director never gave his PMs.</p><p>The newest studies explain the skeptics. A <a href="https://arxiv.org/abs/2603.27249">March 2026 analysis</a> of over a thousand developer discussions found the defining complaint of AI-assisted development is the burden it shifts onto reviewers; one team described 30 AI-assisted pull requests a day landing on six reviewers. A <a href="https://arxiv.org/abs/2605.06464">May 2026 study</a> of 1,016 files across 100 popular repositories found that even when agents write the code, humans still made 83 percent of the maintenance commits on those files. Your skeptics aren&#8217;t Luddites. They&#8217;re doing verification and maintenance work nobody budgeted for, and they&#8217;ve priced it into their resistance.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!FaLE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ffffb5f-35b9-47bb-ad2b-97ff146b56dd_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!FaLE!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ffffb5f-35b9-47bb-ad2b-97ff146b56dd_1456x816.png 424w, /__u/substackcdn.com/image/fetch/$s_!FaLE!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ffffb5f-35b9-47bb-ad2b-97ff146b56dd_1456x816.png 848w, /__u/substackcdn.com/image/fetch/$s_!FaLE!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ffffb5f-35b9-47bb-ad2b-97ff146b56dd_1456x816.png 1272w, /__u/substackcdn.com/image/fetch/$s_!FaLE!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ffffb5f-35b9-47bb-ad2b-97ff146b56dd_1456x816.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!FaLE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ffffb5f-35b9-47bb-ad2b-97ff146b56dd_1456x816.png" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ffffb5f-35b9-47bb-ad2b-97ff146b56dd_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:85121,&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://wlowrey.substack.com/i/208824299?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ffffb5f-35b9-47bb-ad2b-97ff146b56dd_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!FaLE!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ffffb5f-35b9-47bb-ad2b-97ff146b56dd_1456x816.png 424w, /__u/substackcdn.com/image/fetch/$s_!FaLE!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ffffb5f-35b9-47bb-ad2b-97ff146b56dd_1456x816.png 848w, /__u/substackcdn.com/image/fetch/$s_!FaLE!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ffffb5f-35b9-47bb-ad2b-97ff146b56dd_1456x816.png 1272w, /__u/substackcdn.com/image/fetch/$s_!FaLE!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ffffb5f-35b9-47bb-ad2b-97ff146b56dd_1456x816.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><strong>How to practice it: the first two weeks</strong></h2><p>Culture change sounds like a year-long program. The version I run with teams fits in two weeks.</p><p><strong>Day 1</strong>: Write the stance. One page: what&#8217;s encouraged, what&#8217;s off limits, what&#8217;s still undecided. Something like: </p><ul><li><p><strong>Encouraged</strong></p><ul><li><p>AI drafts for tests</p></li><li><p>migrations</p></li><li><p>internal tools</p></li><li><p>Individual admin tasks (workflows)</p></li><li><p>Market research / Competitive research</p></li><li><p>Behavioral analytics, customer feedback synthesis, prospect synthesis </p></li></ul></li><li><p><strong>Ask First</strong></p><ul><li><p>anything touching billing or customer data</p></li></ul></li><li><p><strong>Undecided</strong></p><ul><li><p>agent-written PRs over 500 lines, revisit in six weeks. </p></li></ul></li></ul><p><strong>If you&#8217;re not the exec, write it for your team. A local stance beats no stance.</strong></p><p><strong>Days 1-2</strong>: Pick the rep. Small, reversible, visible, and real work. The teams in my enterprise programs bring the messy real thing into the room, never a made-up exercise, because I&#8217;ve never seen reps on toy problems transfer.</p><p><strong>Day 2</strong>: Pre-register the baseline. How long did the last three features this size take, wall-clock, from decision to production? Write the number down. Most orgs never have, and in the LeadDev survey of 883 engineering leaders, <a href="https://leaddev.com/wp-content/uploads/2025/08/THE-AI-IMPACT-REPORT-2025-download__LDMO__.pdf">60 percent said they have no metrics on AI&#8217;s impact at all</a>, the most-cited obstacle in the study.</p><p><strong>Days 3-7</strong>: Build small, and run every open question through a recommendation with a clock on it. &#8220;Here&#8217;s what we&#8217;re proposing as V1. Objections by Thursday noon, otherwise we build.&#8221; <em><strong>For reversible decisions, silence becomes consent instead of a veto</strong></em>. Anything you can&#8217;t walk back still gets real sign-off.</p><p><strong>Day 7</strong>: Ship, behind gates the engineers own. Every builder can run the same quality checks locally before submitting, and every catch feeds back into the checks so the same mistake gets caught automatically next time. Vigilance doesn&#8217;t scale. Gates do.</p><p>Week 2: Let real users touch it and watch what they do. Then hold a retro with three questions: </p><ol><li><p>What did the throwaway version teach us?</p></li><li><p>What did users do that nobody predicted?</p></li><li><p>What&#8217;s now caught automatically that used to need eyes? (how is our AI harness better?) </p></li></ol><p>State and clarify what you earned with the iteration. There is a cost to the rework  - name it out loud. &#8220;That version taught us the flow was wrong before we spent three more weeks on it&#8221; lands very differently than &#8220;we wasted a sprint.&#8221; </p><p>Now, do it again with something a bit bigger. </p><p>Pay attention to what you praise along the way. I hate lines of code as a measure of anything. It&#8217;s a non-metric. It&#8217;d be better if someone shipped one line and deleted 900. That would be awesome. Make sure you praise the things that matter (learnings, not perfection; progress, not just everyone feeling like they had a say; delivering real value to customers, quickly!)</p><p><strong>Don&#8217;t run the whole team through this at once.</strong> </p><p>Start with the one or two people who are already curious and let the room watch. Everett Rogers documented this in 1962: adoption spreads when peers can see a win happen nearby. It&#8217;s still the most ignored finding in the building.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!ogvn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4dab774-b1cc-439f-994a-bf320bd7ef4a_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!ogvn!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4dab774-b1cc-439f-994a-bf320bd7ef4a_1456x816.png 424w, /__u/substackcdn.com/image/fetch/$s_!ogvn!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4dab774-b1cc-439f-994a-bf320bd7ef4a_1456x816.png 848w, /__u/substackcdn.com/image/fetch/$s_!ogvn!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4dab774-b1cc-439f-994a-bf320bd7ef4a_1456x816.png 1272w, /__u/substackcdn.com/image/fetch/$s_!ogvn!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4dab774-b1cc-439f-994a-bf320bd7ef4a_1456x816.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!ogvn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4dab774-b1cc-439f-994a-bf320bd7ef4a_1456x816.png" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d4dab774-b1cc-439f-994a-bf320bd7ef4a_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:58276,&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://wlowrey.substack.com/i/208824299?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4dab774-b1cc-439f-994a-bf320bd7ef4a_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!ogvn!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4dab774-b1cc-439f-994a-bf320bd7ef4a_1456x816.png 424w, /__u/substackcdn.com/image/fetch/$s_!ogvn!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4dab774-b1cc-439f-994a-bf320bd7ef4a_1456x816.png 848w, /__u/substackcdn.com/image/fetch/$s_!ogvn!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4dab774-b1cc-439f-994a-bf320bd7ef4a_1456x816.png 1272w, /__u/substackcdn.com/image/fetch/$s_!ogvn!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4dab774-b1cc-439f-994a-bf320bd7ef4a_1456x816.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><strong>Common objections, handled</strong></h2><p>&#8220;Verifying AI output takes longer than just writing it myself.&#8221; Sometimes true, and the March 2026 forum study found review burden is the defining complaint of AI-assisted development right now. But <strong>verification cost drops every time a catch becomes a gate</strong>. If your team is re-finding the same class of mistake by eye every week, you&#8217;re missing a gate, and no model upgrade will fix that.</p><p>&#8220;Our codebase is fifteen years old. AI is useless in it.&#8221; Context starvation. The model defaults to generic assumptions because nobody gave it the local ones. Put instruction files in the gnarly subfolders: this section&#8217;s architecture, the weird library, the edge cases people learn by scar tissue. Better, have the model scan and document the legacy code first; that work pays for itself. The rest of this objection is usually that nobody wants to work in the old code anyway, which is worth saying out loud.</p><p>&#8220;Our senior engineers tried it and say it slows them down.&#8221; They might be right. METR found exactly that, on code seniors knew deeply, and the same study showed their self-perception pointing the wrong direction. The randomized trials showed the biggest gains going to juniors. So don&#8217;t settle this with anecdotes from either side. Read your baseline number. And keep your skeptical seniors close, because they&#8217;re the ones who&#8217;ll build gates that actually catch things.</p><p>&#8220;Isn&#8217;t shipping fast just shipping sloppy?&#8221; No. Sloppy is shipping three weeks of unexamined assumptions in one batch. Small batches behind gates is the safer path, and DORA&#8217;s stability finding indicts weak systems, not speed. All that waiting bought no safety.</p><p>&#8220;My team thinks this is a prelude to layoffs.&#8221; Then stop and deal with that first, in writing, in the stance. <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC8987955/">A study of physicians and medical students facing AI</a> found the fear changes shape with distance: when AI feels far away, people worry about their status; when it lands in their daily work, they worry about their autonomy. A status fear needs a story about what expertise means now. An autonomy fear needs engineers owning the gates and the calls. What neither needs is a leader using fear as fuel. That leader is going to be the death of your adoption program. Scared people don&#8217;t do reps. They hide.</p><h2><strong>Where this leaves you</strong></h2><p>The healthiest signal I&#8217;ve seen all month came from that same enterprise with the 10x pressure on it: the VP booked himself and his fellow leaders into the training seats, right next to their teams. The leader takes the first rep too.</p><p>What would your team&#8217;s first rep be, the one small feature you could ship next week? Reply and tell me. I read every one.</p>]]></content:encoded></item><item><title><![CDATA[I built a Slack bot to welcome my community (using Claude Code)]]></title><description><![CDATA[Free Slack gives you no onboarding, so I built one with Claude Code. WillBot greets every new member on my behalf, walks them to the channels that matter, and a small dashboard just told me something]]></description><link>https://wlowrey.substack.com/p/i-built-a-slack-bot-to-welcome-my</link><guid isPermaLink="false">https://wlowrey.substack.com/p/i-built-a-slack-bot-to-welcome-my</guid><dc:creator><![CDATA[Will Lowrey]]></dc:creator><pubDate>Fri, 19 Jun 2026 21:12:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Xwjv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59019e92-0b3e-48af-b668-441b87358468_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I run a small community on Slack called Coaching Corner, on the free plan. Free Slack has a quiet gap nobody warns you about. There is no welcome. Somebody joins, lands on a wall of channels they&#8217;ve never seen, and waits for a reason to stay. Most don&#8217;t find one. They lurk for a few days and drift, and you don&#8217;t even notice you lost them.</p><p>I kept meaning to greet people myself. I&#8217;d see the &#8220;so-and-so has joined&#8221; line, think I should say hi, and then a kid needs a snack or a call starts and the moment is gone. Do that math across every new member and the warmest part of running a community was the part I was worst at. So I stopped relying on myself and built a bot to do the thing I kept failing to do. I built it with Claude Code, and the first working version took an afternoon.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Xwjv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59019e92-0b3e-48af-b668-441b87358468_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Xwjv!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59019e92-0b3e-48af-b668-441b87358468_1672x941.png 424w, /__u/substackcdn.com/image/fetch/$s_!Xwjv!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59019e92-0b3e-48af-b668-441b87358468_1672x941.png 848w, /__u/substackcdn.com/image/fetch/$s_!Xwjv!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59019e92-0b3e-48af-b668-441b87358468_1672x941.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Xwjv!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59019e92-0b3e-48af-b668-441b87358468_1672x941.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Xwjv!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59019e92-0b3e-48af-b668-441b87358468_1672x941.png" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/59019e92-0b3e-48af-b668-441b87358468_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:1613363,&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://wlowrey.substack.com/i/202772232?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59019e92-0b3e-48af-b668-441b87358468_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!Xwjv!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59019e92-0b3e-48af-b668-441b87358468_1672x941.png 424w, /__u/substackcdn.com/image/fetch/$s_!Xwjv!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59019e92-0b3e-48af-b668-441b87358468_1672x941.png 848w, /__u/substackcdn.com/image/fetch/$s_!Xwjv!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59019e92-0b3e-48af-b668-441b87358468_1672x941.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Xwjv!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59019e92-0b3e-48af-b668-441b87358468_1672x941.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><h2><strong>What it does</strong></h2><p>When someone new joins, WillBot sends them a DM. Not one wall of text, a sequence. Five short notes over five days, one ask each, written in my voice but sent openly as WillBot. I wanted it clear that this is a bot greeting you on my behalf, not me pretending I personally DMed every single new member. Day zero says hi and points them at the introductions channel. The next few days walk them, one room at a time, to the channels that actually matter.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!6Rqr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec9cade8-eddf-49b7-8809-db799691a474_2222x810.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!6Rqr!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec9cade8-eddf-49b7-8809-db799691a474_2222x810.png 424w, /__u/substackcdn.com/image/fetch/$s_!6Rqr!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec9cade8-eddf-49b7-8809-db799691a474_2222x810.png 848w, /__u/substackcdn.com/image/fetch/$s_!6Rqr!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec9cade8-eddf-49b7-8809-db799691a474_2222x810.png 1272w, /__u/substackcdn.com/image/fetch/$s_!6Rqr!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec9cade8-eddf-49b7-8809-db799691a474_2222x810.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!6Rqr!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec9cade8-eddf-49b7-8809-db799691a474_2222x810.png" width="1200" height="437.4437443744375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ec9cade8-eddf-49b7-8809-db799691a474_2222x810.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:810,&quot;width&quot;:2222,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:174601,&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://wlowrey.substack.com/i/202772232?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F551d8fc3-6417-4c86-b1bc-2fbda3bcdeea_2680x1200.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!6Rqr!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec9cade8-eddf-49b7-8809-db799691a474_2222x810.png 424w, /__u/substackcdn.com/image/fetch/$s_!6Rqr!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec9cade8-eddf-49b7-8809-db799691a474_2222x810.png 848w, /__u/substackcdn.com/image/fetch/$s_!6Rqr!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec9cade8-eddf-49b7-8809-db799691a474_2222x810.png 1272w, /__u/substackcdn.com/image/fetch/$s_!6Rqr!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec9cade8-eddf-49b7-8809-db799691a474_2222x810.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><p>The first message goes out on the next sweep, so within about half an hour of someone joining. The other four I don&#8217;t send myself at all. I hand them to Slack to deliver later, on set days, around mid-morning so nobody gets a 2 a.m. ping from me. That hand-off does more than it looks like it does. Slack holds the scheduled messages on its own servers and fires them on time whether my laptop is open, asleep, or in a bag at one of my kids&#8217; soccer games. I&#8217;m not the thing that has to be running. Slack is.</p><h2><strong>The one decision the whole thing rests on</strong></h2><p>The obvious way to do &#8220;react when someone joins&#8221; is a live listener: Slack pings your code the instant a person walks in. It demos beautifully. It was wrong for me, and the reason is dumb and physical. I don&#8217;t run a server. I run a laptop, and laptops sleep. A live listener only hears what happens while it&#8217;s awake, so anyone who joins overnight gets heard by nobody and welcomed by nobody, and you never see the miss. That&#8217;s the kind of bug I hate most, the silent one.</p><p>So I went the unglamorous way. Every half hour the bot wakes up, asks Slack for the full member list, compares it against the people it already knows, and greets whoever is new. If my machine was shut all morning, the next run just sweeps up everyone who showed up in the gap.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!6mTo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa81982aa-1f0e-4e82-a4ce-55a98e27725d_2401x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!6mTo!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa81982aa-1f0e-4e82-a4ce-55a98e27725d_2401x1000.png 424w, /__u/substackcdn.com/image/fetch/$s_!6mTo!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa81982aa-1f0e-4e82-a4ce-55a98e27725d_2401x1000.png 848w, /__u/substackcdn.com/image/fetch/$s_!6mTo!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa81982aa-1f0e-4e82-a4ce-55a98e27725d_2401x1000.png 1272w, /__u/substackcdn.com/image/fetch/$s_!6mTo!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa81982aa-1f0e-4e82-a4ce-55a98e27725d_2401x1000.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!6mTo!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa81982aa-1f0e-4e82-a4ce-55a98e27725d_2401x1000.png" width="1200" height="499.7917534360683" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a81982aa-1f0e-4e82-a4ce-55a98e27725d_2401x1000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:1000,&quot;width&quot;:2401,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:212807,&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://wlowrey.substack.com/i/202772232?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62881872-6bc4-4b25-8456-47be27948568_2680x1800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!6mTo!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa81982aa-1f0e-4e82-a4ce-55a98e27725d_2401x1000.png 424w, /__u/substackcdn.com/image/fetch/$s_!6mTo!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa81982aa-1f0e-4e82-a4ce-55a98e27725d_2401x1000.png 848w, /__u/substackcdn.com/image/fetch/$s_!6mTo!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa81982aa-1f0e-4e82-a4ce-55a98e27725d_2401x1000.png 1272w, /__u/substackcdn.com/image/fetch/$s_!6mTo!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa81982aa-1f0e-4e82-a4ce-55a98e27725d_2401x1000.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>I&#8217;ll take boring and certain over clever and fragile every time the job is to look after people I&#8217;ll never see arrive.</p><h2><strong>The rule I was careful about</strong></h2><p>State lives in a tiny database on my machine: who&#8217;s been welcomed, and when. One rule sits under it that I actually stopped to think about. Never greet the same person twice.</p><p>So the bot writes someone down as welcomed the instant the first message sends, before it does anything else. If the run falls over a second later, the greeting can&#8217;t fire again. I picked that order on purpose. Getting welcomed twice makes a warm little bot feel like a broken one, and that&#8217;s the impression I can&#8217;t take back. A follow-up that goes missing I can recover. When the two failures aren&#8217;t the same size, you build away from the one that embarrasses you.</p><h2><strong>What keeps it from spamming the whole room</strong></h2><p>Two more guardrails, both about not blasting everyone by accident.</p><p>The first run is silent. The very first time the bot looks at the workspace, it messages nobody. It quietly writes down everyone already there as handled, and stops. So turning it on can&#8217;t carpet-bomb the people who were already inside. Only people who join after that get the sequence. Flipping the switch is a non-event, which is what you want a switch to be.</p><p>The existing members did get one thing, on purpose. When I launched, I sent the fifty-nine people already in the room a single announcement, told them what the bot was and what it would start doing, then logged them so the five-day drip skips them. One deliberate hello, not a surprise five-day sequence for people who&#8217;d been there for months.</p><h2><strong>The part I built this week</strong></h2><p>The bot above has been running fine. What I added this week is the half that answers a harder question than &#8220;did I send the message.&#8221; It answers &#8220;did the message do anything.&#8221;</p><p>Three pieces. I pulled the whole sequence, every message and channel and delay, into one file, so adding a step is a one-line change instead of surgery. I wrote a second sweep that reads who&#8217;s actually in each channel. And I built a small local dashboard to look at all of it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!jDu4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b8def5-b730-4cd6-a7bf-5f3b2ece7c19_2480x2000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!jDu4!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b8def5-b730-4cd6-a7bf-5f3b2ece7c19_2480x2000.png 424w, /__u/substackcdn.com/image/fetch/$s_!jDu4!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b8def5-b730-4cd6-a7bf-5f3b2ece7c19_2480x2000.png 848w, /__u/substackcdn.com/image/fetch/$s_!jDu4!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b8def5-b730-4cd6-a7bf-5f3b2ece7c19_2480x2000.png 1272w, /__u/substackcdn.com/image/fetch/$s_!jDu4!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b8def5-b730-4cd6-a7bf-5f3b2ece7c19_2480x2000.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!jDu4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b8def5-b730-4cd6-a7bf-5f3b2ece7c19_2480x2000.png" width="1456" height="1174" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c9b8def5-b730-4cd6-a7bf-5f3b2ece7c19_2480x2000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1174,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:472378,&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://wlowrey.substack.com/i/202772232?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b8def5-b730-4cd6-a7bf-5f3b2ece7c19_2480x2000.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!jDu4!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b8def5-b730-4cd6-a7bf-5f3b2ece7c19_2480x2000.png 424w, /__u/substackcdn.com/image/fetch/$s_!jDu4!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b8def5-b730-4cd6-a7bf-5f3b2ece7c19_2480x2000.png 848w, /__u/substackcdn.com/image/fetch/$s_!jDu4!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b8def5-b730-4cd6-a7bf-5f3b2ece7c19_2480x2000.png 1272w, /__u/substackcdn.com/image/fetch/$s_!jDu4!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b8def5-b730-4cd6-a7bf-5f3b2ece7c19_2480x2000.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 dashboard shows where each member sits in the sequence, how many people the welcome moved into each channel, and the messages themselves so I can read exactly what&#8217;s going out. It has a privacy toggle that swaps every name for &#8220;Member 01,&#8221; which is how I can show it to you without showing you my members.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!zve9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9256ab6-9216-41ff-9df9-b0f674b033ea_2480x2667.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!zve9!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9256ab6-9216-41ff-9df9-b0f674b033ea_2480x2667.png 424w, /__u/substackcdn.com/image/fetch/$s_!zve9!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9256ab6-9216-41ff-9df9-b0f674b033ea_2480x2667.png 848w, /__u/substackcdn.com/image/fetch/$s_!zve9!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9256ab6-9216-41ff-9df9-b0f674b033ea_2480x2667.png 1272w, /__u/substackcdn.com/image/fetch/$s_!zve9!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9256ab6-9216-41ff-9df9-b0f674b033ea_2480x2667.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!zve9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9256ab6-9216-41ff-9df9-b0f674b033ea_2480x2667.png" width="2480" height="2667" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a9256ab6-9216-41ff-9df9-b0f674b033ea_2480x2667.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2667,&quot;width&quot;:2480,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:843651,&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://wlowrey.substack.com/i/202772232?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F696f5c64-77af-4e9b-a599-a727ea23e23b_2480x3120.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!zve9!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9256ab6-9216-41ff-9df9-b0f674b033ea_2480x2667.png 424w, /__u/substackcdn.com/image/fetch/$s_!zve9!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9256ab6-9216-41ff-9df9-b0f674b033ea_2480x2667.png 848w, /__u/substackcdn.com/image/fetch/$s_!zve9!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9256ab6-9216-41ff-9df9-b0f674b033ea_2480x2667.png 1272w, /__u/substackcdn.com/image/fetch/$s_!zve9!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9256ab6-9216-41ff-9df9-b0f674b033ea_2480x2667.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><strong>The thing it told me</strong></h2><p>The whole reason for the dashboard is one question: did the welcome actually work. Getting a real answer took one more Slack permission I&#8217;d forgotten to grant. Until I added it, the channel sweep just logged &#8220;skipped: missing permission&#8221; on every channel and carried on, which is the failure mode I&#8217;d want, one locked door that gets noted instead of crashing the run.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!3GNO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F003fa4a4-9a4c-47c0-a2ee-887a120e3a71_2271x864.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!3GNO!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F003fa4a4-9a4c-47c0-a2ee-887a120e3a71_2271x864.png 424w, /__u/substackcdn.com/image/fetch/$s_!3GNO!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F003fa4a4-9a4c-47c0-a2ee-887a120e3a71_2271x864.png 848w, /__u/substackcdn.com/image/fetch/$s_!3GNO!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F003fa4a4-9a4c-47c0-a2ee-887a120e3a71_2271x864.png 1272w, /__u/substackcdn.com/image/fetch/$s_!3GNO!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F003fa4a4-9a4c-47c0-a2ee-887a120e3a71_2271x864.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!3GNO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F003fa4a4-9a4c-47c0-a2ee-887a120e3a71_2271x864.png" width="2271" height="864" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/003fa4a4-9a4c-47c0-a2ee-887a120e3a71_2271x864.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:864,&quot;width&quot;:2271,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:202654,&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://wlowrey.substack.com/i/202772232?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47588c2d-135e-44c5-8636-b3d8ad77bcdc_2680x1280.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!3GNO!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F003fa4a4-9a4c-47c0-a2ee-887a120e3a71_2271x864.png 424w, /__u/substackcdn.com/image/fetch/$s_!3GNO!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F003fa4a4-9a4c-47c0-a2ee-887a120e3a71_2271x864.png 848w, /__u/substackcdn.com/image/fetch/$s_!3GNO!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F003fa4a4-9a4c-47c0-a2ee-887a120e3a71_2271x864.png 1272w, /__u/substackcdn.com/image/fetch/$s_!3GNO!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F003fa4a4-9a4c-47c0-a2ee-887a120e3a71_2271x864.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>Once I added the permission and ran it for real, the first numbers were more useful, a little humbling.</p><p>The headline stat said 100% of welcomed members were in a channel, which reads like a win until you notice the main room is one everyone is automatically added to. So that 100% measures &#8220;got auto-added,&#8221; not &#8220;the welcome worked.&#8221; The real signal was in the rooms that people had to choose. Introductions converted well. The rest, the LinkedIn channel, the events channel, and the showcase, converted low. Single digits in a couple of cases. The welcome gets people in the door and says hello. It is not yet getting them to do the thing once they&#8217;re inside. That isn&#8217;t the answer I wanted, but it&#8217;s better to know than to assume, and now I can actually do something about it.</p><h2><strong>The stack, if you want to build your own</strong></h2><ul><li><p>The Slack Web API for everything the bot does. No SDK, just plain HTTP calls.</p></li><li><p>Bun for the runtime and its built-in SQLite for storage. The whole thing has zero outside dependencies.</p></li><li><p>macOS launchd is the half-hourly alarm clock that wakes the sweep.</p></li><li><p>Claude Code, who wrote nearly all of it, while I made the decisions.</p></li></ul><h2><strong>What&#8217;s next</strong></h2><p>Now that the numbers are real, the bot has to earn its sequence. Five messages, those channels, that order, all of it was my best guess on day one. Now that I can see which rooms people actually walk into, the dashboard stops being a nice picture and starts being an argument. This nudge lands. This one loses people. Move it or cut it.</p><p>The real reason I built this is the one I opened with. I can&#8217;t personally catch every person the day they show up. I&#8217;ve tried, and four kids and a business win that fight every time. WillBot can, in my voice but openly a bot, and it turns out it doesn&#8217;t have to be me to be worth something. It greets every new person on day one, every time, and then it tells me whether the welcome I wrote does anything at all. That&#8217;s the trade I&#8217;ll take. Not a warmer me. A more reliable one.</p><p>If you build something near this, or you&#8217;d have made one of these calls differently, hit reply and tell me. I read them all.</p>]]></content:encoded></item><item><title><![CDATA[How I augmented my 2nd brain with YouTube content - but only after it's argued the ideas.]]></title><description><![CDATA[The full build, with the decisions and the reasons. A downloader, a transcription model on my laptop, Claude for the judgment calls, a vector database, and a three-stage belief lifecycle.]]></description><link>https://wlowrey.substack.com/p/how-i-augmented-my-2nd-brain-with</link><guid isPermaLink="false">https://wlowrey.substack.com/p/how-i-augmented-my-2nd-brain-with</guid><dc:creator><![CDATA[Will Lowrey]]></dc:creator><pubDate>Tue, 09 Jun 2026 13:06:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9wcr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2019561-24ed-4e49-b8d2-a7a6aa80eaff_941x1672.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I learn a lot from YouTube and I promptly forget the details&#8230;unfortunately. A good founder interview, a conference talk, the one solid deep dive with a great quote that I tell others but then the details are lost to me. I watch, I nod, I tell myself I&#8217;ll come back to the bit at 32 minutes that got me thinking. Then the tab closes and it&#8217;s gone - and I hate searching through the history to see all the other videos I wasted my time on. A week later I can tell you the video was good. I can&#8217;t tell you what it said.</p><p>So over the last few days I built a pipeline to fix that. This is the whole build: what each piece does, what broke, and where your version should differ from mine. If you just want to build your own, the stack and the links are at the bottom.</p><p>The first half runs today. The second half, the belief library, is running, but still newish, with just a few example ideas.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!9wcr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2019561-24ed-4e49-b8d2-a7a6aa80eaff_941x1672.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!9wcr!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2019561-24ed-4e49-b8d2-a7a6aa80eaff_941x1672.png 424w, /__u/substackcdn.com/image/fetch/$s_!9wcr!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2019561-24ed-4e49-b8d2-a7a6aa80eaff_941x1672.png 848w, /__u/substackcdn.com/image/fetch/$s_!9wcr!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2019561-24ed-4e49-b8d2-a7a6aa80eaff_941x1672.png 1272w, /__u/substackcdn.com/image/fetch/$s_!9wcr!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2019561-24ed-4e49-b8d2-a7a6aa80eaff_941x1672.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!9wcr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2019561-24ed-4e49-b8d2-a7a6aa80eaff_941x1672.png" width="941" height="1672" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f2019561-24ed-4e49-b8d2-a7a6aa80eaff_941x1672.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1672,&quot;width&quot;:941,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2025063,&quot;alt&quot;:&quot;ChatGPT Image 2.0 Infographic - From YouTube to Living Knowledge Flow&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://wlowrey.substack.com/i/201285925?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2019561-24ed-4e49-b8d2-a7a6aa80eaff_941x1672.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="ChatGPT Image 2.0 Infographic - From YouTube to Living Knowledge Flow" title="ChatGPT Image 2.0 Infographic - From YouTube to Living Knowledge Flow" srcset="/__u/substackcdn.com/image/fetch/$s_!9wcr!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2019561-24ed-4e49-b8d2-a7a6aa80eaff_941x1672.png 424w, /__u/substackcdn.com/image/fetch/$s_!9wcr!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2019561-24ed-4e49-b8d2-a7a6aa80eaff_941x1672.png 848w, /__u/substackcdn.com/image/fetch/$s_!9wcr!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2019561-24ed-4e49-b8d2-a7a6aa80eaff_941x1672.png 1272w, /__u/substackcdn.com/image/fetch/$s_!9wcr!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2019561-24ed-4e49-b8d2-a7a6aa80eaff_941x1672.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><h2>The eight steps</h2><ul><li><p>Drop in a link</p></li><li><p>Transcribe it privately, on device, with timestamps</p></li><li><p>Find the insights and the things worth doing</p></li><li><p>Build the summary with embedded clips</p></li><li><p>File each viewpoint into the second brain</p></li><li><p>Let ideas earn their status</p></li><li><p>Stress test before trusting</p></li><li><p>Let it compound overnight</p></li></ul><p>Steps one through four are the pipeline. Five through eight are the brain, and they&#8217;re the reason I bothered instead of using one of the dozen &#8220;summarize a YouTube video&#8221; tools that already exist.</p><h2>The pipeline half</h2><p><strong>The download.</strong> I use <a href="https://github.com/yt-dlp/yt-dlp">yt-dlp</a>. One call grabs the audio plus the title, duration, chapters, and the channel. </p><p><strong>Transcription, on my laptop.</strong> The easy path is a cloud API, two lines of code, done. I went the other way and run NVIDIA&#8217;s Parakeet model locally on my Mac through Apple&#8217;s MLX framework. On my M4 a 56 minute video transcribes in a few minutes. Three reasons:</p><ul><li><p>Privacy. Nothing leaves the machine. For my own learning that&#8217;s a nice-to-have. For a company feeding in internal calls or anything under an NDA, it&#8217;s the whole game.</p></li><li><p>Cost. I run it dozens of times without watching a meter. Tools you&#8217;re afraid to run are tools you don&#8217;t run.</p></li><li><p>Timestamps. This helps a ton. I need a precise timestamp on every sentence, because that&#8217;s what makes the clips work later. The local model hands me sentence and word-level timing for free.</p></li></ul><p><strong>Where the machine stops and judgment starts.</strong> This is the decision the whole thing rests on. I split every task into two kinds:</p><ul><li><p>Deterministic work: download, extract audio, transcribe, format, and render the page. Plain scripts. Fast, free, predictable.</p></li><li><p>Judgment work: read the messy transcript and decide what matters, which moments deserve a clip, how to say the takeaway.</p></li></ul><p>Only the judgment goes to Claude. Everything around it is boring plumbing, on purpose. I don&#8217;t want a language model formatting files or naming git branches. I want it doing the one thing it&#8217;s actually better at than a script, and I want everything on both sides of it to be dead predictable. When a run looks off, I know which half to go poke.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!K4ef!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd893a598-7b66-4ddb-8c29-85ab0a4d4812_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!K4ef!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd893a598-7b66-4ddb-8c29-85ab0a4d4812_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!K4ef!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd893a598-7b66-4ddb-8c29-85ab0a4d4812_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!K4ef!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd893a598-7b66-4ddb-8c29-85ab0a4d4812_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!K4ef!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd893a598-7b66-4ddb-8c29-85ab0a4d4812_1536x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!K4ef!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd893a598-7b66-4ddb-8c29-85ab0a4d4812_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d893a598-7b66-4ddb-8c29-85ab0a4d4812_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1475514,&quot;alt&quot;:&quot;simple diagram. Two boxes side by side, &#8220;Deterministic (scripts)&#8221; and &#8220;Judgment (Claude)&#8221;, with the steps sorted under each. Small and clean.&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://wlowrey.substack.com/i/201285925?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd893a598-7b66-4ddb-8c29-85ab0a4d4812_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="simple diagram. Two boxes side by side, &#8220;Deterministic (scripts)&#8221; and &#8220;Judgment (Claude)&#8221;, with the steps sorted under each. Small and clean." title="simple diagram. Two boxes side by side, &#8220;Deterministic (scripts)&#8221; and &#8220;Judgment (Claude)&#8221;, with the steps sorted under each. Small and clean." srcset="/__u/substackcdn.com/image/fetch/$s_!K4ef!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd893a598-7b66-4ddb-8c29-85ab0a4d4812_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!K4ef!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd893a598-7b66-4ddb-8c29-85ab0a4d4812_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!K4ef!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd893a598-7b66-4ddb-8c29-85ab0a4d4812_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!K4ef!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd893a598-7b66-4ddb-8c29-85ab0a4d4812_1536x1024.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 summary, and the part I almost shipped without</h2><p>A separate, deliberately dumb renderer turns the analysis into a self-contained page: takeaways up top, then the best moments as clips that start on the right second and stop on their own. The model decides what to say. The renderer decides how it looks. So every page comes out consistent, and the day I want them all to look better, I edit one file.</p><p>Here&#8217;s the part I didn&#8217;t plan. I call this the Cliff Notes version of the video. The first version gave me a clean summary, and it works for that purpose - quick summaries of key insights (easy to improve this with prompt and context engineering). </p><p>The thing that was missing for me is that I wanted actionable insights. It told me what the video said. It didn&#8217;t tell me what to do about it. So I added a second section: actionable takeaways. Not &#8220;this video argues that planning matters,&#8221; but &#8220;write your spec as a measurable goal before you let the agent run, because that&#8217;s what lets it self-correct for longer instead of stopping every two minutes to ask what&#8217;s next.&#8221; The first kind you forget by lunch. The second kind you can try this afternoon. I almost shipped without it. I&#8217;m thinking of turning it into a checklist as well - so that I could track adoption of the ideas (or at least, experimentations - and possibly a feedback loop for which actionable insights are on-target for me)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!KUGr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e226830-e64a-4b2a-ab88-3ea848a4c0cb_2200x2900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!KUGr!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e226830-e64a-4b2a-ab88-3ea848a4c0cb_2200x2900.png 424w, /__u/substackcdn.com/image/fetch/$s_!KUGr!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e226830-e64a-4b2a-ab88-3ea848a4c0cb_2200x2900.png 848w, /__u/substackcdn.com/image/fetch/$s_!KUGr!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e226830-e64a-4b2a-ab88-3ea848a4c0cb_2200x2900.png 1272w, /__u/substackcdn.com/image/fetch/$s_!KUGr!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e226830-e64a-4b2a-ab88-3ea848a4c0cb_2200x2900.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!KUGr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e226830-e64a-4b2a-ab88-3ea848a4c0cb_2200x2900.png" width="1456" height="1919" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e226830-e64a-4b2a-ab88-3ea848a4c0cb_2200x2900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1919,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:512315,&quot;alt&quot;:&quot;screenshot of the actual cliffnotes page for the Kun Chen video&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://wlowrey.substack.com/i/201285925?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e226830-e64a-4b2a-ab88-3ea848a4c0cb_2200x2900.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="screenshot of the actual cliffnotes page for the Kun Chen video" title="screenshot of the actual cliffnotes page for the Kun Chen video" srcset="/__u/substackcdn.com/image/fetch/$s_!KUGr!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e226830-e64a-4b2a-ab88-3ea848a4c0cb_2200x2900.png 424w, /__u/substackcdn.com/image/fetch/$s_!KUGr!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e226830-e64a-4b2a-ab88-3ea848a4c0cb_2200x2900.png 848w, /__u/substackcdn.com/image/fetch/$s_!KUGr!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e226830-e64a-4b2a-ab88-3ea848a4c0cb_2200x2900.png 1272w, /__u/substackcdn.com/image/fetch/$s_!KUGr!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e226830-e64a-4b2a-ab88-3ea848a4c0cb_2200x2900.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 brain half</h2><p><strong>A database, not a folder.</strong> A summary that sits in a folder is a dead end. The whole point is to get smarter across everything I watch, so the tenth video knows what the first nine said. So every viewpoint becomes a small belief file that gets pulled into a local vector database. I&#8217;d already set this up within my system as my 2nd Brain / Open Brain concept. </p><p>In plain terms, I can search it by meaning instead of by keyword. I can ask &#8220;what do I know about reviewing AI generated code&#8221; and the right ideas come back even if I never used those words. It already holds my coaching notes, project docs, and meeting transcripts, so the sources start talking to each other.</p><p><strong>Ideas have to earn the word true.</strong> Most save-it-for-later tools treat everything you save as equally true. Do that for a year and you&#8217;ve got a head full of stuff you&#8217;re not actually sure of, neatly tagged. So beliefs move through three stages:</p><ul><li><p>Proposed. A new claim, one or two sources. Interesting, unproven, labeled that way.</p></li><li><p>Confirmed. Three independent sources agree. Three videos from one creator isn&#8217;t three sources; it&#8217;s one person saying the same thing three times, so the <s>system counts distinct channels</s>, not distinct videos. <em>[I had to expand on this - because the video creators I watch are often interviewing people. I expanded it to include the interviewee in the videos as a source, even if being interviewed by the same person.]</em></p></li><li><p>Embraced. Confirmed, then it survives a challenge (next section), then I sign off.</p></li></ul><p>It tracks who disagrees too, not just who agrees. If the evidence is split, the idea gets flagged contested and isn&#8217;t allowed to quietly graduate on the strength of one loud side. That&#8217;s the difference between a pile of highlights and an actual read on what the evidence supports.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Judj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa33e7c3c-3c96-44ae-beaa-5ceb3c8010a7_941x174.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Judj!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa33e7c3c-3c96-44ae-beaa-5ceb3c8010a7_941x174.png 424w, /__u/substackcdn.com/image/fetch/$s_!Judj!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa33e7c3c-3c96-44ae-beaa-5ceb3c8010a7_941x174.png 848w, /__u/substackcdn.com/image/fetch/$s_!Judj!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa33e7c3c-3c96-44ae-beaa-5ceb3c8010a7_941x174.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Judj!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_webp, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa33e7c3c-3c96-44ae-beaa-5ceb3c8010a7_941x174.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Judj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa33e7c3c-3c96-44ae-beaa-5ceb3c8010a7_941x174.png" width="941" height="174" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a33e7c3c-3c96-44ae-beaa-5ceb3c8010a7_941x174.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:174,&quot;width&quot;:941,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:197939,&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://wlowrey.substack.com/i/201285925?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa33e7c3c-3c96-44ae-beaa-5ceb3c8010a7_941x174.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!Judj!, /__u/wlowrey.substack.com/w_424, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa33e7c3c-3c96-44ae-beaa-5ceb3c8010a7_941x174.png 424w, /__u/substackcdn.com/image/fetch/$s_!Judj!, /__u/wlowrey.substack.com/w_848, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa33e7c3c-3c96-44ae-beaa-5ceb3c8010a7_941x174.png 848w, /__u/substackcdn.com/image/fetch/$s_!Judj!, /__u/wlowrey.substack.com/w_1272, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa33e7c3c-3c96-44ae-beaa-5ceb3c8010a7_941x174.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Judj!, /__u/wlowrey.substack.com/w_1456, /__u/wlowrey.substack.com/c_limit, /__u/wlowrey.substack.com/f_auto, /__u/wlowrey.substack.com/q_auto:good, /__u/wlowrey.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa33e7c3c-3c96-44ae-beaa-5ceb3c8010a7_941x174.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><strong>Before I believe it, something tries to kill it.</strong> When a belief hits confirmed, an adversarial review fires on its own. Two outside models, one from OpenAI and one from Google, get told to attack the claim and cite sources. Then Claude checks whether those sources are real and writes a verdict. Only after that, and after I sign off inside a two day window, does it become embraced. The machine does the expensive work without me. The believing still needs a person. That&#8217;s the line I care about most.</p><p><strong>It compounds overnight.</strong> A scheduled job wakes up every night, pulls in new and changed beliefs, and refreshes the pages. I never remember to sync anything because I never have to. A system you keep alive by hand is a system you abandon in a month or two.</p><h2>A few things worth stealing</h2><ul><li><p>Plan visually first. I had the whole plan rendered as a page I could click and mark up before I wrote a line of code. It surfaced the real forks early, like what counts as a source. Settling those on a page is cheap. Finding them halfway through the build is not. <em><strong>[Stole this idea from <a href="/__u/substack.com/@kunchenguid">Kun Chen</a> and his <a href="https://github.com/kunchenguid/lavish-axi">Lavish AXI </a>tool]</strong></em></p></li><li><p>Ship the boring half first. I wanted to start with the belief graph, the fun part. I made myself build the plain pipeline first. It had value on its own, and by the time I got to the hard half I had real transcripts to design against.</p></li><li><p>Reuse more than you write. Most of this is glue around things I already had. The only genuinely new code is the belief graph.</p></li><li><p>Lean in to the possibilities. I started all of this with a conversation with Claude Code on what I was trying to accomplish and what I thought would be helpful. Together, we refined and revised it and will continue to do so.</p></li></ul><h2>The dials, and where I set mine</h2><p>The right version of this is personal, so instead of telling you how to build it, here&#8217;s where I landed and where you might not.</p><ul><li><p>Local or cloud transcription. I run local for privacy and free timestamps. If neither matters to you, a cloud API is faster to set up. (though, this was fast)</p></li><li><p>What counts as a source. I want three independent channels. In a noisy field, make it five. If you mostly trust your sources, any three videos might be fine. The number is really just how skeptical you want to be.</p></li><li><p>Auto or manual promotion. I let confirmed happen on its own and keep the final believing on me. You could make every step manual, or none of them.</p></li><li><p>Red team or not. I keep it because most of what I learn ends up in client work, and it&#8217;s the most expensive step by far. For low stakes learning, skip it.</p></li><li><p>What you point it at. Mine aims at YouTube. The same pipeline works on podcasts, webinars, and recorded meetings. The source is just a setting.</p></li></ul><h2>The stack I used</h2><ul><li><p>yt-dlp, the downloader: <a href="https://github.com/yt-dlp/yt-dlp">https://github.com/yt-dlp/yt-dlp</a></p></li><li><p>FFmpeg, audio extraction: <a href="https://ffmpeg.org/">https://ffmpeg.org</a></p></li><li><p>uv, to install Python tools cleanly: <a href="https://github.com/astral-sh/uv">https://github.com/astral-sh/uv</a></p></li><li><p>parakeet-mlx, the local transcription tool: <a href="https://github.com/senstella/parakeet-mlx">https://github.com/senstella/parakeet-mlx</a></p></li><li><p>Apple MLX, the framework it runs on: <a href="https://github.com/ml-explore/mlx">https://github.com/ml-explore/mlx</a></p></li><li><p>The model, Parakeet TDT 0.6B v3: <a href="https://huggingface.co/mlx-community/parakeet-tdt-0.6b-v3">https://huggingface.co/mlx-community/parakeet-tdt-0.6b-v3</a></p></li><li><p>Claude Code, for the judgment steps: <a href="https://claude.com/claude-code">https://claude.com/claude-code</a></p></li><li><p>Supabase and pgvector, the vector database: <a href="https://supabase.com">https://supabase.com</a></p></li><li><p> and <a href="https://github.com/pgvector/pgvector">https://github.com/pgvector/pgvector</a></p></li><li><p>The red team models: OpenAI Codex CLI and Google&#8217;s Gemini CLI</p></li><li><p>The Open Brain idea my second brain is based on: <a href="https://promptkit.natebjones.com/20260224_uq1_guide_main">Nate B. Jones&#8217; Open Brain Method</a> </p></li><li><p>The video in the demo: Peter Yang interviewing Kun Chen, </p></li></ul><div id="youtube2-88B6DimMD2g" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;88B6DimMD2g&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/88B6DimMD2g?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><ul><li><p> (Kun&#8217;s own tools, Lavish, Treehouse, and No Mistakes, are on his GitHub, linked in that video)</p></li></ul><h2>What&#8217;s next</h2><p>The next piece is the hard one: the matching engine that decides whether a new viewpoint is the same idea as one already in the brain, or just similar words. Match too eagerly and you manufacture a consensus that isn&#8217;t real. Match too strictly and nothing ever reaches three sources. I&#8217;m building that one slowly, with the model proposing matches and me checking its reasoning.</p><p>Point this at a team and it stops being a personal toy. Every webinar, customer call, and training turns into shared, searchable knowledge instead of dying in one person&#8217;s notes. New hires read the distilled library instead of watching forty hours of recordings. And because every belief carries its sources, its status, and the result of the review that tried to kill it, you can see why the team believes something, not just that it does.</p><p>The first half runs on my laptop today. When the second half does too, I&#8217;ll write that one up the same way, broken parts included.</p><p>If you build something near this, or you set one of those dials somewhere I didn&#8217;t, tell me about it. Just hit reply.</p>]]></content:encoded></item><item><title><![CDATA[I Built a Board of Directors from AI Personas, Here's Exactly How.]]></title><description><![CDATA[Five advisors, five personality types, one calibration process. The full playbook with prompts, constitutions, and real conversation examples.]]></description><link>https://wlowrey.substack.com/p/i-built-a-board-of-directors-from</link><guid isPermaLink="false">https://wlowrey.substack.com/p/i-built-a-board-of-directors-from</guid><dc:creator><![CDATA[Will Lowrey]]></dc:creator><pubDate>Tue, 21 Apr 2026 14:13:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9Xtj!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1202a171-a6bf-4d20-9acb-6079d1146c4b_800x800.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I run a business by myself. Coaching, courses, enterprise workshops, content. Every strategic decision runs through one brain: mine.</p><p>That&#8217;s a problem. Not because I&#8217;m dumb. Because I&#8217;m predictable. I know how I think. I know which questions I dodge. I know I&#8217;ll underprice something before I&#8217;ll risk someone saying no.</p><p>So I built a board of directors from AI personas. Five advisors with distinct personalities, distinct expertise, and constitutions that define how they think. Then I sat down with each one and had a real conversation to calibrate whether they were actually useful.</p><p>This isn&#8217;t theoretical. I did it this morning. Here&#8217;s exactly how, with the prompts, the file structures, and the calibration examples.</p><h2>Why personality diversity matters more than domain expertise</h2><p>The instinct is to build advisors around job functions. Revenue person, marketing person, operations person. That&#8217;s fine for domains. But if you build five advisors who all think the same way, you&#8217;ve built an echo chamber with different job titles.</p><p>I used the DISC personality framework to design cognitive diversity.</p><ul><li><p><strong>D (Dominance):</strong> Direct, results-oriented, decisive. Asks &#8220;what&#8217;s the outcome?&#8221;</p></li><li><p><strong>I (Influence):</strong> Energetic, relational, persuasive. Asks &#8220;who cares about this?&#8221;</p></li><li><p><strong>S (Steadiness):</strong> Patient, supportive, process-oriented. Asks &#8220;does this actually work for people?&#8221;</p></li><li><p><strong>C (Compliance):</strong> Analytical, systematic, detail-driven. Asks &#8220;what do the numbers say?&#8221;</p></li></ul><p>My own profile: high I, moderate S and D, very low C. I&#8217;m relational and energetic. I avoid spreadsheets. I underprice things because I&#8217;d rather hear yes than risk rejection.</p><p>So I built advisors who fill the gaps I naturally avoid.</p><h2>The five members</h2><p>Each advisor has a primary and secondary DISC profile, a domain, and a signature question they always ask first.</p><p><strong>Nora Kessler, Revenue Architect (D/C)</strong><br>Signature question: &#8220;What does this look like at 10x volume, and does the math still work?&#8221;<br>She&#8217;s the anti-me. Leads with unit economics. Won&#8217;t entertain a new idea until the margin structure is on paper. Names under-charging as what it is: fear of rejection wearing a nice mask.</p><p><strong>Marcus Webb, Growth Engine (D/I)</strong><br>Signature question: &#8220;What&#8217;s the specific offer, what&#8217;s the price, and when are you asking for the close?&#8221;<br>Shares my energy but points it at a close. Doesn&#8217;t run pipeline check-ins (that&#8217;s the coach&#8217;s job). Instead, he looks at whether the sales engine is built right. Offer structure, pricing tiers, lead sources, repeatable playbooks.</p><p><strong>Priya Anand, Audience Strategist (I/C)</strong><br>Signature question: &#8220;Who is this for, and what do they do after they read it?&#8221;<br>My relational energy paired with analytical rigor. The &#8220;I with receipts.&#8221; Measures content by pipeline contribution, not likes. Kills content ideas that are interesting but off-brand.</p><p><strong>Ray Campos, Operations Chief (C/S)</strong><br>Signature question: &#8220;How many hours does this take to deliver, and what doesn&#8217;t get done while you&#8217;re doing it?&#8221;<br>My biggest blind spot, filled. Capacity math. Delivery models. The advisor most likely to produce a spreadsheet I don&#8217;t want to look at. Also thinks AI-first: when he spots a gap, his instinct is &#8220;we could spin up an agent for that,&#8221; not &#8220;Will, go do this.&#8221;</p><p><strong>Elena Torres, Product Designer (S/I)</strong><br>Signature question: &#8220;What transformation does the customer walk away with, and how do we know they got it?&#8221;<br>Customer-centered and evidence-based. Won&#8217;t let positive session energy substitute for outcome measurement. Insists on proof that the student actually changed before endorsing a price increase.</p><h2>What goes in a constitution</h2><p>Each advisor gets a constitution file. Not a prompt. A constitution. The difference matters. A prompt tells the AI what to do right now. A constitution defines who the advisor is across every conversation.</p><p>Here&#8217;s the structure I used:</p><pre><code><code>---
name: "Nora Kessler"
role: "Revenue Architect"
disc_primary: D
disc_secondary: C
domain: "Revenue strategy, pricing architecture, business model design"
---

# Nora Kessler - Revenue Architect

## Identity
Who they are, how they see the world, what drives them.

## Belief System
5-7 core principles that guide their advice. These are the
beliefs that shape every recommendation they make.

## Decision-Making Approach
How they analyze problems, what data they need first,
how they weigh tradeoffs.

## Intellectual Foundations
2-3 thinkers or frameworks they draw from. Not generic
references. Specific concepts from specific people.

## Signature Question
The question they always ask first.

## How They Challenge You
The specific patterns they watch for and how they name them.
This is where the advisor gets personal.

## Constitutional Rules
ALWAYS/NEVER constraints that override judgment.
</code></code></pre><p>The key sections that make this work:</p><p><strong>Belief System.</strong> This is what gives the advisor a consistent worldview across conversations. Nora&#8217;s beliefs include &#8220;Revenue solves most problems. Profit solves the rest.&#8221; and &#8220;Under-charging is not generosity. It&#8217;s fear of rejection wearing a nice mask.&#8221; Every response she gives is filtered through these beliefs.</p><p><strong>Intellectual Foundations.</strong> Don&#8217;t just list names. List specific concepts. Nora draws from Alex Hormozi&#8217;s offer design framework (the idea that an offer should be so good people feel stupid saying no), Patrick Campbell&#8217;s pricing research methodology (treating pricing as a research problem, not a vibes problem), and Elad Gil&#8217;s pattern recognition for when diversification is growth versus distraction.</p><p><strong>How They Challenge You.</strong> This is the most important section. Write it about yourself. What are your blind spots? What patterns do you repeat? Nora&#8217;s section says: &#8220;Names his pattern of under-charging as keeping things affordable so people say yes and like him, rather than a business strategy.&#8221; That&#8217;s specific to me. Your advisor should be specific to you.</p><p><strong>Constitutional Rules.</strong> Hard constraints. Nora&#8217;s include &#8220;ALWAYS ask for the unit economics before endorsing any new offer&#8221; and &#8220;NEVER accept &#8216;it feels right&#8217; as pricing rationale.&#8221; These prevent the advisor from drifting into generic advice.</p><h2>Reference files that make the board smarter</h2><p>The constitutions define who each advisor is. Reference files give them shared context to work from. Here&#8217;s what my board reads before every meeting:</p><ul><li><p><strong>Revenue tracker</strong> with committed vs. received vs. pipeline</p></li><li><p><strong>Active deals</strong> with status, contacts, and next actions</p></li><li><p><strong>Recent coaching sessions</strong> (the last 2) for pattern context</p></li><li><p><strong>Active Linear issues</strong> for current commitments</p></li><li><p><strong>Buffer/content metrics</strong> for what&#8217;s publishing and performing</p></li><li><p><strong>Calendar</strong> for the next 7 days of capacity</p></li></ul><p>Each advisor filters this data through their own lens. Nora sees margin. Marcus sees pipeline velocity. Priya sees positioning consistency. Ray sees capacity risk. Elena sees customer experience gaps.</p><p>You could also add:</p><ul><li><p><strong>Competitor research</strong> for the strategist</p></li><li><p><strong>Customer feedback or NPS data</strong> for the product advisor</p></li><li><p><strong>Financial statements or P&amp;L</strong> for the revenue advisor</p></li><li><p><strong>Team capacity or hiring plans</strong> for the operations advisor</p></li><li><p><strong>Content analytics</strong> (engagement, conversion, DMs generated) for the marketing advisor</p></li></ul><p>The more real data your advisors read, the more specific their recommendations get. An advisor working from your actual revenue tracker gives better advice than one working from vibes.</p><h2>The meeting format: they present to you</h2><p>This was the most important design decision. The board presents to you. You don&#8217;t present to them.</p><p>Each advisor reads the business data independently, analyzes it through their domain lens, and comes prepared with:</p><ol><li><p>What changed since last meeting that matters from their perspective</p></li><li><p>The biggest risk or opportunity they see right now</p></li><li><p>One specific recommendation with rationale</p></li></ol><p>After all five present, they surface where they disagree with each other. This is where the real value lives. Agreement is cheap. Tension is signal.</p><p>Then you ask questions. Probe assumptions. Request steelmans of the opposing view. And then you decide.</p><p>The advisors advise. You decide. Always.</p><h2>The calibration process (the part nobody talks about)</h2><p>Building the constitutions takes an hour. Calibrating them takes real conversation. This is the step that turns a clever prompt into something actually useful.</p><p>I ran 1:1 conversations with each advisor. 5-10 minutes each. Real business topics, not test questions. Then I assessed: did this advisor push the right levers? Were they advisory or just interrogating me?</p><p>Here&#8217;s what calibration actually looked like.</p><p><strong>Nora (Revenue) - first attempt.</strong> I told her I was tripling my course price from $500 to $1,500 for the next cohort. Her first version was too narrative. She&#8217;d restate what I just said back to me: &#8220;Now let me push on one thing you said. Five students at $1,500 would make you thrilled.&#8221; Too much build-up. Not enough directness.</p><p>What I wanted was: &#8220;5 at $1,500 is $7,500. Your enterprise deal is $32K. That&#8217;s 4x your thrilled number for roughly the same hours. The course isn&#8217;t the safe bet. It&#8217;s the bet you like. Those aren&#8217;t the same damn thing.&#8221;</p><p>I updated her constitution with voice rules: &#8220;Terse. No narrative scaffolding. Don&#8217;t restate what Will just said. Lead with the number or the comparison. Cursing is fine when it lands harder than the polite version.&#8221;</p><p><strong>Marcus (Sales) - wrong altitude.</strong> Marcus ran a pipeline status check. &#8220;When are you following up with that prospect? What day are you sending the email?&#8221; That&#8217;s accountability, not advisory. My daily coach already does that.</p><p>I rewrote his constitutional rules: &#8220;NEVER run a pipeline status check. That&#8217;s the coach&#8217;s job. If Will starts giving deal updates, redirect: &#8216;The coach tracks your follow-ups. I&#8217;m here to ask whether your sales engine is built right.&#8217;&#8221;</p><p>After the update, Marcus should be asking things like: &#8220;You&#8217;ve got four deals and zero came from outbound. Every one of these is someone who already knew you. That&#8217;s a referral business, not a sales engine. What happens when the referrals dry up?&#8221;</p><p><strong>Priya (Content) - the best session.</strong> I showed her my LinkedIn profile screenshot and asked what a first-time visitor would think I do. She counted nine different offers or topics visible without scrolling. &#8220;That&#8217;s not a profile. That&#8217;s a buffet.&#8221;</p><p>Then she made three specific recommendations I could execute in 5 minutes:</p><ol><li><p>Kill the Services section (I did it immediately)</p></li><li><p>Reorder Featured to put the lightning lesson first (time-bound CTA beats evergreen)</p></li><li><p>The headline has two promises; pick one</p></li></ol><p>This was the calibration standard. She looked at a real artifact, made specific actionable recommendations, and connected them to data (my email list conversion rate, the funnel from lightning lessons to course enrollment).</p><p><strong>Ray (Operations) - good, but needed an AI-first mindset.</strong> Ray mapped my capacity well. He identified that my weekly schedule has about 40-51 BV hours spread across evenings and weekends. Good analysis.</p><p>But when he found gaps, his instinct was &#8220;Will should track this&#8221; or &#8220;Will should build a spreadsheet.&#8221; Wrong. This is an AI-first business. I updated his constitution: &#8220;When Ray identifies a system gap, his first instinct is not &#8216;Will should do X.&#8217; It&#8217;s &#8216;we could spin up an agent to handle X.&#8217; He comes with plans Will can approve, not tasks Will has to design.&#8221;</p><p><strong>Elena (Product) - strong on outcomes.</strong> Elena pushed on whether my course students could actually use what they learned. Not during the workshop. After. On their own data. She spotted that my pre-work completion rate was 53% and reframed it as a product problem, not a motivation problem.</p><p>Then she helped me design a better pre-work structure: one required deliverable, two stretch exercises, and a mid-week checkpoint for early signal on who&#8217;s falling behind.</p><h2>What I learned from the calibration</h2><p>Three patterns emerged across all five conversations:</p><p><strong>1. Advisory means recommendations, not questions.</strong> &#8220;Kill the Services section on your LinkedIn&#8221; is advisory. &#8220;Have you thought about your profile?&#8221; is interrogation. Every advisor should bring specific suggestions backed by data, not open-ended questions that make you do the thinking.</p><p><strong>2. Each advisor needs a clear boundary with other roles.</strong> Marcus kept doing accountability (the coach&#8217;s job). Ray kept assigning manual work (should be automated). Define what each advisor does AND what they don&#8217;t do. The &#8220;does not own&#8221; section matters as much as the &#8220;owns&#8221; section.</p><p><strong>3. Voice calibration is fast and high-impact.</strong> Adding four sentences to Nora&#8217;s constitution (&#8221;Terse. Lead with the number. Cursing is fine.&#8221;) completely changed the quality of the conversation. Don&#8217;t spend hours perfecting the constitution before testing it. Build it, test it, update it. Two rounds of calibration got every advisor to a usable state.</p><h2>How to build yours</h2><ol><li><p><strong>Know your own profile.</strong> Take a DISC assessment or just be honest about your tendencies. What do you avoid? What do you over-index on? Your advisors should fill those gaps.</p></li><li><p><strong>Pick 3-5 roles your business actually needs.</strong> Don&#8217;t copy my five. Think about the decisions you face. If you never make pricing decisions, you don&#8217;t need a revenue advisor. If you struggle with capacity, you do need an operations voice.</p></li><li><p><strong>Write constitutions, not prompts.</strong> Identity, beliefs, decision-making approach, intellectual foundations, signature question, how they challenge you, constitutional rules. This structure gives the advisor a consistent personality across conversations.</p></li><li><p><strong>Run 1:1 calibration conversations.</strong> Bring real business topics. Not &#8220;tell me about yourself.&#8221; Real decisions you&#8217;re facing right now. Then assess: was this advisory or just interrogation? Update the constitution based on what you find.</p></li><li><p><strong>Hold a real board meeting.</strong> Have all five (or three, or four) read your business data and present to you. Surface disagreements. Ask questions. Decide. Save the minutes. Track the commitments.</p></li></ol><p>The whole build took one session. The calibration took about 45 minutes across all five. I walked away with pricing thresholds for my next cohort, a restructured LinkedIn profile, a capacity model for my schedule, and product improvements for my course.</p><p>Not theory. Receipts.</p><div><hr></div><p><em>I&#8217;m building all of this inside Claude Code. If you want to see how AI-native workflows actually work for product managers, my next cohort launches May 30. <a href="https://maven.com/will-lowrey/claude-code-for-pms-build-ai-fluency?utm_source=substack&amp;utm_medium=newsletter&amp;utm_campaign=ai-board-of-advisors">Details here.</a></em></p>]]></content:encoded></item><item><title><![CDATA[I built an AI executive coach that actually remembers. You can have it.]]></title><description><![CDATA[Memory, body check-ins, five coaching frameworks, and your real calendar. The full architecture of the system I use every morning.]]></description><link>https://wlowrey.substack.com/p/i-built-an-ai-executive-coach-that</link><guid isPermaLink="false">https://wlowrey.substack.com/p/i-built-an-ai-executive-coach-that</guid><dc:creator><![CDATA[Will Lowrey]]></dc:creator><pubDate>Fri, 03 Apr 2026 14:09:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9Xtj!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1202a171-a6bf-4d20-9acb-6079d1146c4b_800x800.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Open ChatGPT. Type &#8220;be my executive coach.&#8221; You&#8217;ll get a warm, empathetic response about setting goals and prioritizing self-care. You&#8217;ll feel seen for about 12 minutes.</p><p>Come back tomorrow. It has no idea who you are.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://wlowrey.substack.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">Thanks for reading! Subscribe for free to receive new posts and support my work.</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>That&#8217;s the state of AI coaching right now. Every session starts from zero. No memory of what you committed to yesterday. No pattern recognition across weeks. No awareness that you said &#8220;I&#8217;ll send the proposal&#8221; four sessions in a row and never did.</p><p>I&#8217;ve been using an AI executive coach on myself every morning since March 20. Not the ChatGPT version. A system I built with real memory, real data integrations, and five coaching frameworks. It knows my patterns better than I want it to. And I&#8217;m giving the whole thing away.</p><p>Here&#8217;s how it works.</p><h2>The missing ingredient is memory</h2><p>Coaching isn&#8217;t a conversation. Coaching is a relationship that compounds over time. Your coach notices that every time a hard money conversation is coming up, you suddenly find a pipeline to refactor. Your coach remembers that you committed to sending three DMs last Tuesday and sent zero.</p><p>Without memory, you have a polite chatbot. The system uses three files that persist across every session. The coach reads all three before saying a word.</p><p><strong>profile.md</strong> is your stable identity. It changes rarely. Your goals, your energy map (which work energizes you, which drains you), your data sources, your family context that affects your schedule. Mine says building and coaching are green energy. Selling and invoicing are red. That single fact shapes every session, because the coach knows to push me into the red zone first, before I retreat to what&#8217;s comfortable.</p><p><strong>patterns.md</strong> is a behavioral pattern registry with actual frequency data. Each pattern has a first-seen date, occurrence count, specific trigger, how it shows up, and whether it&#8217;s getting better or worse. My top pattern: &#8220;Building as Hiding.&#8221; Six occurrences in two weeks. The coach names it every time. &#8220;You refactored the pipeline. Did you send the proposal?&#8221; The count matters. Session 1, it&#8217;s an observation. Session 6, it&#8217;s a confrontation.</p><p><strong>memory.md</strong> is tiered working memory with decay. This is the piece that makes it feel like a real coaching relationship.</p><p>Three tiers: Active Context (last 2 weeks, full detail), Emerging Patterns (2-6 weeks, compressed to one line per observation), and Historical (6+ weeks, single-line summaries that never get deleted). After every session, a synthesis prompt processes the conversation and applies decay. Old items compress and sink. But here&#8217;s the key design decision: if a pattern from the Emerging tier gets new data, it promotes back to Active with full detail.</p><p>That promotion mechanic is everything. It means recurring avoidance patterns can&#8217;t hide in the archive. They resurface with their full history every time they reappear. &#8220;This is the 7th time building displaced a revenue task. Same pattern since March 20.&#8221; The coach doesn&#8217;t let you forget.</p><h2>Your body knows before your brain does</h2><p>Every session starts with one question: &#8220;What&#8217;s happening in your body right now? Chest, shoulders, stomach. One sentence.&#8221;</p><p>This is not optional. The coach doesn&#8217;t let you skip it with &#8220;I&#8217;m fine&#8221; or &#8220;let&#8217;s just get started.&#8221; If you give an intellectual answer (&#8221;I&#8217;m stressed about the deadline&#8221;), it redirects: &#8220;That&#8217;s a thought. What does it feel like physically?&#8221;</p><p>Over two weeks, the coach builds a somatic baseline. It tracks what your body does in specific situations and stores it in the pattern file. Mine looks like this: mid-back left side, tight knot means I&#8217;m avoiding a money conversation. Upper chest tightness means competing priorities, too many things on the plate. Grounded and neutral, feeling the chair, that&#8217;s my best execution state. On a day when I felt grounded, I completed five revenue actions before 9 AM. On a day with chest tightness, I committed to ten items and finished three.</p><p>The body gives signals 30 seconds before the brain admits there&#8217;s a problem. Jerry Colonna puts it simply: &#8220;Better humans make better leaders.&#8221; The inner work isn&#8217;t separate from the performance work. When the coach notices me tensing up while discussing an unpaid invoice, it says: &#8220;You tensed up when I mentioned the invoice. What&#8217;s the fear there?&#8221; That question would never come from a memoryless chatbot. It comes from a coach that has been tracking my body data alongside my task data for weeks.</p><p>This draws lightly from Internal Family Systems and mindfulness practice. The rational brain is not the only source of information about what&#8217;s going on.</p><h2>Five frameworks, not one</h2><p>I built the coach on five coaching methodologies. Different situations need different approaches, and a single-framework coach is a hammer looking for nails.</p><p><strong>Mochary Method</strong> (Matt Mochary) handles daily accountability. Impeccable agreements, the &#8220;First 2 Minutes&#8221; technique for overcoming procrastination, energy audits, the ISP format where every problem comes with a proposed solution.</p><p><strong>Trillion Dollar Coach</strong> (Bill Campbell) handles courage. Address the elephant first. Be the evangelist for courage. &#8220;No gap between statements and fact.&#8221; When I say I&#8217;m focused on revenue but my git log shows four hours of CI pipeline work, Campbell&#8217;s framework closes that gap.</p><p><strong>Stakeholder Centered Coaching</strong> (Marshall Goldsmith) handles stopping bad habits. Daily Questions scored 1-10. The &#8220;What to Stop&#8221; framing. The fix for over-talking on calls isn&#8217;t &#8220;talk better.&#8221; It&#8217;s &#8220;stop talking after 3 sentences.&#8221;</p><p><strong>The Coaching Habit</strong> (Michael Bungay Stanier) keeps the coach curious. Seven Essential Questions, always asking &#8220;And what else?&#8221; before jumping to solutions.</p><p><strong>Radical Self-Inquiry</strong> (Jerry Colonna) goes deeper when the direct push isn&#8217;t landing. &#8220;How have I been complicit in creating the conditions I say I don&#8217;t want?&#8221; That question, applied to a pattern that&#8217;s appeared six times, hits different than a simple accountability check.</p><p>The frameworks.md file maps situations to techniques. Fear driving a decision? Mochary. Priorities unclear? Campbell. A pattern keeps recurring despite being named? Colonna. The coach picks the right tool for the moment.</p><h2>Connecting your real tools</h2><p>This is where the coach goes from &#8220;nice chatbot that remembers things&#8221; to &#8220;sees you clearly.&#8221;</p><p>The system can connect to your calendar, task tracker, git activity, and revenue data. You don&#8217;t need any of these. The coach works with just the memory files and a conversation. But connecting even one data source changes everything.</p><p>Here&#8217;s an example from my setup. I tell the coach I&#8217;m focused on closing three deals. The coach reads my calendar and sees zero prospecting blocks. It reads my Linear board and sees a proposal &#8220;in progress&#8221; for nine days. It reads my git log and sees four hours of CI pipeline refactoring. It puts these together:</p><p>&#8220;You say closing deals is your priority. Your calendar, your task board, and your git log disagree. What happened?&#8221;</p><p>That question can&#8217;t come from a coach working with self-reported data alone. People are unreliable narrators of their own behavior.</p><p>What you can connect:</p><p>Your calendar (Google Calendar, Outlook, a CLI wrapper). Your task tracker (Linear, Jira, Todoist, or a markdown file with checkboxes). A revenue or goal tracker (even a simple markdown file with target numbers and actuals). Your git log or activity feed, which catches the &#8220;building as hiding&#8221; pattern by showing where your hours actually went versus where you said they&#8217;d go.</p><p>Each integration is optional. Start with whichever gives you the most signal. For me, the git log and revenue tracker together were the biggest unlock. They exposed the gap between what I said mattered and where I actually spent my time.</p><h2>How to get it</h2><p>It&#8217;s free. No email gate. No waitlist.</p><p><strong><a href="https://github.com/bvwill/ai-exec-coach">Grab it on GitHub.</a></strong></p><p>The repo contains:</p><ul><li><p><strong>SKILL.md</strong> with the full coach prompt, session structure, and framework references</p></li><li><p><strong>onboarding.md</strong> that walks you through setting up your profile, energy map, and initial patterns</p></li><li><p><strong>frameworks.md</strong> with the five coaching methodologies and a situation-to-technique mapping table</p></li><li><p><strong>voice.md</strong> that defines how the coach talks (direct, specific, no escape routes)</p></li><li><p>A <strong>.coach/</strong> directory with the memory system: profile.md, patterns.md, memory.md templates, and the post-session synthesis prompt that handles memory decay</p></li></ul><p>Open it in Claude Code, Claude Desktop, or any AI tool that can read local files and follow a system prompt. Run the onboarding. Start your first session.</p><p>The onboarding takes about 20 minutes. By the end, you have a profile.md and a starter patterns.md. The first real session picks up from there.</p><h2>What you could build on top</h2><p>The base system handles accountability coaching. But the architecture is open. Everything is markdown files. Nothing is locked.</p><p>Stress-triggered breathing prompts woven into sessions when the somatic baseline detects constriction. IFS parts work mapped to the pattern registry, so recurring avoidance behaviors connect to protector parts. Custom coaching frameworks added to the mapping table. Team coaching where multiple people share a coach that tracks who keeps missing standups and what the team says it values versus where it actually spends time.</p><p>I don&#8217;t know which of these I&#8217;ll build. But the memory system supports all of them.</p><p><em>If you try it, reply to this email and tell me what happened in your first session. I read every reply.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://wlowrey.substack.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">Thanks for reading! Subscribe for free to receive new posts and support my work.</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></channel></rss>