agentleFS
automatewithudayautomatewithuday/gtm-prospecting-system/skills/prospecting-system/SKILL.md

prospecting-system

Skill1 starsChanged 57 days agoMITView on GitHub

Use when the ask is \"here are my best customers, find me more like them\", \"run the prospecting system\", \"turn these 5 customers into prospects\", or when resuming a run in runs/. Coordinates all 20 stage skills end to end — customer patterns, ICP, lookalikes, follower audiences, enrichment, signals, scoring, segmentation, copy, reply handling, and the weekly review — with a resumable run folder, a spend cap, and human approval gates.

The file

We split this skill into the rules it gives an agent

3 rules. About 0 are common, 0 are distinctive, and 3 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Read the stage's SKILL.md before running it.

    line 51
  2. Very specific:

    Spend cap is hard: Before any paid call, estimate its cost, add it to spent_usd, and stop if the total would pass spend_cap_usd.

    line 57
  3. Very specific:

    Resuming: read state.json, run the checker, continue from the first stage that is not done or skipped.

    line 90

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Prospecting System

Turn your 5 best customers into your next 500 prospects. This skill does no prospecting itself: it runs the 20 stage skills in order, moves files between them, tracks spend, and stops at the gates where a human decides.

Intake (ask all of it in one message)

  1. Best customers — 5 to 10 domains, plus anything known about each deal (size, champion title, how they found you). Saved as 00-customers.csv.
  2. Your website — for the ICP stage.
  3. Target — how many send-ready leads (default 500). It is a ceiling, not a quota: if 180 qualify, deliver 180 and say why.
  4. Spend cap for this run, in USD — required. No default. Covers every paid call: follower scrapes, DiscoLike, Prospeo, enrichment credits, email verification.
  5. Lanes — accounts (lookalikes + search), audiences (followers, engagers, communities, events), or both (default).
  6. Where copy goes — Smartlead, HeyReach, another sender, or CSV only. This system never sends.

Then create runs/<customer-slug>-<YYYY-MM-DD>/ with 00-customers.csv and state.json.

The stages

#SkillReadsWritesGate
1/customer-patterns00-customers.csv01-customer-patterns.md, 01-seeds.csv
2/icp-definition0102-client-profile.yamlhuman confirms the ICP
3/lookalike-research01, 0203-lookalikes.csv
4/audience-discovery01, 0204-audiences.csvhuman picks pages
5/follower-scrape0405-audience-raw/*.csvhuman pays per page
6/audience-filter05, 0206-judge-prompt.txt, 06-audience-qualified.csvhuman approves the judge
7/targeted-search01, 02, 03, 0607-lane.json, 07-accounts.csvlane must be READY
8/contact-enrichment06, 0708-leads.csvhuman approves the account list
9/buying-signals0809-signals.csv
10/lead-scoring08, 0210-scored.csvhuman approves weights once
11/lead-prioritization10, 0911-prioritized.csv
12/segmentation1112-segmented.csvhuman approves segments
13/personalization12, 0913-personalized.csvhuman approves a batch of 10
14/cold-email13, 0214-emails.csvhuman approves copy
15/linkedin-outreach1315-linkedin.csvhuman approves copy
16/follow-ups14, 1516-sequence.md, 16-followups.csv
—Human sends the campaign. The run pauses here.
17/reply-classificationsender or 17-replies-raw.csv17-replies.csv, 17-reply-score.json
18/lead-qualification17, 1018-qualified.csv
19/account-notes1819-account-notes/<domain>.md
20/pipeline-reviewwhole run20-review-<date>.mdhuman approves targeting changes

Read the stage's SKILL.md before running it. Its "Pipeline contract" block is the handoff; the rest of the file is how to do the work.

Stages 3–6 (audience lane) and 3+7 (account lane) are independent until stage 8 merges them. A lane the user declined is marked skipped.

Operating rules

  1. Spend cap is hard. Before any paid call, estimate its cost, add it to spent_usd, and stop if the total would pass spend_cap_usd. Ask the human; never work around it, never split a purchase to slip under it.
  2. Dedupe before you pay. Against the run so far, excluded_domains, and the do-not-contact list.
  3. Cheap before deep. Free counts and the ICP judge run before enrichment; enrichment before research; research only on leads that will be contacted.
  4. Unknown is not negative. A blank field stays blank and is scored as unknown. Never turn missing data into a zero or a guess.
  5. Fit, intent, and priority stay in separate columns, each with its evidence.
  6. Every signal has a source URL and a real event date, or it is not written.
  7. Never pad. Fewer qualified leads than the target is a result; report the constraint.
  8. Drafts only. Nothing in this system uploads to a sender or sends a message.
  9. Bulk per-row work goes to Haiku sub-agents (judging, classifying, personalizing), in batches, after a human has approved a sample. Strategy, ICP, and copy frameworks stay on the main model.
  10. Human decisions are proposed, not edited: the ICP yaml, the judge prompt, score weights, segments, copy frameworks.

state.json

{
  "run": "acme-2026-01-15",
  "target_leads": 500,
  "spend_cap_usd": 150,
  "spent_usd": 0,
  "stages": {
    "01-customer-patterns": {"status": "done", "rows_in": 5, "rows_out": 5, "cost_usd": 0, "finished_at": "2026-01-15", "note": ""}
  }
}

Stage keys are <NN>-<skill-name> (04-audience-discovery, 08-contact-enrichment, ...). status is pending, done, skipped, or blocked (with the reason in note). Update it when a stage finishes, then run:

uv run scripts/check_run.py runs/<run>

It validates files and columns against this contract and prints the stage funnel. Fix what it reports before starting the next stage.

Resuming: read state.json, run the checker, continue from the first stage that is not done or skipped. Never redo a paid stage whose output file exists.

Lead columns

From 06-audience-qualified.csv and 08-leads.csv onward, every lead file carries these columns; stages only ADD columns.

ColumnMeaning
lead_idstable id: linkedin_url if known, else account_domain:first_name:last_name, lowercased
account_domainnormalized company domain, no subdomain
company_name, first_name, last_name, title, linkedin_urlas provided; blank if unknown
email, email_statusemail_status is valid only after a verifier says so; provider "verified" is unverified here
source_typelookalike, search, follower, engager, member, attendee
source_detailwhich page, post, community, event, or lane produced the row
source_counthow many distinct sources surfaced this person

Account files (03, 07) need domain; signals need the columns in /buying-signals.

What "done" looks like

After stage 16: a ranked, segmented, verified lead list with first-touch email, LinkedIn note, and follow-ups per lead, plus a run summary — leads by source and tier, spend against cap, and what limited the count. After stage 20: a dated review with proposed targeting changes for the next run.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.