Install
openclaw skills install @cargo-ai/contact-sourcingBuild a reusable on-demand tool that sources stakeholders at supplied accounts, qualifies their responsibilities, and returns all or up to N ranked by contact fit, with optional verified work email and phone enrichment. Triggers: "build a contact sourcing tool", "set up stakeholder sourcing", "rank stakeholders by relevance", "install contact sourcing", "return an enriched shortlist per account". LinkedIn, Sales Navigator, OpenAI, Cargo project. Skip when: the user wants people at named accounts once today; use find-stakeholders. Existing profiles needing data use enrich-linkedin-profile; CRM field maintenance uses crm-enrichment.
openclaw skills install @cargo-ai/contact-sourcingState: to-be-approved. Offline contracts are checked; a fresh demo workspace and two customer or partner implementations are still required for approval.
For each supplied account, an on-demand Cargo tool returns the most relevant stakeholders found within an approved search limit, ranked by their fit for the seller's product or use case. It returns all qualified people or up to N per company, independently of optional verified work email and phone enrichment. Three is a starting suggestion, never a fixed ceiling. Ask for top 3, top 5, top 10, any other positive N, or all; enterprise accounts may need more.
Relevance comes from responsibilities and current profile evidence. Buying role informs that assessment; seniority alone does not move someone above a relevant practitioner. Ranking never means outreach order, triangulation, or an allocation of seats on a buying committee.
The installer builds only the chosen input and output paths. Seller research happens during setup. Each run uses the saved, approved criteria; the tool is a predictable workflow containing one structured qualification call per usable profile, with no autonomous research agent.
Build a tool that finds up to three people responsible for capital-project schedules at each account, starting with bridgeworks.example. I only need their profiles and fit scores.
Illustrative output, fictional records:
| Rank | Person | Current title | Fit / 10 | Supporting evidence |
|---|---|---|---|---|
| 1 | Morgan Vale | Project Controls Manager | 9 | Owns schedule-risk reviews across capital projects |
| 2 | Alex Rowan | Senior Planner | 8 | Maintains construction schedules and evaluates delay risk |
Two qualified people returned from 12 candidates; the maximum is three. Profile evidence accompanies each result. No email or phone lookup was requested.
The procedure lands in .agents/skills/contact-sourcing/, with
.claude/skills/contact-sourcing symlinked to it. If you found this file at
either path in the project, the copy happened: start at step 2.
Read the cargo-project skill before adapting resources. If absent,
install it with npx skills add getcargohq/cargo-skills --skill cargo-project, then
read its SKILL.md directly.
cargo-ai project add cookbook/contact-sourcing. Without a project,
cargo-ai project init <dir> --cookbook contact-sourcing, enter that directory,
and install its dependencies. Never use init --force in a non-empty project.## Decisions in the consumer copy. A configuration
approval already given in this session remains valid.cargo-ai project types,
cargo-ai project check and cargo-ai project plan. Show the actual graph and resource
diff. Obtain criteria/configuration approval and explicit authorization for
deployment in this consumer workspace before creating resources. Deploy
within that authorization. Tools have no disabled-play switch: this tool
has no trigger, schedule or implicit run. Provide its direct Cargo link.At every meaningful decision: explain the change, recommend from the inspected situation, give the reason and alternative's tradeoff, ask for the operator's choice, then build it and show what happened. Keep this short and local to the choice. Derive available facts first; never ask twice for an answered decision.
Derive before asking. The staged approval checkpoints are separate from missing configuration facts; bundle related choices without turning setup into a survey.
| Input | Kind | How it is answered | Why it matters |
|---|---|---|---|
existing_context_and_connections | derived | Read seller context, personas, connectors and tool releases; inspect CRM connectivity without reading private deal contacts yet | Prevents repeated research and duplicate resources; a CRM is optional |
provider_contract_and_costs | derived | Read current action schemas, output paths, autocomplete values and cost metadata | Prevents guessed filters and hidden page or verification charges |
seller_and_personas | asked if missing, then confirmed | Establish product/use case; offer optional customer intelligence; approve persona table, Boolean and prompt together | The tool ranks fit for this seller rather than generic seniority |
company_input | asked if missing | Choose ID, URL, domain, or necessary multiple-input support | An upstream ID skips paid resolution; extra identifiers must agree |
output_and_scope | asked if missing | Choose top 3, top 5, top 10, another N or all; use useful existing won-deal evidence to refine N; choose enrichment, LLM provider/key-or-credits, search limit and restrictions | Count and enrichment are separate; provider choice preserves the schema |
sample_and_calibration | asked | Approve exact sample/max cost; assess relevance and missing people | Static checks cannot prove provider coverage or qualification quality |
Offer these when relevant, with the recommendation at the actual decision point.
| Variation | When it is right | How | What it costs |
|---|---|---|---|
input | Upstream already supplies ID, or the operator has URL/domain | Set inputMode; keep only necessary routes | URL/domain adds resolution; ID bypasses it |
output | The operator wants all relevant people or a bounded list | topN: null returns all qualified; a positive N slices after sorting, with or without enrichment | N caps output and any selected lookup spend; profile/AI spend still follows the search limit |
enrichment | The operator needs contact details with the ranked result | Set email/phone independently of the all-or-N choice | Adds only requested lookup/verification for selected people; a play can own this instead |
search_and_criteria | Title ambiguity, geography or business-unit differences affect fit | Update approved personas, title filters, optional threshold and restrictions together | Wider search raises profile/AI spend; narrower search can miss people |
model | The operator has an OpenAI/Anthropic key or wants another supported model | Choose qualificationBackend, qualificationProvider and qualificationModel; keep the shared schema and score anchors | Changes per-profile cost and judgment; agent mode adds only a bounded qualifier and its folder |
customer_intelligence | Deal evidence can refine website positioning | Read CRM/export contacts only after the operator chooses it | Extra analysis and private-data handling; website-only setup is faster |
reachable_N | Operator explicitly needs N reachable contacts | Add a separate maximum attempt/cost budget and report original ranks | May enrich lower-ranked people and cost more; never the default |
play | Calibrated results should feed an existing process | Confirm population, trigger, ownership and destination before wiring | Repeated executions rebill each eligible account; destination actions need their own authorization |
infra/index.ts gates every search on a valid,
verified company ID. Missing or conflicting identity returns
company_not_resolved; losing the gate permits an unscoped people search.Read current salesNavigator, linkedin, the chosen LLM provider/agent and selected enrichment tool
and verification metadata immediately before a preview. Record lookup time,
CLI version, action slugs, units, cache assumptions and model settings.
Separate company resolution, people sourcing, profile retrieval, AI qualification,
email lookup/verification and phone lookup. Sales Navigator pages contain 25
records: the compiled provider limit is ceil(searchLimit / 25) * 25, while
profile/qualification work is capped at searchLimit. Recommend a page multiple
when it suits the account and explain any paid excess. Reaching the cap means
limited coverage, even if every retrieved person is qualified.
Use the formula and approval procedure in run.md. Do not invent fixed prices, free-cache guarantees or a universal relevance threshold.
tam-building supplies accounts and can pass already-resolved company IDs.crm-enrichment supplies reusable company identity/profile components when present.contacts and own enrichment itself, or consume an enriched
shortlist directly; it owns any approved destination write.find-stakeholders remains the one-off choice for people at named accounts today.