Agent skill
fivos-contact-sourcing
Use this skill after fivos-account-enrichment has produced an enriched account CSV and contacts need to be pulled at each account.
Filed under Prospecting and list building.
From fivosaresti/workflows-outbound-skills · 10 skills · 1 · pushed 2026-04-21
What it does when it runs
Use this skill after fivos-account-enrichment has produced an enriched account CSV and contacts need to be pulled at each account. It finds decision-makers, champions, and users at the sourced accounts using AI Ark and Clay only (per the TAM 2026 plan). Trigger when the user says 'find the contacts', 'pull people at these accounts', or 'stack contacts on the list'.
Read from the skill and the 0 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- ai_ark
- claude_ai_Clay
- Hosts it reaches
- No third-party host appears in the skill or its bundled files.
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It only issues instructions, so there is nothing to bound. - Actions present in the files
- None. Instructions only.
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/fivosaresti/workflows-outbound-skills.git /tmp/workflows-outbound-skills git -C /tmp/workflows-outbound-skills sparse-checkout set "contact-sourcing" mkdir -p ~/.claude/skills/fivos-contact-sourcing cp -R "/tmp/workflows-outbound-skills/contact-sourcing/." ~/.claude/skills/fivos-contact-sourcing/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
Before you install: this skill will not complete its job on a bare agent. It needs ai_ark, claude_ai_Clay, which you have to obtain separately.
The skill
Source on GitHub ↗Reproduced in full from fivosaresti/workflows-outbound-skills/blob/9076ebf601c5fd71b9898101205cdb4efa6e01e9/contact-sourcing/SKILL.md, which is licensed MIT (repository). 819 words, 14 headings.
Fivos Contact Sourcing
Contact-level sourcing at already-sourced accounts. Runs after account-level work is done.
Hard rules
- AI Ark and Clay are the only contact sources. Per the TAM Mapping and Contact Sourcing Plan - 2026. No Apollo, no PDL, no Hunter, no Crustdata for contact discovery (they are still used for enrichment in the next step).
- Persona spec is required before any provider is called. No "go find some execs" runs - the engineer provides target titles, seniority, departments.
- Contacts-per-account caps are enforced. The strategist decided this number per play shape. Do not exceed it.
Inputs
- Enriched account CSV from
fivos-account-enrichment(required). - Persona spec (required):
target_titles- specific titles (e.g."VP of Revenue Operations","Head of Data").seniority-{c-suite, vp, director, manager, ic}filter.departments-{sales, marketing, rev-ops, data, engineering, ...}.exclude_titles- optional exclusion list (e.g."intern","recruiter").
- Contacts per account (required, from
fivos-campaign-strategist- usually 1 for static plays, 2-3 for ABM). - Client tag + campaign tag (required for DB tagging).
Outputs
- Contact CSV with columns:
contact_id, company_domain, first_name, last_name, full_name, title, seniority, department, linkedin_url, country, region, city, source, sourced_at, client, campaign. - Account foreign-key column linking back to the account CSV.
- Coverage report - contacts found vs target, per account.
- Spend ledger.
Workflow
Step 1 - Translate persona to filters
Render the persona spec into AI Ark + Clay filter shapes.
AI Ark people filter:
{
"account": { "domains": ["<domain1>", "<domain2>", ...] },
"contact": {
"titles_any": ["VP of Revenue Operations", "Head of RevOps", "Director of RevOps"],
"seniority_any": ["vp", "director"],
"departments_any": ["sales", "rev-ops"],
"exclude_titles_any": ["intern", "recruiter"]
},
"page": 0,
"size": 100
}
Clay: drive contact-finding via a Clay table that ingests the enriched account CSV and calls AI Ark Contact Search + Clay's native People Finder in parallel. See handoff below.
Step 2 - Estimate + Gate 1
For each provider, run the count endpoint first:
- AI Ark:
mcp__ai_ark__people_count(free). - Clay: estimate from
mcp__claude_ai_Clay__get-credits-availableplus historical hit rates (no free count endpoint).
Output:
Contact sourcing estimate - <client> / <campaign>
Accounts in scope: N
Target contacts per account: K
Expected unique contacts: ~N*K (after dedup)
Providers + cost:
- AI Ark People Search: $X (0.5 credits/result)
- Clay People Finder: $X (per-credit)
Total: $X
Proceed? Manager approval required.
Step 3 - Run AI Ark first
AI Ark is the lower-cost primary path. Call the MCP directly:
mcp__ai_ark__people_search({
account: { domains: ["<domain1>", "<domain2>", ...] },
contact: {
titles_any: ["VP of Revenue Operations", "Head of RevOps", "Director of RevOps"],
seniority_any: ["vp", "director"],
departments_any: ["sales", "rev-ops"],
exclude_titles_any: ["intern", "recruiter"]
},
page: 0,
size: 100
})
Paginate until you hit contacts_per_account for each domain, or exhaust AI Ark's returns.
MCP status: mcp__ai_ark__* is being connected. Until then, fall back to AI Ark REST (POST /people/search with X-TOKEN header).
Step 4 - Top up with Clay
For accounts where AI Ark fell short of contacts_per_account, hand the remaining domains to Clay:
mcp__claude_ai_Clay__find-and-enrich-contacts-at-company({
companies: [ { domain: "<domain>", target_contacts: <K - already_found> }, ... ],
persona: {
titles: [...],
seniority: [...],
departments: [...]
},
table_name: "<client>_<campaign>_contacts"
})
Clay's strength is persona matching on fuzzy titles and department inference - use it for the residual where AI Ark's exact-title filters missed.
Step 5 - Dedup
Dedup on linkedin_url first, then email (when present), then full_name + domain as a fallback.
When a contact appears from both sources, prefer AI Ark for title and seniority (its taxonomy is tighter) and prefer Clay for department (its department inference is stronger).
Step 6 - Coverage report
Coverage report - <client> / <campaign>
Accounts: N
Contacts found: M
Mean contacts/account: M/N
Accounts at target (>= K contacts): P
Accounts short (< K contacts): N - P
Under-covered accounts:
- <domain>: 0 contacts (reason: no titles matched the persona)
- ...
If >15% of accounts are under-covered, flag for engineer review before handoff - usually the persona spec is too narrow.
Step 7 - Upload to internal DB + handoff
Upload the contact CSV to the Workflows DB, tagged with client + campaign + "contacts sourced <date>".
Hand off to fivos-contact-enrichment to waterfall email + phone.
Why only AI Ark + Clay
Decision from the TAM 2026 plan:
- Consolidating spend to two providers keeps vendor sprawl down.
- AI Ark covers 80% of cases cheaply with structured filters.
- Clay covers the residual with fuzzy-matching and the native Clay workflow engineers already use.
Other contact-discovery providers (Apollo, PDL, Hunter) are not used here. Their enrichment capabilities are still used in fivos-contact-enrichment - they just aren't used to find contacts at this step.
References
~/.agents/skills/gtm-meta-skill/provider-playbooks/ai_ark.md- People Search endpoint schema.~/.agents/skills/gtm-meta-skill/finding-companies-and-contacts.md- discovery-order rules.- TAM Mapping and Contact Sourcing Plan - 2026 (Google Doc).
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- trade-show-contact-finder by LensmorOfficial · 48
- contact-qualification-framework by medscout-gtm · 6
- lead-sourcing-apollo by devangk003 · 0
- lead-sourcing-clay by devangk003 · 0
- lead-sourcing-linkedin by devangk003 · 0
- lead-sourcing-web by devangk003 · 0
- account-sourcing by esmefong · 0
Need help setting it up?
This page tells you what fivos-contact-sourcing does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.