mcpField
C
champion-identifier-skill

champion-identifier-skill

github.com/scientiacapitalMarketing & growth2838 installsUpdated 3w ago
Repository

About champion-identifier-skill

A sales skill that finds and ranks potential internal champions at a target account for Epiphan. It grounds scoring in HubSpot and Apollo records, qualification tiers, and engagement evidence, then produces a DMU map and draft-first outreach.

Key features

  1. 01Search HubSpot contacts and company records
  2. 02Find additional people through Apollo
  3. 03Qualify candidates and apply influence tiers
  4. 04Score candidates using evidence
  5. 05Create a DMU map and outreach drafts

Use cases

  1. 01Identify advocates at a target company
  2. 02Rank contacts using engagement and role evidence
  3. 03Map economic buyers and other decision roles
  4. 04Prepare reviewed outreach as Gmail drafts

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/scientiacapital/skills --skill champion-identifier-skill

After installing, type/champion-identifier-skillin Claude Code to confirm it loaded.

Bundled filesconfig.jsonreference/champion-playbook.md

Details

From the project README

Champion Identifier

Find and rank the real people at a target account who have the pain Epiphan solves, personally gain when a deal closes, and can be reached. Candidates come from HubSpot contacts, engagement history, and Apollo title search; influence and ATL/BTL tier come from `qualify_lead`; the four judgment dimensions are scored from evidence the tools returned. Output is a ranked champion card set, a decision-making-unit (DMU) map, and draft-first outreach for the top candidates. Keywords: `champion`, `internal advocate`, `multi-threading`, `DMU`, `economic buyer access`

<quick_start> Trigger: "find potential champions at [Company]" or "who will champion Epiphan internally at [Company]?" Input: target company; optionally the deal id, product focus, and known contacts.

Tool order:

  1. hubspot_search_companies (Epiphan AI) → company id, vertical, device_count, owner.
  2. hubspot_find_contacts_by_role + hubspot_search_contacts (by company) → every known contact; activity_get_timeline per contact for engagement evidence (emails, calls, form fills, page views).
  3. apollo_mixed_people_api_search on the company domain with vertical ATL/GRAY titles → people not yet in HubSpot; apollo_people_bulk_match for verified email/title/tenure.
  4. Gate Q — qualify_lead on every candidate. Exclusion verdicts remove them; the ATL/GRAY/BTL tier is the Influence input. Account already a customer → stop and route to account management.
  5. Score the remaining candidates (section below), rank, build the DMU map.
  6. Deliver: ranked cards in chat; get_writing_style once + check_my_copy per string, then create_draft for the top 1-2 candidates; optional hubspot_create_contact_note on the chosen champion (confirm-first). </quick_start>

<house_rules> Customer-facing skill. Before output, run the gates in order (details: ~/.claude/skills/epiphan-house-rules-skill/reference/gates.md): S: search_product_catalog (Epiphan AI) or Epiphan Knowledge search before any product claim. B: check_my_copy on every customer-facing string. Q: qualify_lead right after the candidate pull, before tiering/enrichment/drafts. D: outbound text becomes a Gmail draft, never a send. Identifiers (owner IDs, portal, emails, seats) come from reference/identifiers.md in that skill — do not restate them here. On any gate failure follow reference/self-healing.md (retry, degrade with a flag, alert Tim, halt) and append a line to ~/.claude/skill-runs/.jsonl. </house_rules>

<success_criteria>

  • Company resolved in HubSpot; vertical and customer/channel status known before any scoring
  • Every candidate traces to a HubSpot contact id or an Apollo person record (no invented names)
  • Every candidate passed through qualify_lead; tier shown on the card; exclusions counted
  • 3-4 candidates scored on the four evidence dimensions plus the qualify_lead influence tier
  • DMU map lists economic buyer (ATL), champion, technical validator, end user, each with a real record or marked unknown
  • Top 1-2 outreach messages staged as Gmail drafts after check_my_copy; nothing sent
  • "No champion found" path taken explicitly when every candidate scores < 30
  • Outcome sidecar and run-log line written </success_criteria>

What makes a champion

  • Has Pain: directly affected by the problem Epiphan solves (lecture capture gaps, AV staffing, unreliable streaming, courtroom recording compliance).
  • Has Power: can influence the decision or control budget — the qualify_lead tier (ATL / GRAY / BTL) is the source of truth, never a title guess.
  • Has Gain: personally benefits when we win.
  • Is Accessible: a real engagement trail or a warm path exists.
  • Is Willing: shows change-agent behaviour in the record.

Champion = sells for you internally. Coach = helpful but passive. Blocker = loves the incumbent or loses if you win.

Stage 1 — Candidate pull (live)

  1. hubspot_search_companies by name/domain. Capture id, industry, device_count, lifecyclestage, owner.
  2. hubspot_find_contacts_by_role (roles: IT leadership, AV/media, academic technology, facilities, procurement) and hubspot_search_contacts filtered to the company. Capture title, owner, last activity.
  3. activity_get_timeline for each contact (90 days): emails opened/replied, calls, form fills, demo requests, pricing page views. This is the Engagement evidence.
  4. apollo_mixed_people_api_search: q_organization_domains = company domain, person_titles = the vertical's ATL + GRAY titles from CLAUDE.md. apollo_people_bulk_match for the top 10 to confirm email, tenure, prior employer.
  5. Prior calls: search_calls (Epiphan AI) by company → who attended, what they said.

Fewer than 2 candidates after step 4 → widen titles one level (GRAY → senior BTL) and mark partial (stage: pull).

Stage 2 — Gate Q

qualify_lead per candidate. Verdicts: exclude (customer, channel, product-only engager, AE-active, suppressed), STALE AE LEAD (surface separately), or net-new with tier. Do not re-implement the keyword tables; they live in CLAUDE.md and epiphan-house-rules-skill reference/gates.md. If the account itself is a customer, stop: champions inside a customer account belong to account management. qualify_lead unavailable → halt.

Stage 3 — Scoring

DimensionPointsEvidence source
Influence0-20qualify_lead tier: ATL 20, GRAY 12, BTL 5
Role relevance0-10title and department vs the pain Epiphan solves
Pain evidence0-10call transcripts, form fills, timeline notes mentioning the problem
Personal gain0-10role start < 12 months, owns the affected program, KPIs tied to the problem
Accessibility0-10replied before, attended a call, warm path via existing contact, verified email
Engagement0-10last-90-day activity count from activity_get_timeline

Total 0-70. 50-70 ideal champion · 38-49 strong potential · 30-37 possible with work · < 30 not a champion.

Every point must cite a record (contact id, call id, timeline event, Apollo field). If a dimension has no evidence, score it 0 and say no evidence, do not estimate.

Stage 4 — Output

# Champion Identification: [Company] — [vertical] — [date]
Company id [HubSpot id] | device_count [n] | owner [name] | deal [id or none]

## Candidates (ranked)
### #1 [Name] — [Title] — tier [ATL/GRAY/BTL] — score [n]/70
Record: HubSpot [id] / Apollo [id] · tenure [n] mo · last activity [date, type]
Influence [n]/20 (tier) · Relevance [n]/10 · Pain [n]/10 (evidence: …) · Gain [n]/10 · Access [n]/10 · Engagement [n]/10
Why: [pain] / [gain] / [how they can help: intel, EB intro, internal advocacy]
Outreach: [warm intro via <existing contact> | direct] → draft id [Gmail draft id]
### #2 … ### #3 …

## Who NOT to lead with
[Name] — [Title] — [too senior / blocker risk / AE-active] — revisit when [condition]

## DMU map
| Role | Person | Record | Tier | Status |
| Economic buyer | … | HubSpot id or `unknown` | ATL | via champion |
| Champion | … | … | … | draft staged |
| Technical validator | … | … | … | … |
| End user | … | … | … | … |

## Stale AE leads surfaced
[Name] — owner [AE] — last activity [date] — Tim decides

If the DMU has no ATL person, say so: "No economic buyer identified — ask champion #1 for the introduction" and set atl_count: 0.

Stage 5 — Draft-first outreach

For the top 1-2 candidates: get_writing_style once per session, write the warm-intro or direct message, check_my_copy, then create_draft (Gmail) from the Tim mailbox with the candidate's verified email. Return the draft ids. Product claims inside the message go through Gate S first. Never send.

Optional, confirm-first: hubspot_create_contact_note on the chosen champion with the score, evidence, and plan; hubspot_create_contact_task for the follow-up.

Stage 6 — Champion development plan

Phase 1 contact (week 1) → Phase 2 discovery and qualification (weeks 1-2) → Phase 3 tailored demo and ROI (weeks 2-3) → Phase 4 activation: ask for the economic-buyer intro, arm them with a one-pager (weeks 3-4) → Phase 5 deal progression with regular check-ins. Discovery questions, qualification questions, and warning signs are in reference/champion-playbook.md.

Stage 7 — Emit outcome sidecar + run log

Write ~/.claude/skill-analytics/last-outcome-champion-identifier-skill.json:

{"ts":"[UTC ISO8601]","skill":"champion-identifier-skill","version":"<frontmatter version>","variant":"default",
 "status":"[success|partial|error]","runtime_ms":[estimated ms from start],
 "metrics":{"candidates_pulled":[n],"excluded_by_qualify":[n],"stale_ae_surfaced":[n],"champions_identified":[n],"atl_count":[n],"drafts_staged":[n],"no_champion_found":[true|false]},
 "error":null,"session_id":"[YYYY-MM-DD]"}

atl_count is the number of candidates whose qualify_lead tier is ATL. Append one line to ~/.claude/skill-runs/champion-identifier-skill.jsonl.

<self_healing> partial = a ranking was produced but a stage degraded: Apollo search failed after retry (HubSpot contacts only), activity_get_timeline unavailable (Engagement scored 0 with no evidence), create_draft failed (copy returned in chat). No champion found (all candidates < 30) is a success with no_champion_found: true: report the best coach, the missing ATL, and a next step (ask for intro or route to linkedin-sales-navigator-alt-skill for new-in-role people). error = company not resolvable in HubSpot or Apollo, or qualify_lead unavailable (halt). Ladder per ~/.claude/skills/epiphan-house-rules-skill/reference/self-healing.md: retry once → degrade with a flag → Slack DM Tim → halt with state in ~/.claude/skill-state/champion-identifier/. </self_healing>

<anti_patterns>

  • Naming a "champion" who is not in HubSpot or Apollo results.
  • Scoring Influence from the title string; the tier comes from qualify_lead.
  • Leading with a BTL technician because they replied once; influence is weighted higher than engagement.
  • Putting outreach text in chat instead of a Gmail draft. </anti_patterns>

<reference_guides>

  • reference/champion-playbook.md — discovery and qualification questions, warning signs, relationship tips
  • ~/.claude/skills/epiphan-house-rules-skill/reference/gates.md — Gate Q verdicts, tier semantics
  • ~/.claude/skills/epiphan-house-rules-skill/reference/identifiers.md — owner IDs, portal, emails (never restate here)
  • Siblings: contact-hunter-skill, linkedin-sales-navigator-alt-skill, meddic-call-prep-auto-skill </reference_guides>

Comments

Markdown supported