To find every portfolio company of an investor, run Cargo’s theirStack.searchCompanies with the investor’s name in company_investors_partial_match_or: each company comes back with its domain, stage and full investor list, at 0.5 credits a company. Then pass the domains to aiArk.searchPeople to list the decision-makers inside them, at 0.05 credits a person.
This is a go-to-market list built around a relationship rather than a firmographic filter: an investor who already backs a customer of yours, an accelerator batch, a fund whose companies share a stack. The list is also what you take to the investor when you ask for introductions. The find-portfolio-companies skill runs the same job.
What it costs, from the code #
| Step | Action | Credits |
|---|---|---|
| 1. The portfolio | theirStack.searchCompanies | 0.5 per company returned |
| 2. The people inside | aiArk.searchPeople | 0.05 per person returned |
Both bill per record returned, so limit is the bill. A 140-company portfolio is 70 credits; five decision-makers at each is another 35.
Run it #
1. Install and sign in
npm install -g @cargo-ai/cli
cargo-ai login --email you@company.com # sends a code
cargo-ai login --email you@company.com --code 123456 # creates the account on first use
No browser step, so a coding agent can run this itself. A new account starts with 100 free credits and no card.
2. Pull the portfolio
cargo-ai orchestration action execute \
--action '{"kind":"connector","integrationSlug":"theirStack","actionSlug":"searchCompanies"}' \
--data '{"fields":{"company_investors_partial_match_or":["Sequoia"]},"limit":20}' \
--wait-until-finished
company_investors_partial_match_or keeps companies where any investor name contains the text, so Sequoia also catches Sequoia Capital India. Use company_investors_or for an exact name. For Y Combinator, "only_yc_companies": true filters on the batch directly, and each company comes back with its yc_batch. Narrow further in the same fields object: funding_stage_or, min_employee_count, company_country_code_or.
Pull 20 first, read them, then raise limit (up to 500 per call) once the list looks right.
3. Find the people inside
cargo-ai orchestration action execute \
--action '{"kind":"connector","integrationSlug":"aiArk","actionSlug":"searchPeople"}' \
--data '{
"companyInfo": {"domain_or": ["northwind.example", "tailspin.example"]},
"jobRole": {"seniority_or": ["c_suite", "vp", "director"], "department_or": ["sales", "sales_operations"]},
"limit": 50
}' \
--wait-until-finished
seniority_or and department_or take fixed values (founder, c_suite, vp, director, head, manager, and departments such as sales, marketing, finance, operations). Titles in plain text go in jobRole.title_or. limit goes up to 2,000.
What comes back #
| Action | Fields |
|---|---|
theirStack.searchCompanies | name, domain, linkedin_url, investors, funding_stage, last_funding_round_date, employee_count |
aiArk.searchPeople | full_name, title, linkedin_url, company_name, company_domain, country |
The people search returns no email. To reach them, the next step is finding and verifying their work emails.
Frequently asked questions #
Run theirStack.searchCompanies with fields.only_yc_companies set to true. Each company comes back with its yc_batch, so you can keep one batch.
Yes. The find-portfolio-companies skill runs the same job on People Data Labs’ SQL company search, peopleDataLabs.queryCompanies, at 3 credits per company returned and up to 100 per call.
You can, with firecrawl.scrape at 0.05 credits a page, but most portfolio pages list logos and names, not domains, and miss exits and older investments. A search on the investor field returns domains you can pass straight to the people search.
Related: Track funding rounds and find the companies that just raised, Build a TAM list by industry, headcount and geography.