17 AI skills for finding customers and making content
lead-scoring
work the best twenty leads first, every week
How the two work together
Claude thinks it through. Paste the Claude prompt into Claude Code, or drop the folder into your skills folder. Claude does the judgement: what to look for, what is worth doing, what is right.
Codex gets it done. At the hand-off point Claude runs Codex on your machine with one command and passes it the Codex prompt. Codex does the mechanical part and hands the result back. Claude checks it before you see it.
No API key to set up: Claude calls the Codex you already have installed. If Codex is not installed, Claude does that half itself and tells you.
Prompt for Claude
---
name: lead-scoring
description: Rank leads by fit, intent and timing, every point sourced, hottest called first; use when leads outnumber time or someone asks who to call first.
---
# Know which leads to call first, and why
A sourced, tiered list, proven on your lost deals, Hot leads called within the hour.
## Claude does
1. Collect {LEADS}, {SIGNALS} (dated), {CHANNEL}, {TODAY}, and {ICP} or {DEALS_CSV} (last 20-50 closed-won plus last quarter's closed-lost). Ask once. No ICP and no deals, no scoring; never guess the customer.
2. No {ICP}? Derive one from {DEALS_CSV}: drop referral, M&A and odd-contract wins, keep attributes of wins not losses, sort into must-have, nice-to-have, disqualifier; one ICP per motion; under 20 wins the user writes it.
3. Write {SCORING_KEY} for CODEX.md's eleven-line rubric: full, partial, zero per line; the disqualifier list; which trigger events and urgency words count; no twelfth input until the back-test passes.
4. Rule now on ambiguous cases (unfamiliar sector, borderline title) and name strategic flags (former champion, sector influencer): one routing tier up, number unchanged.
5. Confirm {ROUTING}: Hot 75-100 called within 1 hour, Warm 50-74 within 4, Cold 25-49 within 24, Disqualified under 25 archived, and who owns Hot; no owner, no run.
## Then Codex does
Scores closed-lost deals, then every live lead, line by line against the key with source, quote and confidence per point. Bulk arithmetic, no judgement.
```
codex exec --sandbox danger-full-access --skip-git-repo-check -C "<working folder>" - < CODEX.md
```
Fill first: {ICP}, {SCORING_KEY}, {LEADS}, {SIGNALS}, {DEALS_CSV}, {CHANNEL}, {TODAY}, {ROUTING}.
## Claude checks
1. Back-test: most closed-lost land below Hot, else tighten the key and rerun before live leads count.
2. Recompute the top ten sums, one wrong total fails; rows in equal rows out.
3. Disqualified rows stay Disqualified, naming why, whatever their intent; mostly Disqualified means a weak source.
4. Five random non-zero points show source, quote and confidence; one missing fails.
5. No points from opens, clicks or downloads alone; gaps scored 0, marked Inferred, never filled.
Failed check: correct CODEX.md, rerun Codex, never hand-patch.
## Rules
- Show the top ten's arithmetic so a human can disagree with it.
- High intent never rescues a disqualified account. State the disqualified count; it grades the list source.
- Keep fit and intent visible; one number hides a perfect fit with no buying motion. Never score engagement alone; curious subscribers are not buyers.
- Every point needs a source; missing data lowers confidence, never inflates. Size is not budget, a title is not a decision-maker, urgency needs a trigger.
- The ICP excludes outlier wins, contains disqualifiers, is who to hunt today not the whole market, and lies once a year old. Few inputs; no twenty-factor formula.
- Every tier has an action, response time and owner. Leads are not opportunities; never forecast from a tier.
- Re-score on triggers and a schedule; re-derive the ICP quarterly.
## If Codex is not installed
Claude does that half, says so, still checks.
## Built from
- sales-qualify (ai-sales-team-claude): https://github.com/zubair-trabzada/ai-sales-team-claude/blob/main/skills/sales-qualify/SKILL.md (1,093 stars)
- lead-researcher (borghei/Claude-Skills): https://github.com/borghei/Claude-Skills/blob/main/personal-productivity/lead-researcher/SKILL.md (702 stars)
- qualify-lead (lead-qualification-plugin): https://github.com/BayramAnnakov/lead-qualification-plugin/blob/main/skills/qualify-lead/SKILL.md (21 stars, MIT)
- Clay lead-scoring playbook: https://www.clay.com/guides/how-to-set-up-lead-scoring-in-hubspot (first-party, 30 May 2026)
- MadKudu Customer Fit docs: https://help.madkudu.com/docs/customer-fit-scoring (vendor documentation)
- Common Room on behavioural scoring: https://www.commonroom.io/blog/behavioral-lead-scoring/ (19 Jun 2026)
Prompt for Codex
# Know which leads to call first - Codex task
## You are given
- {ICP}: must-have, nice-to-have, disqualifier attributes.
- {SCORING_KEY}: Claude's ruling per rubric line, disqualifier list, counted trigger events and urgency words, edge cases, strategic flags.
- {LEADS}: live leads, CSV or rows. {SIGNALS}: dated per-lead signals if separate.
- {DEALS_CSV}: closed deals with an outcome column.
- {CHANNEL}: outreach channel. {TODAY}: reference date. {ROUTING}: action, response time, owner per tier.
## Produce
Score every closed-lost {DEALS_CSV} row, then every {LEADS} row, applying the key exactly. A line no ruling covers scores 0 and flags the row Unclear; never invent a ruling.
Rubric (key overrides):
- Fit 0-40: size 0-10 (50-200 staff 10, 201-500 7, 20-49 5, 501-1000 3, else 0); industry 0-10; geography 0-10; tech stack 0-5; decision-maker 0-5.
- Intent 0-40: request type 0-15 (Demo 15, Pricing 12, Contact 10, Content 3); engagement signals 0-10; message specificity 0-10; content buying signals on {CHANNEL} 0-5.
- Timing 0-20: urgency 0-10 (timeline words); trigger events 0-10 (funding, leadership change, hiring surge, news, dated).
Every non-zero point cites a source (column or URL), a quote of at most 125 characters and a confidence label (High, Medium, Low, Inferred); no source, no points.
Check disqualifiers (personal email with no company, competitor employee, .edu, wrong geography, below minimum size, explicit non-commercial intent, plus the key's list) before the tier is final; any hit: Tier Disqualified, Fit 0, Reason naming it.
Total = Fit + Intent + Timing. Hot 75-100, Warm 50-74, Cold 25-49, Disqualified under 25. Routing = the {ROUTING} row; a strategic flag lifts it one tier, Total unchanged.
Files:
1. `backtest.md`: closed-lost rows with Total and Tier, then "N of M land below Hot".
2. `lead-scores.csv`: input columns plus size, industry, geography, tech_stack, decision_maker, request_type, engagement, specificity, content_signals, urgency, trigger_events, Fit, Intent, Timing, Total, Tier, Routing, Flag, Evidence (source, quote, confidence per line), Reason; Total descending, Disqualified rows kept.
3. `lead-scores.md`: Markdown table (Company, Contact, Fit, Intent, Timing, Total, Tier, Routing, Reason); "Arithmetic, top ten" with each sub-score, evidence and sum; "Disqualified: N of M" naming each; "Unclear" with what was missing.
## Rules
- Fit, Intent and Timing stay separate columns, combined only in Total.
- Age every signal from {TODAY}; undated signals score 0.
- Missing data scores 0, labelled Inferred; never guess.
- Opens, clicks and downloads earn nothing beyond Content 3. Size is not budget, a title alone is not a decision-maker, urgency needs timeline words or a trigger.
- Do not drop, merge or add rows.
## Return
Print: rows in and out per list; back-test line; counts per tier, Disqualified, Unclear; top ten with sub-scores and Total; the three file paths.
Built from the best public work on this
Lead scoring - sources
Star counts read from api.github.com on 5 Sep 2026. Every source below was opened and its claimed content found verbatim.
Built from
- zubair-trabzada/ai-sales-team-claude, sales-qualify skill (BANT + MEDDIC): https://github.com/zubair-trabzada/ai-sales-team-claude/blob/main/skills/sales-qualify/SKILL.md (1,093 stars, 330 forks, pushed 27 Mar 2026). Used for: a source quote of at most 125 characters and a High / Medium / Low / Inferred confidence label on every point; missing data lowers confidence rather than inflating the score; the anti-patterns (size is not budget, a title is not a decision-maker, urgency needs a trigger, no dimension without a source); an action per grade.
- borghei/Claude-Skills, lead-researcher skill plus references/icp_framework.md and scripts/lead_qualifier.py: https://github.com/borghei/Claude-Skills/blob/main/personal-productivity/lead-researcher/SKILL.md (702 stars, 127 forks, pushed 12 Aug 2026). Used for: derive the ICP from the last 20-50 closed-won deals excluding referral and M&A outliers; must-have / nice-to-have / disqualifier; pressure-test by scoring last quarter's closed-lost, most must land below the top tier; disqualify hard; leads are not opportunities; refresh quarterly, an ICP older than a year is lying; one ICP per go-to-market motion; ICP is not TAM.
- BayramAnnakov/lead-qualification-plugin, qualify-lead and design-scoring skills: https://github.com/BayramAnnakov/lead-qualification-plugin/blob/main/skills/qualify-lead/SKILL.md (21 stars, MIT per README, ships sample-deals.csv and test-leads.csv with an expected-outcome table). Used for: the Fit 0-40 / Intent 0-40 / Timing 0-20 rubric; Demo 15 / Pricing 12 / Contact 10 / Content 3; Hot 75-100 / Warm 50-74 / Cold 25-49 / Disqualified under 25; hard disqualifiers checked before the score is final; response targets of 1 hour / 4 hours / 24 hours per tier; strategic flags that lift routing without touching the number.
- Clay, How to set up lead scoring in HubSpot: https://www.clay.com/guides/how-to-set-up-lead-scoring-in-hubspot (first-party playbook, 30 May 2026). Used for: score on fit and intent, not clicks; start with five or six inputs and add more once the model earns trust; keep fit and intent visible so the tier explains itself; re-score on triggers and schedules, not once at capture.
- MadKudu docs, Customer Fit scoring and Lead Grade: https://help.madkudu.com/docs/customer-fit-scoring and https://help.madkudu.com/docs/lead-grade-scoring (vendor documentation; claim "Leads with a very good customer fit usually convert about 10 times more than leads with a low customer fit"). Used for: two separate axes (Customer Fit and Likelihood to Buy) combined in a matrix into a grade; route to Sales only the best combination of fit and engagement.
- Common Room, You're Scoring Leads Like It's 2015: https://www.commonroom.io/blog/behavioral-lead-scoring/ (Tasha Reasor, CMO, 19 Jun 2026) and the playbook at https://www.commonroom.io/playbooks/signal-based-lead-and-account-scoring/. Used for: a perfect fit on paper with no buying motion is not a lead; the score must be explainable on hover.
Best public prompt we found for this job
Source: https://github.com/BayramAnnakov/lead-qualification-plugin/blob/main/skills/qualify-lead/SKILL.md (Step 3 "Default Scoring Model", lines 148-194 of the raw file; MIT licence per README; 21 stars confirmed via api.github.com). Chosen for being the most complete verbatim fit-plus-intent rubric that copy-pastes and runs as-is, with a sample-leads CSV and expected-outcome table to check it against. The 1,093-star zubair-trabzada/ai-sales-team-claude sales-qualify skill is the stronger choice when evidence-and-confidence discipline matters more than a short rubric.
Quoted verbatim:
```
#### Default Scoring Model
**FIT SCORE (0-40 points)**
| Criteria | Points | How to Assess |
|----------|--------|---------------|
| Company Size | 0-10 | LinkedIn employee count, website team page |
| Industry Match | 0-10 | Company website, LinkedIn description |
| Geography | 0-10 | HQ location from LinkedIn/website |
| Tech Stack Signals | 0-5 | Job postings, integrations page, competitor mentions |
| Decision-Maker Profile | 0-5 | Contact's role, seniority, background from LinkedIn |
Size scoring:
- 50-200 employees: +10 (sweet spot)
- 201-500 employees: +7
- 20-49 employees: +5
- 501-1000 employees: +3
- <20 or >1000: +0
**INTENT SCORE (0-40 points)**
| Criteria | Points | How to Assess |
|----------|--------|---------------|
| Request Type | 0-15 | Demo=15, Pricing=12, Contact=10, Content=3 |
| Engagement Signals | 0-10 | Message content, competitor mentions, budget |
| Message Specificity | 0-10 | Pain points, timeline, budget mentions |
| Content Buying Signals | 0-5 | Recent LinkedIn posts, reactions, comments |
**TIMING SCORE (0-20 points)**
| Criteria | Points | How to Assess |
|----------|--------|---------------|
| Urgency | 0-10 | Timeline words in message |
| Trigger Events | 0-10 | News, LinkedIn posts, hiring activity |
**TIER THRESHOLDS**
- Hot: 75-100 points
- Warm: 50-74 points
- Cold: 25-49 points
- Disqualified: <25 points
**DEFAULT DISQUALIFIERS**
- Personal email (@gmail, @yahoo) with no company identified
- Competitor employee
- Student/academic (.edu)
- Explicit non-commercial intent
```
Corrections noted during verification
- MadKudu's numeric Customer Fit bands (Very Good 85-100 and so on) are not on the documentation pages; only the four labels are. The skill uses the labels only.
- Common Room's playbook offers a Slack alert on high scores as an optional automation, not a rule. The skill's "an owner per tier" rests on BayramAnnakov's response targets per tier and ai-sales-team-claude's action per grade.
- ai-sales-team-claude does have issues enabled (api.github.com has_issues: true); stars and forks remain the adoption evidence because no written reviews were found there.
Want this running in your business?
I optimise how businesses run — your sales, your visibility, your social media — and build bespoke software where nothing off the shelf fits. The first conversation is free. Work starts from £150 a day.
Foxera