Office hours: Build your self-driving GTM engine·Oct 29, 9:00am PT, onlineRegister→
Cargo
  • PrimitivesData ModelsYour companies, contacts and deals, merged from every sourceContextWhat your team knows, as files every agent readsTerritoriesWho sells where, defined onceMailboxesMailboxes in your reps' names, warmed up and kept under limitsToolsThe actions your agents, plays and reps callAgentsAI that researches, decides and writes, reading your contextPlaysWorkflows that run on a trigger or a schedule, with retriesAppsInternal apps for your reps, hosted on Cargo
    Add-onsChrome ExtensionSell faster, right in your browserButtonTrigger AI agents inside your CRMFormTurn any tool into an embeddable formSlackTag Cargo in Slack. It does the GTM workGitHubPlan on every pull request, deploy on merge
    MoreProjectsDefine your entire GTM in codeCLIUse Cargo from your terminalMCPUse Cargo from Claude and ChatGPTDeveloper resourcesCargo API docs, OpenAPI spec, auth docs, webhooks, MCP serverAPI ReferenceExplore the Cargo APIDocumentationLearn how to use CargoIntegrationsConnected to your entire GTM stack
  • VeriffHow Veriff replaced MuleSoft with Cargo under NetSuite, Stripe and SalesforceAugmentHow Augment Code routes developer sign-ups to reps in under an hourWeights & BiasesHow Weights & Biases ships a new purchase signal in 2 days on CargoSee all
  • Pricing
  • Cookbooks
  • Blog
Sign in
Cookbooks
CSFundamentals

Contact sourcing

Build 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.

Installation
Set up the contact-sourcing cookbook in this project. 1. If the Cargo CLI is not installed yet, follow every step in https://api.getcargo.io/INSTALL.md 2. From the Cargo project, run: cargo-ai project add cookbook/contact-sourcing 3. Then follow .claude/skills/contact-sourcing/SKILL.md. Stop for my approval before any paid call, and stop at "cargo-ai project plan" before deploying anything.
Paste it into Claude Code, Cursor, Codex, Gemini CLI, Devin or Replicas.
$cargo-ai project add cookbook/contact-sourcing
Run it in your Cargo project. Copies the example in, and deploys nothing.

Say this to your 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, to show the shape of what comes back.

RankPersonCurrent titleFit / 10Supporting evidence
1Morgan ValeProject Controls Manager9Owns schedule-risk reviews across capital projects
2Alex RowanSenior Planner8Maintains 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.

What you will be asked #

InputWhy
existing_context_and_connectionsLooked upPrevents repeated research and duplicate resources; a CRM is optional
provider_contract_and_costsLooked upPrevents guessed filters and hidden page or verification charges
seller_and_personasAskedThe tool ranks fit for this seller rather than generic seniority
company_inputAskedAn upstream ID skips paid resolution; extra identifiers must agree
output_and_scopeAskedCount and enrichment are separate; provider choice preserves the schema
sample_and_calibrationAskedStatic checks cannot prove provider coverage or qualification quality

Done when #

  • Approved seller criteria retain source URLs, observed evidence, inferences, exclusions, persona IDs, provider filters and prompt version in consumer context.
  • The operator’s closed-won research choice is recorded; website-only setup works.
  • The operator confirmed the exact title Boolean derived from context or seller research, the slightly broader search and its cost, and the provider/billing choice.
  • The compiled graph contains only selected input/output paths and no implicit play.
  • Live provider schemas and existing tool output mappings have been checked.
  • Unresolved companies cannot source; stable identity deduplication precedes spend.
  • Qualifications preserve profile evidence, current employment, uncertainty and a numeric fit score; the returned contacts have deterministic ranks.
  • The operator chose all or up to N independently of enrichment; the sorted qualified ranking is sliced before any requested lookups, returning fewer when needed. Three is only a starting suggestion; the chosen N has no fixed ceiling.
  • Only selected people receive requested email/phone enrichment; verified data can be reused; failures remain visible without backfill or a repeated profile lookup.
  • The adapted executable contracts, project type generation, check and plan pass.
  • The operator approved deployment, then the exact paid sample and maximum cost.
  • The sample shows coverage, ranked evidence and actual stage costs; corrections update reusable criteria and affected examples are retested as authorized.
  • The final handoff identifies unperformed live checks and any pending approval evidence, including this build’s requested fresh demo and two implementations.

What it costs #

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.

Build an on-demand Cargo tool that returns the stakeholders most relevant to a seller’s product at each supplied account. Choose all qualified people or up to N per company, independently of optional verified work email and phone enrichment. Three is only a suggested starting value, never a fixed ceiling. The operator can choose top 3, top 5, top 10, any positive N, or all qualified people (null). Enterprise accounts may call for a larger shortlist.

The workflow resolves a company only when needed, searches current employees, deduplicates stable identities, retrieves profiles, qualifies responsibilities, and sorts numerically with stable ties. A configured N slices the qualified ranking before optional contact lookup; fewer qualifying people means fewer results. It preserves profile evidence and rank even when enrichment fails.

Optional email and phone enrichment #

Email and phone enrichment are included in the tool. During setup, ask whether to return verified work email, phone, both, or profiles and scores only. Reuse the workspace’s existing enrichment tools and confirm their input/output contracts; configure.md describes the bindings.

Enrich only the selected qualified people, using the operator’s chosen N or all. This avoids lookup spend on people outside the returned shortlist. Keep each selected person when a lookup fails, with an explicit missing/failed status; never backfill with lower-ranked people just to reach N. An email is marked verified only with matching verification evidence.

Setup and validation #

SKILL.md guides a practical building session: research the seller, propose and approve personas, choose input/count/enrichment and search coverage, review the graph, deploy with approval, and calibrate an explicitly priced sample. Closed-won customer intelligence is optional. A CRM, model and play are unnecessary.

PathPurpose
SKILL.mdInstaller procedure, decisions and invariants
infra/index.tsOne adaptation surface; selected native graph and exact runtime scripts
references/audit.mdSeller evidence, optional customer intelligence and criteria approval
references/configure.mdInput/output choices, provider mappings and returned contract
references/run.mdSample budget, calibration, feedback and optional play
evals/acceptance.mdFresh-workspace blind test and approval evidence
evals/contract.mjsOffline execution of emitted graphs with fictional external responses

The checked configuration is ID → up to three, no enrichment, using a fictional capital- project scheduling seller. buildContactSourcing also emits URL, domain and multiple-input variants. Each supports all or up to N results, with no enrichment, email-only, phone-only or both. topN: null means all; a positive integer caps results. The email/phone flags select enrichment without an outputMode. Change only the consumer’s configuration and audited output mappings. It declares one tool, its folder and three adopted connectors; it declares no recurring trigger. The optional agent backend adds a one-step qualification agent and its folder, using the operator’s chosen OpenAI or Anthropic connection and the same schema. Setup confirms the title Boolean from existing context or seller research, recommends slightly broader titles for subsequent scoring, and asks about an existing API key versus Cargo credits without collecting secrets in chat. See the workflow diagram in SKILL.md and the exact output contract in references/configure.md.

The live metadata and three supplied saved workflow references were inspected read-only on 2026-09-09 using Cargo CLI 1.0.91. Draft references contain incomplete routes and older outreach instructions, so the approved behavior in this skill controls the example. Current metadata confirms current-company/title filters, profile fields, page rounding and openAi.instruct structured output. The email reference returns only email; this example therefore explicitly verifies a newly looked-up address. A consumer tool that exposes equivalent verifier evidence can reuse that result after its output contract is audited. The LLM metadata and agent contract were rechecked read-only on 2026-09-30 with CLI 1.0.102; provider changes still require sample calibration.

No paid provider run, deployment or fresh-workspace installation was performed for this build. Static contracts do not prove live coverage, classification quality, engine failure envelopes, or enrichment deliverability. State remains to-be-approved until a fresh demo and two customer or partner implementations supply the evidence requested for this build.

Migration from the historical example #

contact-sourcing was removed from the tree before it had a customer skill. The historical source-contacts play matched accounts, enriched everyone and upserted verified contacts into HubSpot by email. This implementation restores the same directory name with the approved on-demand behavior. There is no current-main installation to migrate automatically.

For a consumer still using that historical code, keep its existing state and resources while reviewing a migration. Replace the play’s embedded sourcing with a call to contact_sourcing, read contacts instead of the old { sourced: true } output, and explicitly decide whether the play or tool owns selection/enrichment. Any CRM write remains in the consumer’s play and needs a reviewed mapping and identity policy. Do not delete or prune the historical play automatically.

The live reference output best_persona is not the new contract. Consumers using that field must map to contacts and its nested qualification; outreach strategy and triangulation fields have no counterpart. No live reference UUID or private customer data is a dependency of this example.

Version0.1.0
LicenseMIT
Source
Deploys
  • agents
  • connectors
  • tools
For
  • GTM engineering
  • RevOps
  • Sales development
Integrations
  • Anthropic
  • LinkedIn
  • OpenAI
  • Sales Navigator
Content
  • Say this to your agent
  • Illustrative output
  • What you will be asked
  • Done when
  • What it costs
  • Optional email and phone enrichment
  • Setup and validation
  • Migration from the historical example
More in Fundamentals
  • TAM building
  • TAM building advanced
  • Account scoring
  • Website building
  • Website auditing
Next: Signals
  • New hire detection
  • Social listening
  • Visitor identification
  • Readiness scoring

Build the self-driving GTM engine

Your coding agents build it on Cargo.Or our team builds, operates and improves it with you.

Start building
Cargo
Backed byY CombinatorSOC 2 Type IICertified
LinkedinX

Product

Data ModelsContextTerritoriesMailboxesToolsAI AgentsPlaysAppsIntegrationsPricing

Add-ons

Chrome extensionButtonFormSlackGitHub

Build

DocsDeveloper resourcesCargo API docsCargo OpenAPI specCargo auth docsCargo webhooksCargo MCP serverProjectsClaude CodeCodexCursorAll coding agents

Resources

ReportsBlogCustomer storiesCookbooksEnrichmentRoutingSignalsScoringCRM hygieneAd audiencesGTM skillsGTM EngineeringGlossaryCompareCargo x ClayCargo x WorkatoCargo x n8nCargo x DeeplineCargo x DefaultCargo x LeanDataCargo x UnifyCargo x ValleyCargo x Gojiberry

Company

ManifestoCommunityEventsJobsPartners DirectoryPartner Program

Legal

SecurityTerms of servicePrivacy PolicyRefundsDPASupport
© 2026 Cargo
 ////////    ///////    ////////     ////////    ///////
///         ///   ///   ///   ///   ///         ///   ///
///         ///   ///   ///   ///   ///         ///   ///
///         /////////   ////////    ///  ////   ///   ///
///         ///   ///   /// ///     ///   ///   ///   ///
///         ///   ///   ///  ///    ///   ///   ///   ///
 ////////   ///   ///   ///   ///    ///////     ///////

$ npm install -g @cargo-ai/cli