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.
The Problem • What It Does • One Lead's Journey • Architecture • Signal Layer • Execution Layer • Enterprise Properties • Stack
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. │
│ │
└──────────────────────────────────────────────────────────────────────────┘
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) | ❌ | ❌ | |
| 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).
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 | 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 |
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.
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)
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
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.
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.
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.
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.
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.
- 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
- 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
- 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
- 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
- Every workflow includes an independent Error Trigger. Error path: Slack Alert (retry, continue on error) → Shadow Ledger Write
- Notification failure never blocks audit logging
- 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
| 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 |
| 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 |
| # | 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 |
| # | 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) |
| 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 |
- 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
- 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
- Website: velocyt.ca
- GitHub: RZ-Logic
Also built: JobSignal Engine • GPU Deals Canada
Signal detection to meeting booked — one continuous pipeline.
Built in Toronto by Velocyt.




