RunGTM
LibraryIdeas
Back to Library
Lead Generation

Intent-Based Cold Email Using Job Changes & Hiring Signals

Monitors job changes and new job postings via Coresignal, verifies emails, and auto-enrolls leads into personalized cold email sequences in Instantly. Built for B2B sales teams who want to reach buyers at peak buying intent moments — new hires evaluating tools and companies signaling headcount growth.

Posted 13d agoby @codyschneiderxx Source

Tools

Railway (PostgreSQL)CoresignalMillionVerifierInstantlyPostgreSQL (Railway)
triggerRAILWAY (POSTGRESQL)
Railway (PostgreSQL)

Spin up a PostgreSQL database with intent-tracking schema

Deploy a PostgreSQL instance on Railway. Create five tables: leads (contact info, company, status), job_changes (person, old title, new title, company, date), job_postings (company, job title, posting date), email_verification (email, status, verified_at), and campaign_tracking (lead_id, campaign, sent_at, reply). This central database prevents duplicate outreach and tracks every lead through the funnel.

actionCORESIGNAL
Coresignal

Fetch job changes (last 30 days) and new job postings (last 14 days) via API

Connect to Coresignal's API and run two queries daily: (1) job changes for target titles (e.g., VP Marketing, CMO, Head of RevOps) at ICP companies in the last 30 days, (2) new job postings for target roles (e.g., Revenue Operations Analyst, Marketing Analyst) at the same companies in the last 14 days. Write all results into the job_changes and job_postings tables in PostgreSQL. Use deduplication logic to skip any lead already in the leads table.

actionMILLIONVERIFIER
MillionVerifier

Run each new lead's email through verification API and store results

For every new record ingested from Coresignal, extract or enrich the business email and call MillionVerifier's API. Store the verification result (valid, catch-all, invalid, unknown) in the email_verification table. Only pass leads with 'ok' or 'catch-all' status to the next step — discard 'invalid' and 'unknown' to protect sender reputation and deliverability.

actionINSTANTLY
Instantly

Upload verified leads into the appropriate campaign with custom intent variables

Via Instantly's API, push verified leads into one of two campaigns based on signal type: (1) Job Change campaign for new hires, mapping {{new_title}}, {{company}}, and {{company_type}} as custom variables; (2) Job Posting campaign for hiring signals, mapping {{job_posting_title}} and {{company}}. Tag each lead with the signal source so performance can be tracked separately.

actionINSTANTLY
Instantly

Trigger pre-written intent-personalized email sequences

Instantly automatically sends the appropriate email template based on campaign. Job change template: congratulates the new hire on their role, references the typical 90-day evaluation window, and pitches a fast-setup dashboard solution. Job posting template: references the open role as a signal of a data visibility gap and offers a quick solution before the new hire starts. Both templates are under 75 words, no filler phrases, with the intent signal itself serving as the personalization hook.

actionPOSTGRESQL (RAILWAY)
PostgreSQL (Railway)

Log sent campaigns and prevent any lead from being contacted twice

After each Instantly send, write the lead_id, campaign name, and sent_at timestamp into the campaign_tracking table. The daily Coresignal pull checks this table before inserting new leads, ensuring no lead is ever re-enrolled. Schedule the full pipeline (Coresignal pull → verify → push → send) as a daily cron job using Claude Code or a simple script on Railway.

Browse More

More in Lead Generation

Scrape Creator Emails from Google & Cold Email at Scale
Google SearchRegexMillionVerifier
Unified TAM Scoring System to Align Sales & Marketing
ClayFullEnrichBuiltWith
Unified TAM Scoring System to Align Sales & Marketing
CRM / SpreadsheetClay + FullEnrichBuiltWith + TheirStack