Most inbound signups arrive with an email address and nothing else. With LinkFetch, a Claude prompt, and a webhook, your CRM can know their company size, funding stage, ICP fit score, and have a personalized first-touch drafted before you finish your morning coffee. The whole pipeline takes about 30 seconds per signup and costs roughly 15 credits.
Why Manual Signup Research Is a Hidden Revenue Leak
A typical sales rep spends over 20 hours per week on manual research and data entry before first contact — more than half of a 40-hour week consumed before a single substantive conversation happens [source: Gartner, 2025 B2B Sales Productivity Report]. For a team of five, that is over 100 rep-hours weekly: the equivalent of two and a half full-time hires doing nothing but Googling company names and checking LinkedIn profiles.
The problem compounds in two directions. First, there is the time cost. Second — and this is the expensive part — the research is not systematic. Different reps check different signals. Some look at company size; others look at tech stack; almost nobody checks for the strongest intent signal of all: whether the company is actively hiring into a role that indicates they are in a buying cycle for what you sell.
B2B data decays at approximately 2–3% per month. A list enriched manually six months ago and filed in a spreadsheet has a meaningful probability of wrong title, wrong company, or both [source: Gartner, The Cost of Bad Data, 2025]. Running enrichment at webhook time — the moment a new signup row is created, not the morning before a rep dials — eliminates this decay problem. The data is current within the last 24 hours of that profile's publicly visible state.
LinkFetch, a compliance-first LinkedIn data API, pulls this live data through the signed-in user's session. No proxy rotation, no stale warehouse, no synthetic sessions — which means the data is both fresher and legally cleaner than most enrichment alternatives. For teams already running the daily outreach agent setup, adding signup enrichment is the natural complement: you are already running enrichment on prospects you find; now run it on the ones who found you.
The 8-Line Prompt That Runs the Whole Pipeline
The enrichment prompt fits in eight lines. Here is the reference implementation:
You are a sales enrichment assistant.
Given a signup email, use linkfetch.profiles and linkfetch.companies
to look up the person and their employer.
Return JSON with these fields:
- company_size: exact headcount if available, or bucket (<10, 10-50, 50-200, 200-1000, 1000+)
- industry: one of SaaS, fintech, agency, e-commerce, media, other
- seniority_level: IC, manager, director, VP, C-suite
- growth_signal: any hiring spike, funding news, or expansion in the last 90 days
- icp_score: 1–10 (10 = perfect: 50-500 person SaaS, VP+ title, active GTM hiring)
- first_touch: one sentence of outreach referencing a specific growth signal
If data is unavailable, return null for that field rather than guessing.
Drop this into Claude Desktop via the LinkFetch MCP server. The server exposes linkfetch.profiles and linkfetch.companies as native tools Claude calls directly — no custom glue code, no intermediate API layer. Connect the MCP tool to whatever automation layer you use (Zapier, n8n, a simple webhook handler) and the pipeline runs on every new signup event.
The first_touch field is the part that looks like magic the first time you see it. Claude uses the growth signal it extracted — an open Series B engineering director role, a product team expansion, a new regional office — to write one sentence that would not survive a spam filter, because it is not spam. It references something real. Response rates for first-touches grounded in a specific signal outperform template sequences by 40–60% in reported A/B tests across outbound platforms [source: Outreach.io State of Sales Execution Report, 2025].
What LinkFetch Pulls From a Signup
When linkfetch.profiles runs against a LinkedIn profile URL, derived from the email via domain-to-company matching, it returns:
| Field | What it is | Why it matters |
|---|---|---|
current_role |
Normalized job title | Seniority classification without brittle regex |
current_company |
Structured employer object | Feeds linkfetch.companies for firmographic data |
employment_history |
Array of prior roles with dates | Tenure signal and career trajectory |
connections_count |
Raw connection count | Network size as proxy for sales sophistication |
is_premium |
Boolean | Premium subscribers research vendors; they are buyers |
And from linkfetch.companies on the matched employer:
| Field | What it is | Why it matters |
|---|---|---|
staff_count |
Exact LinkedIn headcount | The single most reliable ICP filter |
growth_rate_6m |
Percent headcount change, 6 months | Scaling vs. contracting — directional spend signal |
recent_hires |
Array of last 30 new roles with titles | Is the GTM team growing? That is your signal |
funding_stage |
Latest round from public data | Seed vs. Series B vs. bootstrapped |
tech_mentions |
CMS, CRM, analytics tools listed publicly | Tech stack compatibility at a glance |
The recent_hires field is where enrichment earns its cost. If a company that just signed up also just posted three SDR roles and a Head of RevOps, they are building out a GTM function — and they are doing it now, not six months ago. That is not a signal available in any static firmographic database; it requires live LinkedIn data pulled within the last 24 hours, which is what the session-based model provides.
Scoring Against Your ICP Definition
The prompt above uses a generic ICP score. In practice, replace it with the exact criteria your team has aligned on. A concrete scored ICP definition looks like this:
icp_score scoring rules:
+ 3 points: company size 50–500 employees
+ 2 points: SaaS or API-driven product company (not agency, not services)
+ 2 points: VP-level or above current title
+ 2 points: active GTM hiring in recent_hires (SDR, AE, RevOps, Demand Gen)
+ 1 point: Series A or B funding stage
= 10 points maximum
Claude interprets the structured output from LinkFetch and applies the scoring in a single reasoning step. No separate scoring model, no hand-coded rule engine. The ICP definition lives as plain text in the prompt — which means updating it is a one-minute edit, not a sprint.
One refinement worth adding: if the employment_history shows a previous VP title at a recognizable company, even if the person's current title is lower, score them as VP-equivalent. Career downtitling is common in early-stage companies (the "VP of Sales" who came from Salesforce and now runs revenue at a 12-person startup as "Head of Sales"). Claude can catch this pattern if you instruct it to.
Routing and CRM Write-Back
The enrichment output goes wherever your signups live. Two production patterns:
Zapier / Make. When a new row appears in your signups table, Zapier fires a webhook to a Claude automation step. The step runs the prompt, returns JSON, and Zapier maps the fields back into your CRM. Round-trip time is 20–30 seconds. This pattern works with Airtable, HubSpot, Salesforce, Attio, or any CRM with a Zapier integration.
n8n (self-hosted). More control over the data flow. An n8n workflow watches the signups table, sends the email and company domain to a Claude node with the LinkFetch MCP tools attached, and writes the enriched object back to your CRM. The extra control matters when you want conditional routing: a Slack notification for every icp_score ≥ 8, an AE assignment for scores ≥ 6, nurture enrollment for scores below 4.
In both cases, the CRM receives a structured object — company_size, industry, seniority_level, growth_signal, icp_score, and first_touch as separate fields. The first_touch is stored as a draft note, not auto-sent. A human reviews it and fires. That is the correct posture: automated enrichment, human judgment on send.
Handling the Edge Cases
Three cases break the basic pipeline. Handle them explicitly or they will quietly corrupt your enrichment data.
No LinkedIn match. Some signup emails have no accessible LinkedIn profile — typically disposable domains, personal emails (Gmail, Outlook) where the person has not connected their professional identity, or accounts with no public presence. The prompt already handles this: return null for unavailable fields rather than guessing. The CRM row gets partial enrichment. Flag these automatically for a manual review queue, run at end of day. In a B2B product with reasonably screened signups, this is typically 10–20% of the total.
Private company with no public headcount. linkfetch.companies pulls exact headcount from LinkedIn's public company page when the company has made it visible. Some companies hide it. In those cases, LinkFetch returns a bucket estimate derived from the count of visible employees — less precise, but still useful for coarse ICP filtering. A company showing 40+ visible employees on LinkedIn is almost certainly in the 50–200 band.
Seniority mismatch. Sometimes the signup is from an IC doing vendor research on behalf of a decision-maker. The employment_history field helps here: if the person has VP or director history at a previous company, they are likely experienced buyers even if their current title is a level down. Add an instruction to your prompt: "If the person's prior employment shows VP or above within the last 3 years, note this in the growth_signal field and score seniority accordingly."
What This Costs and What It Returns
At roughly 15 credits per signup, 100 new signups in a week costs 1,500 credits. At standard LinkFetch pricing, that is a rounding error in most sales tooling budgets — less than a single outbound tool's per-seat license for a month.
The return calculation is straightforward. If each rep would have spent 12 minutes manually researching a signup before the first call (a conservative estimate; many take 20 or more), 100 signups represents 20 rep-hours recovered weekly. At a fully-loaded rep cost of $60/hour, that is $1,200 of rep time recovered per 100 signups — before counting the revenue impact of better ICP accuracy.
The number that compounds faster than time savings is ICP accuracy. When reps enter every call knowing the company size, funding stage, and active hiring signals, qualification happens faster. Pipeline stages clear faster. The 20-minute discovery call becomes 10 minutes of confirmation rather than 20 minutes of information gathering. Teams running this pattern consistently report a 15–25% reduction in time-to-qualify across their inbound motion.
For teams evaluating enrichment options, the post-Proxycurl enrichment options landscape covers the alternatives and their relative compliance posture. LinkFetch's session-based model is structurally different from proxy-based enrichment tools — relevant if you are selling to regulated buyers or have a DPA obligation. Founders building both inbound and outbound motions simultaneously will find the signal-based founder cold outreach playbook a natural complement: the same LinkFetch data that enriches your signups also powers a weekly watchlist of high-intent outbound targets.
FAQ
How does LinkFetch find the LinkedIn profile from an email address?
The most reliable path is domain-to-company matching: extract the domain from the signup email, look up the company via linkfetch.companies, then search for the person's name within that company's employee list. For consumer email providers (Gmail, Outlook), fall back to a name-plus-company search if your signup form collected a name. Match rate is 75–85% for business email domains in practice.
Should the enrichment run before or after email verification?
After verification. Pre-verification emails include a meaningful proportion of invalid or throwaway addresses that will never convert to active users. Running the enrichment webhook on the confirmation event rather than the registration event avoids wasting credits on addresses that never confirm — and keeps your enrichment data set cleaner.
What if we already use Clay or Apollo for enrichment?
LinkFetch complements rather than replaces both. Clay and Apollo draw from third-party data warehouses with variable freshness — typically 30–90 days stale for less-visited profiles. LinkFetch pulls against live LinkedIn data as seen by the signed-in user, which is materially more current for role changes and hiring signals. The two sources can run in parallel, with the ICP scoring prompt synthesizing both outputs.
Is enriching inbound signups GDPR-compliant?
LinkFetch operates on data the user's LinkedIn session can already see — the same public profile data you would read manually before a call. The compliance posture is equivalent to standard B2B due diligence. Your DPA with customers should cover the enrichment as B2B data processing under legitimate interest; consult legal on jurisdiction-specific requirements, particularly for EU data subjects. For a deeper treatment of the compliance landscape, see the current LinkedIn data API landscape.
What is the right ICP score threshold for AE routing?
A workable starting point: scores of 7–10 go directly to an AE for same-day outreach, scores of 4–6 go into a 5-touch sequenced nurture, scores of 1–3 go into a monthly newsletter-style nurture. Calibrate after 30 days of data — look at which scores actually converted to opportunities and adjust the thresholds from there.
Can the first_touch field be auto-sent as a LinkedIn invite message?
It can be connected to linkfetch.outreach.queue, which stages messages as drafts in your LinkedIn connection queue. The design choice of keeping a human review step before send is deliberate — not a limitation. Fully automated send tends to erode message quality over time as the prompt drifts; a 5-minute morning review catches the cases where the growth signal Claude cited is stale or misread.
Last updated 2026-04-24 · LinkFetch team