← Back

Building Instalily's signal-based outbound system

June 10, 2026 · Updated June 15, 2026

At Instalily, I helped to re-architect and build the workflows for our new signal-based pipeline.

Drawn in Excalidraw by me - with reference from our GTM meetings

The aim was to

  1. Rank leads not only on ICP fit, but on their real-time intent, i.e. buying signal.

  2. Route them accordingly between reps and automated campaigns.

1) Signals

a. Direct engagement –– at Contacts level

  • LinkedIn reactions

  • Website visits

  • LinkedIn engagement with competitors

Cadence: Run daily

b. Intent triggers –– at Accounts level

  • Acquistion activity

  • Hiring for Sales/Marketing roles

  • Keyword match on 'ERP migration' in hiring posts

Cadence: Run weekly

2) Scoring

Next, we had to decide how to both merge, normalize, and rank the leads from both signals above, bearing in mind that they provided information on differing levels of granularity – Accounts vs Contacts - and at differing cadences.

First, we decided to run the Direct engagement signal workflow daily, and that for Intent triggers weekly.

Next, we ranked all leads using a scoring framework:

Composite Score = Signal Weight x Recency

Direct Engagement

  • Weight = 5.0: First-party action is the strongest evidence of intent, and should sit alongside the highest account-level intent triggers.

  • Recency = 1.0: Since Direct engagement is refreshed daily on data within the last week, every direct signal remains fresh.

Intent Triggers

  • Weight: M&A and ERP migration imply highest intent (i.e. 5) while hiring posts rank lower at 4.

  • Recency: Tiered into 3 stages based on the buying window custom to that signal, i.e. acquisitions take much longer than hiring activity

It is important to note that we are not scoring leads on ICP fit, as 1) Signals already qualified each lead by Industry, Revenue Range, and Role Title (if at Contact level).

3) Deduplication & Routing by Score

The rationale here is that all high quality leads - including all leads from Direct Engagement - should be handled personally by Instalily's sales reps, while other qualified leads are routed for outreach sequences on Lemlist.

These signals are not only to surface new leads but enrich information on existing leads.

  • Against master Accounts – checks if that account is part of existing deal.

    • Account owner exists in Hubspot → assigns HubSpot task to AE

    • Else → calculate composite score

  • Against master Contacts – checks if contacts already exist for the account.

    • Found in Lemlist (active sequence):

      • ≥6 → move from Lemlist sequence to the AE

      • <6 → skip

    • Found in HubSpot:

      • status = 'Meeting scheduled' / 'Qualified' → AE task

      • Idle (>45 days since Last Activity) → do people search in Clay

    • No contact found yet

      • → do people search in Clay

        • ≥6 → assign contact in HubSpot

        • <6 → add to Lemlist campaign.

4) Keeping Master lists maintained

  • Master Contacts: Clay table synced from Lemlist, HubSpot

    • Keyed by email

  • Master Accounts: Clay table synced from Lemlist, HubSpot

    • Keyed by domain

5) Example of Individual Signals

Direct engagement: LinkedIn activity

  • See Loom video for walkthrough.

Intent trigger: M&A tracking

  • See snapshot of Clay workbook