Skill instructions
account-contacts6.97 KB
View saved version →
---
name: account-contacts
description: "Find and rank the right people at one target company: a contact shortlist for outbound, or a buying-committee map showing economic buyers, technical evaluators, influencers and coverage gaps. Use for 'get the HR leadership at miro.com', 'who are the decision-makers at Acme', 'map the buying committee at Globex', 'contacts at Stripe for a security pitch', 'who owns this at the account'. Not for finding people across many companies (use talent-sourcing) or for looking up a named person (use enrich-contact)."
---
# Account Contacts
Pull the right people at one company, check how reachable they are, and say who to engage first.
## Connector rules
Use only the Vibe Prospecting tools in your tool list. Each tool's live description and input schema are authoritative; if this skill disagrees with a tool, follow the tool.
- **`tool_reasoning`** is required on every call: one short sentence (≤200 characters) that paraphrases what the user wants. No earlier conversation, contact details, or other personal data.
- **Chaining:** copy `session_id` and `table_name` from the previous tool response; never invent either. After an enrich or events step, use the new `table_name`.
- **`autocomplete` first**, one concept per call, for `linkedin_category`, `naics_category`, `company_tech_stack_tech`, `job_title`, `interests`, `skills`, `business_intent_topics`, and US `city_region`. Use the returned values as-is.
- **What you can see:** `match-business` and `match-prospects` return complete results; fetch, enrich, and events tools return only a masked preview, so never quote values from it; `fetch-entities-statistics` returns aggregates; `show-sample` reveals up to 5 full rows.
- **Finish with `show-sample`**, once per final `table_name`, then reply. Match-only and statistics-only work does not need it. The widget displays the sample rows, so do not repeat them as a table; use them for your analysis. If `display_status` is `masked`, say the full rows could not be revealed.
- **Export** only after the user explicitly confirms, because it consumes credits. Show the returned download `url`. Never mention table names or session IDs to the user.
- **Uploads:** you cannot upload files to Vibe Prospecting. Pasted lists and text from attached files are fine to use. If the user asks how to upload a list, point them to the Vibe Prospecting Hub: https://app.vibeprospecting.ai/lists
## Input
- **Company** (required): a domain (preferred) or a name.
- **Use case:** prospecting (default), deal acceleration, or renewal and expansion. For a buying-committee request, add the purpose: deal stage, who is already engaged, who is missing, and any hypothesis ("find the economic buyer").
- **Focus (optional):** a function (HR, security, finance, RevOps) or seniority (C-level, VP and above, Director and above), and how many people (default 25, up to 100).
If only a bare company is given, ask once what the contacts are for; if the user declines, build a general prospecting shortlist and say so.
## Workflow
1. **Match the company** with `match-business`. A big brand that resolves to 1-50 employees under "Corporate Managing Offices" probably hit a shell entity, so retry with the other domain. If several companies match, show the top 2-3 (industry, size, HQ) and ask.
2. **Turn the use case into a persona blueprint** before fetching:
- *Prospecting:* broad coverage of the functions that would buy, weighted to Director, VP and C-level.
- *Deal acceleration:* the economic buyer, a technical evaluator, procurement, and one Director-level champion candidate.
- *Renewal or expansion:* current product-owner functions plus an executive sponsor, including Manager and Director levels.
Apply any function or seniority the user named, and say which roles that dropped.
3. **Contact preference.** If the user did not say what contact data they want, ask using the options in the live `fetch-entities` description and set `has_contact_details` from the answer.
4. **Resolve titles.** `autocomplete` for `job_title`. A specific title uses `job_title` (add `job_level` for executives); a broad function uses `job_level` plus `job_department` only. Title filters are loose, so seniority keeps them tight. For "the CFO at Asana", do not try to match a title as a name: filter the company's prospects by title and level.
5. **Fetch** with `fetch-entities` for prospects, scoping to the company with `business_id` and the persona filters, at the requested count. Make one call that covers the whole blueprint. For adjacent functions the user named (procurement, legal, finance), add a second call so coverage gaps are visible.
6. **Enrich** the table: `enrich-prospects-profiles` for tenure and prior roles, and `enrich-prospects-contacts` if the user wants contact data (`contact_types` to match their channel).
7. **Account signals (committee requests):** `fetch-businesses-events` for the last 90 days, because funding, new offices and hiring change who matters. A new joiner is a signal only; there is no executive-move event type. Check that an event names the company before using it.
8. **Show** with `show-sample` on the final table. It reveals 5 rows, so rank and discuss those, and describe the rest from counts and filters. To rank all of a longer list, the user must export first and you then read it with `load-dataset` and `load_into: "context"`; offer it, do not do it unasked.
## Reply
- **Target account:** one line with company, domain, industry, size bucket, revenue bucket, HQ, public or private.
- **Use-case frame:** what the shortlist optimizes for, and any overrides.
- **The people shown:** for each, name, title, seniority, department ("Unattributed" if empty), reachability, and one clause on the role they fill ("VP-level economic buyer in Sales"). The widget displays the rows; keep the table out of your text.
- **Committee map (committee requests):** group by Economic Buyers, Technical Evaluators, Influencers (procurement, legal, operations, adjacent teams) and Potential Champions. Label a Champion only when the user supplied evidence of engagement; title alone is not enough. Mark each user hypothesis confirmed, contradicted or unresolved.
- **Coverage and risk:** gaps where the use case expected a role and nobody turned up, single-thread risk, and who to contact first with a reason each.
- **Next steps:** the export, company background with `enrich-company`, or career-change signals through `fetch-prospects-events` before a first touch.
## Limitations
- No contact data-quality sort; reachability is judged from the contact filter and enriched fields.
- No sub-department function filter; the finest cut is department plus title.
- Company type is only public or private; a subsidiary cannot be told apart from an independent private company.
- Department is empty for many senior cross-functional roles (Chief X Officer, President, Founder): "Unattributed".
- No CRM or engagement data, so champions depend on what the user tells you.
- Executives at well-known companies often have suppressed contact data; suggest LinkedIn.
clean-data6.28 KB
View saved version →
---
name: clean-data
description: "Tidy a pasted list of companies or contacts before matching or enrichment: normalize company names, domains, countries and emails, flag invalid rows with a reason, match each row to Vibe Prospecting records, and remove duplicates that resolve to the same company or person. Use for 'clean this list', 'match these companies to domains', 'dedupe these contacts', 'which of these emails are valid', 'prep this list for enrichment'. Works on lists pasted in chat, up to roughly 100 rows. Not for building a new list (use talent-sourcing)."
---
# Clean Data
Standardize and check a pasted list, then match it so duplicates collapse onto real company or person records. Nothing is deleted: every row stays, with a status and reason.
## Connector rules
Use only the Vibe Prospecting tools in your tool list. Each tool's live description and input schema are authoritative; if this skill disagrees with a tool, follow the tool.
- **`tool_reasoning`** is required on every call: one short sentence (≤200 characters) that paraphrases what the user wants. No earlier conversation, contact details, or other personal data.
- **Chaining:** copy `session_id` and `table_name` from the previous tool response; never invent either. After an enrich or events step, use the new `table_name`.
- **`autocomplete` first**, one concept per call, for `linkedin_category`, `naics_category`, `company_tech_stack_tech`, `job_title`, `interests`, `skills`, `business_intent_topics`, and US `city_region`. Use the returned values as-is.
- **What you can see:** `match-business` and `match-prospects` return complete results; fetch, enrich, and events tools return only a masked preview, so never quote values from it; `fetch-entities-statistics` returns aggregates; `show-sample` reveals up to 5 full rows.
- **Finish with `show-sample`**, once per final `table_name`, then reply. Match-only and statistics-only work does not need it. The widget displays the sample rows, so do not repeat them as a table; use them for your analysis. If `display_status` is `masked`, say the full rows could not be revealed.
- **Export** only after the user explicitly confirms, because it consumes credits. Show the returned download `url`. Never mention table names or session IDs to the user.
- **Uploads:** you cannot upload files to Vibe Prospecting. Pasted lists and text from attached files are fine to use. If the user asks how to upload a list, point them to the Vibe Prospecting Hub: https://app.vibeprospecting.ai/lists
## Input
A list of companies or contacts pasted in chat, or the text of an attached file. Roughly 100 rows is the practical limit in one conversation; for more, work in batches. Note which column is the company name, domain, email, LinkedIn URL, phone or country; ask only if it is unclear. For a very large file, suggest the user clean it in a spreadsheet first.
## Workflow
1. **Profile the input.** Report row count, fill rate for each field, and obvious problems: placeholder text ("N/A", "none", "-"), pasted addresses in the name field, many spellings of one country, free-email providers, and role addresses.
2. **Standardize,** keeping the raw value beside the normalized one:
- *Company name:* trim, collapse spaces, remove stray punctuation, and drop a trailing legal suffix (Inc, LLC, Ltd, GmbH, S.A.) for matching only.
- *Domain:* strip the protocol and `www`, keep the registrable domain, lowercase. Flag free-email domains separately.
- *Country:* convert to ISO two-letter codes (`United States` → `US`, `UK` → `GB`, `Deutschland` → `DE`).
- *Email:* trim and lowercase.
- *LinkedIn:* keep the full profile URL.
3. **Validate** each field and tag the row; never delete one:
- *Email:* syntax, role addresses (`info@`, `sales@`, `noreply@`, `support@`), well-known free or disposable providers. You cannot check deliverability or mail servers, so say that valid means well-formed.
- *Domain:* looks like a real domain, no IP address or spaces.
- *Country:* resolves to a code.
Give each problem a short reason code (`role_address`, `free_provider`, `invalid_syntax`, `placeholder`).
4. **Match the valid rows.**
- Companies with a name and/or domain: `match-business`, up to 50 per call.
- People: `match-prospects`, up to 40 per call, by email, LinkedIn URL or phone number, or full name plus company name (add the company's `business_id` when you have it). Skip rows tagged as role addresses or disposable domains so you do not spend matching on them.
Match results are complete, so read them directly. Check a resolved company for the shell-entity pattern (a big brand with 1-50 employees under "Corporate Managing Offices") and retry with the other domain. An email miss stays a miss; never retry it as a name search.
5. **Deduplicate on the IDs.** Rows that resolve to the same business ID or prospect ID are duplicates; keep the first, mark the others with the ID of the survivor. Different IDs are different entities even if the names look alike, and subsidiaries or brands under one parent (for example a parent and its product domains) are separate companies; `enrich-business-company-hierarchies` shows the tree.
6. **Report** and offer next steps.
## Reply
- **Profile:** a short before-and-after summary of fill rates and the issues found.
- **Standardization:** three to five example changes (`" ACME, Inc. "` → `acme`, `"WWW.Acme.COM"` → `acme.com`).
- **Validation:** counts of valid and invalid rows and a frequency list of reason codes.
- **Result table:** the input row, normalized value, status (matched, unmatched, invalid, duplicate of row N), reason, and the matched name and domain. Show the first rows in chat and offer the rest in batches; do not export unless asked.
- **Next steps:** enrich the matched rows with `enrich-company` or `enrich-contact`. If the match rate is low, suggest adding LinkedIn URLs, company domains or work emails.
## Limitations
- Validation checks format only: no deliverability or mail-server check, and no phone verification.
- Person-name parsing is simple; non-Western name orders and compound surnames may need the user's confirmation.
- Free-email addresses cannot be tied to a company by themselves; pair them with a name and company for a prospect match.
- Matching returns an ID or nothing, with no confidence score.
- Works in chat, so very large files need to be split.
competitor-research5.22 KB
View saved version →
---
name: competitor-research
description: "Compare two to four rival companies side by side: size, funding, hiring trends, tech stack, recent strategic moves, and overlap with the user's target customers, with a short battlecard per competitor. Use for 'compare Gong and Chorus', 'size up our competitors', 'competitive landscape for X', 'battlecard for renewal'. Not for a deep brief on one company (use enrich-company) or for finding lookalike companies (use lookalike-accounts)."
---
# Competitor Research
A dated, fact-led comparison of a few named rivals.
## Connector rules
Use only the Vibe Prospecting tools in your tool list. Each tool's live description and input schema are authoritative; if this skill disagrees with a tool, follow the tool.
- **`tool_reasoning`** is required on every call: one short sentence (≤200 characters) that paraphrases what the user wants. No earlier conversation, contact details, or other personal data.
- **Chaining:** copy `session_id` and `table_name` from the previous tool response; never invent either. After an enrich or events step, use the new `table_name`.
- **`autocomplete` first**, one concept per call, for `linkedin_category`, `naics_category`, `company_tech_stack_tech`, `job_title`, `interests`, `skills`, `business_intent_topics`, and US `city_region`. Use the returned values as-is.
- **What you can see:** `match-business` and `match-prospects` return complete results; fetch, enrich, and events tools return only a masked preview, so never quote values from it; `fetch-entities-statistics` returns aggregates; `show-sample` reveals up to 5 full rows.
- **Finish with `show-sample`**, once per final `table_name`, then reply. Match-only and statistics-only work does not need it. The widget displays the sample rows, so do not repeat them as a table; use them for your analysis. If `display_status` is `masked`, say the full rows could not be revealed.
- **Export** only after the user explicitly confirms, because it consumes credits. Show the returned download `url`. Never mention table names or session IDs to the user.
- **Uploads:** you cannot upload files to Vibe Prospecting. Pasted lists and text from attached files are fine to use. If the user asks how to upload a list, point them to the Vibe Prospecting Hub: https://app.vibeprospecting.ai/lists
## Input
- **Competitors** (required): 2-4 names or domains. Four is the practical limit, because `show-sample` reveals 5 rows.
- **Purpose** (ask once if missing): battlecard, board update, win-loss prep, renewal.
- Optional: priority angles (pricing pressure, AI roadmap, a region), the user's target customers (to judge overlap), and hypotheses to confirm or contradict.
## Workflow
1. **Anchor.** Restate the purpose, angles and hypotheses in 1-2 sentences.
2. **Match all competitors** in one `match-business` call, with name and domain where available. Check each for the shell-entity pattern (a big brand showing 1-50 employees under "Corporate Managing Offices") and retry with the alternate domain. Drop and flag any that do not resolve confidently; do not proceed with the wrong company.
3. **Enrich** the matched table, at most 3 types per call, each on the latest `table_name`: firmographics, funding-and-acquisitions, workforce-trends, technographics, competitive-landscape, strategic-insights, challenges, company-ratings, linkedin-posts. Prioritize by the user's angles, and say which were skipped.
4. **Fetch events** with `fetch-businesses-events` for the last 90 days. Keep launches (`new_product`), funding (`new_funding_round`), `merger_and_acquisitions`, `new_office` and `closing_office`, `cost_cutting`, partnerships, and notable department hiring or cuts. Before using an event, check that it names the competitor.
5. **Show** with `show-sample` on the enriched table and on the events table.
6. **Judge overlap** per competitor (High, Partial, None) against the user's stated target customers, using firmographics. If none were given, write "Not assessed".
7. **Check each hypothesis** as confirmed, contradicted or unresolved, citing the data point behind the call.
## Reply
- **Purpose and hypothesis check** in two or three lines.
- **Side-by-side table:** company, domain, HQ, headcount bucket, revenue bucket, founded, public or private, latest funding, latest dated move.
- **Per competitor:** snapshot, recent moves (dated), positioning in the company's own terms from strategic-insights or competitive-landscape, workforce direction, challenges, overlap, and three discovery questions rooted in specific facts.
- **Data quality:** unresolved names, empty enrichments, stale records, contradictions.
- Offer `account-contacts` to map the buying committee at a specific account, or the export if the user wants the data.
## Limitations
- Challenges, strategy and competitive landscape come from public filings: empty for private rivals and 12-18 months old for public ones. For private companies lean on funding, events, workforce trends, tech stack and posts.
- Headcount and revenue are buckets; compare buckets, not numbers.
- Review-site sentiment (G2, TrustRadius) and earnings-call content are not in the data.
- No similar-companies model. For rivals beyond the named ones, use `lookalike-accounts` or the competitive-landscape results, and label them as approximations.
enrich-company5.13 KB
View saved version →
---
name: enrich-company
description: "Look up one company, or a pasted list of up to 50 names or domains, and add firmographics, tech stack, funding and acquisitions, workforce and hiring trends, ratings, company hierarchy, website changes, or LinkedIn posts. Use for 'enrich this company', 'what does acme.com use', 'how big is Stripe', 'funding history for Asana', 'add industry and headcount to this list of domains'. Not for finding new companies (use lookalike-accounts) or for comparing named rivals (use competitor-research)."
---
# Enrich Company
Resolve named companies to Vibe Prospecting records, then add the data the user asked for.
## Connector rules
Use only the Vibe Prospecting tools in your tool list. Each tool's live description and input schema are authoritative; if this skill disagrees with a tool, follow the tool.
- **`tool_reasoning`** is required on every call: one short sentence (≤200 characters) that paraphrases what the user wants. No earlier conversation, contact details, or other personal data.
- **Chaining:** copy `session_id` and `table_name` from the previous tool response; never invent either. After an enrich or events step, use the new `table_name`.
- **`autocomplete` first**, one concept per call, for `linkedin_category`, `naics_category`, `company_tech_stack_tech`, `job_title`, `interests`, `skills`, `business_intent_topics`, and US `city_region`. Use the returned values as-is.
- **What you can see:** `match-business` and `match-prospects` return complete results; fetch, enrich, and events tools return only a masked preview, so never quote values from it; `fetch-entities-statistics` returns aggregates; `show-sample` reveals up to 5 full rows.
- **Finish with `show-sample`**, once per final `table_name`, then reply. Match-only and statistics-only work does not need it. The widget displays the sample rows, so do not repeat them as a table; use them for your analysis. If `display_status` is `masked`, say the full rows could not be revealed.
- **Export** only after the user explicitly confirms, because it consumes credits. Show the returned download `url`. Never mention table names or session IDs to the user.
- **Uploads:** you cannot upload files to Vibe Prospecting. Pasted lists and text from attached files are fine to use. If the user asks how to upload a list, point them to the Vibe Prospecting Hub: https://app.vibeprospecting.ai/lists
## Input
One or more company names or domains, typed or pasted (up to 50 per match call). A name plus a domain matches best. Optional: which kinds of data the user wants.
## Workflow
1. **Match.** Call `match-business` with each company's `name` and/or `domain`. The result is complete, so read it directly.
2. **Check the match.** A well-known brand that resolves to 1-50 employees in a "Corporate Managing Offices" category probably landed on a registered-agent shell. Retry with the alternate domain or the plain company name. The match has no confidence score, so when the candidates look ambiguous, ask the user instead of guessing. Report unmatched rows and do not substitute other companies.
3. **Choose enrichments** from what the user asked for. With no preference, use firmographics plus technographics.
| Need | Enrichment |
|---|---|
| Name, description, size, revenue, location, industry | `enrich-business-firmographics` |
| Tech stack | `enrich-business-technographics` |
| Web infrastructure | `enrich-business-webstack` |
| Rounds, investors, IPO, acquisitions | `enrich-business-funding-and-acquisitions` |
| Headcount and department trends | `enrich-business-workforce-trends` |
| Employee-satisfaction ratings | `enrich-business-company-ratings` |
| Parent, subsidiaries, org tree | `enrich-business-company-hierarchies` |
| Public-company financials | `enrich-business-financial-metrics` (needs `parameters.date`) |
| Keywords on their website | `enrich-business-website-keywords` (needs `parameters.keywords`) |
| Site content changes | `enrich-business-website-changes` |
| Recent company posts | `enrich-business-linkedin-posts` |
| Risks, competitors, strategy (from filings) | `enrich-business-challenges`, `enrich-business-competitive-landscape`, `enrich-business-strategic-insights` |
Use the schema's exact enum names. Run at most 3 per `enrich-business` call, each on the latest `table_name`.
4. **Show:** call `show-sample` on the final table. It reveals up to 5 rows, so for a longer list, say so and offer the export for the rest.
## Reply
One short card per company (up to 5): name, domain, industry, headcount bucket, revenue bucket, HQ, public or private, then the enrichments requested. Leave out empty fields and name any enrichment that came back empty, so the user can tell missing data from data that was never requested.
## Limitations
- Risks, competitors and strategy come from public filings: empty for private companies and 12-18 months old for public ones. Use funding, workforce trends, events and posts for current signals.
- Headcount and revenue are buckets. Quote the bucket, not an exact number.
- Matching returns an ID or nothing, with no confidence score.
- Only 3 enrichment types per call, so wide requests take several calls.
enrich-contact5.22 KB
View saved version →
---
name: enrich-contact
description: "Look up one person or a small pasted list of people and return their professional profile and contact details: work email, phone, LinkedIn, title, seniority, department, work history, and recent job changes. Identify people by email, LinkedIn URL, phone number, or full name plus company. Use for 'find the email for Jane Smith at Acme', 'enrich this contact', 'who is this person', 'background on these attendees'. Not for finding new people by role (use talent-sourcing or account-contacts) or for drafting outreach."
---
# Enrich Contact
Resolve people to Vibe Prospecting records, then add the profile and contact data the user asked for.
## Connector rules
Use only the Vibe Prospecting tools in your tool list. Each tool's live description and input schema are authoritative; if this skill disagrees with a tool, follow the tool.
- **`tool_reasoning`** is required on every call: one short sentence (≤200 characters) that paraphrases what the user wants. No earlier conversation, contact details, or other personal data.
- **Chaining:** copy `session_id` and `table_name` from the previous tool response; never invent either. After an enrich or events step, use the new `table_name`.
- **`autocomplete` first**, one concept per call, for `linkedin_category`, `naics_category`, `company_tech_stack_tech`, `job_title`, `interests`, `skills`, `business_intent_topics`, and US `city_region`. Use the returned values as-is.
- **What you can see:** `match-business` and `match-prospects` return complete results; fetch, enrich, and events tools return only a masked preview, so never quote values from it; `fetch-entities-statistics` returns aggregates; `show-sample` reveals up to 5 full rows.
- **Finish with `show-sample`**, once per final `table_name`, then reply. Match-only and statistics-only work does not need it. The widget displays the sample rows, so do not repeat them as a table; use them for your analysis. If `display_status` is `masked`, say the full rows could not be revealed.
- **Export** only after the user explicitly confirms, because it consumes credits. Show the returned download `url`. Never mention table names or session IDs to the user.
- **Uploads:** you cannot upload files to Vibe Prospecting. Pasted lists and text from attached files are fine to use. If the user asks how to upload a list, point them to the Vibe Prospecting Hub: https://app.vibeprospecting.ai/lists
## Input
For each person, one of: an email, a LinkedIn URL, a phone number, or a full name with a company name or domain. A name without a company cannot be matched. Up to 40 people per `match-prospects` call. Optional: whether the user wants contact details, a profile, or career changes.
## Workflow
1. **Pick the strongest identifier** for each person: email, then LinkedIn URL, then phone, then name plus company. Do not fan out several strategies for one person. If the user gave a role instead of a name ("the CFO at Asana"), do not match on the title; use `match-business` to get the company, then `fetch-entities` for prospects filtered by title and seniority, and let the user choose.
2. **Match.** Call `match-prospects`. For a name plus company, add the company's `business_id` from `match-business` when you have it. Results are complete: a person is either matched or null. A typo in an email is a miss; do not retry it as a name search, since that could return a different person.
3. **Report misses.** Say which people did not match and why a retry might help: an email, LinkedIn URL or company domain improves the odds. Enrich only the matched people. Do not replace an unmatched person with someone similar.
4. **Enrich** the matched table with `enrich-prospects`:
- `enrich-prospects-profiles` for title, location, work history and education.
- `enrich-prospects-contacts` for email and phone. Set `contact_types` to `["email"]` unless the user needs phone numbers too; leaving it empty requests both.
Company context, if asked for, comes from `enrich-business` with `enrich-business-firmographics` on the employer.
5. **Career changes,** if asked: `fetch-prospects-events` with `prospect_changed_role` or `prospect_changed_company` and a `timestamp_from`. These are the only people-level event types.
6. **Show:** `show-sample` on the final table. It reveals up to 5 rows. For more people, summarize the first 5 and offer the export.
## Reply
A card per person (up to 5): name, title, company, seniority, department ("Unattributed" if empty), professional email, phone, LinkedIn. When the user asked for background, add a 3-5 sentence synopsis written only from the returned data: current role, one or two earlier roles, tenure, and any recent change. Say "not available" for thin profiles instead of guessing.
## Limitations
- High-profile executives often have suppressed contact data. Suggest LinkedIn instead of cold email.
- No per-contact accuracy score and no "last updated" date. Treat a professional email plus a phone as the practical quality signal.
- Seniority and department are coarse; department is empty for many Chief X Officer, President and Founder roles.
- Per-person LinkedIn post content is not available. Employer posts come from `enrich-business-linkedin-posts`.
- Do not use contact data for anything beyond the lookup the user asked for.
lookalike-accounts5.82 KB
View saved version →
---
name: lookalike-accounts
description: "Find companies that resemble a seed company by rebuilding its industry, size, region and tech-stack profile and searching for others that share it. Use for 'find companies like Stripe', 'lookalike accounts for Acme', 'similar companies to our best customer', 'expand my territory', 'extend this account list'. Not for similar people (use talent-sourcing) or for comparing named rivals (use competitor-research). Results are an approximation, not a similarity score."
---
# Lookalike Accounts
Rebuild the profile of one seed company, then search for companies that share it.
## Connector rules
Use only the Vibe Prospecting tools in your tool list. Each tool's live description and input schema are authoritative; if this skill disagrees with a tool, follow the tool.
- **`tool_reasoning`** is required on every call: one short sentence (≤200 characters) that paraphrases what the user wants. No earlier conversation, contact details, or other personal data.
- **Chaining:** copy `session_id` and `table_name` from the previous tool response; never invent either. After an enrich or events step, use the new `table_name`.
- **`autocomplete` first**, one concept per call, for `linkedin_category`, `naics_category`, `company_tech_stack_tech`, `job_title`, `interests`, `skills`, `business_intent_topics`, and US `city_region`. Use the returned values as-is.
- **What you can see:** `match-business` and `match-prospects` return complete results; fetch, enrich, and events tools return only a masked preview, so never quote values from it; `fetch-entities-statistics` returns aggregates; `show-sample` reveals up to 5 full rows.
- **Finish with `show-sample`**, once per final `table_name`, then reply. Match-only and statistics-only work does not need it. The widget displays the sample rows, so do not repeat them as a table; use them for your analysis. If `display_status` is `masked`, say the full rows could not be revealed.
- **Export** only after the user explicitly confirms, because it consumes credits. Show the returned download `url`. Never mention table names or session IDs to the user.
- **Uploads:** you cannot upload files to Vibe Prospecting. Pasted lists and text from attached files are fine to use. If the user asks how to upload a list, point them to the Vibe Prospecting Hub: https://app.vibeprospecting.ai/lists
## Input
- **Seed company** (required): a name or domain. If the user gives a person, or asks for similar people, use talent-sourcing instead; this skill returns companies.
- **Count:** default 25, up to 100.
- **Overrides (optional):** country or region focus, size or revenue bucket, public-only, and extra tech-stack requirements.
## Workflow
1. **Match the seed** with `match-business`, using name and domain. If several candidates return, pick the one whose domain matches and say which you chose. If none resolves, ask for a domain.
2. **Check the seed.** A big brand that resolves to 1-50 employees under "Corporate Managing Offices" is a shell entity. Retry with the other domain, since a wrong seed produces unrelated results.
3. **Read the seed's profile** with `enrich-business-firmographics` and `enrich-business-technographics`, then `show-sample` on the enriched table to see the values. Take: industry (LinkedIn or NAICS, whichever is populated), headcount and revenue bucket, country (or the region the user asked for), and the top 3-5 technologies, favoring category-defining tools (CRM, marketing automation, data warehouse, cloud) over ubiquitous ones. Skip anything that comes back empty and do not guess. (The `show-sample` call here reads the enrichment values, it is not the final presentation.)
4. **Resolve values** with `autocomplete` for the industry and each technology. For flagship vendors, try the product-qualified name first ("Snowflake Data Cloud", "Stripe Payments"), because the bare name often returns noise. Drop anything that does not resolve cleanly, and tell the user.
5. **Apply overrides,** replacing or extending the profile. Keep one industry taxonomy and one location level.
6. **Size the pool** with `fetch-entities-statistics` (`entity_type: businesses`, same filters). If it is smaller than the count asked for, relax the most restrictive filter first (the last technology, then the others, then widen the headcount bucket to an adjacent one) and re-check. If it is far larger than needed, add a technology back or narrow the region. For a country-scoped pool, read the per-location breakdown, because the headline count may include other countries.
7. **Fetch** with `fetch-entities` for businesses with the final filters, plus `business_id` set to the seed's ID from the match with `negate: true`, because a company matches its own profile.
8. **Show** with `show-sample`.
## Reply
- **Header:** "Lookalikes for [seed] ([domain])" and the profile used: industry, headcount bucket, revenue bucket, country or region, technologies. State the size of the pool.
- **Pattern notes (2-4 bullets):** dominant geography, size concentration, how dense the tech overlap is (tech data is not populated on every company), and any widening you had to apply ("industry widened because the seed had no LinkedIn category").
- **Next steps:** offer the export of all rows, `talent-sourcing` for the people at these companies, or `enrich-company` to go deeper on one.
## Limitations
- There is no similarity model or score. Results are companies that match the rebuilt filters, in fetch order, not ranked by closeness.
- Technology data is incomplete, so stacking several technologies can shrink the pool faster than expected.
- If neither industry taxonomy is populated on the seed, the match falls back to size, region and technology, which is looser. Say so.
- Headcount and revenue are buckets; a seed near a bucket edge can look further from a neighbor than it is.
- No metro-area filter.
- Returns companies only, not similar people.
talent-sourcing8.76 KB
View saved version →
---
name: talent-sourcing
description: "Source candidates from a job description or role brief, or map the talent bench for a function across target or competitor companies with movement signals such as layoffs and leadership changes. Use for 'find candidates for a senior Go engineer in Berlin', 'build a talent pipeline for a VP Sales', 'who could fill this role', 'map the data engineering teams at our competitors', 'where can we hire from'. Recruiting and talent intelligence only. Not for researching a named person (use enrich-contact)."
---
# Talent Sourcing
Turn a role brief into a candidate search, or map where a function's talent sits across companies.
## Connector rules
Use only the Vibe Prospecting tools in your tool list. Each tool's live description and input schema are authoritative; if this skill disagrees with a tool, follow the tool.
- **`tool_reasoning`** is required on every call: one short sentence (≤200 characters) that paraphrases what the user wants. No earlier conversation, contact details, or other personal data.
- **Chaining:** copy `session_id` and `table_name` from the previous tool response; never invent either. After an enrich or events step, use the new `table_name`.
- **`autocomplete` first**, one concept per call, for `linkedin_category`, `naics_category`, `company_tech_stack_tech`, `job_title`, `interests`, `skills`, `business_intent_topics`, and US `city_region`. Use the returned values as-is.
- **What you can see:** `match-business` and `match-prospects` return complete results; fetch, enrich, and events tools return only a masked preview, so never quote values from it; `fetch-entities-statistics` returns aggregates; `show-sample` reveals up to 5 full rows.
- **Finish with `show-sample`**, once per final `table_name`, then reply. Match-only and statistics-only work does not need it. The widget displays the sample rows, so do not repeat them as a table; use them for your analysis. If `display_status` is `masked`, say the full rows could not be revealed.
- **Export** only after the user explicitly confirms, because it consumes credits. Show the returned download `url`. Never mention table names or session IDs to the user.
- **Uploads:** you cannot upload files to Vibe Prospecting. Pasted lists and text from attached files are fine to use. If the user asks how to upload a list, point them to the Vibe Prospecting Hub: https://app.vibeprospecting.ai/lists
## Choose a mode
- **Pipeline:** the user has a role to fill and wants candidates.
- **Bench map:** the user wants to see who does a function across a set of companies and where talent may be open to a move.
## Fair-hiring and privacy rules
- Never filter, score or comment on protected characteristics (age, gender, ethnicity, religion, disability, nationality, family status) or on proxies for them, such as graduation year to infer age or a name to infer gender or origin. If the brief asks for that, decline that criterion and say why.
- Use only job-related evidence that the data shows. Mark a skill the profile does not show as "unverified" instead of inferring it.
- Use contact data only for recruiting outreach about a real role, and remind the user to honor opt-outs and local rules (GDPR, CCPA).
- Do not pull personal contact data during a bench map.
## Pipeline mode
### Input
Role (title, seniority, function); must-haves and nice-to-haves (propose a split and confirm if the brief does not separate them); the source-company profile or named target companies; exclusions (current employer, no-poach clients); geography; the number wanted (default 30, up to 150).
### Workflow
1. **Blueprint.** Translate the brief into a candidate profile and a source-company profile. Expand the title into 3-6 adjacent titles a strong candidate might hold today, and note a step-up pool one level below if the role is a promotion for most people. Show the blueprint and confirm before searching.
2. **Resolve values** with `autocomplete` for titles, skills, interests, industries and technologies.
3. **Source companies.** For named companies, `match-business` and check for shell entities; for a company profile, set the company filters directly on the prospect search. Drop excluded companies using `business_id` with `negate: true`.
4. **Encode the must-haves as filters:** titles with `job_title` plus `job_level` and `job_department`, location, `skills` or `interests` where the brief names them, `total_experience_months`, and `current_role_months` for tenure (candidates 2-4 years into a role are often the most movable; under 12 months rarely are). Title filters are loose, so pair every title with seniority.
5. **Fetch** with one `fetch-entities` call for prospects at the requested count. If the pool is very large or tiny, check it with `fetch-entities-statistics` first and suggest tightening or broadening. Add `enrich-prospects-profiles` for work history, tenure and prior employers. Add contact enrichment only once the user is ready to reach out, with `contact_types` as the user chooses.
6. **Movement signals,** if asked: `fetch-businesses-events` on the source companies for `cost_cutting`, `merger_and_acquisitions`, `decrease_in_*_department` and `new_funding_round`, and `fetch-prospects-events` for recent role changes. Someone who changed jobs in the last six months is rarely movable; mark them, do not drop them.
7. **Show** with `show-sample`. It reveals 5 rows, so the filters, not your reading, do the matching; describe the rest from counts. To rank every candidate, the user must export first, and you then read the rows with `load-dataset` and `load_into: "context"`. If they do, score each 0-100: must-have fit 50 (a missing must-have caps at 49), nice-to-have fit 20, movability 20, reachability 10.
### Reply
Role blueprint as confirmed; the candidates shown (name, current title, employer, tenure, location, why they fit in one clause); pool read (matching count, any must-have the data cannot evidence, thin geographies); the first people to contact and a specific angle drawn from their trajectory; and next steps (contact enrichment, export, step-up pool, bench map of the best source companies).
## Bench map mode
### Input
A function (required), a company set (named, or a profile capped at 15 companies), optional seniority focus (default Manager and above plus senior individual contributors), geography, and depth: overview (default) or named leaders.
### Workflow
1. **Resolve the companies** with `match-business`, checking for shell entities. If a profile matches more than 15 companies, ask the user to tighten it.
2. **Define the function** as a department plus 4-8 discovered titles across the ladder (individual contributor to C-level). Confirm, since "data" alone can mean analytics, engineering or science.
3. **Count per company** with `fetch-entities-statistics` (`entity_type: prospects`, `business_id` for that company, the department and level filters). Read the aggregates.
4. **Name leaders** only for "named leaders" depth: `fetch-entities` for Directors and above in the function across the set, then `show-sample`. It reveals 5 rows; for a full roster, offer the export. Skip contact enrichment.
5. **Signals,** last 180 days: `fetch-businesses-events` for `cost_cutting`, `merger_and_acquisitions`, `closing_office`, `decrease_in_*_department`, `new_funding_round`; `enrich-business-workforce-trends` for headcount direction; `fetch-prospects-events` for role changes among leaders. Check each event names the company.
6. **Rate each company as a talent source:** bench depth (35: counts relative to the other companies), movement pressure (40: layoff or restructuring 90-100, new function leadership in the last six months 70-85, acquisition 70, declining headcount 50-70, flat 30, strong growth or a fresh large round 10-20), and tenure ripeness (25: the share 2-4 years into role, if you can see it). Do not score individuals here.
### Reply
Map scope (function, titles, levels, companies, any that failed to resolve); a ranking table (company, bench size, directors and above, headcount trend, key signal, source score, why); a short block per company; a market read (deepest benches, most pressure now, feeder companies); and next steps (pipeline mode on the top three, re-run in 60-90 days, `lookalike-accounts` seeded on the best source).
## Limitations
- Profiles show what people publish: skills, scope and team size are often missing, so absence means unknown.
- No skills or certification filter beyond `skills` and `interests` autocomplete values.
- No sub-department function filter; use department plus discovered titles.
- No executive-departure event type; leavers show up only indirectly.
- Headcount and revenue are buckets, so company-size cuts are approximate.
- Compensation, visa status and willingness to move are not available.
- Large companies can return thousands of matches; the map relies on counts beyond what you can read.