<?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[Needle]]></title><description><![CDATA[Unlock AI-search across all your data sources, effortlessly.]]></description><link>https://blog.needle.app</link><image><url>https://substackcdn.com/image/fetch/$s_!Q4s8!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e0c0a96-c146-4a43-9707-96dc8a0d16b0_1024x1024.png</url><title>Needle</title><link>https://blog.needle.app</link></image><generator>Substack</generator><lastBuildDate>Wed, 06 May 2026 11:49:24 GMT</lastBuildDate><atom:link href="https://blog.needle.app/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Jan Heimes]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[janheimes@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[janheimes@substack.com]]></itunes:email><itunes:name><![CDATA[Needle]]></itunes:name></itunes:owner><itunes:author><![CDATA[Needle]]></itunes:author><googleplay:owner><![CDATA[janheimes@substack.com]]></googleplay:owner><googleplay:email><![CDATA[janheimes@substack.com]]></googleplay:email><googleplay:author><![CDATA[Needle]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Track Your Brand Visibility Across LLMs]]></title><description><![CDATA[You&#8217;ve probably heard of SEO. But have you heard of GEO?]]></description><link>https://blog.needle.app/p/track-your-brand-visibility-across</link><guid isPermaLink="false">https://blog.needle.app/p/track-your-brand-visibility-across</guid><dc:creator><![CDATA[Needle]]></dc:creator><pubDate>Thu, 05 Mar 2026 09:02:38 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/189790146/2df9ec98f4f95c8cf0467de485a98a90.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>You&#8217;ve probably heard of SEO. But have you heard of GEO?</p><p>Generative Engine Optimization is about whether AI models like ChatGPT, Gemini, Perplexity or Claude actually mention your brand when someone asks a relevant question.</p><p>When a potential customer asks an LLM &#8220;What are the best tools to track my brand&#8217;s AI visibility?&#8221;, does your company show up in the answer? If not, you&#8217;re basically invisible in what&#8217;s quickly becoming the primary discovery channel for many buyers.</p><p>There&#8217;s already a growing industry around this. Companies like Profound, Otterly AI, Peec AI, and Athena HQ are building dedicated GEO analytics platforms. But the underlying methodology isn&#8217;t that complicated. You can set up your own tracking system with a simple workflow.</p><h2>How It Works</h2><p>I built a workflow in Needle that runs in four steps:</p><p><strong>1. Index your competitors.</strong> Take the landing pages of 5 to 10 companies in your space and add them to a Needle collection using a web connector. This gives the system context about what these companies actually do and claim.</p><p><strong>2. Extract keywords and generate prompts.</strong> An AI agent reads through all the indexed pages, pulls out the key SEO and GEO-relevant terms, and generates 25 high-intent prompts. The kind of questions a real user would type into ChatGPT or Gemini:</p><ul><li><p>&#8220;What are the top AI search monitoring tools in 2026?&#8221;</p></li><li><p>&#8220;Which platforms help brands track their visibility in generative AI engines?&#8221;</p></li><li><p>&#8220;Recommend tools that analyze how competitors rank in AI assistants vs traditional SERPs.&#8221;</p></li></ul><p><strong>3. Ask the LLM.</strong> Each prompt gets sent to an LLM (in this case Gemini with search enabled). The model answers each one and we capture which brands it mentions.</p><p><strong>4. Score and visualize.</strong> The results get written to a Google Sheet and rendered as an HTML dashboard. You get a competitive heatmap showing who&#8217;s getting mentioned, how often, and for which types of queries.</p><h2>What You Actually Learn</h2><p>When I ran this on 5 GEO analytics companies, the results were immediately actionable:</p><ul><li><p><strong>Profound</strong> dominated with 9 mentions across 25 prompts</p></li><li><p><strong>Otterly AI</strong> performed well with 7 mentions</p></li><li><p><strong>Peec AI</strong> showed up in 5</p></li><li><p>Two companies significantly underperformed</p></li><li><p>28% of prompts returned zero brand mentions, which is a real opportunity gap</p></li></ul><p>The dashboard breaks it all down. Mention counts per brand, which prompts triggered which mentions, and a heatmap showing coverage across all 25 queries.</p><p>You can schedule this to run daily. Over time you build a time series of your GEO score, tracking whether your AI visibility is improving or declining relative to competitors.</p><h2>Why This Matters</h2><p>SEO took 20 years to mature. GEO is just getting started. The companies that figure out how to consistently show up in AI-generated answers will have a serious distribution advantage, especially as more users skip Google entirely and go straight to an LLM.</p><p>The workflow template is available in Needle. Index your competitors&#8217; landing pages, connect a Google Sheet, and run it. If you want to see the full walkthrough, check out the video on our YouTube channel.</p><div><hr></div><p><em>What are you building with Needle?</em></p>]]></content:encoded></item><item><title><![CDATA[How many hashtags has #zapier on Instagram.]]></title><description><![CDATA[How a single workflow turned 50,000 Instagram posts into a lead list]]></description><link>https://blog.needle.app/p/how-many-hashtags-has-zapier-on-instagram</link><guid isPermaLink="false">https://blog.needle.app/p/how-many-hashtags-has-zapier-on-instagram</guid><dc:creator><![CDATA[Needle]]></dc:creator><pubDate>Tue, 24 Feb 2026 09:02:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Q4s8!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e0c0a96-c146-4a43-9707-96dc8a0d16b0_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;598a8308-2452-4ea0-adbc-63beadf55f0f&quot;,&quot;duration&quot;:null}"></div><p>Every single one is someone publicly telling you they use automation tools. They took time out of their day to create content about a specific piece of software, which means they&#8217;re not casual users. They&#8217;re invested. They care enough to post about it.</p><p>Here&#8217;s the thing about hashtags that most people miss.</p><p>We treat them as a discovery mechanism. You post with hashtags so people find your content. That&#8217;s the standard playbook. But flip it around and hashtags become something completely different: a live, constantly updated database of people who&#8217;ve already self-identified around a specific topic.</p><p>#nocode. #aiautomation. #zapier. #make. Every post under those tags is a signal. Someone sat down, created content, and attached a label to it that tells you exactly what world they live in. That&#8217;s more useful market intelligence than most paid research tools will ever give you.</p><p>The problem has always been collecting it. You can search a hashtag manually and scroll through posts one by one. But that&#8217;s not a workflow. That doesn&#8217;t scale. And it definitely doesn&#8217;t give you the structured data you need to actually do something with it.</p><p>So I built a workflow in Needle that does it automatically.</p><div><hr></div><p><strong>How it works</strong></p><p>You pick a hashtag. Paste it into the workflow template. Connect a Google Sheet with the right column headers. Run it.</p><p>Within minutes, every post under that hashtag starts populating your sheet: the Instagram URL, the post content, and the account that created it. The workflow loops through the paginated data until it&#8217;s exhausted every result. You end up with a clean, structured list you can actually work with.</p><p>No code. No API keys. No scraping infrastructure to set up or maintain. Just a workflow template and a Google Sheet.</p><p>I tested it first on #zapier because those are my people. Anyone posting about Zapier is already sold on the idea of automation. They understand the value. They&#8217;ve bought into the category. They just haven&#8217;t found Needle yet, or maybe they have and they&#8217;re comparing.</p><p>Either way, I want to talk to them.</p><div><hr></div><p><strong>What you actually do with the data</strong></p><p>This is where it gets interesting.</p><p>The most obvious use case is outreach. You now have a list of people who posted original content about a specific topic. That&#8217;s not a cold list. You have context: you know exactly what they made, what they said, what angle they took. Your opener writes itself.</p><p>&#8220;Hey, saw your post about the five tools to automate marketing workflows. Curious if you&#8217;ve ever tried building that same flow in Needle. Happy to set it up for you.&#8221;</p><p>That&#8217;s not cold outreach. That&#8217;s a warm conversation backed by genuine context. The response rate difference is significant.</p><p>But beyond outreach, the data is surprisingly useful for everything else too.</p><p>If you&#8217;re trying to find influencer partners, this is your list. People posting original automation content with real engagement aren&#8217;t just users. They&#8217;re builders with an audience. They&#8217;re exactly who you want creating workflows on your platform and talking about it publicly.</p><p>If you&#8217;re doing content strategy, the hashtag data tells you what your audience actually cares about. Read through 200 posts tagged #zapier and patterns emerge fast. The same frustrations come up repeatedly. The same use cases. The same comparisons. That&#8217;s your content calendar, your landing page copy, your next video topic, all extracted from what real people are already saying in public.</p><p>And if you&#8217;re doing competitive research, scraping your competitor&#8217;s branded hashtag is one of the most underrated moves in the playbook. You get a full picture of who&#8217;s using the product, what they&#8217;re building, what they love, what they complain about. Better than any G2 review.</p><div><hr></div><p><strong>The workflow is live</strong></p><p>Pick any hashtag that matters to your business. Connect a Google Sheet. Run it and see what comes back.</p><p>For me the list from #zapier alone was worth it: a mix of agencies, solo creators, consultants, and developers all actively posting about automation. Exactly the audience I&#8217;m building for.</p><p>The template is free on Needle. You just need to know which hashtag to start with.</p><p>&#128073; <a href="https://needle.app/">needle.app</a></p><div><hr></div><p></p><p><em>Which hashtag are you scraping first? I&#8217;m curious what niches people are going after, drop it in the comments.</em></p>]]></content:encoded></item><item><title><![CDATA[I Scraped 147 Instagram Commenters in Minutes: Here's How]]></title><description><![CDATA[A no-code workflow that turns Instagram comments into warm leads]]></description><link>https://blog.needle.app/p/i-scraped-147-instagram-commenters</link><guid isPermaLink="false">https://blog.needle.app/p/i-scraped-147-instagram-commenters</guid><dc:creator><![CDATA[Needle]]></dc:creator><pubDate>Mon, 23 Feb 2026 09:11:18 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/188498213/1297ca7f496ae4abb1c36d0f09687fc7.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Every day, thousands of people publicly signal exactly what they&#8217;re interested in - by commenting on Instagram posts.</p><p>Most people scroll past this. Smart marketers scrape it.</p><p>Here&#8217;s a workflow I built in Needle that automatically pulls everyone who commented on any Instagram post and writes them straight into a Google Sheet &#8212; including their profile, what they said, and when.</p><p><strong>Why this is powerful</strong></p><p>If someone commented under a post about AI automation, they&#8217;re not a cold lead. They already raised their hand. You know their interest, you have their handle, and you can reach out with context.</p><p>That&#8217;s a fundamentally different starting point than buying a list or running ads.</p><p><strong>What you get</strong></p><ul><li><p>Instagram profile of every commenter</p></li><li><p>The exact comment they left</p></li><li><p>Timestamp</p></li></ul><p>All in a Google Sheet, automatically populated. 147 comments? Done in minutes.</p><p><strong>Use cases</strong></p><ul><li><p>Build outreach lists of warm, interest-qualified leads</p></li><li><p>Validate your ICP - who actually engages with content in your space?</p></li><li><p>Find potential partners, creators, or early adopters hiding in plain sight</p></li></ul><p><strong>How to set it up</strong></p><p>You just need the post URL. Paste it into the workflow template, connect your Google Sheet, and run it. No code, no API keys, no scraping infrastructure to maintain.</p><p>&#128073; <a href="https://needle.app/">Try the workflow on Needle</a></p><div><hr></div><p><em>What Instagram posts would you scrape first? Drop it in the comments.</em></p><div><hr></div><p>Want a shorter/punchier version or a different angle?</p>]]></content:encoded></item><item><title><![CDATA[The LinkedIn lead source nobody is using]]></title><description><![CDATA[And the 3-minute workflow that unlocks it]]></description><link>https://blog.needle.app/p/the-linkedin-lead-source-nobody-is</link><guid isPermaLink="false">https://blog.needle.app/p/the-linkedin-lead-source-nobody-is</guid><dc:creator><![CDATA[Needle]]></dc:creator><pubDate>Thu, 19 Feb 2026 10:37:39 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/188475670/aed7b6936194a3119d5673d3d82a958f.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Every week I get asked some version of the same question: &#8220;Where do I find leads that are actually worth reaching out to?&#8221;</p><p>Not just any leads. Warm ones. People who already care about the problem you solve. People who won&#8217;t look at your message and wonder how you got their details.</p><p>The answer is sitting in plain sight on LinkedIn.</p><div><hr></div><h2>The thing about LinkedIn groups</h2><p>LinkedIn groups have a bad reputation. And honestly, most of the time they deserve it. Spam posts, low-effort engagement, people who haven&#8217;t logged in since 2019.</p><p>But that&#8217;s not the point.</p><p>The point is that every person who joined a group about AI automation, RevOps, or no-code tooling made a deliberate decision to do so. They didn&#8217;t stumble in by accident. They searched for it, found it, and clicked join.</p><p>That&#8217;s a self-selection signal. And self-selection signals are rare.</p><p>Compare that to a cold contact list you bought from a data provider. Those people have no idea who you are. They&#8217;ve expressed no interest in anything adjacent to your product. You&#8217;re interrupting them based on a job title, a company size, and a guess.</p><p>Group members are different. They already raised their hand.</p><div><hr></div><h2>The problem nobody solved</h2><p>LinkedIn gives you basically no way to do anything useful with group membership data.</p><p>You can browse members one by one. You can maybe click into a few profiles and manually copy things into a spreadsheet. But there&#8217;s no export button. No API access. No clean way to take that pre-qualified audience and turn it into something you can actually work with.</p><p>So most people, even people who know this opportunity exists, just don&#8217;t act on it. The friction is too high.</p><div><hr></div><h2>What I built</h2><p>This week I put together a Needle workflow that removes that friction entirely.</p><p>It scrapes every member of any LinkedIn group and exports them automatically into a Google Sheet. For each member you get:</p><ul><li><p>Full name</p></li><li><p>LinkedIn profile URL</p></li><li><p>Headline</p></li><li><p>Join date</p></li></ul><p>No code required. Setup takes about 3 minutes. Once it&#8217;s running, it paginates through the entire group on its own, working in batches until every member is captured.</p><p><strong>Here&#8217;s how it works:</strong></p><p><strong>Step 1.</strong> Go to the LinkedIn group you want to target. Open your browser&#8217;s developer tools and navigate to the Network tab.</p><p><strong>Step 2.</strong> Click &#8220;See all members.&#8221; Watch for the API request that loads the member list. Copy it as a fetch request.</p><p><strong>Step 3.</strong> Paste that fetch request into the Needle workflow template. It uses this to authenticate your session and replicate the request across all pages.</p><p><strong>Step 4.</strong> Connect a Google Sheet, hit run, and watch it fill up.</p><p>I tested this on the Automation Hub group, 669 members, all interested in AI and workflow automation. The sheet was full in minutes. Clean, structured, ready to use.</p><div><hr></div><h2>How to actually use this</h2><p>Having the list is just the start.</p><p><strong>Direct outreach.</strong> You have their profile URL and headline. You know the context they came from. That&#8217;s enough to write a genuinely relevant first message, not a templated blast, but something specific that references the group. That specificity alone puts you in a different category from most cold outreach.</p><p><strong>LinkedIn ad targeting.</strong> Upload the profile URLs as a custom audience and run ads directly to group members. You&#8217;re advertising to people who already demonstrated interest in your category.</p><p><strong>Sequenced follow-up.</strong> Combine this with a Needle outreach workflow and you have a full pipeline. Scrape the group, enrich the leads, run a sequence, track replies, all connected.</p><p><strong>Research.</strong> What do these people do? What companies are they from? What do their headlines tell you about how they see themselves? That&#8217;s market research you can&#8217;t easily buy.</p><div><hr></div><h2>The bigger pattern</h2><p>The most valuable automation is rarely the complicated stuff.</p><p>It&#8217;s the simple thing that removes friction from something you already know you should be doing.</p><p>Most founders and sales teams know they should be doing more targeted outreach. They know LinkedIn groups are an underused channel. They just don&#8217;t do it because the manual version is painful enough to skip.</p><p>Automation doesn&#8217;t change the strategy. It just makes the obvious thing easy enough to actually happen.</p><p>The strategy was already there. The workflow just removes the excuse.</p><div><hr></div><p>What LinkedIn group would you target? Reply and let me know. Some of the best workflow ideas I have built started as a reply to one of these posts.</p><p>Until next week.</p><p><strong>Jan</strong>, <em>Needle<br>https://needle.app/workflow-templates/scrape-linkedin-group-members</em></p>]]></content:encoded></item><item><title><![CDATA[Scraper #7: Enrich Any Lead List with LinkedIn Profiles Automatically]]></title><description><![CDATA[Subtitle: You scraped 500 leads. Now find their LinkedIn URLs, websites, and emails -without doing it by hand.]]></description><link>https://blog.needle.app/p/scraper-7-enrich-any-lead-list-with</link><guid isPermaLink="false">https://blog.needle.app/p/scraper-7-enrich-any-lead-list-with</guid><dc:creator><![CDATA[Needle]]></dc:creator><pubDate>Sun, 15 Feb 2026 09:22:19 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/187207358/178f6332733d2b15bd0bdea783858251.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Day 7. The final scraper. And honestly, this one might be the most universally useful.</p><p>You&#8217;ve spent this week scraping leads from Luma, Meetup, LinkedIn, and Instagram. You have names, maybe companies, maybe usernames. But you need LinkedIn URLs, websites, and emails before you can actually do anything useful with them.</p><p>That&#8217;s what this workflow does.</p><p><strong>The workflow:</strong></p><p>Take any Google Sheet with lead data. The more columns the better &#8212; name, company, position. Connect it to Needle&#8217;s enrichment template and run.</p><p>The AI agent iterates over each row. For each lead, it searches LinkedIn and runs a web search to find the right profile. It writes back the LinkedIn URL, website, and a confidence score &#8212; so you know how reliable the match is.</p><p><strong>The more data you give, the better it works:</strong></p><p>Just a name? It&#8217;ll try, but confidence will be low. Name + company + position? Much higher match rate. Name + company + position + location? Almost guaranteed.</p><p>If a human wouldn&#8217;t be able to find the profile with a Google search and LinkedIn search, the agent won&#8217;t either. But for the vast majority of leads with reasonable data, it works surprisingly well.</p><p><strong>What you can customize:</strong></p><p>The default template finds LinkedIn URLs and websites. But you can adjust the prompt to prioritize finding emails, or plug in tools like Hunter.io for email discovery. The workflow is flexible &#8212; make it find whatever data you need.</p><p><strong>When to use it:</strong></p><p>As the final step after any of the 6 scrapers from this week. Or with any lead list you already have - CRM exports, event registrations, conference badge scans, manual lists. Anything where you have names but need contact details.</p><div><hr></div><p><strong>That&#8217;s the series.</strong></p><p>7 scrapers. 7 days. Free templates for all of them.</p><p>Here&#8217;s what we covered:</p><ol><li><p><strong>Luma Event Attendees</strong> &#8212; scrape guests from any event</p></li><li><p><strong>Meetup Event Attendees</strong> &#8212; same concept, different platform</p></li><li><p><strong>LinkedIn Competitor Audience</strong> &#8212; find who engages with competitor posts</p></li><li><p><strong>LinkedIn Search Export</strong> &#8212; export any people search to Sheets</p></li><li><p><strong>LinkedIn Viral Post Likes</strong> &#8212; scrape reactions from any post</p></li><li><p><strong>Instagram Followers</strong> &#8212; export followers from any account</p></li><li><p><strong>Lead Enrichment</strong> &#8212; find LinkedIn profiles and emails for any list</p></li></ol><p>The general pattern is always the same: browser DevTools &#8594; copy a network request &#8594; paste into Needle &#8594; run. Five minutes to set up, then it runs on autopilot.</p><p>If you build something creative with these or come up with ideas for new scrapers, I&#8217;d love to hear about it. Hit reply or reach out on LinkedIn.</p><p>Happy scraping. Happy automation.</p><p>&#8212; Jan</p>]]></content:encoded></item><item><title><![CDATA[Scraper #6: Scrape Instagram Followers from Any Account]]></title><description><![CDATA[Subtitle: 1,075 followers scraped from one account. Usernames and profile links, straight to Google Sheets.]]></description><link>https://blog.needle.app/p/scraper-6-scrape-instagram-followers</link><guid isPermaLink="false">https://blog.needle.app/p/scraper-6-scrape-instagram-followers</guid><dc:creator><![CDATA[Needle]]></dc:creator><pubDate>Sat, 14 Feb 2026 09:38:13 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/187205485/1857174e46ba4b1229c18410f3934c45.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p></p><p>Day 6. We&#8217;re leaving LinkedIn for a bit and heading to Instagram.</p><p>This might be the most underrated scraper in the series. LinkedIn gets all the attention for B2B lead gen, but Instagram has audiences that LinkedIn doesn&#8217;t &#8212; especially if you&#8217;re in creator economy, DTC, B2C, or if your competitors have active Instagram presences.</p><p><strong>The idea:</strong></p><p>Your target audience already follows someone on Instagram. A competitor. A niche influencer. An industry page. Those followers are your potential leads.</p><p><strong>The workflow:</strong></p><p>Go to any Instagram account and click on Followers. Open DevTools, go to the Network tab, and filter for &#8220;followers.&#8221; Find the API v1 followers request, copy as fetch. Create a Google Sheet, connect it in Needle, paste the fetch, and run.</p><p>I tested this on an automation-focused Instagram account with 1,075 followers and scraped all of them. Each row includes the username and profile link.</p><p><strong>When this is useful:</strong></p><p>Your audience lives on Instagram &#8212; or at least part of it does. Automation accounts, AI tool pages, competitor profiles, niche influencers in your space. Scrape their followers, and you have a list of people who are already interested in what you do.</p><p><strong>What you can do with these leads:</strong></p><p>Follow them and engage with their content. DM them if you have a relevant offer. Or cross-reference with LinkedIn &#8212; a lot of people use the same name or username across platforms, which makes it easy to find their professional profiles.</p><p>&#128279; <a href="https://needle.app/workflow-templates">Use the template free</a></p><p>Tomorrow: Scraper #7 &#8212; Lead Enrichment. The final piece that ties everything together.</p>]]></content:encoded></item><item><title><![CDATA[Scraper #5: Scrape Everyone Who Liked a LinkedIn Post]]></title><description><![CDATA[A viral post is a lead list. Each like is a person who cares about your topic.]]></description><link>https://blog.needle.app/p/scraper-5-scrape-everyone-who-liked</link><guid isPermaLink="false">https://blog.needle.app/p/scraper-5-scrape-everyone-who-liked</guid><dc:creator><![CDATA[Needle]]></dc:creator><pubDate>Fri, 13 Feb 2026 09:37:36 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/187204705/4fa85704be537c8afd567a005340b464.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Day 5. Another LinkedIn scraper, but with a different angle.</p><p>Yesterday was about searching for people by role and location. Today is about finding people based on what they engage with. Specifically: who liked a particular LinkedIn post.</p><p><strong>Why this matters:</strong></p><p>When someone likes a post about AI automation, they&#8217;re telling you they care about AI automation. That&#8217;s intent data &#8212; for free. A viral post with 500 likes is 500 people who raised their hand and said &#8220;this topic matters to me.&#8221;</p><p><strong>The workflow:</strong></p><p>Find a relevant LinkedIn post &#8212; maybe a thought leader in your space, a competitor&#8217;s product announcement, a conference recap, or an industry hot take. Click on the reactions. Open DevTools, find the Voyager GraphQL request, copy as fetch. Connect a Google Sheet, paste into Needle, run.</p><p>The workflow handles pagination automatically. A post with 500 likes gives you 500 leads. Each row in your Google Sheet is a LinkedIn profile URL of someone who engaged with that specific post.</p><p><strong>Where to find the right posts:</strong></p><p>Think about what your ICP would like on LinkedIn. Conference announcements, product launches, thought leadership in your niche, &#8220;we&#8217;re hiring&#8221; posts from companies in your space, controversial takes on industry trends. Each of these posts is a pre-built lead list.</p><p><strong>What I like about this scraper:</strong></p><p>It&#8217;s surgical. You&#8217;re not scraping a broad search &#8212; you&#8217;re scraping people who engaged with one specific piece of content. The relevance is extremely high. If someone liked a post about &#8220;why we switched from Zapier to an AI-first workflow tool,&#8221; those are exactly the people I want to talk to.</p><p>&#128279; <a href="https://needle.app/workflow-templates">Use the template free</a></p><p>Tomorrow: Scraper #6 - Instagram Followers. The only non-LinkedIn scraper in the second half.</p>]]></content:encoded></item><item><title><![CDATA[Scraper #4: Export Any LinkedIn Search to Google Sheets]]></title><description><![CDATA[&#8220;CTO San Francisco&#8221; - 440 pages of results, exported automatically.]]></description><link>https://blog.needle.app/p/scraper-4-export-any-linkedin-search</link><guid isPermaLink="false">https://blog.needle.app/p/scraper-4-export-any-linkedin-search</guid><dc:creator><![CDATA[Needle]]></dc:creator><pubDate>Thu, 12 Feb 2026 09:36:18 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/187204026/53b5513c7fb73e15ac6915473b38d55c.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Day 4. This might be the most powerful scraper in the entire series.</p><p>LinkedIn&#8217;s people search is incredibly useful. You can search for &#8220;CTO San Francisco&#8221; or &#8220;VP Sales Berlin&#8221; or &#8220;Founder AI startup&#8221; &#8212; whatever your ICP looks like. The problem has always been that you can&#8217;t export the results. You&#8217;re stuck scrolling and manually copying profiles.</p><p>Not anymore.</p><p><strong>The workflow:</strong></p><p>Do a LinkedIn people search with whatever filters you want &#8212; role, location, industry, company. Open DevTools, find the GraphQL request in the Network tab, and copy it as fetch. Paste it into Needle, connect a Google Sheet, and run.</p><p>Here&#8217;s what makes this one special: the workflow automatically iterates through ALL pages of results. In my test, &#8220;CTO San Francisco&#8221; returned 44 pages. The workflow went through every single one and wrote each profile to my Google Sheet in real time.</p><p>I watched hundreds of profiles pour in &#8212; names, titles, companies, locations, LinkedIn URLs.</p><p><strong>The quality depends on your search:</strong></p><p>This scraper is only as good as your LinkedIn search. Use the filters aggressively: location, current company, past company, industry, school, connections. The more specific your search, the more targeted your lead list.</p><p>A search for &#8220;CTO&#8221; gives you noise. A search for &#8220;CTO, Series A startup, San Francisco, AI/ML&#8221; gives you a hit list.</p><p><strong>When this is useful:</strong></p><p>You have a clear ICP and want to build a targeted list at scale. Sales teams, founders doing outbound, recruiters, BD &#8212; anyone who needs a list of specific people.</p><p>&#128279; <a href="https://needle.app/workflow-templates">Use the template free</a></p><p>Tomorrow: Scraper #5 - LinkedIn Viral Post Likes.</p>]]></content:encoded></item><item><title><![CDATA[Scraper #3: Scrape Your Competitor's LinkedIn Audience]]></title><description><![CDATA[People who engage with your competitor's posts are your warmest prospects. Here's how to find them.]]></description><link>https://blog.needle.app/p/scraper-3-scrape-your-competitors</link><guid isPermaLink="false">https://blog.needle.app/p/scraper-3-scrape-your-competitors</guid><dc:creator><![CDATA[Needle]]></dc:creator><pubDate>Wed, 11 Feb 2026 09:25:16 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/187203249/d5868fe188da37db3d49a55353ff6f38.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Day 3. We&#8217;re on LinkedIn now, and this is where the series gets really interesting.</p><p>The idea is simple: people who like, comment on, and react to your competitor&#8217;s LinkedIn posts are already interested in what you do. They just don&#8217;t know about you yet.</p><p><strong>The workflow:</strong></p><p>Go to any LinkedIn company page and click on Posts. Open DevTools, go to the Network tab, and search for &#8220;voyager feed.&#8221; You&#8217;ll see the API request that loads the posts. Copy it as fetch, paste into Needle, connect a Google Sheet, and run.</p><p>The workflow fetches the last 25 posts from that company page and scrapes up to 50 reactions per post. All the LinkedIn profile URLs get written to your Google Sheet automatically.</p><p>I ran this on Needle&#8217;s own page and pulled 100+ engaged profiles in minutes.</p><p><strong>Why these leads are gold:</strong></p><p>They&#8217;re active on LinkedIn, which means they&#8217;ll see your connection request. They engage with content in your space, which means they care about the problem you solve. And they&#8217;re already following or interacting with a similar product, which means they&#8217;re pre-qualified.</p><p><strong>The power move:</strong></p><p>Don&#8217;t just scrape your direct competitors. Think about complementary tools, industry thought leaders, publications, and communities. Anyone whose LinkedIn audience overlaps with your ICP is fair game.</p><p><strong>What you can do with these leads:</strong></p><p>Connect and engage with their content first. Send personalized connection requests referencing the shared interest. Or run a cold outreach campaign &#8212; but honestly, a warm approach works better with this type of lead.</p>]]></content:encoded></item><item><title><![CDATA[Scraper #2: Scrape Leads from Any Meetup Event]]></title><description><![CDATA[Local meetups are goldmines for finding your ICP. Here&#8217;s how to export the attendee list.]]></description><link>https://blog.needle.app/p/scraper-2-scrape-leads-from-any-meetup</link><guid isPermaLink="false">https://blog.needle.app/p/scraper-2-scrape-leads-from-any-meetup</guid><dc:creator><![CDATA[Needle]]></dc:creator><pubDate>Mon, 09 Feb 2026 09:24:18 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/187202203/405876ed971d34391afa6f3dc230c217.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Day 2 of the lead scraper series. Today: Meetup.com.</p><p>Meetup events tend to be more community-driven and local than Luma. Think: founder meetups, tech communities, industry-specific groups, developer gatherings. The people who show up to a &#8220;Berlin AI Founders&#8221; meetup are probably relevant if you&#8217;re building AI tools in Berlin.</p><p><strong>The workflow:</strong></p><p>Same pattern as yesterday&#8217;s Luma scraper. Go to a Meetup event, find the attendee list API request in your browser&#8217;s Network tab, copy as fetch, paste into Needle, and run. Attendees get exported to your spreadsheet.</p><p><strong>When this is useful:</strong></p><p>You&#8217;re targeting local communities or specific interest groups. Meetup has a different audience than Luma &#8212; often more grassroots, more diverse industries, and more globally distributed. If your ICP hangs out at local professional meetups, this is your scraper.</p><p><strong>The bigger picture:</strong></p><p>Between yesterday&#8217;s Luma scraper and today&#8217;s Meetup scraper, you can now pull attendee lists from the two biggest event platforms in tech. That covers most hackathons, meetups, conferences, and community events your target audience is attending.</p><p>Tomorrow we move to LinkedIn - and that&#8217;s where things get really powerful.</p><p>&#128279; <a href="https://needle.ai">Use the template free</a></p><p>Tomorrow: Scraper #3 &#8212; LinkedIn Competitor Audience.</p>]]></content:encoded></item><item><title><![CDATA[Scraper #1: Turn Event Attendees into Sales Leads (Luma)]]></title><description><![CDATA[Subtitle: 58 attendees scraped in 30 seconds. Here&#8217;s exactly how.]]></description><link>https://blog.needle.app/p/scraper-1-turn-event-attendees-into</link><guid isPermaLink="false">https://blog.needle.app/p/scraper-1-turn-event-attendees-into</guid><dc:creator><![CDATA[Needle]]></dc:creator><pubDate>Mon, 09 Feb 2026 09:23:16 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/187201537/a8ce2ce46b5f4645dc74ba3cb4f69331.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>This is Day 1 of my 7-part lead scraper series. Today: scraping attendees from Luma events.</p><p>Luma is where a lot of tech, AI, and startup events live these days. When someone RSVPs to an event, their profile &#8212; often including their LinkedIn &#8212; becomes visible to other attendees. That&#8217;s your lead list, sitting right there.</p><p><strong>The workflow:</strong></p><p>Go to any Luma event page and click on Guests. Open your browser&#8217;s DevTools (F12), go to the Network tab, and look for the &#8220;guest list&#8221; API request. Right-click it, copy as fetch, and paste it into Needle&#8217;s manual trigger. Hit run.</p><p>That&#8217;s it. You get a clean CSV with names, LinkedIn URLs, and whatever else attendees put in their profiles.</p><p>I tested this on our own monthly hackathon &#8212; 58 attendees, scraped in seconds.</p><p><strong>When this is useful:</strong></p><p>You want leads who attend specific types of events in your space. Hackathons, industry meetups, competitor events, conferences. The people who show up to these events are actively engaged in the topic &#8212; they&#8217;re not cold leads, they&#8217;re warm by default.</p><p><strong>One slightly cheeky tip:</strong> You can RSVP to events you don&#8217;t plan to attend just to access the guest list. I&#8217;m not recommending it. I&#8217;m just saying the option exists.</p><p><strong>What to do with the leads:</strong></p><p>Enrich them (I&#8217;ll show you how on Sunday), connect on LinkedIn, or run a targeted outreach campaign. These are people who chose to attend an event in your niche &#8212; the relevance is already there.</p><p>&#128279; <a href="https://needle-ai.com/workflow-templates">Use the template free</a></p><p>Tomorrow: Scraper #2 &#8212; Meetup Event Attendees.</p>]]></content:encoded></item><item><title><![CDATA[We indexed all of r/LangChain 2025 - you can now plug it directly into your agents via MCP]]></title><description><![CDATA[Reddit's official API, transparent process, and a free tool for your agents]]></description><link>https://blog.needle.app/p/we-indexed-all-of-rlangchain-2025</link><guid isPermaLink="false">https://blog.needle.app/p/we-indexed-all-of-rlangchain-2025</guid><dc:creator><![CDATA[Needle]]></dc:creator><pubDate>Tue, 03 Feb 2026 09:19:16 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/341a670c-ff05-4171-a175-71ffb83a56f1_2160x1440.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_!59sz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957f1907-681b-4ea4-8fd3-9b237f2d4bcf_1372x444.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!59sz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957f1907-681b-4ea4-8fd3-9b237f2d4bcf_1372x444.png 424w, https://substackcdn.com/image/fetch/$s_!59sz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957f1907-681b-4ea4-8fd3-9b237f2d4bcf_1372x444.png 848w, https://substackcdn.com/image/fetch/$s_!59sz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957f1907-681b-4ea4-8fd3-9b237f2d4bcf_1372x444.png 1272w, https://substackcdn.com/image/fetch/$s_!59sz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957f1907-681b-4ea4-8fd3-9b237f2d4bcf_1372x444.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!59sz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957f1907-681b-4ea4-8fd3-9b237f2d4bcf_1372x444.png" width="1372" height="444" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/957f1907-681b-4ea4-8fd3-9b237f2d4bcf_1372x444.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:444,&quot;width&quot;:1372,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:67418,&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://blog.needle.app/i/186716061?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957f1907-681b-4ea4-8fd3-9b237f2d4bcf_1372x444.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_!59sz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957f1907-681b-4ea4-8fd3-9b237f2d4bcf_1372x444.png 424w, https://substackcdn.com/image/fetch/$s_!59sz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957f1907-681b-4ea4-8fd3-9b237f2d4bcf_1372x444.png 848w, https://substackcdn.com/image/fetch/$s_!59sz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957f1907-681b-4ea4-8fd3-9b237f2d4bcf_1372x444.png 1272w, https://substackcdn.com/image/fetch/$s_!59sz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957f1907-681b-4ea4-8fd3-9b237f2d4bcf_1372x444.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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So someone asked &#8220;is this legal?&#8221; on my last post here. Fair enough - let me be transparent about what we&#8217;re actually doing and why.</p><p><strong>What we built</strong></p><p>We created a searchable knowledge base from r/LangChain discussions using Reddit&#8217;s official API. No scraping, no bypassing anything. Properly authenticated, rate-limited, the whole deal.</p><p>The interesting part: we then built an MCP integration so you can plug this entire subreddit&#8217;s knowledge directly into your LangChain or LlamaIndex agents.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;fe4e4ff0-f36d-45be-adb6-85205c899d9f&quot;,&quot;duration&quot;:null}"></div><p><strong>Why we built it</strong></p><p>Honestly? This subreddit is one of the best sources of real-world LangChain knowledge out there. People here are actually shipping things in production - not just writing tutorials.</p><p>But the problem is discoverability. Great answers get buried. Solutions that took someone hours to figure out disappear into old threads.</p><p>We wanted to fix that.</p><p><strong>How it actually works</strong></p><ol><li><p>Reddit API fetches posts + comments (official, authenticated)</p></li><li><p>Content gets stored in a Needle collection with metadata</p></li><li><p>You can search it directly OR plug it into your agents via MCP</p></li></ol><p><strong>What you can do with it</strong></p><p>Search for things like:</p><ul><li><p>Tool calling with function schemas</p></li><li><p>Multi-agent orchestration patterns</p></li><li><p>Vector store performance comparisons</p><p></p></li></ul><p>Or build agents that query this knowledge directly while reasoning. Pretty useful when you&#8217;re debugging at 2am and don&#8217;t want to scroll through 50 threads.</p><p><strong>Completely free, no signup required</strong></p><p>Knowledge base: <a href="https://needle.app/featured-collections/reddit-langchain-2025">https://needle.app/featured-collections/reddit-langchain-2025</a></p><p>MCP guide: <a href="https://docs.needle.app/docs/guides/mcp/needle-mcp-server/">https://docs.needle.app/docs/guides/mcp/needle-mcp-server/</a></p><p>Curious what you all think - what topics would be most useful to have indexed? And what other subreddits should we do next?</p>]]></content:encoded></item><item><title><![CDATA[How to Plug r/OpenWebUI Knowledge Into Your OpenWebUI Setup (Free MCP Integration)]]></title><description><![CDATA[Turn Reddit discussions into queryable context for your AI agents - no manual copying, no RAG setup required]]></description><link>https://blog.needle.app/p/how-to-plug-ropenwebui-knowledge</link><guid isPermaLink="false">https://blog.needle.app/p/how-to-plug-ropenwebui-knowledge</guid><dc:creator><![CDATA[Needle]]></dc:creator><pubDate>Tue, 27 Jan 2026 10:20:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xOIt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd319f172-55f5-4628-b4a7-4932481b0b8a_2160x1440.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_!xOIt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd319f172-55f5-4628-b4a7-4932481b0b8a_2160x1440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xOIt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd319f172-55f5-4628-b4a7-4932481b0b8a_2160x1440.png 424w, https://substackcdn.com/image/fetch/$s_!xOIt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd319f172-55f5-4628-b4a7-4932481b0b8a_2160x1440.png 848w, https://substackcdn.com/image/fetch/$s_!xOIt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd319f172-55f5-4628-b4a7-4932481b0b8a_2160x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!xOIt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd319f172-55f5-4628-b4a7-4932481b0b8a_2160x1440.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xOIt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd319f172-55f5-4628-b4a7-4932481b0b8a_2160x1440.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d319f172-55f5-4628-b4a7-4932481b0b8a_2160x1440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3311046,&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://blog.needle.app/i/185944385?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd319f172-55f5-4628-b4a7-4932481b0b8a_2160x1440.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_!xOIt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd319f172-55f5-4628-b4a7-4932481b0b8a_2160x1440.png 424w, https://substackcdn.com/image/fetch/$s_!xOIt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd319f172-55f5-4628-b4a7-4932481b0b8a_2160x1440.png 848w, https://substackcdn.com/image/fetch/$s_!xOIt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd319f172-55f5-4628-b4a7-4932481b0b8a_2160x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!xOIt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd319f172-55f5-4628-b4a7-4932481b0b8a_2160x1440.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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;e85ba75e-7c0e-4f9d-9ba5-f1742f407752&quot;,&quot;duration&quot;:null}"></div><p></p><p>If you&#8217;ve spent time on r/OpenWebUI, you know it&#8217;s one of the best sources for <em>real</em> implementation knowledge.</p><p>Not theory. Not marketing fluff. Just people solving actual problems:</p><ul><li><p>&#8220;MCP tool calling fails with local models&#8221;</p></li><li><p>&#8220;Kubernetes multi-pod deployments break WebSocket connections&#8221;</p></li></ul><p>The problem? All this knowledge is scattered across hundreds of threads. You either scroll endlessly or hope Reddit&#8217;s search works (it doesn&#8217;t).</p><h2>What We Built</h2><p>We indexed every r/OpenWebUI discussion from 2025 and made it searchable. But more importantly: <strong>we built an MCP integration so you can plug this entire subreddit directly into your OpenWebUI setup.</strong></p><p>This means you can:</p><ol><li><p>Build OpenWebUI agents that query r/OpenWebUI knowledge in real-time</p></li><li><p>Ask questions like &#8220;How do people configure ChromaDB in production?&#8221; and get answers sourced from actual implementations</p></li><li><p>Use it for agentic RAG workflows without setting up your own RAG infrastructure</p></li></ol><h2>Try It Out</h2><p><strong>Search the collection (free, no signup):</strong> https://needle.app/featured-collections/reddit-openwebui-2025</p><p>Try these queries:</p><ul><li><p>&#8220;MCP tool calling issues&#8221;</p></li><li><p>&#8220;RAG performance optimization&#8221;</p></li><li><p>&#8220;Kubernetes multi-pod deployment&#8221;</p></li></ul><p><strong>Plug it into OpenWebUI via MCP:</strong> https://docs.needle.app/docs/guides/mcp/needle-mcp-in-open-webui/</p><p>The guide walks through the full setup. Takes about 5 minutes.</p><h2>Why This Matters</h2><p>Most companies building AI agents face the same problem: <strong>how do you give your AI access to dispersed, unstructured knowledge?</strong></p><p>Reddit is just one example. But the same pattern applies to:</p><ul><li><p>Internal Slack channels</p></li><li><p>Support ticket archives</p></li><li><p>Documentation scattered across Notion/Confluence/Google Docs</p></li><li><p>Community forums</p></li></ul><p>Instead of manually curating knowledge bases or setting up complex RAG pipelines, you can now point your AI at existing knowledge sources and let it query them dynamically.</p><h2>What We&#8217;re Learning</h2><p>After indexing multiple subreddits (r/automation, r/cursor, r/promptengineering, r/OpenWebUI), here&#8217;s what we&#8217;ve found:</p><p><strong>1. Search patterns reveal actual pain points</strong> The most common searches aren&#8217;t about features - they&#8217;re about problems:</p><ul><li><p>&#8220;Why does X keep failing?&#8221;</p></li><li><p>&#8220;How do I configure Y in production?&#8221;</p></li><li><p>&#8220;What&#8217;s the best way to handle Z?&#8221;</p></li></ul><p><strong>2. Community knowledge beats official docs for edge cases</strong> Official documentation covers happy paths. Reddit covers what actually breaks and how people fixed it.</p><p><strong>3. Conversational search &gt; keyword search</strong> People don&#8217;t search &#8220;ChromaDB configuration.&#8221; They ask &#8220;Why does my ChromaDB setup timeout in Kubernetes?&#8221;</p><h2>What&#8217;s Next</h2><p>We&#8217;re planning to index more technical subreddits. Which ones would be most useful?</p><p>Current candidates:</p><ul><li><p>r/LocalLLaMA</p></li><li><p>r/kubernetes</p></li><li><p>r/devops</p></li></ul><p>Let me know in the comments what you&#8217;d find valuable.</p><h2>Try It</h2><p>Free search tool (no signup): </p><p>https://needle.app/featured-collections/reddit-openwebui-2025</p><p>MCP integration guide (plug it into OpenWebUI): </p><p>https://docs.needle.app/docs/guides/mcp/needle-mcp-in-open-webui/</p><div><hr></div>]]></content:encoded></item><item><title><![CDATA[Vector Databases Aren’t Memory - Here’s Why That Matters for Your AI Agents]]></title><description><![CDATA[A practical lesson I keep seeing teams learn the hard way]]></description><link>https://blog.needle.app/p/vector-databases-arent-memory-heres</link><guid isPermaLink="false">https://blog.needle.app/p/vector-databases-arent-memory-heres</guid><dc:creator><![CDATA[Needle]]></dc:creator><pubDate>Sat, 24 Jan 2026 13:27:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4fvx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3c14c1-2916-4670-8614-aa5a99e7c421_2160x1440.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_!4fvx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3c14c1-2916-4670-8614-aa5a99e7c421_2160x1440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4fvx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3c14c1-2916-4670-8614-aa5a99e7c421_2160x1440.png 424w, https://substackcdn.com/image/fetch/$s_!4fvx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3c14c1-2916-4670-8614-aa5a99e7c421_2160x1440.png 848w, https://substackcdn.com/image/fetch/$s_!4fvx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3c14c1-2916-4670-8614-aa5a99e7c421_2160x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!4fvx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3c14c1-2916-4670-8614-aa5a99e7c421_2160x1440.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4fvx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3c14c1-2916-4670-8614-aa5a99e7c421_2160x1440.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b3c14c1-2916-4670-8614-aa5a99e7c421_2160x1440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4002492,&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://blog.needle.app/i/185631421?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3c14c1-2916-4670-8614-aa5a99e7c421_2160x1440.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_!4fvx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3c14c1-2916-4670-8614-aa5a99e7c421_2160x1440.png 424w, https://substackcdn.com/image/fetch/$s_!4fvx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3c14c1-2916-4670-8614-aa5a99e7c421_2160x1440.png 848w, https://substackcdn.com/image/fetch/$s_!4fvx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3c14c1-2916-4670-8614-aa5a99e7c421_2160x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!4fvx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3c14c1-2916-4670-8614-aa5a99e7c421_2160x1440.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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>There&#8217;s a pattern I keep seeing in agent development: teams treating their vector database like it&#8217;s memory.</p><p>It&#8217;s not. It&#8217;s retrieval.</p><p>And confusing the two leads to subtle, frustrating failures that are hard to debug.</p><h2>The Difference Between Retrieval and Memory</h2><p><strong>Retrieval</strong> answers: &#8220;What documents/chunks are semantically similar to this query?&#8221;</p><p><strong>Memory</strong> answers: &#8220;What does this user currently believe, prefer, and need me to remember?&#8221;</p><p>These are fundamentally different problems.</p><p>RAG is incredible at the first one. It&#8217;s how you build knowledge bases, document search, and context-aware assistants that can answer questions about your data. This is what RAG was designed for, and it works beautifully.</p><p>But when you try to shoehorn long-term user state into a vector database, things start breaking in predictable ways.</p><h2>The Three Failure Modes</h2><h3>1. Stale Recall</h3><p>You told the agent you switched from Python to Rust three weeks ago. But when you ask for code examples, it keeps pulling Python snippets because they&#8217;re &#8220;semantically similar&#8221; to your query.</p><p>The vector DB doesn&#8217;t know that information is outdated. It just knows the embeddings are close.</p><h3>2. Context Pollution</h3><p>You&#8217;re working on Project A, but the agent keeps surfacing &#8220;memories&#8221; from Project B because some keywords overlap.</p><p>Semantic similarity doesn&#8217;t respect context boundaries. Your agent can&#8217;t tell that those memories are irrelevant to the current task.</p><h3>3. Preference Drift</h3><p>You said &#8220;I prefer concise responses&#8221; last month. Then you said &#8220;Give me more detail&#8221; yesterday. Both are stored. Which one gets retrieved?</p><p>Without explicit conflict resolution, you get unpredictable behavior &#8212; sometimes concise, sometimes verbose, depending on which embedding happens to be closer to the current query.</p><h2>What Memory Actually Needs</h2><p>Real memory requires state management, not just embeddings:</p><ul><li><p><strong>Forgetting / archiving</strong>: Outdated information needs to be deprioritized or removed</p></li><li><p><strong>Merging</strong>: Repeated information should consolidate, not duplicate</p></li><li><p><strong>Conflict resolution</strong>: When new info contradicts old info, there needs to be a clear winner</p></li><li><p><strong>Separation of concerns</strong>: Facts (&#8221;what happened&#8221;) vs. preferences (&#8221;how I like it&#8221;) vs. context (&#8221;what I&#8217;m working on now&#8221;)</p></li></ul><p>This is why dedicated memory layers (Mem0, Zep, custom solutions) exist. They&#8217;re solving a different problem than RAG.</p><h2>The Rule of Thumb</h2><p>Here&#8217;s how I think about it:</p><p><strong>Bad memory &lt; No memory &lt; Selective, lifecycle-managed memory</strong></p><p>And separately:</p><p><strong>RAG for knowledge retrieval? Absolutely yes.</strong></p><p><strong>RAG as a user preference database? That&#8217;s where it breaks.</strong></p><h2>The Practical Takeaway</h2><p>If you&#8217;re building agents, be intentional about what goes where:</p><ul><li><p><strong>Documents, knowledge bases, reference material</strong> &#8594; RAG / vector DB. This is the sweet spot.</p></li><li><p><strong>User preferences, conversation history, evolving state</strong> &#8594; A proper memory layer with lifecycle management.</p></li></ul><p>Don&#8217;t try to make one system do both jobs. You&#8217;ll end up with something that does neither well.</p><div><hr></div><p><em>How are you handling long-term user state in your agents? I&#8217;m curious whether teams are building custom memory layers, using off-the-shelf solutions, or just resetting context each session.</em></p><div><hr></div>]]></content:encoded></item><item><title><![CDATA[We made Reddit r/RAG searchable]]></title><description><![CDATA[A year of RAG discussions from real builders, now explorable with an agentic chat]]></description><link>https://blog.needle.app/p/we-made-reddit-rrag-searchable</link><guid isPermaLink="false">https://blog.needle.app/p/we-made-reddit-rrag-searchable</guid><dc:creator><![CDATA[Needle]]></dc:creator><pubDate>Fri, 23 Jan 2026 16:57:43 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/185555731/4966604dfe395b64ccd28d6c44c80f7c.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>The r/RAG subreddit is one of the reasons we started Needle as a RAG API in the first place.</p><p>It&#8217;s one of the few places online where people share what actually works. Not theory, not marketing. Just real builders figuring things out together.</p><p>The problem? Once a discussion scrolls past, it&#8217;s basically gone. And Reddit search is... Reddit search.</p><p>So we built a free tool that lets anyone explore everything discussed in r/RAG in 2025.</p><p><strong>Who this is for:</strong></p><ul><li><p>Devs looking for RAG implementation advice (chunking strategies, embedding models, retrieval approaches)</p></li><li><p>Business people trying to understand how RAG can actually help their company</p></li><li><p>Founders researching what problems and patterns keep coming up</p></li></ul><p><strong>What you can learn:</strong></p><p>The r/RAG community has figured out a lot of stuff the hard way. Things like:</p><ul><li><p>Which embedding models actually perform well in production</p></li><li><p>When to use hybrid search vs pure vector search</p></li><li><p>How to handle chunking for different document types</p></li><li><p>What retrieval strategies work for specific use cases</p></li></ul><p>All of this is now searchable in one place.</p><p><strong>How it works:</strong></p><p>It&#8217;s an agentic chat that searches through a full year of r/RAG posts and comments. Ask a question, get answers grounded in real community discussions with sources linked.</p><p>No signup, completely free.</p><p>&#8594; <a href="https://needle.app/featured-collections/reddit-rag-2025">Try it here</a></p>]]></content:encoded></item><item><title><![CDATA[Problem: The Daily Dinner Question - Let's Vibe Automate Together]]></title><description><![CDATA[Building a real workflow together, start to finish by chatting.]]></description><link>https://blog.needle.app/p/problem-the-daily-dinner-question</link><guid isPermaLink="false">https://blog.needle.app/p/problem-the-daily-dinner-question</guid><dc:creator><![CDATA[Needle]]></dc:creator><pubDate>Sun, 18 Jan 2026 08:47:31 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/184854542/5330e03ea29479805f5fc0a31850b3d1.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Let&#8217;s build something together.</p><p>This isn&#8217;t a tutorial where everything is already set up. We&#8217;re starting from scratch with a real problem and solving it live.</p><p><strong>The problem</strong></p><p>At the Needle office, there&#8217;s a simple rule. If people stay until 19:00, we order dinner together. But someone has to ask around 18:00 who&#8217;s in, because delivery takes about an hour.</p><p>Not a big deal. But it happens every day. And that&#8217;s exactly the kind of task worth automating.</p><p><strong>Let&#8217;s build it</strong></p><p>No workflow exists yet. We&#8217;re creating it right now.</p><p>Open the Needle chat and just describe what we need: a workflow that runs every day at 17:00 Berlin time, scrapes a food delivery page for options, and sends a message to Slack asking who&#8217;s staying for dinner.</p><p>That&#8217;s the whole prompt. Hit enter and watch what happens.</p><p><strong>What we get</strong></p><p>The agent builds the workflow. Scheduled trigger at 17:00. Web scrape node pulling options from Uber Eats. AI node filtering out pizza and burgers (we&#8217;re trying to eat healthy). Slack node sending the message to the team channel with three dinner recommendations.</p><p>We didn&#8217;t configure anything manually. Just described it and the workflow appeared.</p><p><strong>Make it yours</strong></p><p>Want to tweak it? Just tell the agent. Different time, different channel, different food source. Keep the conversation going until it fits.</p><p>When it looks right, hit publish. Now it runs every day without thinking about it.</p><p><strong>Your turn</strong></p><p>Think about a small task you do repeatedly. Open the chat. Describe it. See what gets built.</p><p>Curious what you come up with.</p><p>Keep automating.</p><div><hr></div><p>#vibeautomation #aiautomation #workflowautomation #nocode #aiagents #automation #productivity #needleapp #buildinpublic #aitools</p>]]></content:encoded></item><item><title><![CDATA[ Automating Competitor Deep Research]]></title><description><![CDATA[A system that keeps you informed without the manual work]]></description><link>https://blog.needle.app/p/automating-competitor-deep-research</link><guid isPermaLink="false">https://blog.needle.app/p/automating-competitor-deep-research</guid><dc:creator><![CDATA[Needle]]></dc:creator><pubDate>Sat, 17 Jan 2026 09:22:25 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/184783940/cc82b65bc0141d52fdbfd255114bf596.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Staying on top of your competitive landscape is one of those things everyone knows they should do but few do consistently. It takes time. The information goes stale. And there&#8217;s always something more urgent.</p><p>One way to solve this is by building a workflow that handles it automatically. Every Monday morning, a structured competitor analysis lands in Slack and email. No manual research. No outdated spreadsheets.</p><p>Here&#8217;s how to think about it.</p><p><strong>Start with a trigger</strong></p><p>The workflow runs on a schedule. Monday at 08:55 works well for a weekly cadence. Could just as easily be daily or bi-weekly depending on how fast the market moves.</p><p><strong>Let an agent do the research</strong></p><p>The first step is an AI agent that understands the company and the space it operates in. It searches for competitors offering similar tools and pulls structured information for each: company name, description, website, core features, pricing model, target sectors. Technical details like database infrastructure and LLM usage can also be captured, which is useful for positioning.</p><p><strong>Clean and deduplicate</strong></p><p>Raw data is messy. A second set of agents formats everything consistently and filters out companies already tracked. This keeps the dataset clean over time rather than bloated with duplicates.</p><p><strong>Store and distribute</strong></p><p>The cleaned data goes into a Google Sheet. From there, it gets sent to Slack and email. Could just as easily push to Notion, Airtable, or wherever the team works.</p><p><strong>Why this approach works</strong></p><p>Competitor research isn&#8217;t a one-time project. Markets shift. New players enter. Pricing changes. A system that runs continuously keeps teams informed without requiring anyone to remember to do it.</p><p>This is especially valuable in sales conversations. Instead of scrambling to remember how the product compares, there&#8217;s a current reference ready to go.</p><p><strong>Build your own</strong></p><p>Want to set up something similar? Comment &#8220;AI&#8221; below and we&#8217;ll share the template.</p><p>See the template here:</p><p>https://needle.app/workflow-templates/discover-new-competitors-with-deep-research</p>]]></content:encoded></item><item><title><![CDATA[Human in the Loop in AI Agents]]></title><description><![CDATA[Full automation with a checkpoint when you need it]]></description><link>https://blog.needle.app/p/human-in-the-loop-in-ai-agents</link><guid isPermaLink="false">https://blog.needle.app/p/human-in-the-loop-in-ai-agents</guid><dc:creator><![CDATA[Needle]]></dc:creator><pubDate>Tue, 13 Jan 2026 18:04:55 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/184460992/cfa1f9eeafebe32bbfc252d21c8ca9c4.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>I love automation. I love self-driving cars. I love AI agents doing the heavy lifting.</p><p>But here&#8217;s the thing: even the best self-driving car lets you grab the wheel when you want to.</p><p>That&#8217;s not a bug. That&#8217;s a feature.</p><p>And in AI workflows, we call this <strong>human in the loop</strong>.</p><p>It&#8217;s one of my favorite nodes. Here&#8217;s why.</p><p>AI agents are incredible. They can analyze data, generate content, make predictions, handle tasks that would take you hours. Let them do their thing. That&#8217;s the whole point.</p><p>But sometimes, before that final action gets executed, you want to take a look. Not because you don&#8217;t trust the system. Because you want the option.</p><p>Human in the loop gives you exactly that. The workflow pauses. You see what the agent produced. You approve, reject, or tweak. Then it continues.</p><p>Full automation with a checkpoint when you need it.</p><p>The best automations aren&#8217;t the ones that remove humans completely. They&#8217;re the ones that remove the boring parts and keep you in control of the decisions that matter.</p><p>That&#8217;s the future. Not AI versus humans. AI amplifying humans.</p><p>And human in the loop is how you build it.</p>]]></content:encoded></item><item><title><![CDATA[Does RAG in Workflows Have to Be This Hard? ]]></title><description><![CDATA[When "low-code" still requires too much code]]></description><link>https://blog.needle.app/p/does-rag-in-workflows-have-to-be</link><guid isPermaLink="false">https://blog.needle.app/p/does-rag-in-workflows-have-to-be</guid><dc:creator><![CDATA[Needle]]></dc:creator><pubDate>Sun, 04 Jan 2026 09:50:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!EPJ7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd77a7fb2-e33f-4a81-b05b-ae8e9482d45d_704x352.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Reading n8n&#8217;s documentation on setting up RAG is exhausting just to scroll through.</p><p>n8n is a solid automation tool. But their approach to RAG feels like being handed IKEA furniture with instructions in Swedish when all you wanted was a chair to sit on.</p><h2>Here&#8217;s What n8n Asks You To Do</h2><p><strong>Step 1:</strong> Add nodes to fetch your source data<br><strong>Step 2:</strong> Insert a Vector Store node (choose which one!)<br><strong>Step 3:</strong> Select an embedding model (wait, which one? Check the FAQ!)<br><strong>Step 4:</strong> Add a Default Data Loader node<br><strong>Step 5:</strong> Choose your chunking strategy:</p><ul><li><p>Character Text Splitter?</p></li><li><p>Recursive Character Text Splitter? (recommended, apparently)</p></li><li><p>Token Text Splitter?</p></li></ul><p><strong>Step 6:</strong> Configure chunk size (200-500 tokens? Larger? Who knows!)<br><strong>Step 7:</strong> Set overlap parameters<br><strong>Step 8:</strong> Add metadata (optional but recommended)<br><strong>Step 9:</strong> Create a separate workflow for querying<br><strong>Step 10:</strong> Configure the agent<br><strong>Step 11:</strong> Add the vector store as a tool with a description<br><strong>Step 12:</strong> Set retrieval limits and enable metadata<br><strong>Step 13:</strong> Make sure you&#8217;re using the SAME embedding model you used for ingestion</p><p>Oh, and if you want to get fancy? You&#8217;ll need to understand:</p><ul><li><p>The difference between text-embedding-ada-002 and text-embedding-3-large</p></li><li><p>When to use Markdown splitting vs. Code Block splitting</p></li><li><p>How to add contextual summaries to chunks</p></li><li><p>Sparse vector embeddings (if you&#8217;re feeling ambitious)</p></li></ul><h2>&#8220;But It&#8217;s Low-Code!&#8221;</h2><p>Visual workflow builders are great. But calling this &#8220;low-code&#8221; is like calling a Tesla &#8220;low-maintenance&#8221; because you don&#8217;t have to change the oil.</p><p>Sure, you&#8217;re not writing Python scripts. But you ARE becoming a part-time data engineer who needs to understand:</p><ul><li><p>Vector database architecture</p></li><li><p>Embedding model selection criteria</p></li><li><p>Text chunking strategies</p></li><li><p>Semantic search optimization</p></li><li><p>Agent tool configuration</p></li></ul><p>Their own documentation literally says: &#8220;This again depends a lot on your data&#8221; when explaining chunk sizes. Translation: &#8220;Good luck, figure it out yourself.&#8221;</p><h2>There&#8217;s a Better Way</h2><p>Here&#8217;s the thing: RAG is powerful. It absolutely should be accessible to people who aren&#8217;t ML engineers. But &#8220;accessible&#8221; doesn&#8217;t mean &#8220;expose every technical parameter and let users guess.&#8221;</p><p>At Needle, we built RAG the way it should work: with <strong>Needle Collections</strong>, a fully-managed RAG service that handles all the complexity automatically.</p><h3>What Needle Collections Handle Automatically</h3><p>Needle Collections are fully-managed RAG infrastructure. Here&#8217;s what happens behind the scenes so you don&#8217;t have to think about it:</p><ul><li><p><strong>Document indexing</strong> - Upload files, paste URLs, or connect entire websites</p></li><li><p><strong>Intelligent chunking</strong> - Optimized automatically for your content type</p></li><li><p><strong>State-of-the-art embeddings</strong> - No model selection required</p></li><li><p><strong>Vector database management</strong> - Production-ready, scalable infrastructure</p></li><li><p><strong>Auto-reindexing</strong> - Via connectors for Google Drive, SharePoint, Slack, GitHub, Obsidian</p></li><li><p><strong>Unlimited document storage</strong> - Not limited to 20-30 docs like ChatGPT Custom GPTs</p></li><li><p><strong>Production-ready infrastructure</strong> - Managed, monitored, and maintained</p></li></ul><p>No configuration. No tuning. No vector database expertise required.</p><h3>2 Steps to Use Needle RAG</h3><p><strong>Step 1: Just Chat with Your Data</strong></p><ol><li><p>Create a Collection at <a href="https://needle.app/dashboard/collections">needle.app/dashboard/collections</a></p></li><li><p>Upload your files (PDFs, docs, markdown, entire websites)</p></li><li><p>Ask questions in the chat interface</p></li></ol><p>Done. Automatic indexing, automatic chunking, instant answers with citations.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OhUV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79c72726-ae06-426e-b89e-bccc5a0cac7b_1562x688.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OhUV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79c72726-ae06-426e-b89e-bccc5a0cac7b_1562x688.png 424w, https://substackcdn.com/image/fetch/$s_!OhUV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79c72726-ae06-426e-b89e-bccc5a0cac7b_1562x688.png 848w, https://substackcdn.com/image/fetch/$s_!OhUV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79c72726-ae06-426e-b89e-bccc5a0cac7b_1562x688.png 1272w, https://substackcdn.com/image/fetch/$s_!OhUV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79c72726-ae06-426e-b89e-bccc5a0cac7b_1562x688.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OhUV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79c72726-ae06-426e-b89e-bccc5a0cac7b_1562x688.png" width="1456" height="641" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/79c72726-ae06-426e-b89e-bccc5a0cac7b_1562x688.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:641,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:100367,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.needle.app/i/183333288?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79c72726-ae06-426e-b89e-bccc5a0cac7b_1562x688.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_!OhUV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79c72726-ae06-426e-b89e-bccc5a0cac7b_1562x688.png 424w, https://substackcdn.com/image/fetch/$s_!OhUV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79c72726-ae06-426e-b89e-bccc5a0cac7b_1562x688.png 848w, https://substackcdn.com/image/fetch/$s_!OhUV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79c72726-ae06-426e-b89e-bccc5a0cac7b_1562x688.png 1272w, https://substackcdn.com/image/fetch/$s_!OhUV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79c72726-ae06-426e-b89e-bccc5a0cac7b_1562x688.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nPVD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa0160ef-5ba7-475a-9b58-d57ac4a190d5_2702x322.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nPVD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa0160ef-5ba7-475a-9b58-d57ac4a190d5_2702x322.png 424w, https://substackcdn.com/image/fetch/$s_!nPVD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa0160ef-5ba7-475a-9b58-d57ac4a190d5_2702x322.png 848w, https://substackcdn.com/image/fetch/$s_!nPVD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa0160ef-5ba7-475a-9b58-d57ac4a190d5_2702x322.png 1272w, https://substackcdn.com/image/fetch/$s_!nPVD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa0160ef-5ba7-475a-9b58-d57ac4a190d5_2702x322.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nPVD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa0160ef-5ba7-475a-9b58-d57ac4a190d5_2702x322.png" width="1456" height="174" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fa0160ef-5ba7-475a-9b58-d57ac4a190d5_2702x322.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:174,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:77967,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.needle.app/i/183333288?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa0160ef-5ba7-475a-9b58-d57ac4a190d5_2702x322.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_!nPVD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa0160ef-5ba7-475a-9b58-d57ac4a190d5_2702x322.png 424w, https://substackcdn.com/image/fetch/$s_!nPVD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa0160ef-5ba7-475a-9b58-d57ac4a190d5_2702x322.png 848w, https://substackcdn.com/image/fetch/$s_!nPVD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa0160ef-5ba7-475a-9b58-d57ac4a190d5_2702x322.png 1272w, https://substackcdn.com/image/fetch/$s_!nPVD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa0160ef-5ba7-475a-9b58-d57ac4a190d5_2702x322.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><strong>Step 2: Build a Workflow (2 Nodes)</strong></p><p>Want to build custom RAG workflows? Here&#8217;s the entire setup:</p><ol><li><p><strong>Manual Trigger</strong> - Ask your question</p></li><li><p><strong>AI Agent</strong> with <code>search_collection</code> tool - Returns the answer</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EPJ7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd77a7fb2-e33f-4a81-b05b-ae8e9482d45d_704x352.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EPJ7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd77a7fb2-e33f-4a81-b05b-ae8e9482d45d_704x352.png 424w, https://substackcdn.com/image/fetch/$s_!EPJ7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd77a7fb2-e33f-4a81-b05b-ae8e9482d45d_704x352.png 848w, https://substackcdn.com/image/fetch/$s_!EPJ7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd77a7fb2-e33f-4a81-b05b-ae8e9482d45d_704x352.png 1272w, https://substackcdn.com/image/fetch/$s_!EPJ7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd77a7fb2-e33f-4a81-b05b-ae8e9482d45d_704x352.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EPJ7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd77a7fb2-e33f-4a81-b05b-ae8e9482d45d_704x352.png" width="714" height="357" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d77a7fb2-e33f-4a81-b05b-ae8e9482d45d_704x352.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:352,&quot;width&quot;:704,&quot;resizeWidth&quot;:714,&quot;bytes&quot;:29990,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.needle.app/i/183333288?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd77a7fb2-e33f-4a81-b05b-ae8e9482d45d_704x352.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_!EPJ7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd77a7fb2-e33f-4a81-b05b-ae8e9482d45d_704x352.png 424w, https://substackcdn.com/image/fetch/$s_!EPJ7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd77a7fb2-e33f-4a81-b05b-ae8e9482d45d_704x352.png 848w, https://substackcdn.com/image/fetch/$s_!EPJ7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd77a7fb2-e33f-4a81-b05b-ae8e9482d45d_704x352.png 1272w, https://substackcdn.com/image/fetch/$s_!EPJ7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd77a7fb2-e33f-4a81-b05b-ae8e9482d45d_704x352.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kkkV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e496178-caac-45a6-9dd2-d892c22a0820_2748x1916.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kkkV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e496178-caac-45a6-9dd2-d892c22a0820_2748x1916.png 424w, https://substackcdn.com/image/fetch/$s_!kkkV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e496178-caac-45a6-9dd2-d892c22a0820_2748x1916.png 848w, https://substackcdn.com/image/fetch/$s_!kkkV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e496178-caac-45a6-9dd2-d892c22a0820_2748x1916.png 1272w, https://substackcdn.com/image/fetch/$s_!kkkV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e496178-caac-45a6-9dd2-d892c22a0820_2748x1916.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kkkV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e496178-caac-45a6-9dd2-d892c22a0820_2748x1916.png" width="1456" height="1015" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5e496178-caac-45a6-9dd2-d892c22a0820_2748x1916.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1015,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:220743,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.needle.app/i/183333288?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e496178-caac-45a6-9dd2-d892c22a0820_2748x1916.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_!kkkV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e496178-caac-45a6-9dd2-d892c22a0820_2748x1916.png 424w, https://substackcdn.com/image/fetch/$s_!kkkV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e496178-caac-45a6-9dd2-d892c22a0820_2748x1916.png 848w, https://substackcdn.com/image/fetch/$s_!kkkV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e496178-caac-45a6-9dd2-d892c22a0820_2748x1916.png 1272w, https://substackcdn.com/image/fetch/$s_!kkkV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e496178-caac-45a6-9dd2-d892c22a0820_2748x1916.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That&#8217;s it. <a href="https://needle.app/workflow-templates/rag-chatbot">Check out the template</a>.</p><p>No complex chains. No prompt engineering. No vector database management. <strong>Just 2 nodes.</strong></p><h2>When Complexity is a Feature, Not a Bug</h2><p>For data science teams building highly customized RAG pipelines with specific chunking requirements for academic research, n8n&#8217;s approach gives control. Those teams WANT to tune those parameters.</p><p>But for:</p><ul><li><p>Marketing teams that need to search through past campaigns</p></li><li><p>Sales teams wanting to query CRM and docs</p></li><li><p>Support teams looking to automate answers from knowledge bases</p></li><li><p>Developers building AI agents that need company knowledge</p></li><li><p>Ops people who just want AI to read Google Drive</p></li></ul><p>...there&#8217;s no need for 13 steps and a PhD in embeddings. Collections are the answer.</p><h2>The Real Question</h2><p>n8n&#8217;s documentation proudly states: <em>&#8220;RAG in n8n gives you complete control over every step.&#8221;</em></p><p>But here&#8217;s what they don&#8217;t ask: <strong>Do you WANT control over every step?</strong></p><p>When you use Google, you don&#8217;t configure the PageRank algorithm. When you use Spotify, you don&#8217;t tune the recommendation engine parameters. You just use the damn thing.</p><p>RAG should work the same way. That&#8217;s why we built <strong>Needle Collections</strong>&#8230; production-ready RAG that just works.</p><div><hr></div><h2>Needle vs. n8n RAG: Side-by-Side</h2><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\begin{array}{|l|l|l|}\n\\hline\n\\textbf{Task} &amp; \\textbf{n8n} &amp; \\textbf{Needle} \\\\\n\\hline\n\\text{Set up vector database} &amp; \\text{Choose provider, configure nodes} &amp; \\text{Fully managed (Collections)} \\\\\n\\hline\n\\text{Select embedding model} &amp; \\text{Manual selection, check FAQ} &amp; \\text{Automatic, state-of-the-art} \\\\\n\\hline\n\\text{Configure chunking} &amp; \\text{Choose strategy, size, overlap} &amp; \\text{Intelligently optimized} \\\\\n\\hline\n\\text{Index documents} &amp; \\text{Build ingestion workflow} &amp; \\text{Upload to Collection (one-click)} \\\\\n\\hline\n\\text{Query your data} &amp; \\text{Configure agent + tools + limits} &amp; \\text{Chat interface OR 2-node workflow} \\\\\n\\hline\n\\text{Reindex on updates} &amp; \\text{Build webhook automation} &amp; \\text{Auto-sync connectors} \\\\\n\\hline\n\\text{Production deployment} &amp; \\text{Self-host infrastructure} &amp; \\text{Managed, production-ready} \\\\\n\\hline\n\\text{Workflow complexity} &amp; \\text{13+ nodes across 2 workflows} &amp; \\text{2 nodes (or just use chat)} \\\\\n\\hline\n\\end{array}&quot;,&quot;id&quot;:&quot;QIRXUWWRUB&quot;}" data-component-name="LatexBlockToDOM"></div><h2>Try Needle&#8217;s Approach</h2><p><strong>No-code:</strong> Create Collection &#8594; Upload docs &#8594; Chat with your data<br><strong>Build workflows:</strong> 2 nodes using <a href="https://needle.app/workflow-templates/rag-chatbot">our template</a></p><p>No chunking strategies. No vector databases. No embedding debates. Just production-ready RAG with automatic indexing and intelligent retrieval.</p><p>&#8594; <strong><a href="https://needle.app">Get Started Free</a></strong> <br>&#8594; <strong><a href="https://needle.app/workflow-templates/rag-chatbot">View RAG Template</a></strong> </p><div><hr></div><p><strong>P.S.</strong> For anyone currently maintaining an n8n RAG workflow and debugging chunk overlap parameters at 11pm: &#8220;fully-managed&#8221; might be better than &#8220;fully-configurable.&#8221; Create a Collection, upload docs, and you&#8217;re done.</p><p><strong>P.P.S.</strong> Yes, we have an n8n integration too. Use Needle&#8217;s MCP tools in your n8n AI Agent workflows if you want the best of both worlds: n8n&#8217;s automation + Needle&#8217;s managed RAG. <a href="https://docs.needle.app/docs/guides/mcp/needle-mcp-n8n/">See the docs</a>.</p><div><hr></div><p><em>Jan Heimes is Co-founder &amp; vibe automation magician at <a href="https://needle.app">Needle</a>. When he&#8217;s not simplifying RAG he&#8217;s running LinkedIn automations and occasionally messaging himself by accident.</em></p>]]></content:encoded></item><item><title><![CDATA[How to Automatically Organize Fireflies Meeting Transcripts in Google Drive]]></title><description><![CDATA[Watch now | The Problem with Meeting Documentation]]></description><link>https://blog.needle.app/p/how-to-automatically-organize-fireflies</link><guid isPermaLink="false">https://blog.needle.app/p/how-to-automatically-organize-fireflies</guid><dc:creator><![CDATA[Needle]]></dc:creator><pubDate>Tue, 30 Dec 2025 08:47:22 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/182869290/a73e927f00433757694238c181aeff99.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Meeting transcripts are valuable. They capture decisions, action items, and context that would otherwise be lost. Tools like Fireflies make it easy to generate these transcripts automatically.</p><p>But here&#8217;s where the process breaks down: after every meeting, you need to manually download the transcript, format it into something useful, decide where to store it, and file it away. This might only take 5 minutes per meeting, but across dozens of meetings per month, it adds up to hours of repetitive work.</p><p>The solution? Automate the entire process.</p><p><strong>Building an Intelligent Filing System</strong></p><p>In this tutorial, we show you how to build a workflow that automatically processes Fireflies transcripts and organizes them in Google Drive without any manual intervention.</p><p>Here&#8217;s what the workflow does:</p><p><strong>1. Triggers on new transcripts</strong> When Fireflies emails you a meeting transcript, the workflow automatically detects it and begins processing.</p><p><strong>2. Extracts the full conversation</strong> Using the Fireflies integration, the workflow retrieves the complete transcript, not just summaries. This gives you access to every detail discussed in the meeting.</p><p><strong>3. Formats the content</strong> The workflow structures the transcript into a clean format with discussion points, decisions made, action items, and next steps. You can customize this formatting to match your preferences.</p><p><strong>4. Files it in the right folder</strong> Based on the meeting context (participants, topics discussed, or other criteria you define), the workflow determines which Google Drive folder the notes belong in and saves them there automatically.</p><p><strong>Why This Approach Works</strong></p><p>Traditional automation tools require you to manually map every possible scenario. If meeting X happens, put it in folder Y. This breaks down quickly as your folder structure evolves or meeting contexts change.</p><p>This workflow takes a different approach. Instead of maintaining complex routing rules, you describe how you want things organized in natural language, and the system figures out the rest. As your needs change, you can adjust the instructions without rebuilding the entire workflow.</p><p><strong>What You Need</strong></p><p>The workflow uses three main integrations:</p><p><strong>Gmail</strong> to detect incoming Fireflies transcript emails <strong>Fireflies</strong> to fetch the full transcript content <strong>Google Drive</strong> to create and organize documents</p><p>Each step connects through Needle&#8217;s workflow builder, where you can see exactly what happens at each stage and modify it as needed.</p><p><strong>Getting Started</strong></p><p>This workflow is available as a template in Needle. To use it:</p><ol><li><p>Connect your Gmail, Fireflies, and Google Drive accounts</p></li><li><p>Customize the formatting template to match your note-taking style</p></li><li><p>Define your folder structure (or describe how you organize meetings)</p></li><li><p>Activate the workflow</p></li></ol><p>From that point forward, every Fireflies transcript gets automatically processed and filed. No manual work required.</p><p><strong>Beyond Meeting Notes</strong></p><p>This same pattern (trigger, extract, format, route) applies to many other documentation workflows. Customer call notes, interview transcripts, project debriefs, research conversations. Anywhere you&#8217;re manually processing structured information, you can build an automation to handle it.</p><p>The key is breaking down your current manual process into clear steps, then connecting the right tools to handle each step automatically.</p><p>What documentation workflows are you still handling manually? Reply to this email and let us know. We&#8217;re always looking for new automation challenges to tackle.</p>]]></content:encoded></item></channel></rss>