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.
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.
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.
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.
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.
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.
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.