Weekly LinkedIn lead pipeline into HubSpot

Every Monday morning, scrape fresh LinkedIn prospects matching your ICP, dedupe against HubSpot, log the new ones with a fit note, and post a digest to Slack.

Agentic Task
ApifyHubSpotSlack BotSalesMarketingLead EnrichmentDaily DigestsResearch & Monitoring

Build me a weekly LinkedIn lead generation pipeline that drops qualified prospects straight into HubSpot. The workflow should run on a cron trigger every Monday at 8am in my local timezone (let me set the timezone when I configure it).

Inputs I want to configure on the prompt:

1. The Apify Actor slug to run (default to a LinkedIn company or people scraper like apify/linkedin-company-scraper or get-leads/linkedin-scraper, but let me override it because every LinkedIn Actor has a different input schema). 2. The raw input JSON for the Actor (search queries, company URLs, filters — whatever that specific Actor expects). 3. My ICP definition in writing: target industries, headcount range, geographies, target titles, and keywords that signal a fit. 4. The HubSpot lifecycle stage to set on new contacts (default to "lead"). 5. The Slack channel ID for the digest.

Each Monday at 8am, the agent should:

Step 1. Call Apify "Run Actor Synchronously and Get Dataset Items" with the configured Actor slug and input JSON. Set a generous timeout because LinkedIn scrapes can take a few minutes. Read the returned dataset items (these are LinkedIn profile and/or company rows).

Step 2. For each row, score it against my ICP. A lead qualifies only if it clearly matches my industry, headcount, geography, and title/keyword criteria. If a row is missing the data needed to judge fit (no company, no title), skip it and record the reason.

Step 3. For every qualifying lead, dedupe against HubSpot before creating anything. Call HubSpot "Search Contacts" filtered by the lead's email (or by firstname + lastname + company if email is missing). If a match exists, skip and record "already in HubSpot". Otherwise call HubSpot "Create Contact" with email, firstname, lastname, jobtitle, company, and lifecyclestage set to the configured value (default "lead"). Also write the LinkedIn profile URL to the contact's linkedin website/social field if the Actor returned it.

Step 4. Immediately after creating each contact, call HubSpot "Create Note" with an association to that contact. The note should be a short fit summary covering: why this person matches my ICP, any LinkedIn signals worth knowing (recent role change, recent posts and topics, company size, hiring, funding, anything else surfaced by the Actor), and the source LinkedIn URL. Keep the note tight, three to five bullets, written for a salesperson skimming it before a cold outreach.

Step 5. At the end of the run, send one Slack digest using Slack Bot "Send a Message" to the configured channel. The message should contain: the total number of new contacts added this week, the top 5 highlights (best fits, written as one-line teasers with name, title, company, and the strongest signal), the number of rows skipped broken down by reason (already in HubSpot, missed ICP, missing data), and a short note if the Apify run returned zero items so I know to check the Actor config.

Error handling: if the Apify run fails or times out, post a single Slack message to the same channel explaining what happened and stop. Don't partially create contacts on a failed run. If a single HubSpot create call fails, log the error in the digest and keep going on the rest.

Use the slackbot integration for the digest (it should post as a bot, not as a person). Use the apify integration for the scrape. Use the hubspot integration for the search, contact create, and note create.

Additional information

What does this prompt do?
  • Every Monday at 8am, kicks off a LinkedIn scrape using your chosen Apify Actor and search criteria.
  • Filters each scraped person against your ICP (industry, headcount, geography, keywords) and discards the rest.
  • Checks HubSpot first so you never get duplicate contacts, then creates the new ones with email, name, title, company, and lifecycle stage Lead.
  • Attaches a short fit note to every new contact explaining why they match and any LinkedIn signals worth knowing.
  • Posts a Monday morning digest to your sales Slack channel with the count of new leads, the top five to call first, and any rows that were skipped with the reason.
What do I need to use this?
  • An Apify account with a LinkedIn scraping Actor you have already tested (company or people scraper).
  • A HubSpot account where new contacts and notes should land.
  • A Slack workspace and the channel where the weekly digest should post.
  • Your ICP written down: industries, company size, geographies, titles, and keywords that count as a fit.
How can I customize it?
  • Change the day or time the pipeline runs, or the timezone it uses.
  • Swap the Apify Actor or its search criteria as your ICP shifts.
  • Tighten or loosen the fit rules, and pick which signals (recent role change, post topics, headcount) deserve a callout in the note.
  • Pick a different Slack channel or DM for the digest, and change what shows up in the top-five highlights.

Frequently asked questions

Will this create duplicate contacts in HubSpot?
No. We search HubSpot by email first and skip anyone who already exists, so you only get net-new contacts each week.
Can I use a different LinkedIn scraper from Apify?
Yes. Any Apify Actor that returns LinkedIn profile or company rows works. You pick the Actor and the input search criteria when you set the prompt up.
What if no leads pass my ICP filter this week?
You still get the Monday digest saying zero leads were added, with a list of who was skipped and why so you can adjust the criteria.
Do I need a paid LinkedIn or Sales Navigator account?
Not on the General Input side. It depends on the Apify Actor you choose. Some Actors need a Sales Navigator session, others run on public search results.
Can I change the lifecycle stage on new contacts?
Yes. By default new contacts are created with lifecycle stage Lead. Tell the agent which stage you want and it will use that instead.

Stop hand-pulling LinkedIn prospects into your CRM.

Connect Apify, HubSpot, and Slack once, and Geni will scrape, qualify, dedupe, and log fresh ICP leads every Monday morning.