Source and qualify leads
A target company gets searched across LinkedIn, ranked against your ICP, and the qualified shortlist lands in your CRM with email and mobile filled in.
- Starts
- Company selected by a rep
- Steps
- 6
- Checks and gates
- 0
- A person decides
- Never, runs alone
Trigger · Event
Company selected by a rep
A rep picks the company they want worked, and that company is the run's only input.
Claude runs the rest autonomously
- 1
AI lists the company's senior people.
LinkedInLinkedIn
You get everyone at the target company in the seniority band you're after, from every page of results, not the first screenful.
- 2
AI shortlists people who fit your ICP.
Each person is ranked on function, seniority and whether they still work there, and anyone outside your profile is set aside.
- 3
AI finds each contact's email.
DropcontactDropcontact
Each qualified contact gets an email, with a second provider picking up whoever the first pass couldn't find.
Apollo.ioApollo.io
- 4
AI finds each contact's mobile.
KasprKaspr
Each contact gets a mobile number the same way, with a second provider filling in whoever the first pass couldn't reach.
LushaLusha
- 5
AI spots contacts already in the CRM.
SalesforceSalesforce
Anyone already in your CRM is recognised by their profile link, so they get updated instead of duplicated.
- 6
AI adds new contacts, updates the rest.
SalesforceSalesforce
New contacts land in your CRM flagged so a rep can tell they just arrived, and existing ones are updated instead.
Sourcing a target account by hand means a rep searching LinkedIn one page at a time, guessing which of thirty people with plausible titles are actually worth a look, then running each name through an enrichment tool one at a time before anything reaches the CRM. Every step is mechanical, and every step is also where the list goes stale or half-finished before it's used.
Both halves already exist as data. LinkedIn's graph holds who works where, and your ICP becomes a rule once it's written down. The work is search, score, enrich, write back, in that order, every time, which makes lead generation for a named account a good job for an AI agent that can reach LinkedIn, enrichment providers and Salesforce.
What you get
A ranked, ICP-qualified shortlist becomes Salesforce Contacts, deduplicated by LinkedIn profile, tagged as newly found, with email and mobile already filled in.
Finding the right people at one target company
A run starts from one company a rep picked. The agent resolves it to its exact corporate entity instead of the nearest name match, filtering on the domain when it is known. It discards entities with no indexed employees and pages that look like a subsidiary or showcase page, and it checks sub-organizations before giving up on a headquarters that returns nobody.
People are then searched at that entity within the seniority bands you sell into, economic buyers and decision-makers at the top, champions below, and every page of results is fetched, since the good candidates are often past the first screen. Two traps sit here. Some title filters are silently ignored, so the agent pulls the broader seniority set and checks titles itself against the functions you sell into. And every branch or store of a multi-location business shares the parent's domain, so people are filtered by the corporate entity's own ID, never by domain, or local staff flood the results.
Scoring leads against your ICP
Scoring against an ICP is where most of these pipelines quietly fail. A title-only filter looks precise, yet it misses the person whose title doesn't say "marketing" but whose role is, and it keeps the person who left the role six months ago and never updated their headline. Ranking on the fuller signal (function, seniority band, current tenure) is what keeps the shortlist honest instead of merely long.
The shortlist aims for a realistic split across buyer tiers instead of the largest possible headcount. If you sell to a head office, anyone at store, branch or franchise level is excluded however senior the title looks. Each person kept carries a one-line reason for the fit. When the run is unattended, with nobody reviewing the shortlist, borderline candidates are dropped.
Email and mobile, resolved in bulk
Email and phone are worth resolving in bulk: the whole batch to a primary provider in one call, then whoever it couldn't reach through a second. One lookup per contact costs an order of magnitude more calls for no better result. Email comes from Dropcontact and Apollo, mobile from Kaspr and Lusha, each pair run as a batch followed by a fallback for the residue.
The identifier matters as much as the batching. A phone lookup keyed on email alone has returned a completely unrelated person, wrong company and wrong number, even though it billed as a match. Anchoring the same lookup on LinkedIn profile plus name plus company resolved correctly every time it was checked against a CRM record already known to be right. Only the mobile field is written, never the office line, which this pipeline has no real value for.
Writing to Salesforce without duplicates
The last mile is dedup, and it has to run on something more stable than a name. Two different people share a name more often than a pipeline expects, and a married name or an accent is enough to break a naive match. Before creating anything, the agent queries Salesforce once for the whole batch by LinkedIn URL and splits it into contacts that already exist and contacts that are new. When Salesforce's own duplicate rule still blocks a create, usually because the existing record has no LinkedIn URL on file, that record is found by name and account, its LinkedIn URL is filled in, and it is treated as existing.
New contacts are created in bulk with a fixed set of fields (name, title, email, mobile, account, and the LinkedIn URL that serves as the dedup key next time) and flagged as newly found. Existing contacts get only the new email or phone, in one batched update, and their flag is never touched. That is what lets this run again next week against the same account without leaving duplicates behind, and lets a "newly found" flag mean what it says.
The prompt
The real prompt behind the steps above, detailed enough that an agent with the same tools can run it as written. The Run buttons copy the full version, which also carries the steps for connecting those tools.
# Source, qualify, and push contacts to Salesforce
You have access to a LinkedIn company/people search tool, email and
phone enrichment tools, and read/write access to Salesforce. Run this
for **[Company Name]**.
## 1. List the company's senior people
- Resolve [Company Name] to its exact corporate entity — not the
nearest name match. If you know the domain, filter on that; avoid a
generic "website" filter if your tool has one, it tends to return
the whole database instead of the one company.
- Discard any candidate with zero indexed employees, or that looks
like a subsidiary/showcase page rather than the real operating
company. If the best headquarters-level entity returns nobody, check
its sub-organizations before giving up.
- Search people at that entity filtered to the seniority bands you
sell into (e.g. C-suite/VP/Director/Head for economic buyers and
decision-makers, Manager/Senior for champions). Fetch **every page**
of results — the good candidates are often past the first screen.
- If your tool's title filter is unreliable (some silently ignore it),
don't trust it blind: pull the broader seniority-filtered set and
filter titles yourself against a keyword list for the functions you
sell into.
- Never filter people by domain for a multi-location business — every
branch or store shares the parent's domain and floods the results
with local staff. Filter by the corporate entity's own ID instead.
## 2. Shortlist people who fit your ICP
- Your ICP: **[fill in — target function, seniority band, company
profile]**.
- If you sell to a corporate/HQ buying center, exclude anyone at
store, branch, or franchise level, even if their title looks senior.
- Sanity-check tenure: drop anyone whose headline shows a different
current employer than the target company.
- Aim for a realistic split across buyer tiers (e.g. 1-2 economic
buyers, 3-4 decision-makers, 4-5 champions) rather than maximizing
headcount.
- Record a one-line reason per person for why they fit — you'll want
it on the record later, and so will the rep who opens it.
- If this is running unattended, with no one to review the shortlist,
be conservative: anything borderline gets dropped, not kept.
## 3. Find each contact's email
- Submit the **entire qualified batch in one call** to your primary
email-enrichment tool — most batch 100-250 contacts per call, check
yours. Never loop this one contact at a time; it costs an order of
magnitude more calls for the same result.
- For anyone the first pass couldn't resolve, run a second batched
pass through a fallback provider.
## 4. Find each contact's mobile
- Same discipline as email: submit the whole batch to your primary
phone-enrichment tool in bulk.
- Identify each contact by **LinkedIn URL + name + company** — never
by email alone. A bare-email lookup has been known to return a
completely unrelated person at a different company, even though it
billed as a match.
- Fall back to a second, single-lookup provider only for the residual
contacts the bulk pass couldn't resolve.
## 5. Spot contacts already in the CRM
- Before creating anything, query Salesforce **once** for every
contact in the batch by LinkedIn URL — a single
`WHERE LinkedIn_URL IN (...)`-style query covers the whole batch,
never one query per contact.
- Split the batch into contacts that already exist (capture their Id)
and contacts that are genuinely new.
- If Salesforce's own fuzzy duplicate rule still blocks a create (this
happens when an existing record has no LinkedIn URL on file), look
that record up by name + account, back-fill its LinkedIn URL, and
treat it as "already exists" instead of fighting the duplicate rule.
## 6. Add new contacts, update the rest
- Bulk-create every genuinely new contact in one call (chunk at ~200
if your tool caps batch size). Write only: first/last name, title,
email, **mobile phone** (never the office/landline field — it's a
different field and this pipeline never has a real value for it),
the account, and the LinkedIn URL itself, since it's your dedup key
for next time.
- Flag newly created records only (e.g. a status or source field set
to something like "Newly found") — never touch that flag on a
contact that already existed.
- Bulk-update the contacts that already existed with whatever new
email/phone you resolved, in one batched call, not one per contact.
- Never write outside this explicit field list — no internal
scoring/tier fields, no guessed mappings.
## Output
Report: how many contacts found, how many net-new vs. updated, how
many got email, how many got phone, and anyone dropped along the way
and why.
Why run it with Tulina
A prompt helps one person. A process moves a team.
Pasted into a chat, the prompt above works once, for whoever pasted it. In Tulina, "Source and qualify leads" becomes a process the team shares, that keeps its history, runs on its own, and stays inside the same security perimeter as the tools it calls.
The whole team works on the same one
PersonalTeamOrganisation
A process lives where it belongs: yours, your team's or the whole organisation's. Whoever runs it can improve it, and everyone starts from the best version instead of explaining the job again.
Every edit is a version
v1v2v3
Each change is a new version with the previous one kept, so a bad edit is undone by restoring an earlier one. Every run records the version it followed, and what a run teaches goes back into the process.
It runs without you
schedulewebhookon demand
A hosted agent runs the process on Tulina's own infrastructure, on a schedule or when an event arrives, and keeps going when you close the chat. Nothing to host. Every run is tracked to its outcome.
Inside the same security perimeter
vaultrolesrun log
Credentials stay in the vault, never in the prompt. Roles decide who may run what, every call is logged, and a step a person has to approve waits for that person.
Questions about AI lead generation for Salesforce
Also on Salesforce
Other processes that run mainly on Salesforce. The tools they share with this one are lit.
Keep CRM accounts updated
Companies in your CRM are checked every week for new legal filings, and a change of ownership, officers or address, or an insolvency, is flagged on the account.
- Shares
- Salesforce
Weekly schedule4 steps →
Qualify inbound leads
AI lead scoring for inbound leads: each one matched to its legal entity, scored on real headcount and filed accounts, and written back with the reason.
- Shares
- Salesforce
New lead created5 steps →