<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Mathieu Vie</title>
    <description>The latest articles on Forem by Mathieu Vie (@mathieu_vie).</description>
    <link>https://forem.com/mathieu_vie</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3446232%2F1d7c30df-2d2e-4f48-b8b8-e2dddc488d86.png</url>
      <title>Forem: Mathieu Vie</title>
      <link>https://forem.com/mathieu_vie</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/mathieu_vie"/>
    <language>en</language>
    <item>
      <title>Linkedin Growth Radar AI Agents</title>
      <dc:creator>Mathieu Vie</dc:creator>
      <pubDate>Fri, 29 Aug 2025 16:20:07 +0000</pubDate>
      <link>https://forem.com/mathieu_vie/linkedin-growth-radar-ai-agents-3hfk</link>
      <guid>https://forem.com/mathieu_vie/linkedin-growth-radar-ai-agents-3hfk</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/brightdata-n8n-2025-08-13"&gt;AI Agents Challenge powered by n8n and Bright Data&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  🚀 LinkedIn Growth Radar
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;LinkedIn Growth Radar&lt;/strong&gt;, a real-time AI agent that turns any &lt;strong&gt;public LinkedIn company URL&lt;/strong&gt; into actionable business intelligence.&lt;/p&gt;

&lt;p&gt;Instead of scrolling through pages or manually collecting data, this workflow automatically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fetches live LinkedIn company data using the &lt;strong&gt;Bright Data verified node&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Analyzes growth signals such as follower increase, employee headcount, and hiring activity&lt;/li&gt;
&lt;li&gt;Scores each company with a &lt;strong&gt;priority index&lt;/strong&gt; for business development and competitive monitoring&lt;/li&gt;
&lt;li&gt;Delivers digestible insights directly in &lt;strong&gt;Telegram&lt;/strong&gt;, with messages chunked to avoid API limits&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use case:&lt;/strong&gt; Sales teams, recruiters, and analysts can instantly qualify companies and spot high-growth opportunities — without leaving their chat app.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎥 Demo
&lt;/h2&gt;

&lt;p&gt;🔗 &lt;strong&gt;Live Demo Bot&lt;/strong&gt;: &lt;a href="https://t.me/n8nsight_bot" rel="noopener noreferrer"&gt;@n8nsight_bot&lt;/a&gt;&lt;br&gt;
Test it in real time: just paste a public LinkedIn company URL and get back a structured growth radar report.&lt;/p&gt;

&lt;p&gt;📹 &lt;strong&gt;Video Demo Bot&lt;/strong&gt;: &lt;a href="https://www.loom.com/share/9c9f2d166f55468b95815f0fa7c19c54?sid=c5094097-9bdc-4ae6-8a07-0d6080910d07" rel="noopener noreferrer"&gt;Click to view the demo&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ n8n Workflow
&lt;/h2&gt;

&lt;p&gt;The full workflow JSON is available here:&lt;br&gt;
👉 &lt;a href="https://gist.githubusercontent.com/synapz-fr/c80507e189a5213df021665ad6f32e7c/raw/472105bb2b97b6376c47b7b3d9939ccd6e5866cc/growth-radar.json" rel="noopener noreferrer"&gt;LinkedIn Growth Radar Workflow (GitHub Gist)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmoc7q6zbpzi84bwt3qeg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmoc7q6zbpzi84bwt3qeg.png" alt="Workflow Screenshot" width="800" height="330"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️ Technical Implementation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  System &amp;amp; Agent Setup
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;n8n AI Agent Node&lt;/strong&gt; orchestrates the logic and reasoning&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Function Node&lt;/strong&gt; ensures Telegram output is split into safe chunks (&amp;lt;4000 chars)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Telegram Node&lt;/strong&gt; delivers results to end users&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Bright Data Verified Node
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;We use the &lt;strong&gt;LinkedIn Company Profile extractor&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Input: company URL (e.g., &lt;code&gt;https://www.linkedin.com/company/openai/&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Output: structured JSON with fields such as employees, locations, followers, and about section&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Redis Optimization
&lt;/h3&gt;

&lt;p&gt;To reduce costs and improve performance, we implemented a &lt;strong&gt;Redis caching layer&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Function Node&lt;/strong&gt; → Hash the LinkedIn company URL into a cache key (e.g., &lt;code&gt;linkedin:company:openai&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redis Node (GET)&lt;/strong&gt; → Check if a cached result exists.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IF Node&lt;/strong&gt; → If data exists, return it directly. Otherwise, call Bright Data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redis Node (SETEX)&lt;/strong&gt; → Store new Bright Data results with a TTL (e.g., 24h).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This ensures:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🚀 Faster responses on repeated queries&lt;/li&gt;
&lt;li&gt;💸 Reduced Bright Data credit usage&lt;/li&gt;
&lt;li&gt;🔒 Consistency during a session or short monitoring window&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Processing &amp;amp; Scoring
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Custom scoring logic weighs factors like size fit, headcount growth, hiring volume, ICP relevance, and engagement activity&lt;/li&gt;
&lt;li&gt;Generates a &lt;strong&gt;0–100 score&lt;/strong&gt; and classifies companies into &lt;strong&gt;Priority A, B, or C&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Outputs in a compact report, including engagement digest and growth signals&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💬 Commands &amp;amp; User Experience
&lt;/h2&gt;

&lt;p&gt;The Telegram bot is kept intentionally simple with &lt;strong&gt;two main commands&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;/prospect&lt;/code&gt;&lt;/strong&gt; → Analyze saved LinkedIn company URLs and return:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Company profile summary (industry, size, followers, growth signals)&lt;/li&gt;
&lt;li&gt;Opportunity score (0–100) + Priority level (A, B, C)&lt;/li&gt;
&lt;li&gt;Next best sales actions tailored to the company context&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpxxh3w8yz6w79x7b851h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpxxh3w8yz6w79x7b851h.png" alt="Prospect sample" width="800" height="549"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;/content&lt;/code&gt;&lt;/strong&gt; → Analyze a company’s recent public LinkedIn posts and return:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Top-performing posts in the last 30 days with engagement rates&lt;/li&gt;
&lt;li&gt;Key content insights (themes &amp;amp; formats that resonate)&lt;/li&gt;
&lt;li&gt;3–5 fresh LinkedIn post ideas, each with title, hook, angle, bullets, and CTA&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffmk47cwyhl13wccrlx8y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffmk47cwyhl13wccrlx8y.png" alt="Content sample" width="800" height="715"&gt;&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flow:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;User pastes one or more &lt;strong&gt;public LinkedIn company URLs&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Bot stores them in session.&lt;/li&gt;
&lt;li&gt;User triggers either &lt;code&gt;/prospect&lt;/code&gt; or &lt;code&gt;/content&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Workflow calls &lt;strong&gt;Bright Data&lt;/strong&gt; → Extracts structured company or post data → Normalizes it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Agent&lt;/strong&gt; generates insights → Results are delivered in &lt;strong&gt;chunked Telegram messages&lt;/strong&gt; (&amp;lt;4000 chars).&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  ✨ Journey
&lt;/h2&gt;

&lt;p&gt;The main challenge was to handle &lt;strong&gt;LinkedIn’s complexity&lt;/strong&gt;: Bright Data only works with &lt;strong&gt;known URLs&lt;/strong&gt;, so we designed the workflow around &lt;strong&gt;enrichment, not discovery&lt;/strong&gt;. This made the tool perfect for analysts who already have target lists but need richer, real-time context.&lt;/p&gt;

&lt;p&gt;Other hurdles included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Telegram message limits&lt;/strong&gt; → solved with a custom chunking function&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Balancing signal weights&lt;/strong&gt; → iterated on scoring logic until results felt useful&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clarity of insights&lt;/strong&gt; → formatted reports with key metrics, scores, and digests&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Avoiding redundant API calls&lt;/strong&gt; → solved with Redis caching&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What I learned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bright Data shines as a &lt;strong&gt;stage-2 extractor&lt;/strong&gt; once you have URLs&lt;/li&gt;
&lt;li&gt;n8n makes it easy to orchestrate AI agents and external data pipelines&lt;/li&gt;
&lt;li&gt;Redis is a powerful addition to manage costs and latency in real-time workflows&lt;/li&gt;
&lt;li&gt;Simplicity matters: the most powerful workflows are often the ones that users can trigger in one click (or one paste in Telegram)&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftsgiuxh37e2gk3o96nht.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftsgiuxh37e2gk3o96nht.png" alt="LinkedIn Growth Radar Cover" width="800" height="336"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Turns public LinkedIn company URLs into real-time business intelligence.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>n8nbrightdatachallenge</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
