advanced25 minLinkedInLinkedInagntdata Lead APIsagntdata Lead APIs

LinkedIn profile qualifier and enricher

Hand any LinkedIn profile URL to this agent and get back a qualified, ICP-scored lead with a verified email and a website summary attached.

One-click build

Build this with agnt_

Skip the copy-paste. We'll spin up a builder session prepopulated with this blueprint's spec — providers, schedule, database schema, and the questions the agent should ask you to personalize it for your product.

Build with agnt_

Sign up free · no credit card

The motion

Give the agent any LinkedIn profile URL — from a chat message, a webhook payload, or another agent's tool call — and it returns a single structured JSON result: ICP score with breakdown, hard-disqualify reason if any, the prospect's company website summary, and a verified contact email when findable. Use it as a one-shot lookup tool, wire it into a form-fill webhook, or pair it with the LinkedIn engager scraper to drain a leads table on autopilot.

One key, four enrichment surfaces

LinkedIn profile, recent posts, website summary, and verified email — all behind a single agntdata credential. The agent stitches them into one ranked lead.

Verified emails, never guesses

Email finder + mandatory verifier on every result means your downstream sequencer only ever sees deliverable addresses. `risky` is surfaced with the flag flipped; `undeliverable` is discarded silently.

Heavy payloads stay out of context

A single combined skill fetches the LinkedIn profile and recent posts, saves the raw JSON, and returns only a compact summary to the agent — the conversation cache stays small even for prospects with hundreds of posts.

A ranked judgment, not just data

Every lead leaves with a 0–100 `lead_score`, an `icp_match` label, and (for high-fit ones) a 3–4 sentence personalized notes block your SDRs can paste into the opener.

This agent is the qualification + enrichment function for LinkedIn-sourced prospects. Hand it a profile URL, get a structured lead. Pair it with a scraping blueprint upstream and a CRM webhook downstream when you want the full pipeline; call it ad-hoc the rest of the time.

Click any node to inspect
Click any node to inspect its role in the agent.
One-click build

Build this with agnt_

Skip the copy-paste. We'll spin up a builder session prepopulated with this blueprint's spec — providers, schedule, database schema, and the questions the agent should ask you to personalize it for your product.

Build with agnt_

Sign up free · no credit card

Or copy a prompt into another platform

Prefer to build with OpenClaw, Hermes, or Claude Code? Drop this prompt into your agent of choice — it seeds the goal, the agntdata endpoints to use, and a step-by-step plan.

Prefer the manual walkthrough? ↓
You are helping me build a LinkedIn lead qualifier + enricher. The agent takes a single LinkedIn profile URL as input, fetches the profile + recent posts in one shot, applies hard disqualify rules, scores against my ICP rubric, and (only for high-fit leads) finds + verifies a contact email. It returns a structured JSON result.

REFERENCE DOCS (read these before writing code)
- Full agntdata API documentation: https://agnt.mintlify.app/apis/overview
- Endpoints we'll use (all behind one agntdata key):
  - `linkedin-data-api / Get_Profile_Data_By_URL` — fetch the LinkedIn profile (headline, experience, websites)
  - `linkedin-data-api / Get_Profile_s_Posts` — fetch recent posts for content scoring
  - `agntdata-agnt / people_email_finder` — find an email from {linkedin_url} or {full_name + domain}
  - `agntdata-agnt / people_email_verifier` — verify deliverability before we surface the email
- Plus the Exa connector for website summarization (and optional company-website discovery when the profile doesn't carry one).

ABOUT MY PRODUCT
- Product: <YOUR PRODUCT — one sentence>
- Top ICPs (in priority order, with a 1-sentence "what they look like on LinkedIn"):
  1. <ICP 1>: <signals — typical headline phrasing, role, company stage>
  2. <ICP 2>: <signals>
  3. <ICP 3 — optional>
- Tool stack mentions worth boosting (competitive or complementary tools — headline + recent posts):
  - <tool 1, tool 2, tool 3, ...>
- Hard disqualify rules (in priority order; first hit wins):
  1. <rule 1 — e.g. "no headline">
  2. <rule 2 — optional>

WHAT TO BUILD
An agent (claude-haiku-4-5) on agntdata. It accepts a LinkedIn profile URL as input — from chat, a webhook payload, or another agent's tool call — and runs the pipeline once per invocation.

Step 1 — Parse input. Pull the LinkedIn URL from the user message (must contain `/in/<slug>`). If missing or malformed, respond "expected a LinkedIn profile URL" and stop.

Step 2 — Run `fetch_linkedin_profile_and_posts` skill ({ linkedin_profile_url }). The skill makes both LinkedIn calls in one shot, returns a compact summary (`first_name`, `last_name`, `headline`, `company_name`, `company_url`, `post_count`), and keeps the heavy raw payloads out of your context. Use the returned fields for every subsequent step — do NOT make any separate LinkedIn calls.

Step 3 — Hard disqualify gates (apply IN ORDER, stop on first hit). My rules above. The standard one: empty `headline` → emit a structured "disqualified" result and stop.

Step 4 — Find a website to summarize. Try in this order:
  4A. Use `company_url` from the skill result if present.
  4B. Otherwise, Exa-search `"<company_name>" official website` (`type: "auto"`, `numResults: 3`) and pick the most plausible homepage (not a LinkedIn URL).
  4C. Otherwise, Exa-search `"<first_name> <last_name>" "<headline>"` and look for a personal site or company domain.
  4D. If still nothing: skip website entirely and let the scorer work without it.

Step 5 — Run `fetch_website_summary` skill ({ website_url }) when you have a URL. It returns a one-paragraph Exa summary.

Step 6 — Run `score_linkedin_lead` skill ({ linkedin_profile_details, linkedin_profile_recent_posts, website_summary }). It calls Claude Sonnet with my rubric and returns `lead_score` (0–100), `score_breakdown` (jsonb), `icp_match`, `reasoning`, and `qualification_notes` (only when score > 50).

Step 7 — If `lead_score <= 50`: emit the structured "scored, not enriched" result and stop.

Step 8 — Enrichment (only when `lead_score > 50`). **Hard cap of 4 tool calls total in this branch.**
  8A. Email finder via `people_email_finder` with `{ linkedin_url, max_cost_cents: 50 }`. If nothing, fall back ONCE to `{ full_name, domain, max_cost_cents: 50 }`. If neither viable: skip to result with `email_enrichment_status = 'not_found'`.
  8B. **Mandatory verify** via `people_email_verifier`. `deliverable` → surface with `email_verified = true`. `risky` → surface with `email_verified = false`. `undeliverable` → discard.

Step 9 — Emit the structured result. Always include:
```json
{
  "linkedin_profile_url": "...",
  "disqualified": false,
  "disqualify_reason": null,
  "lead_score": 72,
  "icp_match": "<matched ICP>",
  "score_breakdown": { ... },
  "qualification_notes": "...",
  "first_name": "...",
  "last_name": "...",
  "headline": "...",
  "company_name": "...",
  "company_url": "...",
  "company_description": "...",
  "website_url": "...",
  "website_summary": "...",
  "email": "...",
  "email_verified": true,
  "email_enrichment_status": "found"
}
```

GUARDRAILS
- Never call LinkedIn directly — always go through the agntdata endpoints.
- Don't compute `lead_score` / `score_breakdown` from the agent — only the `score_linkedin_lead` skill does.
- Verifier is mandatory before surfacing any email. No exceptions.
- The combined profile-and-posts skill is the ONLY LinkedIn fetch path. Never call `Get_Profile_Data_By_URL` or `Get_Profile_s_Posts` from the agent directly — the skill keeps the raw payloads out of your conversation cache.

RECOMMENDED PIPELINE (optional)
This agent is a function: `linkedin_url → qualified lead`. To turn it into a pipeline, pair it with the `linkedin-gtm-engager-scraper` blueprint (which fills a `leads` table with LinkedIn profile URLs from engaged posts in your topic space) and add a thin upstream agent that polls the table and calls this one per row. If you also run the X (Twitter) qualifier, scope each polling agent's claim predicate by identifier (`linkedin_profile_url IS NOT NULL AND x_username IS NULL` for this one; `x_username IS NOT NULL` for the X variant) so they don't fight over the same rows.

When ready, start by asking me the ABOUT MY PRODUCT questions.

Paste into OpenClaw to scaffold this agent. Tweak the inputs and goal at the top of the prompt.

How to build it

6 steps. Each one links to the underlying agntdata endpoints — open them in a new tab to inspect parameters and pricing as you build.

Sign up at app.agntdata.dev/dashboard. One key gives you LinkedIn profile + posts, agnt people email finder + verifier, and the Exa connector — credit-based pricing across all of it.

The CTA above seeds a builder session prefilled with this blueprint. The meta-agent walks you through your ICPs (with on-LinkedIn signals for each), the tool stack mentions worth boosting in scoring, and your hard disqualify rules. It then generates the three skills and the agent.

Pick five LinkedIn URLs you have an opinion on — three you would happily outbound, two that are obviously not your fit. Hand each to the agent and inspect the structured result. The good ones should score > 50, get qualification_notes, and trigger the enrichment branch (verified email). The bad ones should score 0, set disqualify_reason, and never call the email finder. If either misbehaves, tune the rubric or the disqualify rules before going further.

The agent is now a function: `linkedin_url → qualified lead JSON`. Pipe it wherever fits: a Slack /qualify slash command, a webhook from a form fill, or an inbound MCP tool call from another agent.

Sample the output. If high scores are landing on obvious misses, tighten the role rubric. If real fits are stuck in the 30–50 range, loosen content scoring or add a bonus for your tool mentions. The rubric lives in the `score_linkedin_lead` skill — change it, redeploy, and re-test.

When you are ready for the canonical "LinkedIn → ranked outbound queue" stack, you have two choices. (1) Build the `linkedin-gtm-engager-scraper` blueprint upstream — it fills a `leads` table with LinkedIn URLs from engaged posts in your topic space — and have a thin polling agent atomically claim rows and call this qualifier per row, writing the structured result back. (2) Pipe the result into a CRM via webhook and let your existing tooling persist it. If you also run the X (Twitter) qualifier alongside this, scope each polling agent's claim predicate by identifier (`linkedin_profile_url IS NOT NULL AND x_username IS NULL` for this one; `x_username IS NOT NULL` for the X variant) so they don't fight over the same rows.

Endpoints used

The agntdata endpoints this blueprint depends on. All available with one API key.

LinkedInLinkedInget

Get Profile Data By URL

/get-profile-data-by-url

Fetches the full LinkedIn profile by URL — headline, experience, websites. Called once per invocation inside the combined `fetch_linkedin_profile_and_posts` skill so the raw response stays out of the agent's conversation cache.

View endpoint docs
LinkedInLinkedInget

Get Profile's Posts

/get-profile-posts

Fetches recent LinkedIn posts for the content-score component of the rubric. Called inside the same combined skill as the profile fetch; raw payload is saved and only `post_count` is returned to the agent.

View endpoint docs
agntdata Lead APIsagntdata Lead APIspost

Find a person's professional email

/people/email-finder

Resolves a contact email for high-fit leads. Prefers the LinkedIn URL → falls back ONCE to (full_name + domain). Capped via `max_cost_cents` and skipped entirely when the input is too thin to succeed.

View endpoint docs
agntdata Lead APIsagntdata Lead APIspost

Verify a professional email

/people/email-verifier

MANDATORY before any email is surfaced. `deliverable` → return with `email_verified = true`, `risky` → return with `email_verified = false`, `undeliverable` → discard. Stops your sequencer from ever sending to a guess.

View endpoint docs

Ship this blueprint today

One click spins up a builder session prefilled with this blueprint's spec. We'll ask you a handful of personalization questions, then generate the agent.

Related blueprints

Browse all →
X (Twitter)LinkedInagntdata Lead APIsadvanced25 min

Hand any X username to this agent and get back a qualified, ICP-scored lead with a verified email and a resolved LinkedIn profile.

Inbound EnrichmentLead ScoringData EnrichmentFounderRevOps
agntdata Lead APIsLinkedInadvanced35 min

Takes the partial hiring contacts a scraper produces and turns them into a sequenceable pipeline: verified emails for every lead, plus inferred buying committees for the hiring companies where LinkedIn returned no hiring team. Hourly cron. Pair upstream with a hiring-signal scraper, downstream with a sequencer.

Data EnrichmentLead ScoringICP DiscoveryFounderSDR / BDR
agntdata Lead APIsbeginner15 min

Give it a name + a domain (or a LinkedIn URL, or any combo of identifiers) — it returns a verified professional email or a structured failure. Three-step waterfall: agntdata orchestrator → Exa deep search → verifier. Stateless primitive, called by other agents.

Data EnrichmentInbound EnrichmentCold OutboundFounderSDR / BDR