advanced25 minX (Twitter)X (Twitter)LinkedInLinkedInagntdata Lead APIsagntdata Lead APIs

X (Twitter) profile qualifier and enricher

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

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 X username — 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 LinkedIn profile when resolvable, 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 X engager scraper to drain a leads table on autopilot.

One key, four enrichment surfaces

X profile, X recent posts, LinkedIn profile, 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.

Cheap when it should be cheap

Hard disqualify gates fire before any LLM scoring or enrichment. A no-link, no-bio profile costs one X API call and zero enrichment credits — the rubric never sees it.

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 in your stack. Hand it a handle, 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 an X lead qualifier + enricher. The agent takes a single X username as input, fetches the profile, applies hard disqualify rules, scores against my ICP rubric, and (only for high-fit leads) resolves a LinkedIn URL and 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):
  - `twitter154 / User_Details` — fetch X profile (bio, location, link, followers)
  - `twitter154 / User_s_Tweets` — fetch recent posts for content scoring
  - `linkedin-data-api / Get_Profile_Data_By_URL` — fetch LinkedIn profile after we resolve the URL
  - `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 LinkedIn URL discovery and website summarization.

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

WHAT TO BUILD
An agent (claude-haiku-4-5) on agntdata. It accepts an X username 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 X username from the user message (strip leading @, trim). If missing or malformed, respond "expected an X username" and stop.

Step 2 — Fetch X profile via `User_Details`. Hold the full response in scratchpad memory.

Step 3 — Hard disqualify gates (apply IN ORDER, stop on first hit). Use my rules above. If any fires: emit a structured "disqualified" result and stop. Do not run any further calls.

Step 4 — Run `fetch_x_recent_posts` skill ({ x_username }). It returns the recent tweets payload.

Step 5 — Run `fetch_website_summary` skill ({ website_url }) using the URL from the X profile. It returns a one-paragraph summary via Exa.

Step 6 — Run `score_lead` skill ({ x_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`):
  8A. Parse `first_name` / `last_name` from the X display name. Extract `company_url` from the X profile link and `company_description` from the website summary.
  8B. Search Exa for LinkedIn: `"<full name>" site:linkedin.com/in`. If a confidently-matching `linkedin.com/in/...` URL is returned, capture it.
  8C. If we have a LinkedIn URL: call `Get_Profile_Data_By_URL` and capture the response.
  8D. Email finder via `people_email_finder`: prefer `{ linkedin_url }`, fall back to `{ full_name, domain }`. `max_cost_cents: 50`. If neither viable: skip to the result with `email_enrichment_status = 'not_found'`.
  8E. **Mandatory verify** via `people_email_verifier`. Only surface the email if status is `deliverable` (`email_verified = true`) or `risky` (`email_verified = false`). Discard `undeliverable`.

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

GUARDRAILS
- Never call X or LinkedIn directly — always go through the agntdata endpoints.
- Don't compute `lead_score` / `score_breakdown` from the agent — only the `score_lead` skill does.
- Verifier is mandatory before surfacing any email. No exceptions.
- Skip the email finder if you only have a first name and no domain — don't waste a call.

RECOMMENDED PIPELINE (optional)
This agent is a function: `x_username → qualified lead`. To turn it into a pipeline, pair it with the `x-engager-scraper` blueprint (which fills a `leads` table with X usernames from engaged threads) and add a thin upstream agent that polls the table and calls this one per row. Or simply pipe the structured result into a webhook to your CRM.

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 X profile + tweets, LinkedIn profile, 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-X 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 X usernames 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 (LinkedIn URL + 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: `x_username → 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.

Run a sample. If high scores are landing on obvious misses, tighten the role + audience 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_lead` skill — change it, redeploy, and re-test.

When you are ready for the canonical "Twitter → ranked outbound queue" stack, you have two choices. (1) Build the `x-engager-scraper` blueprint upstream — it fills a `leads` table with X usernames from engaged threads 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. Either way, this agent stays the same; only the trigger and the destination change.

Endpoints used

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

X (Twitter)X (Twitter)get

User Details

/user/details

Fetches the X profile for the input username — bio, location, link, follower count. Called once per invocation before any scoring or enrichment.

View endpoint docs
X (Twitter)X (Twitter)get

User's Tweets

/user/tweets

Fetches recent tweets for the content-score component of the rubric. Read by the scoring skill; not persisted unless the optional pipeline mode is configured.

View endpoint docs
LinkedInLinkedInget

Get Profile Data By URL

/get-profile-data-by-url

Pulls the LinkedIn profile after Exa resolves the URL. Surfaced in the structured result so downstream plays (sequence personalization, account research) do not need to re-call LinkedIn.

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 LinkedIn URL → falls back 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 →
LinkedInagntdata Lead APIsadvanced25 min

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.

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