By bgolubovski
Personal executive recruiter for Product Leadership opportunities. Five-phase pipeline: daily sourcing (LinkedIn + ATS-Google), JD-tailored CV + outreach packet build, approval-gated sends, meeting / interview prep with interviewer research + scope-disambiguation question + first-90-days narrative branches, and post-call debrief that captures intel, updates the dashboard, and identifies the next action. Includes a rich live dashboard with cohort views, score histogram, domain breakdown, follow-up tracker, and inbound-signal detection.
Based on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Sources senior product roles directly from major ATS domains (Greenhouse, Lever, Workday, Ashby, iCIMS, Jobvite, BambooHR, SmartRecruiters, Workable, Teamtailor) via Google's site: operator. Catches roles that never reach LinkedIn or arrive there days late. Used by the phase-1-sweep skill as Step 1B alongside the LinkedIn sweep. Returns a structured list of live, on-ICP candidate URLs ready to feed into the existing scoring pipeline. <example> Context: Phase 1 daily sweep needs to source roles from beyond LinkedIn. user: "Run the ATS-direct sweep for UK and US-remote VP Product roles." assistant: I'll build per-region site: queries against the 10 ATSs, run liveness checks on every URL before fetching, route SPA-based ATSs (Ashby, Workday) through the jd-extractor for Chrome render, and return a deduped candidate list. <commentary> ATS-direct sourcing has different failure modes than LinkedIn (staleness, SPA shells, recruiter-aggregator pollution). The agent handles each. </commentary> </example> <example> Context: A specific company isn't on LinkedIn but might post on its ATS. user: "Did Front, HiveMQ, or Compyl post a senior product role recently?" assistant: I'll run targeted site: queries against jobs.lever.co and jobs.ashbyhq.com filtered by company name. Liveness check first, then fetch only live URLs. <commentary> The agent is also useful for ad-hoc, company-targeted ATS lookups, not just batch sweeps. </commentary> </example>
Applies JD-driven tailoring to a baseline CV docx using a strict discipline. Identity blocks (name, headline scaffold, dates, education) stay stable. Tailorable fields are limited to one headline-positioning fragment, one adjacency sentence at the end of the executive summary, at most two of six career-highlight cells, the italic context line per relevant past role, and the geo-conditional header. Generates the tailored docx via XML-level text replacement (no python-docx required) and converts to PDF via libreoffice. Use this whenever a CV needs to be tailored to a specific role - never rewrite the CV from scratch. <example> Context: Phase 2 packet build needs a JD-tailored CV for a specific role. user: "Tailor the CV for brevia-vp-product" assistant: I'll apply the discipline rules: change only the headline-positioning, the adjacency sentence, one or two highlight cells, and the italic context lines per role. The rest of the CV stays exactly as the baseline. <commentary> The discipline preserves identity. Without it, every tailored CV becomes a one-off rewrite, which the user has explicitly flagged as unacceptable. </commentary> </example> <example> Context: Mid-process JD reveal changes the role's framing significantly. user: "The actual JD reads as Office-of-the-CPO, not line product. Refresh the CV." assistant: Same discipline applies - I'll swap only the headline, adjacency, one highlight cell, and italic context lines, this time around the IC framing. Identity stable. <commentary> Reframing happens in the discipline-permitted fields, not by rewriting the resume. </commentary> </example>
Pulls full job description bodies via the LinkedIn-to-ATS redirect URL extraction trick. LinkedIn's `/jobs/view/` page renders a skeleton in unauthenticated/limited views, but the actual JD lives behind the "Apply on company website" link, which is a `/safety/go/?url=...` redirect to the underlying ATS. This agent recovers the destination ATS URL, navigates there, and extracts the full JD body for use in scoring, CV tailoring, and outreach drafting. <example> Context: Phase 1 sweep needs the full body of a LinkedIn job whose card-level data alone is insufficient for scoring. user: "Pull the full JD for https://www.linkedin.com/jobs/view/EXAMPLE001/" assistant: I'll extract the destination ATS URL from the apply-link redirect, navigate, and pull the full JD body. <commentary> LinkedIn unauth view is a skeleton; the JD body is at the destination ATS. Use the redirect-URL extraction trick to recover it. </commentary> </example> <example> Context: Phase 2 packet build requires a JD body to derive replacements for CV tailoring and to identify anti-bot screener words. user: "Build the packet for brevia-vp-product" assistant: First I'll pull the full JD via the ATS redirect so I can tailor the CV against the actual mandate signals and detect any screener words like 'crane'. <commentary> Card-level data misclassified the title implication; the body has the real reporting line, customer names, and screener test. </commentary> </example> <example> Context: Score-role skill receives a LinkedIn URL with no other context. user: "score this https://www.linkedin.com/jobs/view/EXAMPLE002/" assistant: I'll pull the full JD body first - the title-level read at LinkedIn often contradicts the body (saw this happen with [sample-healthcare-AI-co]'s "Head of Product Transformation" being a chief-of-staff IC role). <commentary> Always extract the body before scoring. Card-only scores are low-confidence. </commentary> </example>
Research a named interviewer (LinkedIn + TheOrg + Crunchbase + web search) and refresh company intel for a meeting prep packet. Used by phase-4-prep skill. Produces structured interviewer profile + company-intel-refresh notes that phase-4-prep populates into the meeting prep templates.
Drafts outreach messages (Connect+Notes, longer DMs, InMails, application Summary text, cover letters) per the user's outreach style discipline. Applies the channel character limits, peer-to-peer voice, banned punctuation/phrases, required structural elements, and JD-specific hooks. Always produces the variants the calling skill needs (primary contact + backup contact, short Connect+Note + longer DM, sometimes a cover-letter Summary). Never sends - returns the drafts for the calling skill to surface to the user. <example> Context: Phase 2 packet build needs Connect+Notes for both the CTO and CEO of a target company. user: "Draft outreach for brevia-vp-product, primary Alan Mosca (CTO), backup Dev Amratia (CEO)" assistant: I'll draft two Connect+Notes (300 char Premium each), one for Alan with the CTO/AI-native angle and one for Dev with the founder-level angle, plus a longer DM for use after a connection accepts. <commentary> Always produce both primary and backup variants. Always include a longer DM for the post-accept conversation. </commentary> </example> <example> Context: A workable application form has an optional Summary box and a JD-mandated screener word ("crane"). user: "Draft the Summary for the [sample-construction-AI-co] Workable application; the JD requires the word 'crane' to be present." assistant: I'll draft a 1500-char Summary that lands the JD-specific hooks, embeds 'crane' naturally in a sentence about the user's pattern match to the AI-for-construction thesis. <commentary> Application form copy is just another channel. Same discipline rules apply (no em/en dashes, peer voice, no banned phrases). Anti-bot screener words go in naturally, not flagged as a screener-test inclusion. </commentary> </example>
Generate Day-5/7/10 follow-up bump messages for any pending roles. Triggers on "what bumps today", "Day-5 bumps", "follow-ups due", "/bump", "/bump X", or "what should I follow up on today". Reads the dashboard, finds roles in the bump window or past Day-10 final-action threshold, and drafts the appropriate bump message per role per follow-up.yaml templates.
Read the current dashboard and surface today's actions, status counts, and follow-up windows. Triggers on "where do I stand", "today's actions", "dashboard status", "/dashboard", "what's the state", "status check", or first thing in the morning before the sweep. Lightweight read-only operation that summarizes the pipeline without changing anything.
Run the daily Phase 1 sweep for senior product leadership roles. Triggers on "run today's sweep", "Phase 1", "find new roles", "/sweep", "what's new today", "morning sweep", "scan LinkedIn for product roles". Sources roles from LinkedIn AND directly from major ATS domains (Greenhouse, Lever, Workday, Ashby, etc.) via Google site: search, pulls JD bodies via the apply-link redirect or direct fetch, scores each role 1-10 against the user's ICP and scoring weights, dedupes against the existing dashboard, and produces a Tier-1 / Tier-2 / Skip greenlight summary. Stops before Phase 2 - waits for the user's per-role greenlight.
Build a Phase 2 outreach packet for a single greenlit role. Triggers on "build packet for X", "tailor CV for X", "Phase 2", "packet X", "/packet", or any request to prepare an application for a specific company / role. Pulls the full JD via the ATS redirect, identifies the right contacts, generates a JD-tailored CV (docx + PDF) per the discipline rules, drafts channel-appropriate outreach (Connect+Note + longer DM), and saves the packet under outreach/{slug}/. Stops before Phase 3 - waits for the user's explicit "send" approval.
Walk through Phase 3 send for a single greenlit packet. Triggers on "send X", "Phase 3 X", "/send X", "fire X", "let's send X", or "ready to send X". Opens the right LinkedIn surface for each channel (Connect+Note dialog, DM thread, InMail compose), types the drafted message into the field, and stops with the cursor positioned for the user to click Send. Never sends autonomously. Walks the user through each channel in priority order; after each user-confirmed send, updates the dashboard from "drafted" to "pending" with sendDate today.
Uses power tools
Uses Bash, Write, or Edit tools
A personal executive recruiter for Product Leadership job hunts (CPO, VP/SVP Product, Head of Product at scale). The plugin runs the full pipeline: daily sourcing, fit-scored triage, JD-tailored CV generation, contact-aware outreach drafts, approval-gated sends, meeting / interview prep with interviewer research, and post-call debrief. Built for senior product operators who want a recruiter-grade workflow without burning a recruiter retainer.
Five phases, all approval-gated.
Phase 1: Source and rank. Sweeps LinkedIn AND major ATS domains (Greenhouse, Lever, Workday, Ashby, iCIMS, Jobvite, BambooHR, SmartRecruiters, Workable, Teamtailor) via Google site: operator. Pulls full JDs via the apply-link redirect to the underlying ATS or directly from the ATS, scores each role 1-10 against your fit criteria, dedupes against your existing dashboard, and produces a Tier 1 / Tier 2 / Skip greenlight summary.
Phase 2: Packet build. For each role you greenlight, identifies the right contact (job poster, hiring manager, 1st-degree, 2nd-degree mutuals), tailors the CV to the JD using a discipline that keeps identity stable (only the adjacency sentence, one or two highlight cells, and per-role italic context lines change), and drafts channel-appropriate outreach (Connect+Note, longer DM if Open Profile available, InMail as last resort).
Phase 3: Send. Walks you through send one role at a time. The plugin opens the right LinkedIn surface, types the message into the field, and stops. You click Send. No autonomous sending.
Phase 4: Meeting / interview prep. When a contact accepts, replies, or books a meeting, the plugin builds a prep packet for the call. Researches the named interviewer (LinkedIn, TheOrg, Crunchbase, web), refreshes company intel, generates the scope-disambiguation question, first-90-days narrative (with branches if scope is ambiguous), questions to ask, one-line answers to likely questions back, comp posture, friction flags, and a wrap-up signal checklist. Saves three artifacts per call: full markdown, interactive HTML with TOC and Call-mode toggle, and a scannable one-page card. Supports rounds: screen, working-session, panel, final, exec, reference-check-prep. --deep flag triggers maximum-depth company intel.
Phase 5: Post-call debrief. After a Phase-4-prepped call, the user pastes their notes. The plugin parses what was said, captures scope / comp / process / friction signals, structures a debrief artifact, updates the dashboard, and identifies the next action (prep next round, send thank-you and wait, send requested materials, passive watch, mark rejected, or escalate to a different contact). Prompts for memory writes when patterns emerge that contradict prior assumptions.
Seven config files in config/ define the user-tunable parts. Edit them at install time, then re-run.
icp.yaml - target role titles, search keywords, seniority, sector preferencesgeo-rules.yaml - default location, opt-in regions, geo-conditional CV header stringsscoring.yaml - dimension weights for the 1-10 fit score (stage, domain, scope, comp, geo, founder, etc.)channels.yaml - DM / Connect+Note / InMail order, credit-preservation rules, character limitsfollow-up.yaml - Day-5 / Day-7 / Day-10 thresholds for bumps and final-actionoutreach-style.yaml - tone, banned punctuation (em/en dashes), sign-off, languageats-sources.yaml - the 10 ATS domains scanned in Phase 1B, with per-ATS liveness checks and SPA-render routingThe plugin does NOT ship with a CV baseline. Place your own master CV at templates/cv-baseline.docx (any executive product CV will do). The tailoring discipline preserves your identity blocks (name, headline scaffold, work history dates, education) and only swaps:
This lets you ship a JD-tailored CV without the false-positive rebuild risk. The structural expectations are documented in scripts/tailor_cv.py and agents/cv-tailor.md.
Note: the CV filename convention currently includes the operator's name (e.g. Operator-FirstName-CV-<slug>.docx). To use this plugin as-is, customize the prefix in scripts/tailor_cv.py and agents/cv-tailor.md to match your own name, OR wait for the planned config/operator.yaml parameterization in a future version.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimnpx claudepluginhub bgolubovski/exec-recruiter --plugin exec-recruiterUpstash Context7 MCP server for up-to-date documentation lookup. Pull version-specific documentation and code examples directly from source repositories into your LLM context.
Comprehensive startup business analysis with market sizing (TAM/SAM/SOM), financial modeling, team planning, and strategic research
v9.44.1 — Patch release for Gemini environment/version detection and qwen auth gating. Run /octo:setup.
Complete creative writing suite with 10 specialized agents covering the full writing process: research gathering, character development, story architecture, world-building, dialogue coaching, editing/review, outlining, content strategy, believability auditing, and prose style/voice analysis. Includes genre-specific guides, templates, and quality checklists.
Comprehensive .NET development skills for modern C#, ASP.NET, MAUI, Blazor, Aspire, EF Core, Native AOT, testing, security, performance optimization, CI/CD, and cloud-native applications