See llms.txt for all machine-readable content.

Back to Templates

Build LinkedIn sales call briefs with Apify, OpenAI and Slack

Quick overview

Type a company into a form and get a sales call brief in Slack: company facts, its leaders, their LinkedIn posts from the last 90 days, a fit score, two openers that each link to a real post, and discovery questions. Every brief is logged in Google Sheets.

How it works

  1. The built-in n8n form takes a company name or LinkedIn company URL, and optionally the profile URLs of the people you are meeting.
  2. A Set node holds what you sell, your ideal customer, the leader titles to look for and the Good fit cut-off.
  3. The first Actor reads the company's LinkedIn page. A name that matches no page goes down the lower path.
  4. The second Actor finds current leaders by title and confirms each one works there today. Only senior-looking titles are kept.
  5. The third Actor reads recent posts from the company feed, the leaders and your attendees in one call.
  6. A Code node numbers every post, and the Information Extractor writes the brief: fit score, snapshot, two openers with post numbers, questions and watch-outs.
  7. A second Code node drops any opener that points at a post not on the list, then sets the status from your cut-off.
  8. Every request goes to Google Sheets. A Switch posts Good fit briefs to Slack, sends a resubmit note when the company was not found, and only logs Low fit.

Setup

  1. Create a free Apify account, copy the API token from Settings, Integrations, and add it as an Apify credential on the three Actor nodes.
  2. Add an OpenAI credential on the chat model node, or swap in any other chat model.
  3. Connect Google Sheets and pick a spreadsheet and tab.
  4. Connect Slack and pick the channel on both Slack nodes.
  5. Describe what you sell and your ideal customer, in plain words, in the Set node.
  6. Activate the workflow and bookmark the form URL from the trigger node, or share it with your team.

Requirements

  • An Apify account; the free tier covers dozens of briefs a month
  • An OpenAI API key, or any chat model credential n8n supports
  • Google Sheets and Slack credentials
  • No LinkedIn login, cookies, Sales Navigator seat or data vendor key

Customization

  • leaderTitles sets who counts as a leader; add Head of Sales or CTO for your buyer
  • postDays and postsPerPerson set how far back and how deep the post read goes
  • goodFitScore decides which briefs reach Slack, without touching the prompt
  • Paste attendee profile URLs in the form to read their posts even when they are not leaders
  • Use the optional Google Calendar trigger to brief every new external meeting
  • Use the optional profile read to give the model work history and education for a second hook

Additional info

How do I research an account on LinkedIn before a sales call without logging in? This template reads public LinkedIn pages through three Actors: the company page for firmographics, a people search for current leaders, and a posts read for what the company and those leaders said recently. Nothing uses your LinkedIn account, a cookie or a Sales Navigator seat.

How do I know the openers are not made up? The model only sees posts as a numbered list and has to give the number behind each opener. A Code node then checks that number against the list. An opener pointing at a post that is not there is dropped, and the Notes column says so. Every opener that reaches Slack links to the post it came from.

Why are some people the search found missing from the brief? The leader search matches your title keywords anywhere on a public profile, so a search for "VP Sales" can also return a sales team lead. Only people whose current title or headline reads as senior get their posts read; the others are still listed for the model as "also found". If you are meeting someone specific, paste their profile URL in the form.

What happens when the company name does not match? The request is logged with Status Company not found, and Slack asks the rep to resubmit with the LinkedIn company URL, which is always exact.

What does it cost? At most about 4 cents per brief in Apify charges, plus one small model call. A name lookup is $0.004, each confirmed leader is $0.005, and posts and company pages cost a fraction of a cent. A run takes three to five minutes, almost all of it in the leader search.

What else can these Actors do? LinkedIn Company API returns size, industry, headquarters, specialties and similar companies for a list of URLs or names, which also makes it a company data enrichment API. LinkedIn Company Employees API lists the people who work at a company, filtered by title and location, for account mapping and talent mapping. LinkedIn Posts API returns recent posts and post engagement for any person or company page. If you self-host n8n, n8n-nodes-linkedin-company-api, n8n-nodes-linkedin-company-employees-api and n8n-nodes-linkedin-posts-api wrap them as community nodes.

About Apify. LinkedIn Company Employees API runs on Apify, a platform of ready-made scrapers and APIs for sources that have no usable public API. Actors are pay per use with no subscription, and they run in the cloud, so nothing runs on your machine and nothing breaks when the source changes its markup.

New to Apify? You can set up a free account and get the API token this template needs in a couple of minutes.