<?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[The Second Shift Club]]></title><description><![CDATA[The AI workflows that actually work for marketing, written up step by step so you can go run them too.]]></description><link>https://www.hiresecondshift.com</link><image><url>https://substackcdn.com/image/fetch/$s_!j81D!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb17883f3-14c9-4af2-af6b-d6001ad3a408_1280x1280.png</url><title>The Second Shift Club</title><link>https://www.hiresecondshift.com</link></image><generator>Substack</generator><lastBuildDate>Tue, 15 Sep 2026 18:35:44 GMT</lastBuildDate><atom:link href="https://www.hiresecondshift.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Drew Wilkinson]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[drewwilkinson1@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[drewwilkinson1@substack.com]]></itunes:email><itunes:name><![CDATA[Drew Wilkinson]]></itunes:name></itunes:owner><itunes:author><![CDATA[Drew Wilkinson]]></itunes:author><googleplay:owner><![CDATA[drewwilkinson1@substack.com]]></googleplay:owner><googleplay:email><![CDATA[drewwilkinson1@substack.com]]></googleplay:email><googleplay:author><![CDATA[Drew Wilkinson]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[How to build a truth layer for your marketing team]]></title><description><![CDATA[Why context is king and what a MVP truth layer looks like for your marketing agents.]]></description><link>https://www.hiresecondshift.com/p/how-to-build-a-truth-layer-for-your</link><guid isPermaLink="false">https://www.hiresecondshift.com/p/how-to-build-a-truth-layer-for-your</guid><dc:creator><![CDATA[Drew Wilkinson]]></dc:creator><pubDate>Thu, 10 Sep 2026 09:50:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ssTf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5aea5b2-504b-4123-9b8b-238e0174ca09_3200x1800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Yet another Anthropic researcher quit, and on his way out stated there&#8217;s a non-trivial chance <a href="https://mashable.com/tech/anthropic-ai-researcher-quit-ethics-safety">AI kills us all within the next 10 years</a>. Gulp.</p><p>Often the race to AGI is compared to the atom bomb. But that analogy misses how hard it is to see the thing I used to generate a cycling training plan last night as the thing that might one day kill me.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.hiresecondshift.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 The Second Shift Club! 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>I was thinking about this as I was writing today&#8217;s edition of the Second Shift Club. </p><p>I have built a lot with AI in the last few years and I&#8217;ve enjoyed it immensely. But I am also very concerned about the potentially devastating impact of AI on employment, inequality, the climate, and, well, the very fate of humankind. Unlike Peter Thiel, I'm unequivocal in my hope that the human race survives.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sX9L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3c47bd-22c2-4c86-a630-94e0e8e3c862_623x492.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sX9L!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3c47bd-22c2-4c86-a630-94e0e8e3c862_623x492.jpeg 424w, https://substackcdn.com/image/fetch/$s_!sX9L!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3c47bd-22c2-4c86-a630-94e0e8e3c862_623x492.jpeg 848w, https://substackcdn.com/image/fetch/$s_!sX9L!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3c47bd-22c2-4c86-a630-94e0e8e3c862_623x492.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!sX9L!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3c47bd-22c2-4c86-a630-94e0e8e3c862_623x492.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sX9L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3c47bd-22c2-4c86-a630-94e0e8e3c862_623x492.jpeg" width="381" height="300.8860353130016" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ba3c47bd-22c2-4c86-a630-94e0e8e3c862_623x492.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:492,&quot;width&quot;:623,&quot;resizeWidth&quot;:381,&quot;bytes&quot;:25832,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.hiresecondshift.com/i/214938858?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3c47bd-22c2-4c86-a630-94e0e8e3c862_623x492.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sX9L!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3c47bd-22c2-4c86-a630-94e0e8e3c862_623x492.jpeg 424w, https://substackcdn.com/image/fetch/$s_!sX9L!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3c47bd-22c2-4c86-a630-94e0e8e3c862_623x492.jpeg 848w, https://substackcdn.com/image/fetch/$s_!sX9L!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3c47bd-22c2-4c86-a630-94e0e8e3c862_623x492.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!sX9L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3c47bd-22c2-4c86-a630-94e0e8e3c862_623x492.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I don&#8217;t think it helps that the discussion tends to be quite reductive. Either AI is a shiny autocomplete or we&#8217;re sleepwalking into the apocalypse.</p><p>I find myself awkwardly in the middle. I&#8217;m genuinely excited about AI and what it makes possible. I&#8217;m also very worried about where it could lead.</p><p>I don&#8217;t think those positions are necessarily contradictory. If anything, the more time I spend building with AI, the more strongly I feel both of them. &#175;\_(&#12484;)_/&#175;</p><h2>So anyway&#8230;</h2><p>Ask a model about the Treaty of Westphalia and it&#8217;ll tell you everything you need to know. Ask a model about something closer to home like your product and you often get claims that are <em>almost</em> right. Almost being the operative word.</p><p>It will describe features that were deprecated years ago. It will quote stale pricing. It will attach random stats and make claims about your positioning, uptime and customer success stories that sound so plausible nobody catches them. </p><p>It&#8217;s the kind of thing that kills an AI program, because it costs you credibility. </p><p>When I started back in marketing people were fond of saying content is king. Now context is. </p><p>The problem is that context is a squishy, co-created thing. It often lives in people&#8217;s heads and is rarely codified in a way that is actually useful to a colleague, never mind an agent. It also tends to depreciate over time as operating and market environments change. It&#8217;s worth the upfront investment, but also less glamorous, and dare I say a little boring to manage.</p><p>I&#8217;m lucky to have two wonderful marketers who also happen to also be detail- and systems-oriented at Sinch&#8212;Heather Dileepan and Nathan Ellering&#8212;who have driven this project. At an enterprise level, that&#8217;s no small feat, given the number of product lines, audiences, industries, and other moving parts involved.</p><p>For startups / single-product brands, the task is a tad easier. Here&#8217;s what a simple truth layer could look like for your business that you could build in less than a day.</p><h2>Eight markdown files in a GitHub repo</h2><p>The V1 of a truth layer boils down to eight markdown files that I recommend live in a GitHub repo. <strong>You can see the structure and full templates <a href="https://github.com/secondshiftclub/workflows/tree/main/truth-layer">here</a>.</strong></p><p><strong>1. Guardrails.</strong> This is the "don't get sued" file for something your AI wrote. It makes sure no capability is over-claimed and sets out the words you use and the words you don't. It might state plainly that you never claim the software is HIPAA compliant unless it is.</p><p><strong>2. Positioning.</strong> This includes your positioning statement, who you compete with, how you win, and some mutations based on things like industry.</p><p><strong>3. Facts.</strong> These are the hard numbers you publish about yourself. They might include things like customer count, review ratings, geographical availability, and what languages your platform is available in.</p><p><strong>4. Pricing.</strong> Plans, prices, what&#8217;s included, and a worked example for &#8220;what would it cost me.&#8221; </p><p><strong>5. Features.</strong> If it isn&#8217;t in this file it doesn&#8217;t exist. This should include a status per feature: live, beta, coming, deprecated with a date. And a short section of things people assume you might have and you don&#8217;t.  This can help stop a model filling them in.</p><p><strong>6. Who buys.</strong> Not personas with names like &#8220;Finance Fred&#8221;. This should be built from evidence using your customer list, churn notes, and Gong transcripts. It&#8217;s also important to state who you don&#8217;t sell to.</p><p><strong>7. Objections.</strong> What buyers push back on, verbatim, with honest answers.</p><p><strong>8. Voice.</strong> Aim for mechanical rules a linter could check (sentence case, no em dashes, second person), a say/don't-say vocabulary table, X number of sentences that sound like you and X number that could be any competitor. You should also include channel overrides only where a channel differs (landing page copy vs email copy vs blog copy). </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ssTf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5aea5b2-504b-4123-9b8b-238e0174ca09_3200x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ssTf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5aea5b2-504b-4123-9b8b-238e0174ca09_3200x1800.png 424w, https://substackcdn.com/image/fetch/$s_!ssTf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5aea5b2-504b-4123-9b8b-238e0174ca09_3200x1800.png 848w, https://substackcdn.com/image/fetch/$s_!ssTf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5aea5b2-504b-4123-9b8b-238e0174ca09_3200x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!ssTf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5aea5b2-504b-4123-9b8b-238e0174ca09_3200x1800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ssTf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5aea5b2-504b-4123-9b8b-238e0174ca09_3200x1800.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5aea5b2-504b-4123-9b8b-238e0174ca09_3200x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:458708,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.hiresecondshift.com/i/214938858?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5aea5b2-504b-4123-9b8b-238e0174ca09_3200x1800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ssTf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5aea5b2-504b-4123-9b8b-238e0174ca09_3200x1800.png 424w, https://substackcdn.com/image/fetch/$s_!ssTf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5aea5b2-504b-4123-9b8b-238e0174ca09_3200x1800.png 848w, https://substackcdn.com/image/fetch/$s_!ssTf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5aea5b2-504b-4123-9b8b-238e0174ca09_3200x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!ssTf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5aea5b2-504b-4123-9b8b-238e0174ca09_3200x1800.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>Why this truth layer structure (or why eight files and not three)</h2><p>Think of it like rules at a school. </p><ol><li><p>There&#8217;s the law (you can&#8217;t assault someone)</p></li><li><p>The school rules (no phones in class) </p></li><li><p>Your teacher&#8217;s preferences (she likes essays double-spaced). </p></li></ol><p>They&#8217;re kept separate for a reason: when they clash, everyone knows the law beats the school rules, and the school rules beat the teacher&#8217;s rules. If you stapled all three into one booklet, nobody could tell which line wins.</p><p>Same with these files. The &#8220;don&#8217;t get sued&#8221; file is more important than the &#8220;how we sound&#8221; file, so it can&#8217;t live inside it.</p><p>They also change at different speeds. The law rarely changes; the teacher&#8217;s preferences might change every term. If they&#8217;re in one booklet, it can be a little harder to manage.</p><p>Finally, and to really belabour the metaphor, you don&#8217;t carry the whole booklet everywhere. You memorise the short, important rules and look the rest up when you need it. Keeping them apart keeps the important ones short.</p><h2>Context decay is your enemy</h2><p>The problem with context is that it&#8217;s a pretty dynamic thing. For example, you build a new feature and suddenly your feature.md is stale. You launch in a new country and now your facts.md is no longer accurate. </p><p>Overtime it&#8217;s death by a thousand cuts if you don&#8217;t build a system or cadence to update it. I recommend:</p><ul><li><p>Tying updates to events or automations where possible. A release workflow should diff the code, cross-reference the ticket tracker, and update the features.md automatically. You could set an automation to pull customer numbers quarterly from your system of record. And so on.</p></li><li><p>Putting a 'last verified' date at the top of every file, and reviewing on a regular cadence.</p></li></ul><h2>Putting your truth layer to work</h2><p>For any marketing skill I create, I have agents read it as a pre-read<em>.</em> The wiring file (CLAUDE.md) also says: before any task, read these files in this order. </p><p>To me the above is very much the minimum viable product. Anything you find yourself re-explaining to a model is a truth layer file waiting to be written.</p><p>That could include your:</p><ul><li><p>Metric definitions</p></li><li><p>Marketing design system</p></li><li><p>And so on</p></li></ul><p>Having well-defined sources of truth is the difference between an AI program that earns trust and one that is accused of being a slop cannon.</p><p>So if you do one thing, build the truth layer first. Everything else you build on top of it will be easier.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.hiresecondshift.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 The Second Shift Club! 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><item><title><![CDATA[How to think about positioning for AI search]]></title><description><![CDATA[Successfully winning share of voice in LLMs involves being strongly attached to a phrase that is already associated with buyer questions.]]></description><link>https://www.hiresecondshift.com/p/how-to-think-about-positioning-for</link><guid isPermaLink="false">https://www.hiresecondshift.com/p/how-to-think-about-positioning-for</guid><dc:creator><![CDATA[Drew Wilkinson]]></dc:creator><pubDate>Thu, 03 Sep 2026 10:25:41 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!DAEA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b072ec5-9c28-4d49-b0bb-dbe3515efcea_3200x1800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I have a confession to make: for a while, when I was Director of Marketing at SimpleTexting, our positioning was the &#8220;all-in-one texting platform.&#8221;</p><p>It was very much of its era. We were heavily focused on dominating the SERPs and delighting customers; we could probably have called ourselves &#8220;Mickey Mouse&#8217;s preferred texting tool&#8221; without doing much damage to growth.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.hiresecondshift.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 The Second Shift Club! 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>Businesses found us because they wanted to text. We often showed up first, we were affordable, the product was solid, and it was easy to get started.</p><p>In a world in which a 17-year-old in their parents&#8217; basement can vibe code your product in a weekend, I am not nearly so relaxed about positioning. </p><p>It&#8217;s probably one of the most important things a business can get right, and also one of the hardest because you only know if you got it right ex post. </p><p>To help you I&#8217;ve spent time testing how AI engines recommend products. Here are a few thoughts on what to do, and what not to do.</p><h2><strong>Methodology</strong></h2><p>Before you come at me, this is not a rigorous research project and there are flaws, lurking variables, and other concepts I learned in Econometrics that I vaguely remember. </p><p>Everything here comes from three small studies I ran, with about 1,100 controlled answers, cross-checked against a month of real tracked answers for a group of brands I monitor.</p><p>I&#8217;m also aware that:</p><ul><li><p>I used an API model with no product memory or personalization</p></li><li><p>It&#8217;s one model family (gpt-5.2), one day, US English </p></li></ul><p>Like many things in the world of AEO it is directionally interesting, but I&#8217;m not presenting it as gospel. </p><p>(If you&#8217;re interested in sponsoring a larger, more rigorous study, do come at me. &#128521;)</p><h2><strong>A quick word on positioning</strong></h2><p>I&#8217;ve done my fair share of positioning workshops over the years but I don&#8217;t pretend to be an expert&#8217;s expert. I have one particular observation that is important for the AI era.</p><p><em><strong>Positioning work tends to fail because it is inherently about tradeoffs and companies (especially software companies) are reluctant to close doors that might lead to future revenue. </strong></em></p><p>The latter is particularly problematic because LLMs will force these tradeoffs on you, and they may be sub-optimal. </p><p>So if I were parachuted into a positioning workshop I&#8217;d still ask everyone to:</p><ol><li><p>Pick a category buyers already recognize</p></li><li><p>Name the alternatives inside it</p></li><li><p>Say what makes then different</p></li><li><p>Say who it's for</p></li></ol><p>That much hasn&#8217;t changed. </p><p>The problem is that LLMs make positioning incredibly sticky and hard to pivot. That's hard on a startup still hunting for traction, and on an established business trying to reposition itself.</p><h2><strong>Lesson 1: Categories &gt; jobs-to-be-done</strong></h2><p>My hunch is that buyers using LLMs talk less in categories and more in jobs (some <a href="https://www.semrush.com/blog/how-ai-shapes-b2b-buying/">data supports</a> this thesis). </p><p>It makes sense to me that somebody opening ChatGPT is less likely to type &#8220;best digital adoption platform.&#8221; Instead you&#8217;d expect them to type: &#8220;half the people who sign up for my product never come back after day one&#8230;what should I use to fix it?&#8221;</p><p>It might be tempting then to recommend leaning on jobs-to-be-done positioning where you market to the job the buyer is trying to get done rather than the category they&#8217;d shop in. </p><p>To test this I ran matched pairs: the same buying question phrased as the category versus the job. </p><p><strong>What I learned is that the AI doesn&#8217;t answer the job question directly. In 92% of answers it searched for the nearest category, then recommended those brands.</strong></p><p>Take hiring. It&#8217;s a gerund market. Hiring, recruiting, screening, interviewing, sourcing, onboarding. These are things people do, and not things people buy. </p><p>So when someone asks ChatGPT for candidate screening tools, it doesn&#8217;t search for that. It takes the verb, guesses which nouns the verb usually lives inside, and goes looking for those. </p><p>Then it opens the answer with &#8220;if by candidate screening you mean...&#8221; and builds a table with an ATS row, an assessment row, an engineering-tests row. Every brand in the table is heavily associated with one of those category nouns. </p><h3><strong>Takeaway</strong></h3><p>Ask the engines your buyers&#8217; actual questions, job wording and all, and watch which category nouns the answers land on. Those lists represent your real competitors.</p><p>Win a spot in one of them, then keep writing for the jobs; job pages get quoted in answers, but only the category gets you recommended as an option.</p><h2><strong>Lesson 2: Changing categories is really hard</strong></h2><p>Chug enough coffee and burn enough Claude tokens and you will eventually think I should just create a new category.</p><p>I looked at twelve well-known companies that rebranded into new, broader categories over the past few years. Intercom is now &#8220;the AI customer service company.&#8221; Klaviyo is a &#8220;B2C CRM.&#8221; Airtable builds &#8220;AI apps.&#8221;</p><p>I pulled LLMs&#8217; descriptions of all twelve. Across 72 answers, the new category appeared without the old one exactly twice.</p><p>Intercom got called live chat software six times out of six. Klaviyo is still email marketing. Airtable is still a spreadsheet-database.</p><p>The reason is simple. The AI&#8217;s memory was built from years of everyone else&#8217;s writing. &#8220;Intercom does live chat&#8221; is a thousand pages across many years. </p><p>It&#8217;s really, really hard to reorient LLMs.</p><h3><strong>Takeaway</strong></h3><p>Ask the engines &#8220;what is [your company]?&#8221; The phrase in their answer is your real category, not whatever your internal decks say. Dominate that one first.</p><p>And if you&#8217;re set on inventing a category or changing your existing category, be honest about the job: it isn&#8217;t just an update to your homepage, it&#8217;s getting thousands of other people&#8217;s pages to repeat it. Budget years and bucketloads of cash.</p><h2><strong>Lesson 3: The fastest-growing categories are people-shaped</strong></h2><p>You can always latch onto rapidly growing categories.</p><p>I checked 2,302 Y Combinator one-liners across a decade of batches from 2015. What exploded in recent years is positioning as a role: AI SDR, AI recruiter, and AI engineer went from 1% to 20%, almost all since 2023.</p><p>And buyers followed. &#8220;AI SDR&#8221; went from ~12 searches a month in 2022 to ~2,400 now, sixteen times the volume of &#8220;SDR tools.&#8221; These phrases became categories in about eighteen months. </p><p>While people might roll their eyes at AI in every H1, there is meaningful demand for these categories.</p><p>Notice what they have in common with the categories that held up in Lesson 1. They&#8217;re nouns. A role is a thing you can hire, so an LLM can put it in a table without translating it into something else.</p><h3><strong>Takeaway</strong></h3><p>New categories can be minted fast these days when the internet writes about them in unison. It&#8217;s easier to spot a trend than to create one.</p><div><hr></div><h2><strong>The four states of a phrase</strong></h2><p>All this means the question you need is to answer is what state is your category phrase in (as far as the engines are concerned). Here&#8217;s how I think about it:</p><ul><li><p><strong>Shelf.</strong> The engines answer in this noun without translating it. The table exists, the rows are taken, and the only move is a cell inside it: a segment, a price point, a mechanism nobody else has. This is most established categories.</p></li><li><p><strong>Forming.</strong> The phrase is in circulation, the engines use it as a modifier or a &#8220;best for&#8221; label, but no brand owns it as a category yet. This is where the people-shaped categories were in 2023. It&#8217;s the cheapest shelf to claim, and the window is short.</p></li><li><p><strong>No shelf.</strong> The engines rewrite the phrase into another noun before answering. The first-sentence test fails. You can rank for it on Google and still never be named. Most gerunds live here.</p></li><li><p><strong>Held.</strong> A niche you already win: a specific prompt or segment where the engines name you consistently. Small, but it&#8217;s proof the mechanism works, and it&#8217;s the corner you expand from.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DAEA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b072ec5-9c28-4d49-b0bb-dbe3515efcea_3200x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DAEA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b072ec5-9c28-4d49-b0bb-dbe3515efcea_3200x1800.png 424w, https://substackcdn.com/image/fetch/$s_!DAEA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b072ec5-9c28-4d49-b0bb-dbe3515efcea_3200x1800.png 848w, https://substackcdn.com/image/fetch/$s_!DAEA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b072ec5-9c28-4d49-b0bb-dbe3515efcea_3200x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!DAEA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b072ec5-9c28-4d49-b0bb-dbe3515efcea_3200x1800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DAEA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b072ec5-9c28-4d49-b0bb-dbe3515efcea_3200x1800.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9b072ec5-9c28-4d49-b0bb-dbe3515efcea_3200x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:240344,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.hiresecondshift.com/i/213853442?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b072ec5-9c28-4d49-b0bb-dbe3515efcea_3200x1800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DAEA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b072ec5-9c28-4d49-b0bb-dbe3515efcea_3200x1800.png 424w, https://substackcdn.com/image/fetch/$s_!DAEA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b072ec5-9c28-4d49-b0bb-dbe3515efcea_3200x1800.png 848w, https://substackcdn.com/image/fetch/$s_!DAEA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b072ec5-9c28-4d49-b0bb-dbe3515efcea_3200x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!DAEA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b072ec5-9c28-4d49-b0bb-dbe3515efcea_3200x1800.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>Run the tests from Lessons 1 and 2, sort your candidate phrases into those four states, and the decision mostly makes itself. Take the held niche as the anchor. </p><p>The goal is to claim the empty cell on a shelf, or move early onto a forming noun. Never stand on a no-shelf phrase and wait for a table to appear.</p><div><hr></div><p>If you move at all, move with a current, not against one. When the whole internet starts repeating a phrase at once, a category is created in months and the earliest names get glued to it. </p><p>The tells: search demand rising, other people&#8217;s pages using the phrase, and, ideally, a phrase your name already plausibly sits next to.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.hiresecondshift.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 The Second Shift Club! 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><item><title><![CDATA[How to automate systems, not tasks]]></title><description><![CDATA[Why almost nobody gets past task automation, and what the jump actually involves.]]></description><link>https://www.hiresecondshift.com/p/how-to-automate-systems-not-tasks</link><guid isPermaLink="false">https://www.hiresecondshift.com/p/how-to-automate-systems-not-tasks</guid><dc:creator><![CDATA[Drew Wilkinson]]></dc:creator><pubDate>Fri, 28 Aug 2026 11:29:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!o1pB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c0b2b5-de91-45aa-bd9f-dc43d53bc37e_3200x1800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!o1pB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c0b2b5-de91-45aa-bd9f-dc43d53bc37e_3200x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!o1pB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c0b2b5-de91-45aa-bd9f-dc43d53bc37e_3200x1800.png 424w, https://substackcdn.com/image/fetch/$s_!o1pB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c0b2b5-de91-45aa-bd9f-dc43d53bc37e_3200x1800.png 848w, https://substackcdn.com/image/fetch/$s_!o1pB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c0b2b5-de91-45aa-bd9f-dc43d53bc37e_3200x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!o1pB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c0b2b5-de91-45aa-bd9f-dc43d53bc37e_3200x1800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!o1pB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c0b2b5-de91-45aa-bd9f-dc43d53bc37e_3200x1800.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a9c0b2b5-de91-45aa-bd9f-dc43d53bc37e_3200x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:900006,&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://www.hiresecondshift.com/i/212960144?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c0b2b5-de91-45aa-bd9f-dc43d53bc37e_3200x1800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!o1pB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c0b2b5-de91-45aa-bd9f-dc43d53bc37e_3200x1800.png 424w, https://substackcdn.com/image/fetch/$s_!o1pB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c0b2b5-de91-45aa-bd9f-dc43d53bc37e_3200x1800.png 848w, https://substackcdn.com/image/fetch/$s_!o1pB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c0b2b5-de91-45aa-bd9f-dc43d53bc37e_3200x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!o1pB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c0b2b5-de91-45aa-bd9f-dc43d53bc37e_3200x1800.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Having interviewed 50+ marketers in the first half of the year for roles from marketing coordinator to VP, I see people fall into three broad buckets:</p><ol><li><p>I use ChatGPT/Claude to help me do tasks.</p></li><li><p>I&#8217;ve automated a task (competitive monitoring, reporting, dashboards, alerts, research, etc.) that helps me do my job more efficiently.</p></li><li><p>I&#8217;ve built a system that can execute work, observe the result, learn from it, and only pull me in where judgement is required.</p></li></ol><p>I saw lots of two, but never really came across three. (I&#8217;m not alone. Matt Swulinski (Growth at Viktor AI) says<a href="https://www.youtube.com/watch?v=bm8rMM4Bxz8"> fewer than 1% of candidates</a> he meets demonstrate that level of depth.)</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.hiresecondshift.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 The Second Shift Club! 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><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CJrv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F351035af-a0a4-472a-aa50-8bf1beae3557_491x334.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CJrv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F351035af-a0a4-472a-aa50-8bf1beae3557_491x334.png 424w, https://substackcdn.com/image/fetch/$s_!CJrv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F351035af-a0a4-472a-aa50-8bf1beae3557_491x334.png 848w, https://substackcdn.com/image/fetch/$s_!CJrv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F351035af-a0a4-472a-aa50-8bf1beae3557_491x334.png 1272w, https://substackcdn.com/image/fetch/$s_!CJrv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F351035af-a0a4-472a-aa50-8bf1beae3557_491x334.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CJrv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F351035af-a0a4-472a-aa50-8bf1beae3557_491x334.png" width="491" height="334" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/351035af-a0a4-472a-aa50-8bf1beae3557_491x334.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:334,&quot;width&quot;:491,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:206814,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.hiresecondshift.com/i/212960144?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F351035af-a0a4-472a-aa50-8bf1beae3557_491x334.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!CJrv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F351035af-a0a4-472a-aa50-8bf1beae3557_491x334.png 424w, https://substackcdn.com/image/fetch/$s_!CJrv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F351035af-a0a4-472a-aa50-8bf1beae3557_491x334.png 848w, https://substackcdn.com/image/fetch/$s_!CJrv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F351035af-a0a4-472a-aa50-8bf1beae3557_491x334.png 1272w, https://substackcdn.com/image/fetch/$s_!CJrv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F351035af-a0a4-472a-aa50-8bf1beae3557_491x334.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>So I wanted to do something a little more meta: try to articulate what actually blocks people from getting to bucket three, and illustrate a different way of thinking about your work that may make it possible.</p><h2>Why most teams can&#8217;t get to three, even when they want to</h2><p>One thing that gets my goat is the tendency to treat AI adoption as an enablement or individual employee problem. Teach people Claude, run a hackathon, hand out a skill library, and adoption will follow.</p><p>I think this gets the problem backwards.</p><p>If I&#8217;m a solo marketer at a seed-stage startup, I&#8217;m going to automate as much as I can because I need every edge. More importantly, I have the autonomy to do it because I own the outcome.</p><p><em><strong>If you own the outcome, you tend to own the path towards it.</strong></em></p><p>Nobody particularly cares how you get there, only that you do. Given enough autonomy, most rational people will gravitate towards the most efficient path.</p><p>The dynamic changes inside established organizations, where the real impediment to agent adoption is often less individual capability and more culture and operating structure.</p><p>A few examples:</p><ul><li><p><strong>Agents can&#8217;t align stakeholders or make compromises.</strong> At least not yet. The more consensus, approval, and compromise required to get something done, the harder it becomes to build a genuinely autonomous system around it.</p></li><li><p><strong>Fragmented ownership creates handoffs.</strong> Someone owns copy, someone else owns design, another person owns messaging, another owns the CMS. But every human-to-human handoff breaks the loop. </p></li><li><p><strong>The incentives often punish experimentation.</strong> The very ingrained &#8220;nobody got fired for buying IBM&#8221; mindset matters here. Agentic systems are inherently iterative. They will make mistakes. They will occasionally produce something embarrassing. It&#8217;s a tradeoff that few leaders are willing to acknowledge.</p></li><li><p><strong>Security and data constraints are real.</strong> Established companies have legitimate reasons to be cautious about what systems can access, what they can change, and where data can flow. (This is probably the most understandable constraint of the lot; you don&#8217;t want to end up on the news.) But free access to data and systems is how most systems add value.</p></li></ul><p>Which is why hosting an AI hackathon or running another training session can feel a little like giving a multivitamin to someone who eats junk food every day, never leaves the couch, and hasn&#8217;t drunk water in two years.</p><p>Instead I think marketing leaders should spend less time asking, <strong>&#8220;How do we get our people to use AI?&#8221;</strong></p><p>A better set of questions is:</p><p><strong>Who owns the outcome? How much of the path do they control? Where are the handoffs (are they necessary?)? What decisions genuinely require a human? What permissions would an agent need to close the loop? And what level of failure are we prepared to tolerate while the system improves?</strong></p><p>Because if you want people to build systems, you have to give them an environment in which systems can actually exist. </p><h2>What differentiates automating systems from tasks</h2><p>Normal task automation is a pipeline. It takes something in, does something, and produces something out. Tomorrow, if you built it well, it does essentially the same thing again.</p><p>This can be incredibly valuable. Most of the workflows I&#8217;ve described in this newsletter fit this description, with some additional intelligence layered on top.</p><p>But the real transformation happens when you start thinking in systems.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;0ac3258f-2c61-42aa-9280-779fa571f60c&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">Task automation:
Input &#8594; AI &#8594; Output

System automation:
Input &#8594; AI &#8594; Action &#8594; Result &#8594; Measurement &#8594; Memory &#8594; Better next action</code></pre></div><p>The key difference between the two is that a task ends when the output is produced. A system exists to achieve some outcome, which means the system has to know whether it&#8217;s on track or not.</p><p>If an AI writes an ad, its job is done. If an AI is helping run paid for you, writing the ad is only one step. It needs to know whether the ad ran, how it performed, what that performance means, what should change, and whether the next iteration did any better.</p><p>In other words, the output of one run becomes context for the next.</p><h2>Questions as the design tool</h2><p>The classic way of thinking about a job is that it&#8217;s a set of tasks. I think that applies to some work, but it&#8217;s a dangerous framework for modern knowledge work because:</p><ol><li><p>It confuses the means with the end</p></li><li><p>It leads to the problematic output &gt; outcome thinking</p></li></ol><p>Anyone who has ever been responsible for something fuzzy (grow trials, reduce churn, increase ARPA, increase efficiency) knows this especially well. There are so many variables, inputs, and factors at play that you need to become very good at asking the right questions so you know what to do.</p><p><strong>In other words, questions expose the decision-making structure of the job while tasks often hide it.</strong></p><p>Here&#8217;s how you might apply this content.</p><div class="callout-block" data-callout="true"><p>1. What should we work on?</p><p>2. Is this actually ours to write?</p><p>3. Make the thing.</p><p>4. Should it go out?</p><p>5. Did it work?</p><p>6. So should we do more of this, or less?</p><p>7. What did we learn that we should never argue about again?</p></div><p>This is also why outcome ownership matters. If your job is &#8220;write the blog post,&#8221; the natural thing to automate is writing the blog post. </p><p>If your job is &#8220;grow qualified organic acquisition,&#8221; suddenly the relevant system includes deciding what to publish, creating it, distributing it, measuring it and changing what you do next.</p><p>If this all sounds super fuzzy, here&#8217;s a more practical/detailed example.</p><p><strong>1. What should we work on?</strong> Back in my day (old man yelling at clouds) I built content calendars based on keyword data from Semrush and feedback from sales. Now several agents run on their own schedules and write into one shared backlog: search decay, competitor pages outranking us, People-Also-Ask, customer language from sales calls and support. Then a routine ranks them against each other so <span>I&#8217;m looking at one ordered list instead of a bunch of dashboards.</span></p><p><strong>2. Is this ours to write?</strong> Does it match our positioning and who we sell to, and have we already covered it. The second question was a little trickier to solve. I needed to build an index of everything published that returns &#8220;we own this,&#8221; &#8220;new angle on something we own,&#8221; or &#8220;genuinely new.&#8221; </p><p><strong>3. Make the thing.</strong> Here there are separate flows that generate a first draft that I then work through and adjust depending on the topic.</p><p><strong>4. Should it go out?</strong> These ship on a schedule unless I type <code>HOLD</code> and the slug into Slack. </p><p><strong>5. Did it work?</strong> A routine goes back two to six weeks later and asks what happened to those specific pages. Did Google index them, did clicks hold, what does GA4 tell us, are they being cited by LLMs.</p><p><strong>6. More or less?</strong> On Sundays, one routine reads the answer to question 5 and rewrites the volume limits every other routine runs at. </p><p><strong>7. What did we learn?</strong> Every correction I make becomes a written rule.</p><p>The last routine to build is the one that watches the other routines and alerts you in Slack when something is off.</p><h2>Rome wasn&#8217;t built in a day</h2><p>The temptation is to perfect one part of the system before moving on. </p><p>Having done both, my advice is to build the thinnest possible version of the entire loop first, even if half the steps are crude or still involve you. </p><p>What matters is that an action produces an outcome, the outcome gets measured, and that measurement changes what happens next. </p><p>That makes it easier to improve the weakest parts of the loop.</p>]]></content:encoded></item><item><title><![CDATA[How to check if your content is slop]]></title><description><![CDATA[Is your content slop, mostly slop, mostly real, or not slop? Find out here.]]></description><link>https://www.hiresecondshift.com/p/how-to-check-if-your-content-is-slop</link><guid isPermaLink="false">https://www.hiresecondshift.com/p/how-to-check-if-your-content-is-slop</guid><dc:creator><![CDATA[Drew Wilkinson]]></dc:creator><pubDate>Thu, 20 Aug 2026 09:43:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OBHE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c9793c6-2de1-448f-894d-7bfef396d083_3200x1800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OBHE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c9793c6-2de1-448f-894d-7bfef396d083_3200x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OBHE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c9793c6-2de1-448f-894d-7bfef396d083_3200x1800.png 424w, https://substackcdn.com/image/fetch/$s_!OBHE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c9793c6-2de1-448f-894d-7bfef396d083_3200x1800.png 848w, https://substackcdn.com/image/fetch/$s_!OBHE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c9793c6-2de1-448f-894d-7bfef396d083_3200x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!OBHE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c9793c6-2de1-448f-894d-7bfef396d083_3200x1800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OBHE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c9793c6-2de1-448f-894d-7bfef396d083_3200x1800.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c9793c6-2de1-448f-894d-7bfef396d083_3200x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:501437,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.hiresecondshift.com/i/211974432?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c9793c6-2de1-448f-894d-7bfef396d083_3200x1800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!OBHE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c9793c6-2de1-448f-894d-7bfef396d083_3200x1800.png 424w, https://substackcdn.com/image/fetch/$s_!OBHE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c9793c6-2de1-448f-894d-7bfef396d083_3200x1800.png 848w, https://substackcdn.com/image/fetch/$s_!OBHE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c9793c6-2de1-448f-894d-7bfef396d083_3200x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!OBHE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c9793c6-2de1-448f-894d-7bfef396d083_3200x1800.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Will slop be the word of 2026? First there was LinkedIn&#8217;s accusatory button. Then there was the news that Claude is watermarking content. All this caused a lot of consternation, glee, and a painful volume of &#8220;I told you so&#8221; LinkedIn takes.</p><p>What the broader reaction tells me is that the penny hasn&#8217;t dropped for the vast majority of folks and that people need to go read Ryan Law&#8217;s article from 2021,<a href="https://www.animalz.co/blog/youre-a-content-marketer-not-a-writer"> &#8220;You&#8217;re a Content Marketer, Not a Writer.&#8221;</a> </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.hiresecondshift.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 The Second Shift Club! 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>The discourse has been obsessing over em dashes, tell-tale sentence structures, and an LLM&#8217;s tendency to create whacky and awkward analogies. I get it! It&#8217;s fun to dunk on super lazy AI copy.</p><p>But my view is that the obsession with copy assumes that people are hanging on every word of your blog, report, or FAQ. I don&#8217;t believe that&#8217;s the case for a myriad of reasons, but mostly because the way many of us consume information is undergoing a radical shift.</p><p>Put in very simple terms: I spend a chunk of my day interfacing with LLMs and while I chuckle at their AI-isms, I don&#8217;t really care about their phrasing because I&#8217;m (mostly) getting tons of value when it comes to doing things. </p><p>So the question is does your content provide value beyond what someone could get from interfacing with ChatGPT. If I want to read beautiful, human-constructed prose I have a stack of novels that I&#8217;ve been meaning to get through (currently reading <a href="https://fitzcarraldoeditions.com/books/flights/">Flights by Olga Tokarczuk</a> which I can&#8217;t recommend enough).</p><p>Anyway I built a way to check your content for you. Paste a link, it reads the page and answers one question: could an LLM have written this?</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://check.hiresecondshift.com/&quot;,&quot;text&quot;:&quot;Check for slop&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://check.hiresecondshift.com/"><span>Check for slop</span></a></p><p>And here are the results for a page I recently refreshed. (Most of the value, IMO, comes from the suggestions on how to de-slopify it.)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Vd7Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc91f739d-d698-4c02-9b5e-6370952e64aa_3024x9408.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Vd7Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc91f739d-d698-4c02-9b5e-6370952e64aa_3024x9408.png 424w, https://substackcdn.com/image/fetch/$s_!Vd7Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc91f739d-d698-4c02-9b5e-6370952e64aa_3024x9408.png 848w, https://substackcdn.com/image/fetch/$s_!Vd7Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc91f739d-d698-4c02-9b5e-6370952e64aa_3024x9408.png 1272w, https://substackcdn.com/image/fetch/$s_!Vd7Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc91f739d-d698-4c02-9b5e-6370952e64aa_3024x9408.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Vd7Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc91f739d-d698-4c02-9b5e-6370952e64aa_3024x9408.png" width="1456" height="4530" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c91f739d-d698-4c02-9b5e-6370952e64aa_3024x9408.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:4530,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2917671,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.hiresecondshift.com/i/211974432?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc91f739d-d698-4c02-9b5e-6370952e64aa_3024x9408.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Vd7Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc91f739d-d698-4c02-9b5e-6370952e64aa_3024x9408.png 424w, https://substackcdn.com/image/fetch/$s_!Vd7Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc91f739d-d698-4c02-9b5e-6370952e64aa_3024x9408.png 848w, https://substackcdn.com/image/fetch/$s_!Vd7Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc91f739d-d698-4c02-9b5e-6370952e64aa_3024x9408.png 1272w, https://substackcdn.com/image/fetch/$s_!Vd7Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc91f739d-d698-4c02-9b5e-6370952e64aa_3024x9408.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em><strong>I have also included a separate skill if you want to run this as part of a broader workflow in a new Github repo: https://github.com/secondshiftclub/workflows/. It includes past workflows from previous editions of this newsletter. Have at it!</strong></em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.hiresecondshift.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 The Second Shift Club! 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><item><title><![CDATA[How to identify and audit topic clusters on your website]]></title><description><![CDATA[I built an automated pipeline that tells my team and I what pages to keep, merge, or kill, and whether traffic is valuable or not.]]></description><link>https://www.hiresecondshift.com/p/how-to-identify-and-audit-topic-clusters</link><guid isPermaLink="false">https://www.hiresecondshift.com/p/how-to-identify-and-audit-topic-clusters</guid><dc:creator><![CDATA[Drew Wilkinson]]></dc:creator><pubDate>Wed, 12 Aug 2026 14:55:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OUKx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F467863a6-d282-4207-aa81-7edc96c68027_3200x1800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I played pickup basketball recently for the first time in about six years. My previous attempt to make a comeback ended up with a very badly sprained ankle. I am glad to report no injuries this time, though my lower limbs are making themselves known.</p><p>Just like my jump shot, I recently dusted off something else from my past: topic clusters. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.hiresecondshift.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 The Second Shift Club! 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>I think the AI-era is exposing two things: </p><ul><li><p>That website traffic as a metric is/was stupid and that most content is/was corporate navel-gazing with zero impact on the bottom line. </p></li><li><p>That commodity content (what is X, how to do Y) is dead.</p></li></ul><p>I have no well-formed answer yet on how to navigate this beyond #tryyourbest and fight the urge to start dancing on TikTok.</p><p>All of that said I do think there is value in thinking about your website as an entity (and how your content feeds the entity&#8217;s reputation). And also that it should be easy for any bot to identify <em>the</em> page on your website for a specific topic. </p><p>And because I&#8217;m not ready to dance. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OUKx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F467863a6-d282-4207-aa81-7edc96c68027_3200x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OUKx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F467863a6-d282-4207-aa81-7edc96c68027_3200x1800.png 424w, https://substackcdn.com/image/fetch/$s_!OUKx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F467863a6-d282-4207-aa81-7edc96c68027_3200x1800.png 848w, https://substackcdn.com/image/fetch/$s_!OUKx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F467863a6-d282-4207-aa81-7edc96c68027_3200x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!OUKx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F467863a6-d282-4207-aa81-7edc96c68027_3200x1800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OUKx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F467863a6-d282-4207-aa81-7edc96c68027_3200x1800.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/467863a6-d282-4207-aa81-7edc96c68027_3200x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:499592,&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://www.hiresecondshift.com/i/210595279?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F467863a6-d282-4207-aa81-7edc96c68027_3200x1800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OUKx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F467863a6-d282-4207-aa81-7edc96c68027_3200x1800.png 424w, https://substackcdn.com/image/fetch/$s_!OUKx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F467863a6-d282-4207-aa81-7edc96c68027_3200x1800.png 848w, https://substackcdn.com/image/fetch/$s_!OUKx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F467863a6-d282-4207-aa81-7edc96c68027_3200x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!OUKx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F467863a6-d282-4207-aa81-7edc96c68027_3200x1800.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>First, the results</h2><p>I&#8217;ve run this pipeline for two topic clusters. It&#8217;s helped me identify:</p><ul><li><p>79 pages that need to be retired or merged into existing pages.</p></li><li><p>The 16% of pages that drive 93% of the clicks. </p></li><li><p>Eleven pages splitting 107K impressions for one keyword at a collective 0.1% CTR</p></li><li><p>And a host of other things! </p></li></ul><p>I have now rewritten/published seventeen pages off the back of it, with plans to scale production. It&#8217;s a little soon to declare victory, but early signs are promising. </p><h2>What you need to run this</h2><ul><li><p>You need to enable the Search Console API and create credentials.  This is free and if you ask your LLM of choice it will explain the steps. (Note: it&#8217;s a bit of a pain in the ass though, tut-tut Google.)</p></li><li><p>Ahrefs API (or similar SEO tool).</p></li><li><p>Claude Code (or Codex) to write scripts.</p></li><li><p>I also use AirOps for fan out queries and to understand what articles are getting cited.</p></li></ul><h2>The workflow architecture</h2><p>Seven scripts, run in order. Every output is a CSV, every API response is cached, and the final deliverables (a decision workbook and the stakeholder deck itself) are generated from the data, so a re-run refreshes every number in every slide.</p><pre><code><code>[Inventory: markdown corpus scan]
      |
      v
[GSC pull: page metrics]&#9472;&#9472;&#9472;[GSC pull #2: top 250 queries PER URL]
      |                              |
      v                              v
[Ahrefs pull: you + competitors]   [Intent classification]
      |                              |
      v                              |
[Embeddings: local bge-small]        |
      |                              |
      +&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;+
                     v
              [Join &#8594; master.csv]
                     |
            +&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;+&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;+
            v                 v
   [Decision workbook]   [Deck, generated]</code></code></pre><h3>Step 1: Inventory what actually exists</h3><p>Get your site into a markdown corpus first (crawl it once; ours is ~6,600 pages of markdown). Shoutout to my awesome web devs who did this for me (it now runs weekly). You can also figure it out with Screaming Frog if you don&#8217;t have awesome web devs at your disposal.</p><p>Then a script scans it for pages <em>materially about</em> the topic. The topic has to be the page&#8217;s primary subject and not a passing mention. After it writes a CSV: URL, slug, title, page type, word count.</p><p>This sounds trivial, but is probably the most important step of the process.  &#8220;How many pages do we have about X&#8221; is a question most content teams can&#8217;t answer easily if they&#8217;re managing a large-ish site. </p><p>It&#8217;s also where the skeletons surface. I saw the wrong-language pages on English URLs; debris from a platform migration eighteen months earlier, sitting there cannibalizing the English pages for their own keywords. </p><h3>Step 2: Pull the queries, not the clicks</h3><p>Two Search Console scripts. The first pulls standard page-level metrics for a 90-day window. Everyone has this.</p><p>The second is the one that matters: top 250 queries for every significant URL &#8212; about 9,000 rows for one cluster's 43 top pages. </p><p>The GSC UI actively discourages this view, which is why nobody has it, which is why page-level click counts survive as a KPI despite being largely meaningless.</p><p>I then classify every query into intent buckets. This is an LLM-shaped task; the prompt is roughly:</p><pre><code><code>Classify each search query into exactly one bucket for [COMPANY],
a [CATEGORY] company:

- JUNK: hack/spy/surveillance intent, prank tools (&#8221;bomber&#8221;),
  pirated/modified apps, anything with zero legitimate buyer intent
- CONSUMER: legitimate but non-commercial (&#8221;is [app] down&#8221;,
  &#8220;[app] usage by country&#8221;)
- BUSINESS: API/developer, business accounts, pricing, features,
  OTP/verification, marketing use cases, branded queries

Return query, bucket, confidence. When unsure between CONSUMER
and BUSINESS, look at whether the query implies operating an
account at scale.</code></code></pre><p>Roll the buckets up per page and every URL gets an honest label. Ours ranged from 95% business intent (keep, obviously) to 96% craptacular on the biggest traffic page in one cluster (kill, obviously).</p><h3>Step 3: Competitor keyword universes</h3><p>One Ahrefs script pulls the keyword universe for your domain and each competitor in the category, caching every response so re-runs are free. This feeds two things: evidence for the cannibalization calls, and expansion opportunities. These are keywords where a competitor ranks #1 and you don&#8217;t have a page at all. </p><h3>Step 4: Embeddings, locally, for free</h3><p>Embeddings get a lot of hate as a nerdy SEO thing that people use to sell expensive agency engagements. That said, content cannibalization is mostly a machine problem and <span>therefore benefits from a machine-based analysis:</span></p><ul><li><p>Strip each page to its <em>main content</em>. Kill the nav, footer, CTA blocks, and related-posts modules before you do anything else. Skip this and every page on your site scores as similar to every other page.</p></li><li><p>Chunk into ~250-word passages with 40-word overlap; embed every chunk with BAAI/bge-small-en-v1.5 via sentence-transformers. This runs on a laptop, no API (1,239 passages took a couple of minutes).</p></li><li><p>Mean-pool chunks into one normalized vector per page, and keep the chunk vectors. You want two similarity numbers per page pair: whole-page cosine, and the max similarity between any chunk of one page and any chunk of the other. The first catches twin pages. The second catches the sneakier case, like a 3,000-word guide whose middle section duplicates another page wholesale, which mean-pooling averages into invisibility.</p></li><li><p>Flag thin pages (under ~200 words of real content) rather than scoring them. </p></li><li><p>Compute all pairwise similarities; keep pairs &#8805; 0.70 <em>as a triage list</em>, not a verdict list. Agglomerative clustering over the page vectors gives you topic groups &#8212; useful for organizing the review, but clusters shift with the linkage settings, so treat them as folders and not findings.</p></li></ul><h3>Step 5: Join and generate</h3><p>A join script merges inventory + GSC + intent + Ahrefs + AI-citation data into one master table, one row per URL. Two generator scripts then build the human-facing outputs: a multi-sheet Excel decision workbook and the PowerPoint deck itself.</p><blockquote><p><strong>Note: You need to look over this stuff manually. I have caught mistakes. (People love to call out LLMs for making mistakes, I also catch my own mistakes.)</strong></p></blockquote><h2>Making the calls</h2><p>The pipeline assembles evidence and then it&#8217;s up to me to pour over them and sanity check the whole thing. Every URL gets <strong>KEEP / KEEP+REWRITE / MERGE / KILL / CHECK-FIRST</strong> (that last one for anything that might be in active campaigns). Three rules of thumb from two rounds of this:</p><ul><li><p><strong>Kill your winners when the queries say so.</strong> I&#8217;ve killed a cluster&#8217;s #1 traffic page. Ranking top-10 for a term that is spammy isn&#8217;t something to brag about. </p></li><li><p><strong>Keep despite similarity when the citations say so.</strong> Figure out how to reangle or rework if valuable and being cited.</p></li></ul><p>I&#8217;ve struggled a bit with how to manage these across multiple languages, so it&#8217;s something I&#8217;m still working through.</p><h2>What happens to the keepers</h2><p>Every kept page then goes through a rewrite discipline that will get its own post soon, but the shape is: a query fan-out audit before outlining (enumerate the sub-queries an AI engine decomposes your topic into &#8212; attributes, comparisons, tasks, regions &#8212; and score the current page against each one), the rewrite grounded in a verified internal fact base (truth layer) rather than whatever the old page claimed, and a verification report mapping every factual claim to its source. </p><h2>Important caveats</h2><ul><li><p>The intent classification is only as good as your buckets. Spend time reading raw queries before you define them; our &#8220;junk&#8221; category was invented <em>after</em> seeing all the junk queries.</p></li><li><p>Small embedding models are fine for near-duplicate detection at page level. They are not fine for judging content <em>quality</em> which is a very subjective, very human job.</p></li><li><p>The similarity threshold does not transfer between corpora. Calibrate every time; it&#8217;s ten minutes.</p></li><li><p>GSC&#8217;s per-URL query API caps what it returns and samples long-tail queries.</p><p></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.hiresecondshift.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 The Second Shift Club! 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><item><title><![CDATA[How to automate getting mentioned in third-party listicles]]></title><description><![CDATA[A simple workflow to get your brand into more third-party listicles.]]></description><link>https://www.hiresecondshift.com/p/how-to-automate-getting-mentioned</link><guid isPermaLink="false">https://www.hiresecondshift.com/p/how-to-automate-getting-mentioned</guid><dc:creator><![CDATA[Drew Wilkinson]]></dc:creator><pubDate>Tue, 04 Aug 2026 06:46:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!gYdp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1b49283-0d13-4cbe-a7b3-523c0ceb6b85_1099x753.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There&#8217;s been a lot written about the value of prompt tracking and its various flaws. I won&#8217;t weigh in too heavily on the efficacy, but I have seen mention rates differ by about 80% between two leading platforms &#8212; Peec and AirOps &#8212; for the same brand. Not exactly something that instills great confidence.</p><p>Either way, I&#8217;ve stopped treating these tools as dashboards and started <span>treating them as a CRM import file.</span></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.hiresecondshift.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 The Second Shift Club! 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>A lot of AEO advice makes it sound like becoming the best-known brand in your category is something you simply forgot to do between breakfast and lunch.</p><p>So how do you do it as a smaller startup? The glib answer is: do a million things well. But one of them you can set up in a single morning &#8212; a simple citation outreach workflow that gets you listed, hopefully, in the articles already being cited by the all-powerful models that determine your fate, somewhere between the coffee and the daily pang of existential dread about <span>whether cricket farming or tilapia farming is the safer career in the age of AI.</span></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gYdp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1b49283-0d13-4cbe-a7b3-523c0ceb6b85_1099x753.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gYdp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1b49283-0d13-4cbe-a7b3-523c0ceb6b85_1099x753.png 424w, https://substackcdn.com/image/fetch/$s_!gYdp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1b49283-0d13-4cbe-a7b3-523c0ceb6b85_1099x753.png 848w, https://substackcdn.com/image/fetch/$s_!gYdp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1b49283-0d13-4cbe-a7b3-523c0ceb6b85_1099x753.png 1272w, https://substackcdn.com/image/fetch/$s_!gYdp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1b49283-0d13-4cbe-a7b3-523c0ceb6b85_1099x753.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gYdp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1b49283-0d13-4cbe-a7b3-523c0ceb6b85_1099x753.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a1b49283-0d13-4cbe-a7b3-523c0ceb6b85_1099x753.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:174838,&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://www.hiresecondshift.com/i/209362912?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1b49283-0d13-4cbe-a7b3-523c0ceb6b85_1099x753.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gYdp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1b49283-0d13-4cbe-a7b3-523c0ceb6b85_1099x753.png 424w, https://substackcdn.com/image/fetch/$s_!gYdp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1b49283-0d13-4cbe-a7b3-523c0ceb6b85_1099x753.png 848w, https://substackcdn.com/image/fetch/$s_!gYdp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1b49283-0d13-4cbe-a7b3-523c0ceb6b85_1099x753.png 1272w, https://substackcdn.com/image/fetch/$s_!gYdp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1b49283-0d13-4cbe-a7b3-523c0ceb6b85_1099x753.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p></p><blockquote><p><em>This workflow could be applied to broken backlinks, pitching website&#8217;s on new data studies your brand launches, and a hundred other things.</em></p></blockquote><h2><span>First, the results </span></h2><p>I&#8217;ve been running this for about six weeks, and it&#8217;s netted 7 inclusions so far. The emails achieve about a 10% conversion rate, which seems reasonably strong. (I do expect it to decline over time as the easier targets bite first.)</p><h2>What you need to run this</h2><p>On top of Claude Code or Codex, for the most basic version of this to run you need:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;f9fcf1b0-7524-4196-b008-91ddfdd7da4e&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">Peec Starter                      $95/mo
Apollo Free                         $0
Notion + Gmail + Slack              $0
Node scripts                        $0
&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;
                                  $95/mo</code></pre></div><p>This also works with AirOps, but their pricing is a lot less startup friendly.</p><blockquote><p><em>A caveat: this is the logic and the prompts, not a copy-paste repo. The two Node scripts are a few hundred lines each and tuned to my category, so I&#8217;ve described what they do rather than pasting them. Hand any section here to Claude or ChatGPT and it&#8217;ll write you the script&#8230; that&#8217;s how mine got written. </em>&#128517;</p></blockquote><h2><strong>The architecture</strong></h2><p>This flow consists of several cloud routines that run on a weekly basis. I considered writing a post about setting up Claude Code and cloud-based routines, but there are tons of helpful resources out there (here&#8217;s a <a href="https://www.youtube.com/watch?v=akcCiWLe51Q">19-minute video</a> on the subject) and Codex/Claude will also walk you through it. </p><p>The workflow is as follows:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;b90abbac-c95d-4370-b766-8b8db50c7de6&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">[Discovery: 3 sources] &#8594; [Dedupe vs cache] &#8594; [Verify on the LIVE page]
      &#8594; [Score by leverage] &#8594; [CRM row] &#8594; [Draft &#8212; human sends] &#8594; [Closed loop]</code></pre></div><p>I made the decision early-on to separate the two agents. </p><ul><li><p><strong>Radar</strong> (weekly + a daily fresh-listicle pass): this is discovery only. This finds and verifies targets and writes Notion rows. No contact database and no mailbox access. Those connectors are switched off on this agent.</p></li></ul><ul><li><p><strong>Drafter</strong> (weekly): picks up rows marked ready, finds the human, writes the pitch, leaves it as a draft in a Gmail account.</p></li></ul><h3>Source 1: AI prompt tracking tool</h3><p>Start here, because it needs no scripts at all. Your AI-visibility tool's MCP can provide the data. The agent just asks it two questions in order. </p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;2e92f6be-6f07-462d-9efb-3702b7042ab8&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">PRIMARY SOURCE &#8212; [AI-VISIBILITY TOOL], project &#8220;[COMPANY]&#8221; ([PROJECT_ID]):


STEP 1 &#8212; Gap domains. get_domain_report, last 90 days, filters

domain_classification in [Editorial, Reference], having gap &gt;= 2 ([COMPANY] absent

but &gt;= 2 competitor brands present), order_by citation_rate desc, limit 50. Then run

a second pass restricted to the ICP topics ([TOPIC A], [TOPIC B] &#8212; resolve topic ids

via list_topics) with gap &gt;= 1: lower volume, highest buyer fit. Ignore

academic/irrelevant domains (nih.gov, sciencedirect, springer, *.edu).


STEP 2 &#8212; Exact pages. Top ~15 domains: get_url_report per domain, filter

url_classification in [Listicle, Comparison, Alternative]. Skip competitor-owned and

our own domains. Note each page&#8217;s retrieval_count and mentioned_brand_ids.
</code></pre></div><p><strong>Note: Your tracked-prompt list is the radar&#8217;s aim.</strong> The scan can only ever surface domains that get cited for prompts you&#8217;re actually tracking. So if you point it at the wrong questions, it will diligently find you the wrong pages. Make sure queries map to buying-intent and are likely to surface multiple brands. </p><h3><strong>Source 2: The backlink link-gap</strong></h3><p>I use Ahref&#8217;s API for this step. (A good example where Claude can write you a script to pull the key information.)</p><p>The logic is simple subtraction. I pull each competitor&#8217;s backlinks with aggregation: 1_per_domain, pull my own, subtract mine out, and keep whatever links to two or more of them. Write it to CSV sorted by competitor count first and domain rating second, then send the URLs straight into verification.</p><h3>Source 3: Firehose API</h3><p>This is useful for finding articles that have just been published. These have been some of the most receptive recipients of outreach. (Its API works very nicely with your LLM of choice.)</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;33ee18ce-4260-44e4-9b8b-9a7bafd6a458&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">const LISTICLE_SIGNALS = [
  "best ", "top ", " vs ", "vs.", "alternative", "alternatives", "comparison",
  "compare", "roundup", "tools for", "software for", "platforms for",
  "options for", "solutions for", "list of", "reviewed", "buyer", "guide to",
];
const CATEGORY_TERMS = [
 INSERT YOUR TERMS
];

const isListicle = LISTICLE_SIGNALS.some(s =&gt; hay.includes(s));
const inCategory = CATEGORY_TERMS.some(t =&gt; hay.includes(t));
return isListicle &amp;&amp; inCategory;   // BOTH, not either</code></pre></div><h2>Check and score the list</h2><p>The next step is to vet the URLs you&#8217;ve pulled to ensure they&#8217;re the right ones for you to target.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;04344a9f-0116-4b69-abcb-1bdbdcb22885&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">You find CITATION OPPORTUNITIES for [COMPANY] ([DOMAIN]), a [CATEGORY] company.
The lever is being listed in the third-party roundups, listicles, and comparison articles that AI engines
cite. Your job: from web pages just published, keep only the ones where [COMPANY]
could realistically be pitched for INCLUSION.

KEEP if the page is a third-party listicle / roundup / "best X tools" / "top software" /
"[competitor] alternatives" / comparison article in the [CATEGORY] space &#8212; i.e. a page
that lists multiple vendors and a writer or editor could add [COMPANY] to.

SKIP if: a single-vendor product/pricing page; a competitor's OWN domain; a job posting;
generic industry news with no vendor list; off-topic; or low-quality auto-generated spam.

For each item return: keep (bool), topic (short), tools_listed (array of vendor names
you can see), company_listed (bool &#8212; are we already in it), authority ("high"/"medium"/
"low" guess from domain + writing), pitch_angle (one line: why we fit this list), reason.

Return ONLY valid JSON, no fences:
{"results":[{"index":0,"keep":true,"topic":"...","tools_listed":["..."],
"company_listed":false,"authority":"medium","pitch_angle":"...","reason":"..."}]}</code></pre></div><p>The next step is to rank the pages.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;cbf95be0-3c23-4b0e-a742-2f38697512a9&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">live_score = retrievals &#215; competitors_on_the_live_page

Boost:   page frames the category the way your ICP does
         fresh last_updated
         stale vendors present (hook)
         submission route found
Demote:  pay-to-play directories
         wire-service aggregators</code></pre></div><p>Taken together it looks like this, running on a schedule with three connectors: the AI-visibility tool, the CRM, and Slack.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;1e5d28cb-70aa-4137-a310-35df882a089b&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">You find where [COMPANY] ([DOMAIN]) should get CITED to improve AEO visibility.
DISCOVERY ONLY: you write verified targets to the Outreach CRM. The outreach-drafter
routine handles contacts and emails. Never draft or send email here.

STEP 1 &#8212; Gap domains. Pull the domain report, last 90 days, filters
domain_classification in [Editorial, Reference], having gap &gt;= 2 (we are absent but
&gt;=2 competitor brands are present), order by citation_rate desc, limit 50. Run a
second pass restricted to the ICP topics with gap &gt;= 1 &#8212; lower volume, highest buyer
fit. Ignore academic/irrelevant domains (nih.gov, sciencedirect, springer, *.edu).

STEP 2 &#8212; Exact pages. For the top ~15 domains, pull the URL report, filter
url_classification in [Listicle, Comparison, Alternative]. Skip competitor-owned and
our own domains. Note each page's retrieval_count and mentioned_brand_ids.

STEP 3 &#8212; SECOND SOURCE (backlink link-gap):
  node scripts/ahrefs-linkgap.mjs --limit 500 &gt; /tmp/linkgap.csv
Take the top ~25 pages (&gt;=2 competitors linked). Skip cleanly if the key is unset.

STEP 4 &#8212; THIRD SOURCE (fresh listicles):
  node firehose/citation-radar.mjs --since 24h
Take every keeper. These are hours old &#8212; they will have NO citation history, which is
expected. Do not drop them for zero retrievals; floor the score at 1.

STEP 5 &#8212; Dedupe BEFORE verifying (cheap first): check every candidate domain against
data/crm-domains.csv. Only for cache misses, double-check the CRM by domain. Work
only NEW domains/URLs.

STEP 6 &#8212; VERIFY against the live page:
  node scripts/verify-targets.mjs --json candidates.json
Keep only verdict=LIST_CONFIRMED. Drop NOT_A_LIST (advice articles &#8212; the big-publisher
trap). If we're already present, record it as a WIN in the run log, not a target.
BLOCKED pages: retry once via WebFetch and judge manually; if EVERYTHING is BLOCKED,
it's the egress policy, not dead targets &#8212; stop and report.

STEP 7 &#8212; Score + tier. live_score = max(retrievals,1) x competitors_on_page. Boost
ICP-framed pages, fresh last_updated, stale vendors present, submission route found.
Demote pay-to-play directories and wire aggregators. Rank the batch.

STEP 8 &#8212; Write each verified NEW target to the CRM: Name (domain), Target Page,
Outlet Type, # competitors present, AI Citations (90d), Pitch Angle (the script's
hook_hints + why we belong on this specific page; ground every claim in
brand/positioning.md), Status = "Ready to contact", Source ([AI tool]/ahrefs/firehose),
Notes = leverage math + run date. Then APPEND the same domains to
data/crm-domains.csv and commit + push.

STEP 9 &#8212; CLOSED LOOP (first run of each month): pull CRM rows with Status = Added.
For each, pull the URL report for that exact URL, last 30 days: does mentioned_brand_ids
now include us? Write the verdict into Notes (cited-after-add / added-but-not-cited-yet)
and summarize conversion rate BY OUTLET TYPE in the Slack digest.

STEP 10 &#8212; Post the top 10 to Slack: target page, competitors on it, live-verified hook,
pitch angle. Include how many candidates each source contributed, how many died in
verification, and the monthly conversion report when STEP 9 ran.

HARD RULES: discovery only &#8212; no contact lookups, no mailbox, no sending. Never log an
unverified page as a target. Never claim [PRODUCT GAP A] or [PRODUCT GAP B] &#8212; those are
gaps, not features. Commit the crm-domains.csv update every run.</code></pre></div><h2><strong>Contacts and drafts</strong></h2><p>As mentioned, generating outreach is a separate routine with separate connectors: contact database (Apollo), mailbox (Gmail), CRM (Notion).</p><p>Since the volume is relatively low and all emails are reviewed by me, I simply have Claude write the drafts to Gmail directly, where I do a light edit and send on a weekly basis.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;2964bbeb-37f1-4283-b375-60ecfca7dca4&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">You are the outreach drafter. Pull CRM rows with Status = "Ready to contact", highest
live_score first, firehose-sourced rows first within that, max 12 per run.

1. FIND THE HUMAN. Use the page's byline first. Search the contact DB by DOMAIN in
   batches of 10 &#8212; domain search is free; NEVER bulk-match individual people, that
   burns a credit each. Save the person_id on the CRM row; reveal the email only at
   draft time (1 credit). No contact found &#8594; mark channel = LinkedIn or web-form and
   move on. Do not guess email patterns.

2. VERIFY THE HOOK ON THE PAGE. Before writing a line, re-fetch the target page and
   confirm the hook is really there &#8212; the dead vendor, the stale date, the competitor
   slot. If it's been fixed since discovery, pick a new hook or drop the row. Never
   write a pitch from cached data.

3. WRITE THE DRAFT (template below). Sender = the founder for founder-to-founder
   targets, or the regionally-matched teammate for regional outlets.

4. LEAVE IT AS A DRAFT. Never send. Post a Slack summary listing each draft, its
   recipient, and the verified hook, so a human can review and send in one sitting.

HARD RULES: never offer money to an editorial listicle or any journalist. Never invent
an on-page detail. Every product claim must trace to positioning.md. LinkedIn connection
notes cap at 300 characters &#8212; count them.</code></pre></div><p>The pitch template:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;e5c2325c-fc3d-426a-9b35-1f21ee7bbec9&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">Subject: [the specific thing that's wrong on their page]

Hi [name] &#8212;

[ONE verified, specific on-page detail. "Your best-X roundup still lists [defunct
vendor], which shut down in [year]." / "The list was last updated [date] and
[competitor] has since [changed thing]."]

[ONE sentence: the gap you fill on that specific page, in their framing, not yours.]

[SOMETHING YOU GIVE: a mention from your own cited guides, an integration, first-party
data, a startup deal &#8212; pick per segment.]

Happy to send a 40-word blurb in your format if it's useful.

[Sender]</code></pre></div><h2>Let me know how you get on</h2><p>I like this use case because it&#8217;s a repetitive research task with a clear definition of done. Pull the report, check the page is really a list, count who&#8217;s on it, find the byline. This is exactly the kind of work that is tedious and never gets done manually the minute more pressing stuff comes up and that an agent <span>does happily.</span></p><p>The competitor list, the category terms, the prompt universe, the blocklists&#8230; all of that is specific to a category, and I got a lot of it wrong on the first pass. Yours will <span>be wrong somewhere elses so be patient as you play around with it.</span></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.hiresecondshift.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 The Second Shift Club! 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><item><title><![CDATA[How to mine Reddit for customer language]]></title><description><![CDATA[Use Reddit data for positioning insights, copy inputs, and other cool stuff I haven't thought about.]]></description><link>https://www.hiresecondshift.com/p/how-to-mine-reddit-for-customer-language</link><guid isPermaLink="false">https://www.hiresecondshift.com/p/how-to-mine-reddit-for-customer-language</guid><dc:creator><![CDATA[Drew Wilkinson]]></dc:creator><pubDate>Tue, 28 Jul 2026 12:34:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!XtyP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b1bb226-a2ee-43b3-b8da-27b4825c5066_3200x1800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Keyword tools tend to tell you what people type into Google. Reddit tells you what they actually say. Instead of spamming Reddit with inauthentic brand mentions, you can use the platform&#8217;s posts/comments as a really great (and relatively simple) way to improve AI-generated copy.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XtyP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b1bb226-a2ee-43b3-b8da-27b4825c5066_3200x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XtyP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b1bb226-a2ee-43b3-b8da-27b4825c5066_3200x1800.png 424w, https://substackcdn.com/image/fetch/$s_!XtyP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b1bb226-a2ee-43b3-b8da-27b4825c5066_3200x1800.png 848w, https://substackcdn.com/image/fetch/$s_!XtyP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b1bb226-a2ee-43b3-b8da-27b4825c5066_3200x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!XtyP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b1bb226-a2ee-43b3-b8da-27b4825c5066_3200x1800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XtyP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b1bb226-a2ee-43b3-b8da-27b4825c5066_3200x1800.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4b1bb226-a2ee-43b3-b8da-27b4825c5066_3200x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:345414,&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://www.hiresecondshift.com/i/208819190?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b1bb226-a2ee-43b3-b8da-27b4825c5066_3200x1800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XtyP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b1bb226-a2ee-43b3-b8da-27b4825c5066_3200x1800.png 424w, https://substackcdn.com/image/fetch/$s_!XtyP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b1bb226-a2ee-43b3-b8da-27b4825c5066_3200x1800.png 848w, https://substackcdn.com/image/fetch/$s_!XtyP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b1bb226-a2ee-43b3-b8da-27b4825c5066_3200x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!XtyP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b1bb226-a2ee-43b3-b8da-27b4825c5066_3200x1800.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>Step 1: Find the right subreddits</strong></h2><p>Two questions get you to better sources:</p><ul><li><p>Where does your buyer hang out for reasons unrelated to your product? If you sell to restaurant owners, r/restaurantowners will outperform any software subreddit. People tend to be more honest when it&#8217;s peer-to-peer.</p></li><li><p>Where do people go to complain about the job your product does? The frustration is the raw material.</p></li></ul><p>Practical ways to find them:</p><ul><li><p>Google site:reddit.com &#8220;your problem in plain words&#8221; and note which subreddits keep appearing</p></li><li><p>Open three or four posts you like and check what else those commenters post in</p></li><li><p>Search Reddit for a competitor&#8217;s name and see where it comes up</p></li></ul><h2><strong>Step 2: Pull the data</strong></h2><p>Don&#8217;t scrape, and don&#8217;t rely on Reddit&#8217;s own search. Reddit&#8217;s search caps out at roughly 1,000 results with no way past it, so anything beyond the most recent slice is invisible. Third-party scrapers hit the same wall.</p><p>Use an archive instead. Arctic Shift has the full history, stays current to about yesterday, and has a browser tool that requires nothing technical:</p><ol><li><p>Go to <a href="https://arctic-shift.photon-reddit.com/download-tool">https://arctic-shift.photon-reddit.com/download-tool</a></p></li><li><p>Type the subreddit name (no r/)</p></li><li><p>Choose posts and comments</p></li><li><p>Set a date range; the last three to six months is a good first pass</p></li><li><p>Download, then open the file in Google Sheets or Excel</p></li></ol><p>That&#8217;s the whole thing. If you&#8217;d rather not click through it, any AI assistant with web or code access can do this for you. Just describe what you want:</p><p>&#8220;Pull posts from r/restaurantowners over the last six months that mention PoS, and pull out the recurring complaints.&#8221;</p><p>There&#8217;s an appendix at the bottom with the API details if you or someone on your team wants to automate repeat pulls.</p><h2><strong>Step 3: Read it properly</strong></h2><p>Feeding the file to an AI assistant works well. Ask for recurring themes, common objections, and the phrases that appear most.</p><h2><strong>Step 4: Incorporate it into workflows</strong></h2><p>The next step is to turn this into a small set of durable files that every copy task reads from, refreshed on a schedule.</p><h3><strong>1. The language bank</strong></h3><p>Verbatim phrases, bucketed by who said it and what set them off.</p><p>Don&#8217;t cluster by topic. Grep for the grammatical markers of unmet need: &#8220;I wish,&#8221; &#8220;if only,&#8221; &#8220;I&#8217;m drowning in,&#8221; &#8220;tired of,&#8221; &#8220;the problem is,&#8221; &#8220;my biggest problem,&#8221; &#8220;nobody understands.&#8221; </p><p>Bucket by persona first. &#8220;The schedule is a mess&#8221; is a labour-cost problem from an owner, a workload problem from a GM, a fairness problem from a server. One bucket each, or it averages into mush.</p><p><em>Feeds: Headlines, ad copy, hero sections, subject lines. You stop writing copy and start selecting it.</em></p><h3><strong>2. The objection index</strong></h3><p>Every reason people give for not buying something like yours, counted and dated.</p><p>Store the count, the average score, the best quotes, and the trend. Restaurants: the staff won&#8217;t use it. The processing fees eat whatever you saved on hardware. Menu setup took three weeks. Now I&#8217;ve got the tablets and the paper tickets.</p><p>The trend is the point. An objection that&#8217;s growing earns a section on the page. One that&#8217;s shrinking is a solved category problem (answer it and you sound dated). </p><p><em>Feeds: FAQs, objection blocks, comparison pages, battlecards.</em></p><h3><strong>3. The gap report</strong></h3><p>Your messaging, audited against the corpus. What you claim that the data backs and what the data is full of that you never mention.</p><p>The gaps are the half worth having, and they&#8217;re rarely about your product. A restaurant corpus is thick with anxiety about staff turnover, food costs, delivery-app commissions, and one bad Google review. None of it is a PoS feature. All of it is what your buyer is chewing on the day they hit your page.</p><p><em>Feeds: The blog calendar, top-of-funnel, campaign themes.</em></p><h3><strong>4. Competitor sentiment</strong></h3><p>Not share of voice. Specific failure modes.</p><p>&#8220;We left [X] because&#8230;&#8221; is the most valuable sentence in the corpus, and there are hundreds of them. It hands you the switching trigger, the breaking point, and the exact words a switcher uses to justify the move, which is the copy that converts the next one.</p><p><em>Feeds: Comparison pages, switcher campaigns, sales decks.</em></p><pre><code>RAW CORPUS
  posts + comments, refreshed monthly
      |
      v
EXTRACTION PASS
  segment by persona, then
  match on trigger phrases
      |
      +--&gt; LANGUAGE BANK
      +--&gt; OBJECTION INDEX
      +--&gt; GAP REPORT
      +--&gt; COMPETITOR SENTIMENT
      |
      v
SYNTHESIS
  ranked priority list
  voice-of-customer brief
      |
      v
EVERY COPY BRIEF
  pages, ads, blog, decks
      |
      v
MEASURE WHAT SHIPPED
      |
      +--&gt; feeds the next refresh</code></pre><h2><strong>Important caveats</strong></h2><ul><li><p>It supplements customer conversations, it doesn&#8217;t replace them</p></li><li><p>Reddit skews younger, more US, more English-speaking, more technically inclined.</p></li><li><p>Competitors and their agencies post too. &#8220;We switched to X and never looked back&#8221; is often marketing.</p></li><li><p>A growing share of Reddit text is bot output, karma farming, and reposted old threads.</p></li><li><p>People post when something hurts. Status, ambition, and identity motives &#8212; often the real reason for a purchase &#8212; are nearly invisible in a complaint corpus.</p></li></ul><h2><strong>Appendix: Automating the pull</strong></h2><p>Arctic Shift has a public API for repeatable pulls:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;c025a7a0-6e6f-4673-8a28-acae0437b77d&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">https://arctic-shift.photon-reddit.com/api/posts/search
  ?subreddit=&lt;name&gt;
  &amp;after=&lt;unix-timestamp&gt;&amp;before=&lt;unix-timestamp&gt;
  &amp;sort=asc&amp;limit=100
  &amp;fields=id,created_utc,author,title,selftext,score,num_comments,link_flair_text</code></pre></div><p>Swap /posts/ for /comments/ to pull comments. Notes for whoever wires it up:</p><ul><li><p>Paginate by setting after to the last item&#8217;s created_utc and deduping on id. Bump forward a second when a batch shares a timestamp, or the loop stalls.</p></li><li><p>permalink is not a valid field &#8212; requesting it returns a 400 that kills the whole call. Rebuild links as reddit.com/r/&lt;sub&gt;/comments/&lt;id&gt;/.</p></li><li><p>query=&lt;terms&gt; does full-text filtering and ANDs the terms &#8212; the fastest way to cut a huge subreddit down to relevant posts.</p></li><li><p>Be polite: a short pause between requests and a real User-Agent string.</p></li></ul><p>Once you&#8217;re past a few hundred thousand rows, load the corpus into SQLite rather than re-parsing files. Extraction passes become queries, monthly refreshes become an insert, and the whole thing still fits on a laptop.<br></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.hiresecondshift.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></p>]]></content:encoded></item></channel></rss>