---
title: "skill by agenticluke · skilld"
canonical_url: "https://skilld.dev/gh/agenticluke/lead-intelligence-plus"
meta:
  description: "Find, rank, and contact strong leads. Use agent-based signal scores, shared contact ranks, warm intro paths, source-based voice matching, and… From agenticluke/lead-intelligence-plus."
  "og:description": "Find, rank, and contact strong leads. Use agent-based signal scores, shared contact ranks, warm intro paths, source-based voice matching, and… From agenticluke/lead-intelligence-plus."
  "og:title": "skill by agenticluke"
  "twitter:description": "Find, rank, and contact strong leads. Use agent-based signal scores, shared contact ranks, warm intro paths, source-based voice matching, and… From agenticluke/lead-intelligence-plus."
  "twitter:title": "skill by agenticluke"
---

`

[All skills](https://skilld.dev/skills)

[![agenticluke avatar](https://skilld.dev/_img/avatar?url=https%3A%2F%2Fgithub.com%2Fagenticluke.png%3Fsize%3D96)](https://skilld.dev/gh/agenticluke)

# **/skill**

[@0b08834](https://github.com/agenticluke/lead-intelligence-plus/commit/0b08834a8fb86b30a656b95c94e55ee310c3d98e "Your agent reads SKILL.md at commit 0b08834")

by [agenticluke](https://skilld.dev/gh/agenticluke)· [agenticluke](https://skilld.dev/gh/agenticluke)/ [lead-intelligence-plus](https://skilld.dev/gh/agenticluke/lead-intelligence-plus)

Find, rank, and contact strong leads. Use agent-based signal scores, shared contact ranks, warm intro paths, source-based voice matching, and channel-specific drafts for email, LinkedIn, and X. Use when the user wants to find, screen, or contact high-value people.

- 1 file
- 13.4 KB
- Updated last week
- [GitHub](https://github.com/agenticluke/lead-intelligence-plus/blob/main/skill/SKILL.md "View SKILL.md on GitHub")

## SKILL.md

13.4 KB

**≈68** tokens always: the name and description. **≈3.4k** when used: this file.

## Lead Intelligence

Find, rank, and reach strong leads. Use public facts, social links, and recent activity to choose the best people and contact paths.

### When to Use

Use this skill when the user wants to:

- Find leads in a field
- Build a list for sales, funding, or a deal
- Learn who to contact
- Find a warm intro
- Score or rank a contact list
- Map shared contacts
- Draft messages for email, LinkedIn, or X

Do not use it for spam or mass sends.

### Safety Rules

- Use only data the user may access.
- Treat private data with care.
- Do not guess facts, email addresses, or social links.
- Mark facts that could not be checked.
- Add a source and date for each key fact.
- Do not claim two people know each other unless a source shows it.
- Do not send or post without clear user approval.
- Follow each site's rules and rate limits.
- Stop if a login check, CAPTCHA, or access block appears.
- Do not use traits like race, faith, health, age, sex, or politics to score a lead.
- Remove repeat people before scoring.
- If two people have the same name, keep them apart until their identity is clear.

### Needed Tools

#### Required

- **Exa MCP**: Search for people, firms, news, and other signals with `web_search_exa`.
- **X API**: Check public profiles, recent posts, follows, and shared contacts when allowed. Read access may use `X_BEARER_TOKEN`. Write access may also need `X_CONSUMER_KEY`, `X_CONSUMER_SECRET`, `X_ACCESS_TOKEN`, and `X_ACCESS_TOKEN_SECRET`.

If a required tool is missing, say what is missing. Continue with user-given data or other allowed sources. Lower the score confidence when proof is weak.

#### Optional

- **LinkedIn**: Use an approved API if it exists. Browser use must follow site rules.
- **Apollo or Clay**: Check facts only if the user has access.
- **GitHub MCP**: Check public work for developer leads.
- **Apple Mail or Mail.app**: Make email drafts. Never send by default.
- **Browser control**: Use only when an API cannot do the needed read task.

### Work Flow

```
1. Set the target
2. Find people
3. Check identity and facts
4. Score signals
5. Rank shared contacts
6. Find warm paths
7. Add useful facts
8. Pick one main channel
9. Draft the message
10. Ask before any send or post
```

### Step 1: Set the Target

Before searching, get these facts:

- Goal
- Field
- Roles
- Places, if they matter
- Firm size or stage, if it matters
- Number of leads
- Must-have rules
- Exclude rules
- Time range for recent signals

If key facts are missing, ask short questions. If the user says to use your best guess, list those guesses before the results.

### Step 2: Find and Check People

Search each field and role. Keep the source URL, source date, and date found.

For each person:

1. Match the name, role, firm, and public profile.
2. Remove repeat records.
3. Check that the role is still current.
4. Keep separate records when identity is not clear.
5. Do not turn a search result into a fact without checking its source.

Example search plan:

```
target_fields = ["prediction markets", "AI tools", "developer tools"]
target_roles = ["founder", "CEO", "CTO", "VP Engineering", "investor"]
target_places = ["San Francisco", "New York", "London", "remote"]

for field in target_fields:
    for role in target_roles:
        results = web_search_exa(
            query=f"{field} {role}",
            numResults=20
        )
        # Check identity, save sources, remove repeats, then score.
```

Use only calls supported by the tool that is present. Do not make up API names or fields.

### Step 3: Score Signals

Use this base score:

| Signal | Weight | Common source |
| --- | ---: | --- |
| Role match | 30% | Exa, LinkedIn |
| Field match | 25% | Firm site, Exa |
| Recent topic activity | 20% | X, news, blog posts |
| Reach or public impact | 10% | X, talks, public work |
| Place match | 10% | Firm site, LinkedIn |
| Past contact with the user | 5% | X or user records |

Score each signal from 0 to 100:

```
lead_score =
  role_match × 0.30 +
  field_match × 0.25 +
  recent_activity × 0.20 +
  reach × 0.10 +
  place_match × 0.10 +
  past_contact × 0.05
```

Rules:

- Use the same rules for every lead.
- Do not give points for missing data.
- If place does not matter, move its 10% weight across the other useful signals. State the new weights.
- If past contact cannot be checked, move its 5% weight in the same way.
- Keep the raw score and the reason for each part.
- Add confidence: high, medium, or low.
- A high score with low confidence is not a sure lead.
- Recent activity should fit the user's chosen time range. Use 30 days by default.
- Do not use follower count alone as proof of value.

### Step 4: Rank Shared Contacts

For each strong lead, look for people who may give a real intro.

Rank each shared contact by:

| Factor | Weight |
| --- | ---: |
| Number and strength of target links | 40% |
| Current role and firm | 20% |
| Place match | 15% |
| Field match | 15% |
| Clear public identity | 10% |

A follow does not prove a close bond. Label each link:

- **Strong**: direct work, investment, or recent public contact
- **Medium**: clear shared group, school, firm, or event
- **Weak**: follow, like, or old public link
- **Unknown**: not enough proof

Use `social-graph-ranker` when the user asks for a stand-alone graph report, graph math, or score tuning.

When used inside this skill, apply:

```
B(m) = sum of [target weight × path decay]
R(m) = outside bridge score × [1 + engagement boost]
```

Where:

- `m` is the shared contact.
- A short path gets more points.
- A long path gets fewer points.
- Recent, real contact may add a small boost.
- State the chosen decay and boost values.
- Do not treat this math as proof of a close bond.

Use these tiers:

- **Tier 1**: Strong direct path. Ask for a warm intro.
- **Tier 2**: Some proof, but not enough. Ask only with care.
- **Tier 3**: No sound path. Use direct outreach.

Report format:

```
Shared Contact Rank

1. Jane Smith (@jane)
   Score: 92
   Role: Partner at Acme Ventures
   Place: San Francisco
   Linked leads: 7
   Best path: Jane invested in Target One's firm
   Link strength: Strong
   Proof: [source URL]
   Checked: 2026-09-24
```

### Step 5: Find Warm Paths

Look for the shortest sound path.

```
User -> shared contact -> target
User -> shared contact -> target firm
User -> shared event -> target
```

Rank path types in this order:

1. Direct shared contact
2. Investor or adviser link
3. Past coworker or school link
4. Shared event or project
5. Public content contact

Do not call a path warm when it rests only on a follow or old like. If no sound path exists, say so.

### Step 6: Add Useful Facts

For each lead, collect only facts that help the outreach:

- Full name
- Current role and firm
- Firm size and funding stage, if known
- Recent firm news
- Public posts from the last 30 days
- Shared work or interests
- Product launches, funding, or hiring news
- Public developer work, when it fits

Possible sources:

- Exa for firm pages, news, and blogs
- X for public posts and profile facts
- GitHub for public code work
- LinkedIn for work and school facts, when access is allowed

Rules:

- Use the newest sound source.
- Keep the exact source for each claim.
- Note conflicts instead of hiding them.
- Do not copy long text from a source.
- Do not use stale news as a fresh opening line.
- Do not add private home, family, or health facts.

### Step 7: Match the User's Voice

Do not start with a stock sales pitch.

If voice matters, run `brand-voice` first. Reuse its `VOICE PROFILE`. Do not make a new voice profile inside this skill.

If live X access is allowed, read a small set of recent original posts. Skip reposts when possible. If X is not available, use text the user gave you, or use sound samples from their site or work files.

If no voice sample exists, use plain, calm words. Say that no voice sample was found.

### Step 8: Pick the Main Channel

Use this order unless the facts point to a better choice:

1. Warm intro by email
2. Direct email
3. LinkedIn message
4. X direct message or public reply

Use one main channel first. Use more than one only when the user asks, or when there is a clear reason and enough time between messages.

#### Email

Use for high-value cold notes, warm intros, deals, and investor contact.

- Keep the subject short and clear.
- Make a draft first.
- Use Apple Mail or Mail.app only when it is available and allowed.
- Do not send without clear approval.
- Do not guess an email address.

#### LinkedIn

Use when the lead is active there, the shared link is there, or no checked email exists.

- Keep it shorter than email.
- Name one real reason for the note.
- Do not use fake praise.

#### X

Use when the lead posts often and a recent post gives real context.

- Keep it very short.
- Refer to a real post.
- Do not fake a reply just to get seen.
- Do not post or send without approval.

### Step 9: Draft Outreach

For each lead, return:

1. Main channel
2. Why that channel fits
3. One checked fact used in the opening
4. Message draft
5. One optional follow-up
6. Source links
7. Confidence level

#### Warm Intro Request

Include:

- One clear ask
- One short reason the intro makes sense
- A short note that is easy to forward

Avoid:

- A long firm story
- Many proof claims
- A funding-style form letter
- More than one ask

#### Direct Outreach

Include:

- A true, recent opening
- A clear reason for the fit
- A small next step

Avoid:

- Empty praise
- A list of product parts
- Vague lines like "Would love to connect"
- Pushy questions
- Fake closeness
- Raw merge fields
- The same text for every channel

A follow-up should add one useful fact. It should not just say "checking in."

### Result Format

Return a table first:

| Rank | Person | Role | Score | Confidence | Best path | Main channel |
| ---: | --- | --- | ---: | --- | --- | --- |

Then give a short record for each top lead:

```
Name:
Role and firm:
Why this person:
Score and confidence:
Best path:
Path strength:
Main channel:
Source facts:
Draft:
Follow-up:
Sources:
```

If the list is large, show the top group first and offer the rest as a simple CSV or table.

### Tool Failure and Edge Cases

- If Exa fails, use other allowed public sources and mark lower confidence.
- If X fails, skip X-only signals. Rebalance the score and state the new weights.
- If LinkedIn blocks access, stop using it. Do not try to bypass the block.
- If sources disagree, show the conflict.
- If a role is old, do not score it as current.
- If no warm path is sound, use cold outreach.
- If no email is checked, do not make one up.
- If there are too few good leads, return fewer leads and explain why.
- If a lead asks not to be contacted, remove them.
- If the user asks for a send, show the final message, target, and channel before asking for approval.

### Setup

```
# Needed for X and Exa
export X_BEARER_TOKEN="..."
export EXA_API_KEY="..."

# Needed only for X write actions
export X_ACCESS_TOKEN="..."
export X_ACCESS_TOKEN_SECRET="..."
export X_CONSUMER_KEY="..."
export X_CONSUMER_SECRET="..."

# Optional
export LINKEDIN_COOKIE="..."
export APOLLO_API_KEY="..."
```

Never print secret values. Never place them in a report or draft.

### Agents

The `agents/` folder may include:

- **signal-scorer**: Finds and ranks leads.
- **mutual-mapper**: Maps shared contacts and warm paths.
- **enrichment-agent**: Checks person and firm facts.
- **outreach-drafter**: Writes a message for each channel.

If an agent is missing, do the step in the main flow. Do not skip the checks.

### Concrete Example

User request:

```
Find 20 people in prediction markets who may want our developer tool.
Focus on founders and heads of engineering in the US.
Find warm intro paths and draft email notes.
Do not send anything.
```

Work:

1. Set the target to US founders and engineering leads.
2. Search Exa for people and firms.
3. Check current roles and remove repeat names.
4. Score role fit, field fit, recent work, reach, place, and past contact.
5. Check the user's allowed X graph for shared contacts.
6. Mark each path as strong, medium, weak, or unknown.
7. Check recent firm news and public posts.
8. Rank the 20 best checked leads.
9. Draft one email for each lead.
10. Return drafts only. Do not send.

Sample result:

```
1. Maya Chen
Role and firm: CTO at Example Market
Score and confidence: 88, high
Best path: Alex Lee worked with Maya at Sample Labs
Path strength: Strong
Main channel: Warm intro by email
Why: Alex has a checked work link to Maya
Opening fact: Example Market launched a public API this month
Draft:
Hi Alex,

Would you be open to an intro to Maya Chen at Example Market? Their new API work looks close to the tool we are building for faster test runs. I think a short talk could help both teams see if there is a fit.

Here is a note you can forward:

Hi Maya, Luke is building a tool that helps teams test market APIs with less setup. He saw Example Market's new API launch and thought the work may fit your team. Would you be open to a 15-minute chat?

Thanks,
Luke

Sources:
- [Current role URL]
- [API launch URL]
- [Shared work link URL]
```

### Related Skills

- `brand-voice`: Build and reuse a clear voice profile.
- `connections-optimizer`: Review and improve the user's network before outreach.
- `social-graph-ranker`: Make a stand-alone graph report or tune graph scores.

Source: [SKILL.md on GitHub](https://github.com/agenticluke/lead-intelligence-plus/blob/main/skill/SKILL.md)

## Third-party checks

No third-party reports yet.

## Provenance

[Signed by skilld at 0b08834.](https://github.com/agenticluke/lead-intelligence-plus/commit/0b08834a8fb86b30a656b95c94e55ee310c3d98e "0b08834a8fb86b30a656b95c94e55ee310c3d98e") This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub last week.

Activeupdated last week

## Capability

<dl>

<dt>origin</dt>
<dd>ECC</dd>

</dl>

## README badge

![README badge for agenticluke/lead-intelligence-plus](https://skilld.dev/b/agenticluke/lead-intelligence-plus?theme=light&label=0)

## Related skills

-
-
-
-
-
-