---
ref: workflow:linkedin-network-buyers
title: Find the buyers already in your LinkedIn connections
author: thedogwiththedataonit
tools: [tool:typesafe/answer-typed-questions, tool:people-data-labs/enrich-company, tool:heyreach/add-leads-to-campaign]
tags: [capability:classify-signals, capability:enrich-companies, capability:enroll-in-sequence, channel:linkedin, has:api, motion:outbound]
updated: 2026-09-29
---

# Find the buyers already in your LinkedIn connections

Reads your LinkedIn connections export, keeps the people in roles and companies you sell to with Jev, and adds them to a HeyReach campaign.

Set up the tools below, then run the steps in order for the user, carrying each step's results into the next. The run is done when the user has the outcome below.

## Outcome

- A table of your connections in the roles you sell to, with their company's fit level and Jev's confidence.
- The connections at companies that fit, added to your HeyReach campaign after your approval.

## Inputs

Ask the user for these before you start.

- `connections_file`: the Connections.csv from LinkedIn's "Get a copy of your data" export, e.g. ~/Downloads/Connections.csv
- `target_roles`: the roles you sell to, each with one line, e.g. economic_buyer: owns the budget for sales tools; champion: runs sales operations day to day
- `ideal_customer`: the companies you sell to, in a sentence or two, e.g. B2B software companies with 50 to 1,000 employees and a sales team
- `min_fit`: the lowest company fit level worth a message, e.g. good
- `max_lookups`: the most companies to look up in one run, since each match is charged, e.g. 150
- `campaign`: the HeyReach campaign for these people, set up once with only your own LinkedIn account as its sender and a message as its first step, by name, e.g. Warm network
- `min_confidence`: how sure Jev must be before its answer is used without you, e.g. 0.8

## Set up

### Answer typed questions (TypeSafe AI, tool:typesafe/answer-typed-questions)

Use the API.

- Base URL: https://api.typesafe.ai
- Endpoint: `POST /v1/systemone`
- Auth: send the header `Authorization: Bearer $TYPESAFE_API_KEY`
- Get a key: https://console.typesafe.ai

Note: Put every question about one record in one request. `GET /v1/models` lists the models and is the cheapest check of a key; a request over the rate limit gets a 429 with a Retry-After header.

Note: Send `state`, `model` (`jev-latest`) and named `questions`, each with `type`, `instructions` and `criteria`: a choice maps labels to descriptions, a score lists its levels in order, a noul's is optional. Read a score by its most likely level; send unsure answers to a person.

### Enrich a company (People Data Labs, tool:people-data-labs/enrich-company)

Use the API.

- Base URL: https://api.peopledatalabs.com
- Endpoint: `GET /v5/company/enrich`
- Auth: send the header `X-Api-Key: $PDL_API_KEY`
- Get a key: https://dashboard.peopledatalabs.com/api-keys

Note: Charged per match; no match returns 404. Headcount trends, inferred revenue, subsidiaries and job-posting insights are premium fields your plan must include.

### Add leads to a campaign (HeyReach, tool:heyreach/add-leads-to-campaign)

Use the API.

- Base URL: https://api.heyreach.io
- Endpoint: `POST /api/public/campaign/AddLeadsToCampaignV2`
- Auth: send the header `X-API-KEY: $HEYREACH_API_KEY`

Note: Create the key in the HeyReach app under Settings, API keys. Every request counts toward one workspace limit of 300 requests per minute, and read endpoints use POST with a JSON body of filters.

Note: The campaign must exist and have LinkedIn sender accounts assigned before leads go in. Each lead needs a LinkedIn profile URL; the response counts added, updated and failed leads.

Before step 1, confirm access to each service with its cheapest read-only call, like a list or a search. Never send or change anything to test access.

## Steps

1. **Read the export** yourself. Read `connections_file`, skipping the notes above its header row, and keep each connection's name, profile URL, company, position and connection date.
2. **Sort by role** with Answer typed questions (TypeSafe AI). Send each connection's position and company as the state, with a choice `role` over `target_roles` plus other. Keep the connections with a target role, with its confidence.
3. **Look up their companies** with Enrich a company (People Data Labs). Look up each kept connection's company by name, once per company, up to `max_lookups`. Keep each company's website, industry, size and funding stage.
4. **Score the companies** with Answer typed questions (TypeSafe AI). Send each company's facts as the state, with a score `fit` whose levels describe the match with `ideal_customer`: no fit (matches none of it), weak (matches some), good (matches most) and ideal (matches all). Keep each company's most likely level and its confidence.
5. **Check the unsure ones with the user** yourself. Show the user the connections whose role or fit confidence is below `min_confidence`, and keep what the user decides. Keep the connections at companies with a fit of `min_fit` or better.
6. **Add them to the campaign** with Add leads to a campaign (HeyReach). After the user approves, look up `campaign` by name, a read-only call, and add each kept connection by profile URL.

## Notes

People already connected to you are a warm list, but in a large network they are mixed in with recruiters, classmates and conference contacts. Sorting by role first keeps the paid company lookups to the connections that could be buyers.

The export holds names, positions and companies, and an email only when the connection allows it; keep the file private and delete it after the run. LinkedIn's User Agreement restricts automated activity, so keep the messages personal and the volume low.

## Rules

- Use only the services set up above. The read-only calls they need, like listing ids or polling for results, are fine.
- Ask the user before anything that sends messages, costs money, or changes data, and say how many records it touches. One approval covers a batch the user has seen.
- Never print API keys.
