Turn a Sales Navigator saved search into a daily Lemlist outbound queue

Every weekday morning, pull fresh leads from a Sales Navigator saved search, write a personalized opener for each one, and drop them into a Lemlist campaign.

Agentic Task
PhantomBusterLemlistSlack BotSalesMarketingLead EnrichmentEmail AutomationContent Generation

Build me an agent workflow that turns a single LinkedIn Sales Navigator saved search into a hands-off daily personalized outbound queue in Lemlist.

Trigger: cron, every weekday (Monday through Friday) at 6:00am in my timezone.

Step 1. Use the PhantomBuster Launch Agent action to launch my Sales Navigator Search Export Phantom. I will configure the agent ID and pass the saved Sales Navigator search URL as an argument. Treat the launch as asynchronous and capture the container ID returned.

Step 2. Wait for the run to finish. Poll using PhantomBuster Fetch Agent Output no more often than once every 10 seconds, watching the status field until the most recent container is no longer running. Stop polling once it is finished (or after a reasonable timeout like 20 minutes, in which case post a Slack failure recap and exit).

Step 3. Once finished, call PhantomBuster Fetch Container Result Object for that container ID to get the structured array of leads. Each lead typically includes first name, last name, headline, current job title, company name, LinkedIn profile URL, and (when PhantomBuster found it) a work email.

Step 4. For each lead in the result set: (a) if there is no email, skip the lead and increment a missing_email counter; (b) call Lemlist Get Lead by Email with the lead's email and check whether any returned record is already attached to the target campaign ID. If yes, skip and increment a duplicate counter.

Step 5. For each remaining lead, use built-in AI generation to write a single-sentence personalized opener (an icebreaker) based on the lead's headline, current role, and company name. Keep it under 200 characters, conversational, specific to something in their profile, and never generic flattery. Avoid em dashes.

Step 6. Call Lemlist Create Lead in Campaign for the target campaign with email, first name, last name, company name, LinkedIn profile URL, and the AI-generated icebreaker mapped to a custom variable named 'icebreaker' (or whatever name I configure). The first email in my Lemlist sequence already references {{icebreaker}}, so Lemlist injects it automatically when sending. Increment an added counter on success.

Step 7. After all leads are processed, use the Slack Bot Send a Message action to post a recap to the channel I configure. The message should include: the campaign name and a clickable link to the campaign in Lemlist, the count of leads added, the count skipped for missing email, the count skipped as duplicates, and the total leads pulled from PhantomBuster.

Configuration inputs I should be able to edit: PhantomBuster agent ID, Sales Navigator saved search URL, Lemlist campaign ID, Lemlist custom-variable name for the icebreaker, Slack channel ID for the recap, and the cron schedule itself.

Use the Slack Bot integration (not the user Slack integration) for the recap, since this is automated workspace messaging. Respect PhantomBuster's polling guidance (no more than once every 10 seconds) and Lemlist's rate limit (20 requests per 2 seconds) when iterating through leads.

Additional information

What does this prompt do?
  • Runs a Sales Navigator export against your saved search every weekday at 6am and pulls the structured lead list back in.
  • Writes a one-line personalized icebreaker for each lead using their headline, role, and company.
  • Skips anyone already sitting in the target Lemlist campaign, so you never double-enroll a prospect.
  • Adds the keepers to your Lemlist campaign with the icebreaker mapped to a custom field your first email plugs in automatically.
  • Posts a daily Slack recap showing how many leads were added, how many were skipped, and a link to the campaign.
What do I need to use this?
  • A PhantomBuster account with a Sales Navigator Search Export Phantom already set up against the saved search you want to mine.
  • A Lemlist account with the outbound campaign you want to fill, including a custom variable in the sequence (for example {{icebreaker}}) used by your first email.
  • A Slack workspace and a channel where the daily recap should land.
  • A Sales Navigator subscription that the PhantomBuster Phantom is authenticated against.
How can I customize it?
  • Change the cron from weekday 6am to whatever cadence fits your team, like Monday and Thursday only, or twice a day.
  • Swap the saved search URL or point at a different PhantomBuster Phantom if you mine multiple ICPs.
  • Edit the writing brief for the icebreaker (length, tone, angle) or swap which Lemlist custom variable receives it.
  • Add extra skip rules, like dropping anyone missing a company name or anyone whose headline contains certain keywords.
  • Change the recap destination from a public channel to a DM, or add the actual leads added as a thread reply.

Frequently asked questions

Do I need to keep my Sales Navigator search updated?
No. As long as the saved search URL stays the same, PhantomBuster re-runs it each morning and only returns the people LinkedIn currently shows for those filters. Tweak the filters whenever your ICP shifts and the workflow picks up the new results the next morning.
What happens if a lead is already in the Lemlist campaign?
Before adding anyone, the workflow checks Lemlist for the lead by email. If they are already in the target campaign, it skips them and counts them in the recap so you never double-enroll a prospect.
Where does the personalized opener actually show up in the email?
It writes the line into a custom field on the lead in Lemlist (for example a variable named icebreaker). Your sequence's first email references that variable, so Lemlist injects the personalized line when the email goes out.
What if a lead does not have an email address?
Leads without an email are skipped, since Lemlist needs an email to enroll them. They show up in the Slack recap so you know how many were dropped, and you can layer in an email-finding step later if you want to keep them.
Can I send the recap somewhere other than Slack?
Yes. Slack is the default because most sales teams already live there, but you can change the recap to a different channel, a DM, or swap it out for email or another tool entirely.

Stop exporting CSVs and writing icebreakers by hand.

Connect PhantomBuster, Lemlist, and Slack once, and let Geni run your Sales Navigator outbound queue every weekday morning.