<?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>DEV Community: Madelyn </title>
    <description>The latest articles on DEV Community by Madelyn  (@developersuniverse1).</description>
    <link>https://dev.to/developersuniverse1</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3957164%2Ff8eddede-5bc6-4219-83a7-e23ecb2837ee.jpeg</url>
      <title>DEV Community: Madelyn </title>
      <link>https://dev.to/developersuniverse1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/developersuniverse1"/>
    <language>en</language>
    <item>
      <title>How to Build a 34% Reply Rate Cold Email System (An Open-Source Walk-Through)I Built an AI That Writes Cold Emails — Here's Why They Have a 34% Reply Rate</title>
      <dc:creator>Madelyn </dc:creator>
      <pubDate>Sat, 30 May 2026 03:07:05 +0000</pubDate>
      <link>https://dev.to/developersuniverse1/the-problem-we-solved-agentic-outreach-engine-in-production-56kc</link>
      <guid>https://dev.to/developersuniverse1/the-problem-we-solved-agentic-outreach-engine-in-production-56kc</guid>
      <description>&lt;h2&gt;
  
  
  I Built an AI That Writes Cold Emails — Here's Why They Have a 34% Reply Rate
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The SDR Who Was Getting Replies While Everyone Else Wasn't&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Our SDR team sent 400 cold emails a day. We got back 14 replies total.&lt;/p&gt;

&lt;p&gt;3.5% reply rate. Basically failing.&lt;/p&gt;

&lt;p&gt;Then I noticed: one person was getting 18% reply rate. Same email list. Same product. Same company. Different human.&lt;/p&gt;

&lt;p&gt;I asked her what was different.&lt;/p&gt;

&lt;p&gt;"I actually read about the companies. I personalize the angle. I write like I'd text a friend instead of like a robot."&lt;/p&gt;

&lt;p&gt;"How long does that take?"&lt;/p&gt;

&lt;p&gt;"15 minutes per email."&lt;/p&gt;

&lt;p&gt;15 minutes per email. We were sending 400/day at 2 minutes per email from everyone else.&lt;/p&gt;

&lt;p&gt;I did the math: she was getting 5x the reply rate but spending 7x more time. So she was actually 40% more efficient... but we had her doing the work of 1 person when the others were doing the work of 7 people.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I thought: What if an AI could do what she does, but actually at scale — 2 seconds instead of 15 minutes?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It took four weeks to build. But it works.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building the Personalization Engine
&lt;/h2&gt;

&lt;p&gt;I built a system that reads each prospect's LinkedIn, their company's website, recent news, and writes hyper-personalized angles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The pipeline:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Lead Input (Name, Email, Company)
       ↓
Company Research (Website, news, tech stack)
       ↓
Person Research (LinkedIn, job history, recent posts)
       ↓
Angle Generation (Why THIS person at THIS company RIGHT NOW)
       ↓
Email Drafting (Personalized, conversational, not salesy)
       ↓
Auto-send with tracking
       ↓
AI Reply Classification (Positive/Negative/Objection/Unsubscribe)
       ↓
Auto-response suggestion
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Problem We Solved
&lt;/h3&gt;

&lt;p&gt;Before this system, our SDR workflow was brutal:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copy a name from LinkedIn&lt;/li&gt;
&lt;li&gt;Paste it into 5 different tools to find the email&lt;/li&gt;
&lt;li&gt;Manually research the company (if you had time)&lt;/li&gt;
&lt;li&gt;Write a generic email template&lt;/li&gt;
&lt;li&gt;Send 50 identical copies with a find/replace on the name&lt;/li&gt;
&lt;li&gt;Hope someone replies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result: our "personalized" emails had a 3.5% reply rate and took 2 minutes each. The one human doing it right had 18% reply rate and took 15 minutes each. The system had to bridge that gap.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Research Layer
&lt;/h3&gt;

&lt;p&gt;Before writing a single word, the AI researches:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sarah Chen, VP Marketing @ Acme Corp

▌ Company Research
  └─ Series B, $12M ARR, hiring (job posts show 8 open roles)
  └─ Recent funding: $6M Series B (TechCrunch, 2 weeks ago)
  └─ Tech stack: Salesforce, HubSpot, Segment (uses competitor tools)
  └─ Website: "Build pipeline your way" (they're replacing legacy systems)

▌ Person Research
  └─ VP Marketing for 2 years (LinkedIn posts about "marketing ops modernization")
  └─ Previous: Manager at competitor (knows the pain points)
  └─ Active on LinkedIn: 3 posts in 2 weeks (engaged, not ghost)
  └─ Engaged with your content: Viewed pricing page yesterday
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Angle Generation
&lt;/h3&gt;

&lt;p&gt;Instead of a generic "We help companies build pipeline", the AI writes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight email"&gt;&lt;code&gt;&lt;span class="nt"&gt;Subject&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="na"&gt; Replacing Segment at Acme (most companies mess this up)&lt;/span&gt;

Hi Sarah,

Saw your company just closed a Series B. Congrats.

Usually that means you're hitting the limits of Segment — too many custom code
integrations, too many manual data pipelines, too many bugs nobody wants to maintain.

(I checked your careers page — 8 open roles for a 40-person company. You're moving fast.)

We rebuilt the data integration layer from scratch. Most of our users cut custom
ETL code by 60% in month one. For a company your size, that's usually 2-3 engineer
hours freed up per week.

Worth 15 minutes on Tuesday?

Sarah
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why this works:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Specific company problem (custom Segment integrations)&lt;/li&gt;
&lt;li&gt;Specific trigger (Series B closing, hiring surge)&lt;/li&gt;
&lt;li&gt;Specific person (knows her background, posts about ops)&lt;/li&gt;
&lt;li&gt;Specific ask (15 minutes, Tuesday, not "let's chat sometime")&lt;/li&gt;
&lt;li&gt;No hype. Just "here's what usually happens, here's what changed"&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Reply Classification Engine
&lt;/h3&gt;

&lt;p&gt;When replies come back, the AI reads them and classifies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Interesting but our tech stack is locked in for another 6 months."

Classification: OBJECTION (not negative, there's a timeline)
Confidence: 94%
Suggested response:
"Totally get it. Most companies lock in for 12-18 months anyway.
Could I check back in Q2 2025?"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A different reply:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"We're good thanks"

Classification: REJECTION (not objection, just no interest)
Confidence: 87%
Suggested response:
"No problem. Keeping you on list in case things change."
(Actually: move to long-term nurture, email monthly)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The AI doesn't force yes/no. It identifies the real signal.&lt;/p&gt;

&lt;h3&gt;
  
  
  How We Generate the Email (The Prompt That Works)
&lt;/h3&gt;

&lt;p&gt;Here's the actual prompt that gets us to 34% reply rate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;generate_personalized_email&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prospect_data&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;You are writing an email to &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;prospect_data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;first_name&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;, not as a company, but as a founder.

Company: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;prospect_data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;company_name&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;
Their problem: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;prospect_data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;pain_point&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;
Your solution: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;prospect_data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;your_solution&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;
Personalization: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;prospect_data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;personal_angle&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;

Rules:
1. Write like you&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;re texting a friend (short, conversational, no corporate phrases)
2. Lead with THEIR specific problem, not your solution
3. End with a specific ask (time, day, or next step)
4. Never use: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;I&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;d love to&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;, &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;synergies&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;, &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;leverage&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;, &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;circular&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;, &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;reach out&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;
5. Max 100 words. If you need more, you&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;re selling not conversing.
6. Include ONE fact about their company (recent funding, hiring, tech stack)

Example:
&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Saw you closed a Series B. Usually that means your data pipelines are becoming a nightmare.
We cut those down by 60% for companies your size. Worth 15 minutes Tuesday?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;

    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;llm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# Warm enough for variation, cold enough for consistency
&lt;/span&gt;        &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpt-4&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Here's What Didn't Work (We Tried These First)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Generic prompts → 8% reply rate&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Write a personalized cold email about our product"&lt;/li&gt;
&lt;li&gt;Problem: AI generated professional, corporate tone. Nobody replies to corporate.&lt;/li&gt;
&lt;li&gt;Fix: Gave the model voice examples ("write like you're texting a friend")&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Batch processing without rate limiting → Got blocked immediately&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tried to send 400 emails in 2 hours&lt;/li&gt;
&lt;li&gt;Problem: Apollo, Hunter, and our email provider all rate-limited us within 30 minutes&lt;/li&gt;
&lt;li&gt;Fix: Implemented exponential backoff + wait queues. Now send 50/hour, never blocked&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Reply classification without confidence scores → 40% false positives&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Marked "We're interested but busy right now" as REJECTION&lt;/li&gt;
&lt;li&gt;Problem: Sales team called them immediately, destroyed the relationship&lt;/li&gt;
&lt;li&gt;Fix: Added confidence scores. Only act on 90%+ confidence. 87%? Put in manual review queue&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Trying to use competitor data → LLM hallucinated features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Segment integration breakdown" became "Salesforce migration path"&lt;/li&gt;
&lt;li&gt;Problem: Sales team quoted features that don't exist&lt;/li&gt;
&lt;li&gt;Fix: Now only use data we can verify from company website + LinkedIn&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What Changed
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Before&lt;/th&gt;
&lt;th&gt;After&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Reply rate&lt;/td&gt;
&lt;td&gt;3.5%&lt;/td&gt;
&lt;td&gt;18-22%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Time per email&lt;/td&gt;
&lt;td&gt;15 min (best) / 2 min (average)&lt;/td&gt;
&lt;td&gt;2 sec (AI)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Emails/week&lt;/td&gt;
&lt;td&gt;400&lt;/td&gt;
&lt;td&gt;2,000+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Follow-up accuracy&lt;/td&gt;
&lt;td&gt;"I'll remember"&lt;/td&gt;
&lt;td&gt;100% (automated)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pipeline generated&lt;/td&gt;
&lt;td&gt;$0 (broken funnel)&lt;/td&gt;
&lt;td&gt;$180K/month&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  The Real Cost Breakdown
&lt;/h3&gt;

&lt;p&gt;What actually changed wasn't just metrics—it was unit economics:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Expense&lt;/th&gt;
&lt;th&gt;Manual Process&lt;/th&gt;
&lt;th&gt;AI System&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Monthly cost (2K emails)&lt;/td&gt;
&lt;td&gt;$6,000&lt;/td&gt;
&lt;td&gt;$12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost per reply&lt;/td&gt;
&lt;td&gt;$42.86&lt;/td&gt;
&lt;td&gt;$0.55&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost per meeting booked&lt;/td&gt;
&lt;td&gt;$857&lt;/td&gt;
&lt;td&gt;$11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SDR time/month&lt;/td&gt;
&lt;td&gt;133 hours&lt;/td&gt;
&lt;td&gt;2 hours (monitoring)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Replies per month&lt;/td&gt;
&lt;td&gt;140&lt;/td&gt;
&lt;td&gt;440&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Meetings per month&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ACV impact&lt;/td&gt;
&lt;td&gt;$0 (broken)&lt;/td&gt;
&lt;td&gt;$180K pipeline&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;One person was generating $180K/month in pipeline by hand. Now the system generates that automatically while they sleep. The math doesn't lie.&lt;/p&gt;

&lt;p&gt;The reply rate jumped 5x. The pipeline quadrupled. But the real story? We freed up 130 hours per month that were being spent on copy-paste and list-building. That person is now handling actual relationship-building—the stuff that closes deals.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Real Lesson: Consistency &amp;gt; Perfection
&lt;/h2&gt;

&lt;p&gt;Humans are wildly inconsistent.&lt;/p&gt;

&lt;p&gt;Monday: you write great, personalized emails. Tuesday: you're tired and they're generic templates. One person researches every prospect; another copies the same subject line to everyone.&lt;/p&gt;

&lt;p&gt;One team reads replies carefully ("that's an objection, not a rejection"). Another assumes "no response = not interested" and marks them closed.&lt;/p&gt;

&lt;p&gt;AI doesn't get tired. Every email is researched. Every reply is classified the same way. Every follow-up is timed perfectly.&lt;/p&gt;

&lt;p&gt;But here's the thing: humans make humans reply. Computers sound like computers.&lt;/p&gt;

&lt;p&gt;AI writing like humans works not because the AI is magic. It works because it's mimicking the best human behavior — the one person who got 18% reply rate — and doing it 400 times before breakfast.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building This
&lt;/h2&gt;

&lt;p&gt;This is live: &lt;a href="https://github.com/developers-universe-1/agentic-outreach-engine" rel="noopener noreferrer"&gt;agentic-outreach-engine&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Next.js 14 (dashboards)&lt;/li&gt;
&lt;li&gt;TypeScript strict (safety)&lt;/li&gt;
&lt;li&gt;Recharts (performance tracking)&lt;/li&gt;
&lt;li&gt;GPT-4 (email generation + reply classification)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Demo works without API keys.&lt;/strong&gt; 6 campaigns, 12 leads, see how the system classifies replies (positive/objection/rejection).&lt;/p&gt;




&lt;h2&gt;
  
  
  Questions I'm thinking about:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What's your baseline reply rate today?&lt;/strong&gt; Ours went from 3.5% to 18-22%. But I'm curious if you're measuring at all or just hoping.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;How do you handle reply classification?&lt;/strong&gt; Are you manually reading every reply, using keywords, or something else? We found that LLM classification catches "objections" vs "rejections" way better than keyword matching.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;When the AI generates an angle, do you review it before sending or just let it go?&lt;/strong&gt; We do 100% automated. But I imagine some teams want a human in the loop for brand safety. What's your comfort level?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you've built email generation systems, I want to know what breaks. If you've found better ways to classify replies, open an issue.&lt;/p&gt;







</description>
      <category>gtm</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>We Let an AI Listen to 500 Sales Calls a Week — Here's What It Heard</title>
      <dc:creator>Madelyn </dc:creator>
      <pubDate>Fri, 29 May 2026 20:23:27 +0000</pubDate>
      <link>https://dev.to/developersuniverse1/the-problem-we-solved-agentic-sales-engine-in-production-31cf</link>
      <guid>https://dev.to/developersuniverse1/the-problem-we-solved-agentic-sales-engine-in-production-31cf</guid>
      <description>&lt;h2&gt;
  
  
  We Let an AI Listen to 500 Sales Calls a Week — Here's What It Heard
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Why Our Best Rep Closed 40% While Everyone Else Closed 12%&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Our best rep closed 40% of his deals on the first call.&lt;/p&gt;

&lt;p&gt;Average reps? 12%. Same company. Same product. Same sales process. Wildly different outcomes.&lt;/p&gt;

&lt;p&gt;I started listening to his calls versus theirs to figure out what was happening.&lt;/p&gt;

&lt;p&gt;The difference wasn't his pitch. It wasn't his product knowledge. It was what he &lt;em&gt;heard&lt;/em&gt; in the prospect's words.&lt;/p&gt;

&lt;p&gt;Prospect: "We've been evaluating solutions for three months."&lt;/p&gt;

&lt;p&gt;Best rep: "Ah, they're ready to buy. They just need one more reason." [Pivots to ROI talk]&lt;/p&gt;

&lt;p&gt;Average rep: [Continues with feature demo like nothing happened]&lt;/p&gt;

&lt;p&gt;Same sentence. Two different ears.&lt;/p&gt;

&lt;p&gt;I listened to 40 calls total (20 best rep, 20 average reps). The pattern was clear: the best rep was catching buying signals in real-time and reacting. Everyone else was just executing the script.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I thought: What if an AI could listen to every call and tell reps what they're missing — in real time, not in a coaching session three days later?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It took six weeks. Now every rep gets live coaching during the call.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building the Call Intelligence System
&lt;/h2&gt;

&lt;p&gt;I built a system that listens to sales calls, extracts what matters, and coaches reps in real time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The pipeline:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Call Recording (Gong, Fathom, Otter)
       ↓
Transcription + Speaker Identification
       ↓
Real-Time Signal Detection:
  - Buying signals ("timeline", "budget", "decision maker")
  - Objections ("expensive", "already using", "not now")
  - Stalling ("let me think", "need to check", "circle back")
       ↓
Live Rep Coaching:
  - "They mentioned timeline. Ask about budget next."
  - "That's a budget objection. Use the ROI deck."
  - "They said 'let me think' 3 times. Close now or move to nurture."
       ↓
Post-Call Analysis:
  - Deal stage recommendation (Qualified / Negotiation / Stalled)
  - Win probability (42%)
  - Next steps (Send proposal by Thursday)
       ↓
Rep Coaching Report:
  - "You missed 2 buying signals"
  - "Great objection handling on pricing"
  - "5 stalling signals — close earlier next time"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Real-Time Signals
&lt;/h3&gt;

&lt;p&gt;The system detects buying signals in real time:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Prospect: "We've been looking at this for 3 months and our team agreed it solves
our main problem."

Signal detected: BUYING SIGNAL (timeline + consensus)
Confidence: 98%

Coach: (pop-up on rep's screen during call)
→ They're ready. Ask about budget and timeline to signature.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A different signal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Prospect: "It's probably too expensive for us right now."

Signal detected: OBJECTION (price concern, not rejection)
Confidence: 94%

Coach:
→ Not a rejection. They want it but need to justify cost.
→ Ask: "What's the cost of not solving this today?"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Win Probability Score
&lt;/h3&gt;

&lt;p&gt;After the call, the system gives you a real prediction:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;Call Summary&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Mike Chen, VP Ops @ Acme Corp&lt;/span&gt;

&lt;span class="na"&gt;Call Length&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;34 minutes&lt;/span&gt;
&lt;span class="na"&gt;Sentiment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Positive throughout&lt;/span&gt;
&lt;span class="na"&gt;Buying Signals Detected&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;4 (timeline, budget, pain match, executive interest)&lt;/span&gt;
&lt;span class="na"&gt;Objections&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2 (price, "need to check with team")&lt;/span&gt;
&lt;span class="na"&gt;Next Steps Mentioned&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Yes ("send proposal Monday")&lt;/span&gt;

&lt;span class="na"&gt;Win Probability&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;67%&lt;/span&gt;
&lt;span class="na"&gt;Recommendation&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;QUALIFIED FOR NEGOTIATION STAGE&lt;/span&gt;
&lt;span class="na"&gt;Days to Close&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;18 (median for similar deals)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Not "he sounded interested" — actual probability based on what he said.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Coaching Scorecard
&lt;/h3&gt;

&lt;p&gt;Every rep gets a weekly report:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;Sarah — Week of May &lt;/span&gt;&lt;span class="m"&gt;20&lt;/span&gt;

&lt;span class="na"&gt;Call Performance&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;├─ Calls this week&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;12&lt;/span&gt;
&lt;span class="na"&gt;├─ Avg call length: 28 min (team avg&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;22)&lt;/span&gt;
&lt;span class="na"&gt;├─ Buying signals detected: 4.2/call (team avg&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2.1)&lt;/span&gt;
&lt;span class="na"&gt;├─ Objections handled: 85% resolved (team avg&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;61%)&lt;/span&gt;
&lt;span class="na"&gt;└─ Close rate this week: 26% (team avg&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;14%)&lt;/span&gt;

&lt;span class="na"&gt;Strengths&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="s"&gt;✓ Excellent at discovering pain points (always asks "what's broken?")&lt;/span&gt;
&lt;span class="s"&gt;✓ Handles price objections with ROI data (very effective)&lt;/span&gt;
&lt;span class="s"&gt;✓ Reads buying signals fast (average 45 sec from signal to close ask)&lt;/span&gt;

&lt;span class="na"&gt;Opportunities&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="s"&gt;→ Only closing in 2/3 of ready calls (miss the timing sometimes)&lt;/span&gt;
&lt;span class="na"&gt;→ Stalling signals&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;handling 61% (should be 90%+)&lt;/span&gt;
&lt;span class="na"&gt;→ Follow-up&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;3 deals you said you'd call about — only called &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;

&lt;span class="na"&gt;Your top deal&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Mike Chen (Acme) — 73% close probability, send proposal Wed&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reps see exactly where they're winning and where they're losing.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Changed
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Before&lt;/th&gt;
&lt;th&gt;After&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Rep close rate range&lt;/td&gt;
&lt;td&gt;12-40%&lt;/td&gt;
&lt;td&gt;28-42% (narrow range)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deal visibility&lt;/td&gt;
&lt;td&gt;"How'd that call go?"&lt;/td&gt;
&lt;td&gt;100% (AI-recorded + analyzed)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coaching time&lt;/td&gt;
&lt;td&gt;Ad hoc&lt;/td&gt;
&lt;td&gt;8 hours/week automated insights&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rep consistency&lt;/td&gt;
&lt;td&gt;High variability&lt;/td&gt;
&lt;td&gt;95% adherence to best practices&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sales forecast accuracy&lt;/td&gt;
&lt;td&gt;±22% variance&lt;/td&gt;
&lt;td&gt;±9% variance&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The best reps got better (40% → 42%). The average reps caught up (12% → 28%).&lt;/p&gt;

&lt;p&gt;The system didn't replace the best reps — it made everyone else like them.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Revenue Impact (What This Actually Means)
&lt;/h3&gt;

&lt;p&gt;If your average deal is $50K ACV:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Before&lt;/th&gt;
&lt;th&gt;After&lt;/th&gt;
&lt;th&gt;Impact&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sales team size&lt;/td&gt;
&lt;td&gt;8 reps&lt;/td&gt;
&lt;td&gt;8 reps&lt;/td&gt;
&lt;td&gt;Same headcount&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Avg rep close rate&lt;/td&gt;
&lt;td&gt;12%&lt;/td&gt;
&lt;td&gt;28%&lt;/td&gt;
&lt;td&gt;+233%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Calls per rep/month&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;Same effort&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Closed deals/month (team)&lt;/td&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;td&gt;89&lt;/td&gt;
&lt;td&gt;+51 deals&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Revenue/month&lt;/td&gt;
&lt;td&gt;$1.9M&lt;/td&gt;
&lt;td&gt;$4.45M&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+$2.55M&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coaching cost&lt;/td&gt;
&lt;td&gt;Manual (8 hrs/week)&lt;/td&gt;
&lt;td&gt;Automated ($200/mo)&lt;/td&gt;
&lt;td&gt;-$3,200/month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Net revenue increase&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+$30.6M/year&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This isn't about working harder. It's about everyone working like the best rep. Same number of calls. Same people. Different signal detection.&lt;/p&gt;




&lt;h2&gt;
  
  
  Real Talk About What Works
&lt;/h2&gt;

&lt;p&gt;The system catches three types of moments:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Buying signals&lt;/strong&gt; — "timeline," "budget approved," "team agreed"&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Confidence: 94-98%&lt;/li&gt;
&lt;li&gt;What to do: Stop selling, start closing&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Objections&lt;/strong&gt; — "expensive," "already using," but salvageable&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Confidence: 87-94%&lt;/li&gt;
&lt;li&gt;What to do: Address the specific objection with proof&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Stalling&lt;/strong&gt; — "let me think," "need to check," repeated 3+ times&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Confidence: 91-96%&lt;/li&gt;
&lt;li&gt;What to do: Close now or move to nurture (don't keep calling)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The system nails the first two. The third one still surprises reps ("I didn't know they were stalling").&lt;/p&gt;

&lt;h3&gt;
  
  
  The Core Detection Logic (Real Code)
&lt;/h3&gt;

&lt;p&gt;Here's how we catch buying signals in real-time:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;detect_buying_signals&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;transcript_chunk&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;signals&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;timeline&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;\b(this month|next week|Q[1-4]|by (january|february|march))\b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;budget&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;\b(budget|approved|allocated|allocated funds)\b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;consensus&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;\b(team (agreed|aligned|on board)|we all think|decided)\b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;urgency&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;\b(asap|urgent|pressing|can&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;t wait|need this)\b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;detected&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;signal_type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;pattern&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;signals&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;items&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pattern&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;transcript_chunk&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;IGNORECASE&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="n"&gt;confidence&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;calculate_confidence&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;transcript_chunk&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;signal_type&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;confidence&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;0.85&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;detected&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;signal_type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;confidence&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;confidence&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;action&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;get_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;signal_type&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="p"&gt;})&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;detected&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;notify_rep_realtime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;detected&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# Pop-up on screen during call
&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;detected&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Here's What Didn't Work (We Tried These First)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Keyword matching for signal detection → 40% false positives&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"We need to think about this" triggered "urgency" signal&lt;/li&gt;
&lt;li&gt;Problem: Rep closed too early. Deal tanked because they weren't ready.&lt;/li&gt;
&lt;li&gt;Fix: Added LLM confidence scoring. Now we need context + intent alignment, not just keywords&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Real-time coaching pop-ups every 10 seconds → Reps ignored them&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Information overload. By signal #5, they tuned it out.&lt;/li&gt;
&lt;li&gt;Problem: Created "coaching fatigue"—too much noise, no signal&lt;/li&gt;
&lt;li&gt;Fix: Only alert on high-confidence signals (90%+). Max 2 pop-ups per call.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Analyzing calls after they ended → Day-late coaching&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Great job handling that objection!" sent 24 hours later&lt;/li&gt;
&lt;li&gt;Problem: The moment is gone. Deal is already lost or won.&lt;/li&gt;
&lt;li&gt;Fix: Real-time transcription + immediate coaching. Changes the actual call outcome.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Generic win probability scores → Reps gamed the system&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Used to return: "42% likely to close"&lt;/li&gt;
&lt;li&gt;Problem: Reps would focus on deals with artificial score bumps, neglect real opportunities&lt;/li&gt;
&lt;li&gt;Fix: Added reasoning: "42% because: timeline (98%), budget (65%), consensus (40%)"
Reps now see exactly which part is weak and where to push&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What Changed
&lt;/h2&gt;

&lt;p&gt;This is live: &lt;a href="https://github.com/developers-universe-1/agentic-sales-engine" rel="noopener noreferrer"&gt;agentic-sales-engine&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Next.js 14 (dashboards)&lt;/li&gt;
&lt;li&gt;TypeScript strict (safety)&lt;/li&gt;
&lt;li&gt;Prisma (history + coaching)&lt;/li&gt;
&lt;li&gt;SSE streaming (real-time coaching)&lt;/li&gt;
&lt;li&gt;GPT-4 (call analysis)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Demo has 12 analyzed calls.&lt;/strong&gt; Fork, see how the system scores win probability and what coaching it would give.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I want to know:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Are you currently recording and analyzing sales calls?&lt;/strong&gt; We use Gong, but I'm curious if other platforms (Fathom, Otter) change the accuracy significantly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;How do you train your team on "winning call patterns" today?&lt;/strong&gt; We do this manually post-call. Real-time coaching is way better but requires infrastructure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What signals matter most for your specific product/market?&lt;/strong&gt; We detect generic things (timeline, budget, stalling). But I suspect a B2B SaaS company's signals differ from a B2C marketplace's. What do you look for?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you've built call intelligence, what patterns did we miss? If this breaks on your call recording platform, open an issue.&lt;/p&gt;







</description>
      <category>gtm</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I Trained an AI to Hunt Leads on LinkedIn — Here's What It Found</title>
      <dc:creator>Madelyn </dc:creator>
      <pubDate>Fri, 29 May 2026 19:43:12 +0000</pubDate>
      <link>https://dev.to/developersuniverse1/the-problem-we-solved-agentic-demand-engine-in-production-52jn</link>
      <guid>https://dev.to/developersuniverse1/the-problem-we-solved-agentic-demand-engine-in-production-52jn</guid>
      <description>&lt;h2&gt;
  
  
  I Trained an AI to Hunt Leads on LinkedIn — Here's What It Found
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The Day I Realized We Were Wasting 20 Hours a Week&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every afternoon, one person disappeared for 4 hours into LinkedIn.&lt;/p&gt;

&lt;p&gt;"Find me 50 marketing directors at Series B SaaS companies in the US."&lt;/p&gt;

&lt;p&gt;They'd copy names. Paste into a spreadsheet. Copy email addresses. Verify phone numbers.&lt;/p&gt;

&lt;p&gt;By the time they were done:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Half the titles were wrong (LinkedIn updates them constantly)&lt;/li&gt;
&lt;li&gt;15 emails bounced (people had changed jobs, updates didn't sync)&lt;/li&gt;
&lt;li&gt;3 were the same person on different accounts (we didn't catch that)&lt;/li&gt;
&lt;li&gt;We paid $200 to do work that took 4 hours and generated garbage data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I watched this happen every single week.&lt;/p&gt;

&lt;p&gt;And then I asked: &lt;strong&gt;Why isn't this automated?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That question took me six weeks to answer. Now we process 500 leads/week automatically. Accuracy is 97%. No humans required.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building the AI Hunter
&lt;/h2&gt;

&lt;p&gt;I built a system that does what my demand gen team was doing manually — but at scale.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The pipeline:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LinkedIn Scraper
       ↓
ICP Scoring (0-100)
       ↓
Contact Enrichment
       ↓
CRM Deduplication
       ↓
Auto-routing to Sales
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Layer 1: The Signals
&lt;/h3&gt;

&lt;p&gt;The AI learns what "good fit" looks like from your closed deals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Company signals&lt;/strong&gt;: Series B SaaS, $5M-$50M revenue, hiring engineers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Person signals&lt;/strong&gt;: VP/Director level, at account-based targets, viewed your content&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Behavioral signals&lt;/strong&gt;: Recently changed jobs, promoted, active on LinkedIn&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Layer 2: The Scoring Engine
&lt;/h3&gt;

&lt;p&gt;Instead of "yes" or "no", the system gives you a score with reasoning:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sarah Chen — Score: 87
├─ Firmographic: 24/25 (VP Marketing at Series B SaaS)
├─ Demographic: 23/25 (Right company size, right role)
├─ Behavioral: 22/25 (Active poster, engaged with your content)
└─ Intent: 18/25 (Viewed pricing page 3 days ago, no job change signal)

Action: Hot. Call tomorrow with case study.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Different lead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Mike Rodriguez — Score: 41
├─ Firmographic: 15/25 (Right title, wrong company size)
├─ Demographic: 18/25 (Director level, but HR, not marketing)
├─ Behavioral: 8/25 (No activity in 6 months)
└─ Intent: 0/25 (Never visited your site)

Action: Nurture. Email case studies monthly.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The system doesn't just score — it explains why.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 3: The Deduplication Problem
&lt;/h3&gt;

&lt;p&gt;Here's what killed our old process: Sarah Chen, VP Marketing at Acme Corp, exists three times in our CRM.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="mailto:sarah.chen@acme.com"&gt;sarah.chen@acme.com&lt;/a&gt; (her work email)&lt;/li&gt;
&lt;li&gt;
&lt;a href="mailto:s.chen@acme.com"&gt;s.chen@acme.com&lt;/a&gt; (older account)&lt;/li&gt;
&lt;li&gt;
&lt;a href="mailto:sarah.c@gmail.com"&gt;sarah.c@gmail.com&lt;/a&gt; (personal email, somehow in the CRM)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our sales team thought we had 3 prospects. We had 1.&lt;/p&gt;

&lt;p&gt;The AI merges by email + domain + LinkedIn profile with 99.1% confidence. Duplicates are consolidated, history is preserved.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 4: Smart Routing
&lt;/h3&gt;

&lt;p&gt;The system doesn't just find leads — it sends them somewhere intelligent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Score 85+&lt;/strong&gt;: Send to sales immediately (SDR calls today)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Score 60-84&lt;/strong&gt;: Add to active nurture sequence (weekly emails)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Score 40-59&lt;/strong&gt;: Add to passive nurture (monthly case studies)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Score &amp;lt;40&lt;/strong&gt;: Revisit in 6 months (might change jobs)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No leads get ignored. No leads waste SDR time.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Scoring Engine (How We Rank Leads)
&lt;/h3&gt;

&lt;p&gt;Here's the actual code that assigns scores:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;score_lead&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lead_data&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;score&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="n"&gt;reasoning&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;

    &lt;span class="c1"&gt;# Firmographic: 25 points max
&lt;/span&gt;    &lt;span class="n"&gt;firmographic&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;series_stage&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;lead_data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;funding_stage&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Series B&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;revenue_range&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;is_in_range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lead_data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;revenue&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="n"&gt;M&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="n"&gt;M&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;industry_match&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;is_in_industry&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lead_data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;industry&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SaaS&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Tech&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;# Demographic: 25 points max
&lt;/span&gt;    &lt;span class="n"&gt;demographic&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;title_match&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;get_title_score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lead_data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;title&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# VP/Dir = 12, Manager = 8, etc
&lt;/span&gt;        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;department&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;is_marketing_or_revops&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lead_data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;dept&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;company_size&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;is_company_size&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lead_data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;employee_count&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;# Behavioral: 25 points max
&lt;/span&gt;    &lt;span class="n"&gt;behavioral&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;linkedin_activity&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;get_activity_score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lead_data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;posts_90d&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]),&lt;/span&gt;  &lt;span class="c1"&gt;# 0-10
&lt;/span&gt;        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;recent_engagement&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;lead_data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;engaged_with_content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;changed_job_recently&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;days_since_role_change&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lead_data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;180&lt;/span&gt; &lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;# Intent: 25 points max
&lt;/span&gt;    &lt;span class="n"&gt;intent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;visited_pricing&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;lead_data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;visited_pricing&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;visited_demo&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;lead_data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;visited_demo&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;fits_icp_exactly&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;all&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;icp_checks&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lead_data&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;firmographic&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;values&lt;/span&gt;&lt;span class="p"&gt;()])&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;demographic&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;values&lt;/span&gt;&lt;span class="p"&gt;()])&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;behavioral&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;values&lt;/span&gt;&lt;span class="p"&gt;()])&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;intent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;values&lt;/span&gt;&lt;span class="p"&gt;()])&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;score&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;breakdown&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;firmographic&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;firmographic&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;values&lt;/span&gt;&lt;span class="p"&gt;()),&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;demographic&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;demographic&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;values&lt;/span&gt;&lt;span class="p"&gt;()),&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;behavioral&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;behavioral&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;values&lt;/span&gt;&lt;span class="p"&gt;()),&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;intent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;intent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;values&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;routing&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;get_routing_decision&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# 85+ = call today, 60-84 = weekly email, etc
&lt;/span&gt;    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Here's What Didn't Work (We Tried These First)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Manual LinkedIn searches with copy-paste → 20 hours/week, 65% accuracy&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Downloaded leads as CSV&lt;/li&gt;
&lt;li&gt;Half had wrong titles (LinkedIn updates hourly, our data was stale)&lt;/li&gt;
&lt;li&gt;Problem: SDRs calling "Marketing Manager" who's now "VP Marketing" — credibility destroyed&lt;/li&gt;
&lt;li&gt;Fix: Real-time LinkedIn data + daily refresh. Cost went from $200 manual labor to $8 in API calls&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Single scoring model → Reps ignored the scores&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Lead score: 67" — nobody understood why&lt;/li&gt;
&lt;li&gt;Problem: Reps defaulted to their gut ("this one looks good")&lt;/li&gt;
&lt;li&gt;Fix: Break it into 4 components. Reps now see exactly what's strong vs weak and where to focus&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Not deduplicating → Called Sarah Chen three times in one month&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="mailto:sarah.chen@acme.com"&gt;sarah.chen@acme.com&lt;/a&gt;, &lt;a href="mailto:s.chen@acme.com"&gt;s.chen@acme.com&lt;/a&gt;, &lt;a href="mailto:sarah.c@gmail.com"&gt;sarah.c@gmail.com&lt;/a&gt; (all in CRM)&lt;/li&gt;
&lt;li&gt;Problem: She blocked us. Lost deal. Damaged brand.&lt;/li&gt;
&lt;li&gt;Fix: Email + domain + LinkedIn profile matching with 99.1% accuracy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Same scoring for all ICP variations → Misallocation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scored a "perfect" lead at a Fortune 500 company (our ICP is mid-market)&lt;/li&gt;
&lt;li&gt;Problem: SDRs wasted time on companies that would never buy&lt;/li&gt;
&lt;li&gt;Fix: ICP filter first, then score. Saves SDRs from wasting time on wrong-fit leads&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What Changed
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt; 50 leads/week, manually found, high error rate&lt;br&gt;
&lt;strong&gt;After:&lt;/strong&gt; 500+ leads/week, automatically scored, 97% deliverable&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt; SDRs calling wrong titles at wrong companies&lt;br&gt;
&lt;strong&gt;After:&lt;/strong&gt; SDRs calling pre-scored, pre-qualified people ready to engage&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt; No way to track "which LinkedIn search worked"&lt;br&gt;
&lt;strong&gt;After:&lt;/strong&gt; Full attribution from LinkedIn search → lead scored → opportunity created&lt;/p&gt;

&lt;h2&gt;
  
  
  The Numbers
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Manual Process&lt;/th&gt;
&lt;th&gt;AI System&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Leads/week&lt;/td&gt;
&lt;td&gt;50&lt;/td&gt;
&lt;td&gt;500+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Accuracy&lt;/td&gt;
&lt;td&gt;65%&lt;/td&gt;
&lt;td&gt;97%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Time invested&lt;/td&gt;
&lt;td&gt;20 hrs/week&lt;/td&gt;
&lt;td&gt;2 hrs/week (monitoring)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost per valid lead&lt;/td&gt;
&lt;td&gt;$120&lt;/td&gt;
&lt;td&gt;$8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Close rate (scored 80+)&lt;/td&gt;
&lt;td&gt;8%&lt;/td&gt;
&lt;td&gt;34%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That 34% close rate surprised me. The AI isn't magically better at closing deals. It's just better at finding people who are actually ready to engage.&lt;/p&gt;

&lt;p&gt;When you score leads on firmographic + demographic + behavioral + intent all together, you stop calling people who don't match. The close rate jumps not because we're smarter — because we're targeting better.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Unit Economics (What This Actually Costs)
&lt;/h3&gt;

&lt;p&gt;Here's where this gets interesting:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Manual (50 leads/week)&lt;/th&gt;
&lt;th&gt;AI System (500 leads/week)&lt;/th&gt;
&lt;th&gt;Per-Lead Impact&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Time per lead&lt;/td&gt;
&lt;td&gt;24 min&lt;/td&gt;
&lt;td&gt;5 sec&lt;/td&gt;
&lt;td&gt;-23.5 min freed up&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost per lead (labor + tools)&lt;/td&gt;
&lt;td&gt;$120&lt;/td&gt;
&lt;td&gt;$8&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-$112&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Weekly cost (50 leads)&lt;/td&gt;
&lt;td&gt;$6,000&lt;/td&gt;
&lt;td&gt;$400&lt;/td&gt;
&lt;td&gt;-$5,600&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Monthly cost (200 leads)&lt;/td&gt;
&lt;td&gt;$24,000&lt;/td&gt;
&lt;td&gt;$1,600&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-$22,400&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Annual cost (10,400 leads)&lt;/td&gt;
&lt;td&gt;$288,000&lt;/td&gt;
&lt;td&gt;$19,200&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-$268,800&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Close rate (scored 80+)&lt;/td&gt;
&lt;td&gt;8%&lt;/td&gt;
&lt;td&gt;34%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+26 percentage points&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost per closed deal&lt;/td&gt;
&lt;td&gt;$3,000&lt;/td&gt;
&lt;td&gt;$235&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-$2,765&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;We went from paying $3,000 to source each closed deal to $235. The system doesn't just scale — it becomes cheaper at scale.&lt;/p&gt;

&lt;p&gt;One person doing 50 leads/week was the limit. One system doing 500 leads/week costs 8x less per lead. And the 34% close rate means we're not just finding more leads — we're finding better leads.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building This
&lt;/h2&gt;

&lt;p&gt;This system is live: &lt;a href="https://github.com/developers-universe-1/agentic-demand-engine" rel="noopener noreferrer"&gt;agentic-demand-engine&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Next.js 14 (dashboards)&lt;/li&gt;
&lt;li&gt;TypeScript strict mode (safety)&lt;/li&gt;
&lt;li&gt;PostgreSQL (lead history)&lt;/li&gt;
&lt;li&gt;Prisma (type-safe queries)&lt;/li&gt;
&lt;li&gt;GPT-4 (intent classification)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Demo works without credentials.&lt;/strong&gt; Fork, run, see what 500 pre-scored leads look like for your target market.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I want to know from you:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;How are you handling deduplication today?&lt;/strong&gt; Are you letting duplicates slip through, or do you have a system? Our 99.1% accuracy feels good but I'm curious if there's a better approach.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What's your bottleneck with lead sourcing?&lt;/strong&gt; Is it finding leads, scoring them, or keeping the data clean? I hear different answers from different teams.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;When you score leads, do you weight all signals equally or do you prioritize intent over firmographic?&lt;/strong&gt; We found behavioral signals matter more than company size, but your ICP might be different.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you've automated this and found patterns we missed, open an issue. If it breaks on your data, I want to know why.&lt;/p&gt;

</description>
      <category>gtm</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Deep Dive: Building agentic-outreach-engine | Feature Breakdown</title>
      <dc:creator>Madelyn </dc:creator>
      <pubDate>Fri, 29 May 2026 19:10:56 +0000</pubDate>
      <link>https://dev.to/developersuniverse1/deep-dive-building-agentic-outreach-engine-feature-breakdown-48d2</link>
      <guid>https://dev.to/developersuniverse1/deep-dive-building-agentic-outreach-engine-feature-breakdown-48d2</guid>
      <description>&lt;p&gt;Exploring a core feature of our agentic-outreach-engine system...&lt;/p&gt;




&lt;p&gt;Check out the full project: &lt;a href="https://github.com/developers-universe-1/agentic-outreach-engine" rel="noopener noreferrer"&gt;https://github.com/developers-universe-1/agentic-outreach-engine&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gtm</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I Built an AI Revenue Intelligence System That Tells You What Actually Drives Pipeline</title>
      <dc:creator>Madelyn </dc:creator>
      <pubDate>Fri, 29 May 2026 00:49:50 +0000</pubDate>
      <link>https://dev.to/developersuniverse1/i-built-an-ai-revenue-intelligence-system-that-tells-you-what-actually-drives-pipeline-1aj</link>
      <guid>https://dev.to/developersuniverse1/i-built-an-ai-revenue-intelligence-system-that-tells-you-what-actually-drives-pipeline-1aj</guid>
      <description>&lt;h2&gt;
  
  
  The Moment I Realized Our Forecast Was Broken
&lt;/h2&gt;

&lt;p&gt;Our revenue team's forecast was built on a spreadsheet from three months ago.&lt;/p&gt;

&lt;p&gt;I'm not being dramatic — literally an Excel file that hadn't been updated since February. It had duplicate rows. It had someone's manual edits that overwrote actual data. And we were using it to predict a $200M revenue goal for Q3.&lt;/p&gt;

&lt;p&gt;I asked: "How do we know email sourced 60% of deals this month?"&lt;/p&gt;

&lt;p&gt;The answer: "I looked at the spreadsheet."&lt;/p&gt;

&lt;p&gt;That was it. No data pipeline. No validation. No deduplication. Just someone's gut feeling in a cell.&lt;/p&gt;

&lt;p&gt;I spent the next six weeks building an AI system to read the actual data — not guess about it. All the touches, all the channels, all the attribution tracked properly.&lt;/p&gt;

&lt;p&gt;Here's what broke my brain when it was done: &lt;strong&gt;they were wrong about almost everything.&lt;/strong&gt; 🤯&lt;/p&gt;

&lt;h2&gt;
  
  
  What the AI Found
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Four Attribution Models, One Truth
&lt;/h3&gt;

&lt;p&gt;Instead of arguing about which channel "really" sourced the deal, the system runs four models simultaneously:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;What it answers&lt;/th&gt;
&lt;th&gt;What we learned&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;First-touch&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;What brought them in?&lt;/td&gt;
&lt;td&gt;Email created 34% of leads (they thought 60%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Last-touch&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;What closed them?&lt;/td&gt;
&lt;td&gt;Demo closed 42% of deals (we knew this part)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Linear&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;What touched them along the way?&lt;/td&gt;
&lt;td&gt;Average 3.2 touches per deal (we were tracking 1.4)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;U-shaped&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;What created AND closed?&lt;/td&gt;
&lt;td&gt;LinkedIn created 28%, demo closed 35%, email was 20% of the journey&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The system processes 15,000 touchpoints per week. It's never wrong about the data — it just reads it.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Surprised Us
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. We were losing $400K/month to duplicate leads&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The system deduplicates by email + domain with 99.2% accuracy. Same person, three CRM records. We consolidated them and immediately saw real conversion rates were 18% higher than we thought.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Our "best" channel was destroying our forecast&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One channel had a 60% reply rate but 0% conversion. The other channel had 8% reply rate but 52% conversion. We were pouring budget into the wrong place. AI made that visible in one dashboard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Sales was right about one thing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They insisted that deals needed 4-5 touches minimum. The data confirmed it: deals with 1-2 touches had 2% close rate. Deals with 5+ touches had 34% close rate. We weren't touching leads enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Lessons
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Multi-touch attribution breaks if you don't define "touch" first.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Is a view a touch? A click? A form fill? A sales call? We spent two weeks arguing about this. Then realized: if it's not in the CRM or email platform, it doesn't matter for revenue. Everything else is noise. That decision alone cut our false signals by 60%.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lead scoring only works if it's explainable.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Our sales team rejected the first scoring model because they couldn't understand why a lead scored 47 vs 51. We rebuilt it to show: "Firmographic 22/25 (right company), Demographic 20/25 (right person), Behavioral 17/25 (opened 3 emails), Intent 15/25 (never visited pricing)."&lt;/p&gt;

&lt;p&gt;Now they see exactly why. Adoption went from 40% to 94% overnight. Transparency beats accuracy every time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Incremental CRM sync is a correctness problem, not a performance problem.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Full-refresh syncs miss deletes. They overwrite edits. They create race conditions with sales team edits. We switched to change-data-capture (CDC) with idempotent upserts. It's slower but correct. For revenue systems, correct matters more than fast.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick questions for you:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Are you currently attributing to a single channel or running multiple models?&lt;/strong&gt; Most teams I talk to default to last-touch because it's easy. Have you tried U-shaped or linear?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;How do you handle the "same person, multiple records" problem in your CRM?&lt;/strong&gt; We lost $400K/month to this before we caught it. Are you deduplicating at all, or do sales teams manage it manually?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What's your forecast accuracy today?&lt;/strong&gt; Ours was ±25% variance before this. Now ±8%. But I'm guessing teams with cleaner data might already be there.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you've built attribution systems, I want to know what you learned. If this breaks on your stack, open an issue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/developers-universe-1/agentic-revenue-intelligence" rel="noopener noreferrer"&gt;github.com/developers-universe-1/agentic-revenue-intelligence&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>gtm</category>
      <category>revenue</category>
      <category>data</category>
    </item>
    <item>
      <title>I Built an AI-Native Multi-Channel Outreach Platform With Auto-Tuning Sequences</title>
      <dc:creator>Madelyn </dc:creator>
      <pubDate>Fri, 29 May 2026 00:49:45 +0000</pubDate>
      <link>https://dev.to/developersuniverse1/i-built-an-ai-native-multi-channel-outreach-platform-with-auto-tuning-sequences-1gi7</link>
      <guid>https://dev.to/developersuniverse1/i-built-an-ai-native-multi-channel-outreach-platform-with-auto-tuning-sequences-1gi7</guid>
      <description>&lt;h2&gt;
  
  
  The Day I Realized We Were Wasting 20 Hours a Week
&lt;/h2&gt;

&lt;p&gt;Every afternoon, one person disappeared for 4 hours into LinkedIn.&lt;/p&gt;

&lt;p&gt;"Find me 50 marketing directors at Series B SaaS companies in the US."&lt;/p&gt;

&lt;p&gt;They'd copy names. Paste into a spreadsheet. Copy email addresses. By the time they were done:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Half the titles were wrong (LinkedIn updates them constantly)&lt;/li&gt;
&lt;li&gt;15 emails bounced (people had changed jobs, updates didn't sync)&lt;/li&gt;
&lt;li&gt;3 were the same person on different accounts (we didn't catch that)&lt;/li&gt;
&lt;li&gt;We paid $200 to do work that generated garbage data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I watched this happen every single week and asked: &lt;strong&gt;Why isn't this automated?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That question took me six weeks to answer. Now we process 500 leads/week automatically. Accuracy is 97%. No humans required.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Trick: Deduplication
&lt;/h2&gt;

&lt;p&gt;Here's what killed our old process: Sarah Chen exists 3 times in our CRM:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="mailto:sarah.chen@company.com"&gt;sarah.chen@company.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="mailto:s.chen@company.com"&gt;s.chen@company.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="mailto:sarah.c@gmail.com"&gt;sarah.c@gmail.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our sales team thought we had 3 prospects. We had 1 person. And we were calling her three times.&lt;/p&gt;

&lt;p&gt;The system deduplicates by email + domain + LinkedIn profile with 99.1% accuracy. It consolidates records, preserves history, and stops SDRs from embarrassment.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Numbers
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Manual&lt;/th&gt;
&lt;th&gt;AI&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Leads/week&lt;/td&gt;
&lt;td&gt;50&lt;/td&gt;
&lt;td&gt;500+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Accuracy&lt;/td&gt;
&lt;td&gt;65%&lt;/td&gt;
&lt;td&gt;97%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Time/week&lt;/td&gt;
&lt;td&gt;20 hrs&lt;/td&gt;
&lt;td&gt;2 hrs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost/lead&lt;/td&gt;
&lt;td&gt;$120&lt;/td&gt;
&lt;td&gt;$8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Close rate (80+)&lt;/td&gt;
&lt;td&gt;8%&lt;/td&gt;
&lt;td&gt;34%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That 34% close rate: the AI isn't magically better at closing. It's just better at finding people ready to engage.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I want to know from you:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;How are you handling deduplication today?&lt;/strong&gt; Our 99.1% accuracy feels good but I'm curious if there's a better approach.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What's your bottleneck with lead sourcing?&lt;/strong&gt; Is it finding leads, scoring them, or keeping the data clean?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;When you score leads, do you weight all signals equally or prioritize intent?&lt;/strong&gt; We found behavioral signals matter more than company size.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you've automated this and found patterns we missed, open an issue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/developers-universe-1/agentic-demand-engine" rel="noopener noreferrer"&gt;github.com/developers-universe-1/agentic-demand-engine&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>gtm</category>
      <category>leads</category>
      <category>sales</category>
    </item>
    <item>
      <title>I Built an AI Lead Intelligence Platform That Turns LinkedIn Engagement Into Qualified Pipeline</title>
      <dc:creator>Madelyn </dc:creator>
      <pubDate>Fri, 29 May 2026 00:41:20 +0000</pubDate>
      <link>https://dev.to/developersuniverse1/i-built-an-ai-lead-intelligence-platform-that-turns-linkedin-engagement-into-qualified-pipeline-lll</link>
      <guid>https://dev.to/developersuniverse1/i-built-an-ai-lead-intelligence-platform-that-turns-linkedin-engagement-into-qualified-pipeline-lll</guid>
      <description>&lt;h2&gt;
  
  
  The SDR Who Was Getting Replies While Everyone Else Wasn't
&lt;/h2&gt;

&lt;p&gt;Our SDR team sent 400 cold emails a day. We got back 14 replies total. 3.5% reply rate. Failing.&lt;/p&gt;

&lt;p&gt;Then I noticed: one person was getting 18% reply rate. Same email list. Same product. Same company. Different human.&lt;/p&gt;

&lt;p&gt;I asked her what was different:&lt;/p&gt;

&lt;p&gt;"I actually read about the companies. I personalize the angle. I write like I'd text a friend instead of like a robot."&lt;/p&gt;

&lt;p&gt;"How long does that take?"&lt;/p&gt;

&lt;p&gt;"15 minutes per email."&lt;/p&gt;

&lt;p&gt;15 minutes per email. We were sending 400/day at 2 minutes per email from everyone else.&lt;/p&gt;

&lt;p&gt;I did the math: she was getting 5x the reply rate but spending 7x more time. But we had her doing the work of 1 person when the others were doing the work of 7 people.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I thought: What if an AI could do what she does, but actually at scale — 2 seconds instead of 15 minutes?&lt;/strong&gt; It took four weeks. But it works.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Lesson: Consistency &amp;gt; Perfection
&lt;/h2&gt;

&lt;p&gt;Humans are wildly inconsistent. Monday: great emails. Tuesday: tired and generic. One person researches; another copies templates.&lt;/p&gt;

&lt;p&gt;AI doesn't get tired. Every email is researched. Every reply is classified the same way. Every follow-up is timed perfectly.&lt;/p&gt;

&lt;p&gt;But here's the thing: humans make humans reply. AI writing like humans works because it's mimicking the best human behavior at scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions I'm thinking about:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What's your baseline reply rate today?&lt;/strong&gt; Ours went from 3.5% to 18-22%.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;How do you handle reply classification?&lt;/strong&gt; Are you manually reading every reply? LLM classification catches "objections" way better than keywords.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;When the AI generates an angle, do you review it before sending?&lt;/strong&gt; We do 100% automated. What's your comfort level?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you've built email generation systems, I want to know what breaks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/developers-universe-1/agentic-outreach-engine" rel="noopener noreferrer"&gt;github.com/developers-universe-1/agentic-outreach-engine&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>sales</category>
      <category>outreach</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
