Skip to content

RZ-Logic/signal-driven-outbound-engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 

Repository files navigation

Signal-Driven Outbound Engine

Signal-Driven Outbound Engine

Most outbound systems spray and pray. This one watches target companies for buying signals — hiring activity, funding rounds — and only triggers outreach when timing is right. Signal detection to meeting booked, one continuous pipeline.

Workflows n8n Airtable OpenAI Hosting Cost

The ProblemWhat It DoesOne Lead's JourneyArchitectureSignal LayerExecution LayerEnterprise PropertiesStack


The hardest question in outbound isn't "how do I send emails?" — it's "who should I email right now?" This engine answers that question autonomously, 24/7.


┌──────────────────────────────────────────────────────────────────────────┐
│                                                                          │
│   LAYER 1 — SIGNAL DETECTION                                             │
│   ├── Apollo ICP filters → Watch List                                    │
│   ├── Job Signal Scanner → detects hiring intent                         │
│   ├── Funding Signal Scanner → detects recent raises                     │
│   ├── Compound scoring: multiple signal types weighted and stacked       │
│   └── Score Decay: stale signals automatically lose weight               │
│                                                                          │
│   LAYER 2 — EXECUTION & OPTIMIZATION                                     │
│   ├── Triggered companies → Clay enrichment → AI scoring (GPT-4o-mini)   │
│   ├── Intent routing: VIP / Standard / Disqualified                      │
│   ├── State-locked email delivery via Resend                             │
│   ├── Full funnel tracking: Open → Click → Reply → Meeting Booked        │
│   ├── AI sentiment analysis on replies                                   │
│   └── Weekly self-correction: anomaly detection + rubric refinement       │
│                                                                          │
│   Output: You only reach out to companies showing real buying intent,     │
│   at the exact right moment. Signal to meeting booked.                   │
│                                                                          │
└──────────────────────────────────────────────────────────────────────────┘

💀 The Problem

Every outbound system in 2026 falls into one of two traps.

Trap 1: Spray and Pray. Import 10,000 leads from Apollo, blast them all with "personalized" emails. 2% reply rate, domain reputation destroyed, and you've burned bridges with 9,800 companies who weren't ready to buy.

Trap 2: Manual Signal Hunting. Your best SDR manually checks LinkedIn for job postings, scans TechCrunch for funding news, and tries to remember which companies looked promising last month. It works — when they remember. It doesn't scale, and tribal knowledge walks out the door with every hire.

Approach Knows who to contact? Knows when to contact? Tracks results? Learns from outcomes?
Spray & Pray (Apollo → Instantly) ⚠️
Manual SDR ✅ (slowly) ⚠️ (when they remember)
Clay + AI enrichment
This Engine

What nobody has built: A single system that combines signal-based targeting (hiring + funding detection with compound scoring and time decay), intelligent execution (AI scoring, state-locked delivery, full funnel tracking), and closed-loop optimization (weekly self-correction from its own results).


⚡ What This Engine Does

Every day, automatically:

  Signal Layer:
  ├── Scans Watch List companies for new job postings
  ├── Scans Watch List companies for recent funding rounds
  ├── Weights and compounds signals by role relevance and recency
  ├── Decays stale signals over time
  └── Companies crossing score threshold → pushed to execution pipeline

  Execution Layer:
  ├── Triggered leads enriched through Clay (website scrape + AI icebreaker)
  ├── AI scores each lead for personalization fit (GPT-4o-mini)
  ├── Routes by intent: VIP / Standard / Disqualified
  ├── Human approves drafts → state-locked email delivery via Resend
  ├── Opens, clicks, replies, meeting bookings tracked end-to-end
  ├── Reply sentiment classified by AI → Slack alerts fire instantly
  └── Every event writes to immutable Shadow Ledger

  Weekly:
  └── Self-correction audit analyzes conversions, flags anomalies,
      proposes scoring rubric refinements. The system teaches itself.

Feature Overview

Feature What it does
Job Signal Scanner Detects when target companies hire for roles that indicate buying intent — weighted by role relevance
Funding Signal Scanner Detects recent funding rounds — only actionable, recent capital triggers a signal
Compound Signal Scoring Multiple signal types stack into a single score. More signals = higher conviction
Score Decay Stale signals lose weight automatically over time. No manual cleanup needed
AI Intent Scoring GPT-4o-mini scores each lead with reasoning against a proprietary rubric
State-Locked Delivery Record locks before email dispatch — prevents duplicate sends on overlapping poll cycles
Full Funnel Tracking Delivered → Opened → Clicked → Replied → Meeting Booked. Every transition logged
AI Sentiment Analysis Replies classified as Positive, Negative, or Meeting Request in real-time
Shadow Ledger Immutable, append-only audit trail. Every workflow writes successes and failures
Weekly Self-Correction Analyzes what converted, flags anomalies, proposes rubric changes. Closed-loop optimization
Real-Time Slack Alerts Signals detected, VIP leads scored, replies received, meetings booked, errors caught — all in Slack

🔍 One Lead's Journey

A single company flowing through the complete system:

Day 1 — Seeding. Apollo ICP filters identify Adaptive ML — a 35-person AI company matching our target profile. The company is loaded into the Watch List → Watch Status: "Watching"

Day 3 — Signal Detection. The Job Signal Scanner fires its daily scan. A "RevOps Manager" posting is detected at Adaptive ML. Fuzzy matching confirms the employer. The compound signal score increases. Trigger Signals: Hiring. Slack alert fires. Shadow Ledger entry written.

Day 5 — Compound Signal. The Funding Signal Scanner detects Adaptive ML raised a recent round. The score compounds further. Trigger Signals: Hiring, Funding. A company actively building a sales team with fresh capital — that's a real buying signal.

Day 5 — Threshold Crossed. The compound score exceeds the trigger threshold. Watch Status → "Triggered". The company's decision-maker contacts are pulled from Apollo and pushed through Clay for enrichment.

Day 5 — Enrichment. Clay scrapes Adaptive ML's live website, generates a hyper-personalized icebreaker, and pushes a structured JSON payload via webhook to the n8n execution engine.

Day 5 — AI Scoring. The Lead Scoring workflow captures the payload to Airtable (database-first vault capture), validates completeness, scores via GPT-4o-mini → High Intent. A personalized VIP email draft is generated. Slack fires a VIP alert. → Status: "Draft Created"

Day 6 — Human Review. The operator reviews the draft, approves it → Status: "Approved"

Day 6 — Delivery. The Executor locks the record → Status: "Sending", sends via Resend, unlocks → Status: "Sent", Engagement: "Delivered"

Day 7 — Engagement. The prospect opens the email → Engagement: "Opened". Clicks the Cal.com booking link → Engagement: "Clicked". Books a meeting → Status: "Meeting Booked", Engagement: "Goal Reached". Slack celebration alert fires.

Meanwhile — Decay in Action. Equinix got a hiring signal 30 days ago but nothing since. Its score has decayed automatically. The system deprioritized it without anyone touching it. Stale signals lose weight.

Every step above generates a Shadow Ledger entry. If any step fails, the Error Trigger catches it, alerts Slack, and logs the failure.


🏗️ Architecture

The engine is an 11-workflow state machine orchestrated by a self-hosted n8n instance on DigitalOcean. It operates in two layers:

Apollo (ICP Filters)
        │
        ▼
┌─────────────────────────────────────────────────┐
│  WATCH LIST (Airtable)                          │
│  Target companies monitored daily               │
│                                                 │
│  ┌─────────────┐  ┌──────────────┐              │
│  │ Job Signal  │  │ Funding      │              │
│  │ Scanner     │  │ Scanner      │              │
│  └──────┬──────┘  └──────┬───────┘              │
│         │                │                      │
│         └───── Compound ─┘                      │
│                Score                            │
│                  │                              │
│         ┌───────┴────────┐                      │
│         │  Score Decay   │                      │
│         └───────┬────────┘                      │
│                 │                               │
│         Threshold crossed?                      │
│            YES │                                │
└─────────┬──────┘                                │
          │                                       │
          ▼                                       │
┌─────────────────────────────────────────────────┘
│  EXECUTION PIPELINE
│
│  Apollo (contacts) → Clay (enrich) → n8n Webhook
│         │
│         ▼
│  ┌─────────────────┐
│  │ Lead Scoring     │ → GPT-4o-mini → VIP / Standard / Disqualified
│  │ (database-first) │ → Slack VIP alert
│  └────────┬────────┘
│           ▼
│  ┌─────────────────┐
│  │ Email Delivery   │ → State lock → Resend → Unlock
│  │ (human-approved) │
│  └────────┬────────┘
│           ▼
│  ┌─────────────────┐
│  │ Tracking         │ → Opens, Clicks, Replies (AI sentiment), Meetings
│  └────────┬────────┘
│           ▼
│  ┌─────────────────┐
│  │ Weekly Audit     │ → Anomaly detection → Rubric refinement
│  └─────────────────┘
│
│  Shadow Ledger ← (every workflow writes here)

🎯 Signal Detection Layer

Watch List

ICP-filtered companies are loaded from Apollo into a Watch List in Airtable. Each company is tracked with its signal score, signal history, watch status, and details of detected hiring and funding activity. Watch Status progresses through: Watching → Triggered → Outreach Sent → Converted → Archived

Job Signal Scanner

A scheduled workflow loops through all Watch List companies and scans for relevant open roles — SDR, RevOps, automation, data engineering, and other roles that indicate buying intent. Each role type carries a different weight based on how strongly it signals need for the services being offered. Fuzzy matching validates that job listings actually belong to the target company. Every detection updates the company's signal score, logs the signal, fires a Slack notification, and writes to the Shadow Ledger.

Funding Signal Scanner

A scheduled workflow scans Watch List companies for recent funding activity. Only funding events within a defined recency window are scored — stale capital from years ago isn't a buying signal. Each detection updates the compound score and logs the event.

Score Decay

A daily scheduled workflow ensures stale signals lose weight automatically. After a configurable grace period, scores decay at a fixed rate per day. If a decayed score drops below the trigger threshold, the company reverts from "Triggered" to "Watching" — removing it from the outreach queue. Decay is signal-agnostic: compound signals (hiring + funding) extend relevance because each new signal resets the decay clock.


⚙️ Execution Layer

Phase 1: Lead Sourcing (Apollo.io)

When a Watch List company crosses the score threshold, its decision-maker contacts are sourced from Apollo using ICP filters. Verified B2B contact data feeds the enrichment pipeline.

Phase 2: Data Enrichment & AI Personalization (Clay)

Contacts are imported into Clay for enrichment waterfall processing. Live website data is scraped, AI generates a hyper-personalized icebreaker, and Clay pushes a structured JSON payload via webhook to the n8n execution engine.

Phase 3: Database-First Ingestion & AI Scoring

Core Logic and Intent Routing Engine

  • Direct-to-Vault Capture: Raw lead data written to Airtable immediately — before any processing. If OpenAI crashes, the lead is never lost
  • Validation: Filter node verifies data completeness before scoring
  • AI Intent Scoring: GPT-4o-mini analyzes each lead against a proprietary scoring rubric. Returns a score and reasoning
  • Intent-Based Routing: Leads are routed by score into VIP, Standard, or Disqualified paths — each with different email treatment and notification behavior

Phase 4: State-Locked Email Delivery

Automated SDR Email Execution

  • Anti-Duplicate Lock: Record Status set to "Sending" before dispatch — removes it from the polling view, preventing race conditions
  • Automated Delivery: Resend with retries. On success → "Sent" / "Delivered". On failure → remains locked for operator investigation
  • Human-in-the-Loop: Operator reviews and approves each draft before automated delivery

Phase 5: Full Funnel Engagement Tracking

Engagement Tracking Webhook

  • Open Tracking: Resend webhook → Engagement: "Opened"
  • Click Tracking: Resend webhook → Engagement: "Clicked" (overrides Open — progressive funnel)
  • Reply Detection & Sentiment Analysis: IMAP trigger → domain-based lead matching → GPT-4o-mini sentiment classification (Positive / Negative / Meeting Request) → Slack notification
  • Meeting Tracking: Cal.com webhook → Status: "Meeting Booked", Engagement: "Goal Reached" → Slack celebration alert

Phase 6: Enterprise Auditing & Fault Tolerance

Shadow Ledger

  • Append-only audit trail across all 11 workflows. Every execution — success or failure — is recorded with workflow name, outcome, error details, execution ID, API cost, and timestamp
  • Auto-numbered Ledger IDs — records cannot be edited, reordered, or deleted

Global Error Handling

  • Every workflow includes an independent Error Trigger. Error path: Slack Alert (retry, continue on error) → Shadow Ledger Write
  • Notification failure never blocks audit logging

Phase 7: Closed-Loop Self-Correction (Weekly Audit)

Closed-Loop AI Rubric Optimization Workflow

  • Automated Performance Audits: Weekly cron pulls all leads from the past cycle. Aggregates reply rates and conversion metrics by score bucket
  • Anomaly Detection: Flags leads that outperformed or underperformed their score — indicating the rubric undervalued or overvalued certain traits
  • AI Rubric Refinement: Anomalies + performance data fed to GPT-4o-mini alongside the active rubric → proposes specific adjustments. Human validates before deployment
  • System Audit Logging: Proposed changes, metrics, and API costs logged for historical reference

🛡️ Enterprise Properties

Property Implementation
Signal-driven timing Outreach only triggers when compound signal scores cross threshold. No cold spraying
Automatic signal decay Stale signals deprioritize automatically over time
Compound signal stacking Multiple signal types compound into a single score. New signals reset the decay clock
Zero data loss Database-first vault capture — data persisted before any processing
Anti-duplicate sends Status-based record locking prevents overlapping poll cycles from double-sending
Immutable audit trail Shadow Ledger: auto-numbered, append-only, forensic-grade
Self-healing retries External API calls retry automatically. Transient failures resolve without intervention
Graceful degradation Notification failure never blocks data operations or audit logging
Closed-loop learning Weekly audits detect anomalies and propose rubric adjustments from real outcomes
Human override points Email drafts require approval. Rubric changes require validation. No autonomous high-stakes actions

🏗️ Technology Stack

Layer Technology Purpose
Lead Sourcing Apollo.io ICP list generation, verified B2B contact data, Watch List seeding
Signal Detection JSearch API Hiring signal scanning — detects relevant open roles at target companies
Signal Detection Crunchbase API Funding signal scanning — detects recent funding rounds
Data Enrichment Clay Waterfall enrichment, live website scraping, AI icebreaker generation
Core Orchestration Self-hosted n8n on DigitalOcean Central logic, routing, and execution engine (Postgres + Caddy reverse proxy)
AI Layer OpenAI API (gpt-4o-mini) Intent scoring, sentiment analysis, rubric optimization
CRM & Database Airtable Operational database, Watch List, Pipeline, Shadow Ledger, System Audit
Email Delivery Resend Automated sending with open/click webhook tracking
Reply Monitoring IMAP Inbox monitoring for prospect replies
Scheduling Cal.com Meeting booking with webhook integration
Internal Ops Slack (Custom App) Real-time alerts: signals, VIP leads, replies, meetings, errors, decay, weekly audits

🔧 System Topology

11 Active Workflows

Signal Layer

# Workflow Flow
1 Job Signal Scanner Scheduled → Loop Watch List → Scan for roles → Score → Airtable → Slack → Shadow Ledger
2 Funding Signal Scanner Scheduled → Loop Watch List → Scan for funding → Recency filter → Score → Airtable → Slack → Shadow Ledger
3 Score Decay Daily → Filter active scores → Calculate decay → Update scores → Revert status if below threshold → Slack → Shadow Ledger

Execution Layer

# Workflow Flow
4 Lead Scoring Webhook → Vault capture → Filter → OpenAI scoring → Intent routing → Airtable → Slack (VIP) → Shadow Ledger
5 Email Delivery Airtable poll → Lock → Resend → Unlock → Shadow Ledger
6 Open Tracker Resend webhook → Airtable upsert (Opened) → Shadow Ledger
7 Click Tracker Resend webhook → Airtable upsert (Clicked) → Shadow Ledger
8 Reply Catcher IMAP → Domain search → OpenAI sentiment → Airtable → Slack → Shadow Ledger
9 Meeting Tracker Cal.com webhook → Airtable (Meeting Booked / Goal Reached) → Slack → Shadow Ledger
10 Weekly Audit Scheduled → Airtable search → Aggregation → OpenAI rubric analysis → Slack digest → System Audit → Shadow Ledger
11 Shadow Ledger (Inactive sub-workflow, retained for reference — logging performed directly within each workflow)

4 Airtable Tables

Table Purpose
Watch List Target companies with signal tracking, compound scores, decay, and status progression
Pipeline Lead records with full lifecycle: New → Draft Created → Approved → Sending → Sent → Opened → Clicked → Replied → Meeting Booked
Shadow Ledger Immutable, append-only audit trail across all 11 workflows
System Audit Weekly performance digests, anomaly reports, proposed rubric changes

🖥️ Production Considerations

  • Hosting: Self-hosted n8n on DigitalOcean ($6/month) with Postgres + Caddy reverse proxy
  • Secrets: All API keys stored as n8n credentials — never hardcoded
  • Backups: Airtable as persistent data layer; n8n saves all execution history (success + failure)
  • Scaling: Architecture supports horizontal scaling with n8n worker nodes and Airtable pipeline partitioning by campaign or region

🚀 Future Roadmap

  • LinkedIn Signal Enrichment — Pull prospect's recent LinkedIn activity as additional intent signal
  • Negative Signal Filtering — Auto-disqualify companies showing layoffs or bankruptcy before consuming AI calls
  • Competitor Stack Detection — Technographic data to detect prospects already running automation tools
  • A/B Draft Generation — Two email variants per lead, track which tone drives more replies
  • Automated Follow-Up Sequencer — Re-engage leads with no engagement after a defined period
  • LinkedIn Multi-Channel Touchpoint — LinkedIn connection request before/after email
  • Real-Time Dashboard — Visual interface for pipeline velocity, funnel drop-off, API spend
  • Multi-Tenant Deployment — Deployable template per client with shared workflow architecture

💬 Built By

Also built: JobSignal EngineGPU Deals Canada


Signal detection to meeting booked — one continuous pipeline.

Built in Toronto by Velocyt.

About

Signal-driven outbound engine — watches target companies for buying signals (hiring, funding) and triggers AI-scored outreach only when timing is right. 11-workflow state machine on self-hosted n8n with forensic-grade Shadow Ledger audit trail.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors