From zoominfo
Map the buying committee at a target account. Identifies decision-makers, prioritizes who to engage, and surfaces gaps and multi-thread risks. Leads with a TL;DR (top 3 to engage, biggest gap, multi-thread risk), uses compact tables, and deep-researches top stakeholders to catch stale records. Identify the account by ZoomInfo account/company ID (preferred) or by company name, domain, or ticker (which triggers a lookup step). Include detailed context on the deal, situation, and persona priorities driving the map.
How this skill is triggered — by the user, by Claude, or both
Slash command
/zoominfo:buying-committeeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Map the buying group at a target account — who matters, what role they play, and who to engage first. Output is scannable: headline first, compact tables, deeper profiles only for the top 3-5.
Map the buying group at a target account — who matters, what role they play, and who to engage first. Output is scannable: headline first, compact tables, deeper profiles only for the top 3-5.
The user will provide via $ARGUMENTS an account identifier (required) plus optional context:
companyId; skip the search step.companyId via search_companies as a first step (see Workflow step 3).If the identifier is ambiguous (e.g., a bare string that could be a name or a ticker), prefer the most specific interpretation: all-digits → ID; short all-caps token (≤5 chars) → ticker; a string containing a dot or known TLD → domain; otherwise → name.
Parallelize aggressively — once the company is resolved, account research, enrichment, recommendations, scoops, and supplemental search can all fan out in parallel.
Anchor on purpose. Read the research context from $ARGUMENTS.
get_recommended_contacts (PROSPECTING / DEAL_ACCELERATION / RENEWAL_AND_GROWTH), and any named hypotheses to test (e.g., "find the actual economic buyer", "identify replacement champion"). These priorities drive the account_research query, search_contacts filters, scoops triage, and synthesis.Lookup metadata first — call lookup for any fields relevant to the request (management levels, departments, job functions). Use returned id values in subsequent calls.
Get GTM context — call get_gtm_context with detailed: true to retrieve full personas, ICP segments, offerings, and competitors. The detailed mode matters here because committee mapping benefits from full persona definitions. If empty, proceed without and note the gap in the TL;DR.
Resolve the company.
companyId — do not call search_companies.search_companies with the appropriate field (companyWebsite for a domain, companyTicker for a ticker, companyName for a name) and extract companyId from the top match. If no confident match, surface the ambiguity to the user before continuing rather than guessing.enrich_companies for firmographics including employeeCountByDepartment.Fetch in parallel (retrieval, not filtering). Treat each tool call as a context-retrieval step. Pull broadly now; decide what's relevant during synthesis. Steps that only need the companyId (plus inputs from step 1) can run in parallel — account_research, get_recommended_contacts, search_contacts, enrich_scoops/search_scoops.
account_research query to the map purpose. Don't pass a generic "tell me about this account" string. Inject the full research context — name the deal stage, the offering, named hypotheses, persona priorities — and ask for named individuals organized by function, engagement status, deal context (stage, last activity, competition), and any signals about budget owners, blockers, or champions. The more context the better.
account_research surfaces dates in the past (renewal, contract end, last activity), retain them but tag for verification — they may signal active negotiation, broken CRM sync, or a missed milestone.get_recommended_contacts — pass the use-case enum derived in step 1. Treat as supplemental signal. Empty results are common (cold-start tenants, no CRM data); note as a confidence indicator rather than retrying.search_contacts — filter by the priority personas/functions derived in step 1 (resolved against lookup IDs from step 2 and GTM personas from step 3). Sort by -contactAccuracyScore. Pull broader than you'll keep — filtering happens in step 7.enrich_scoops / search_scoops — 90-day window, no role filter. Retrieval is unconstrained; step 7 will triage for VP+ moves relevant to the priority personas and named hypotheses.Enrich and deep-research — merge contacts from step 5, dedupe by personId:
enrich_contacts in batches of 10 on the top 20 merged contacts. NO_MATCH failures are normal — note them, don't retry.contact_research in parallel on the top 3-5 (ranked by seniority + engagement + fit to priority personas + relevance to named hypotheses). This is where stale records get caught — if research indicates the person has departed, route them to Excluded / Needs Verification, not the main map.Synthesize. Each retrieval is raw context — now decide what makes the map, framed by the map purpose, priority personas, and named hypotheses. Apply these principles:
search_contacts if not already enriched and add to the committee with a RECENTLY APPOINTED flag and the event date. These often pre-date what account_research knows. Drop scoops irrelevant to the map purpose.search_contacts and get_recommended_contacts pulls, keep contacts that fit a priority persona, address a named hypothesis (e.g., "find the actual economic buyer"), or fill a coverage gap visible from account_research. Drop everyone else — broad retrieval is fine, broad output isn't.[from account_research], [from search], [from recommendations], [from scoops]. Flag source disagreements.Write the exec summary last. Re-read the body, then write the TL;DR at the top, framed by the map purpose.
[Industry] | [Employees] | [Revenue] | [HQ]
Map purpose: [restate the user's research context in one line, or "general committee mapping for prospecting (no context supplied)" if defaulted].
One paragraph framed by the map purpose. Top 3 contacts to engage (named, one-line reasoning each, tied to the purpose), biggest coverage gap (specific role/function with risk), multi-threading risk in one sentence, and a one-line answer to each named hypothesis from the research context (confirmed / contradicted / unresolved). If a past-date reference came back from account_research, lead with: "Renewal/contract date in CRM appears stale — verify deal state before acting on this map."
One-paragraph context — what they do, where they sit in the buying journey.
Omit this section if no GTM context was retrieved. Otherwise:
If a past date was surfaced: "account_research references [event] on [date], in the past. Verify deal state before relying on the engagement strategy below."
After the contact tables below, include a mermaid flowchart TD block showing the committee organized by role with engagement state color-coded (engaged / new / recently appointed / stale-excluded / gap) and the recommended sequencing path overlaid (e.g., green dashed arrows for "engage 1st → 2nd → 3rd"; red dashed for "departed, replaced by"). Keep the chart additive — every name in it must also appear in a contact table below, since not all markdown clients render mermaid (Slack, plain email, basic viewers fall back to the code block).
Use a class definition block at the top so the colors render consistently:
classDef engaged fill:#d4edda,stroke:#155724,color:#155724
classDef new fill:#f8f9fa,stroke:#6c757d,color:#212529
classDef recent fill:#fff3cd,stroke:#856404,color:#856404
classDef stale fill:#f8d7da,stroke:#721c24,color:#721c24
classDef gap fill:#e2e3e5,stroke:#383d41,color:#383d41,stroke-dasharray: 5 5
Then below the chart, a one-line legend: 🟢 Engaged · ⚪ New · 🟡 Recently appointed · 🔴 Stale (excluded) · ⬛ Gap.
Per category, lead with a 5-column table.
| Name | Title | Status | Source |
|---|
| Name | Title | Status | Source |
|---|
(Explicit engagement evidence required. If none: "No Champions identified — see Potential Champions under Influencers.")
| Name | Title | Status | Source |
|---|
Group by named sub-bucket (Strategic Partnerships, Communications, Adjacent Marketing, Operations, Legal, HR, Potential Champions, etc.). One 5-column table per bucket that has contacts.
| Name | Title | Appointment Date | Status |
|---|
These also appear in their primary category with a RECENTLY APPOINTED flag — this is a duplicated index for visibility.
Richer profiles for the deep-researched contacts.
stale data, research data limited, RECENTLY APPOINTED, source disagreementsSpecific to this account — not a generic playbook. Anchor each step to a named person and a real account-context signal (active pilot, recent appointment, contract date, coverage gap).
| Name | Reason | Recommended Action |
|---|
Use for: contacts confirmed departed via deep research, NO_MATCH failures with no fallback, account_research records flagged for data quality issues. Do not include in the main map.
Concrete next actions, each referencing a specific person, persona gap, hypothesis, or moment surfaced above — and tied to the map purpose. No generic skill mentions or boilerplate. Omit any line that doesn't have a concrete target.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Searches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
npx claudepluginhub zoominfo/zoominfo-mcp-plugin --plugin zoominfo