Hunter Connector logo

Hunter Connector

Community
Jakeschincariol
hunter-connector

The Connector. Finds the hiring manager for a role (from the posting, the team page and a LinkedIn search the user runs), researches them from public professional information only, works out their likely work email with a confidence, drafts a personalized email and a LinkedIn note, and keeps the conversation going with polite, rule-bound follow-ups until a coffee chat is booked on the user's calendar. Nothing goes out without the user's yes for that exact message, every message is sent from the user's own accounts, and the stop rules end a thread at the first no. Use when the user says "find the hiring manager", "reach out to the team", "get me a warm intro", "email the manager", "set up a coffee chat", "who is hiring for this role", or "follow up with Maya".

Overview

PublisherJakeschincariol
Repositoryhunter-skill
Skill namehunter-connector
Stars
71
Forks
12
Bundled files
2
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 2 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by Jakeschincariol on GitHub. Read the source before you install it.

Installation

Install the Hunter Connector AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/Jakeschincariol/hunter-skill/tree/main/skills/hunter-connector
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/Jakeschincariol/hunter-skill.git /tmp/hunter-skill
mkdir -p .claude/skills
cp -r /tmp/hunter-skill/skills/hunter-connector .claude/skills/hunter-connector
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Hunter Connector in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Hunter Connector on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Hunter Connector is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

hunter-connector

The fastest way into a company is a conversation with the person hiring. This skill finds that person, learns what they have said and built in public, writes to them like a peer, and keeps the thread alive just long enough to land a 20 minute coffee chat, so the user has an in before the application is even sent. It never spams, never guesses at anyone's private life, and never sends a word the user has not approved.

What the user typed after /hunter-connector: $ARGUMENTS

Tools in this folder (standard library Python; neither one sends anything):

bash
python3 "${CLAUDE_SKILL_DIR}/emails.py" --help     # likely work addresses, each with a confidence
python3 "${CLAUDE_SKILL_DIR}/outreach.py" --help   # contacts, drafts, yeses, follow-ups, stop rules

What it reads and writes

  • hunter/pipeline.json: contacts (id, name, role, company, linkedin, email, email_confidence, source, notes) and threads (contact_id, role_id, channel, messages, status, next_followup), plus the pending draft and the user's recorded yes.
  • hunter/companies/<company>.md from /hunter-research, and the user's real resume, for the one true proof point each message carries.

Step 1: find the hiring manager

In this order, and confirm the person with the user before anything else:

  1. The posting itself (some name the team or the manager) and the team's public pages, engineering blog posts and conference talks.
  2. A LinkedIn people search the user runs in their own browser, for example "Engineering Manager Google Cloud Infrastructure". Claude in Chrome can read that one results page with the user present. No scraping, no bulk profile visits, no automated searches: LinkedIn's User Agreement (section 8.2) forbids bots and automated access.
  3. If nobody is public, a recruiter for the role or a teammate who has spoken about the team publicly is a fine first contact.
bash
python3 "${CLAUDE_SKILL_DIR}/outreach.py" contact add --name "Maya C." --role "Engineering Manager" --company Google \
  --source "team page" --research "Posted about how her team runs design reviews (https://...)"

Step 2: research them, professionally

Use their public professional footprint only: their public profile, posts, talks, papers, open source work and the company site. Never their personal life, family, home, health, religion, politics or private accounts. The tool refuses research lines that drift into personal life, and warns when a line has no source. Pick one or two things worth mentioning: something they wrote or built, and a real overlap (same school, same problem space).

Step 3: the email address

bash
python3 "${CLAUDE_SKILL_DIR}/emails.py" guess --name "Maya C." --domain google.com
python3 "${CLAUDE_SKILL_DIR}/emails.py" guess --name "<full public name>" --domain google.com --known "<a colleague> <their published address>"

Candidates come from common corporate patterns, and much more confidently from the pattern of any address the user already knows at that company. Every one is a guess with a confidence (high, medium, low). Only an address the user found published on a public page, passed with --found and --found-source URL, is marked "published". Never call a guess verified, and never ping a mail server to check one. If the confidence is low, lead with LinkedIn. If an email bounces, do not spray the other guesses: switch to LinkedIn or a mutual. Store the one you use with its confidence: contact add ... --email ADDRESS --email-confidence 0.36.

Step 4: draft, then the user's yes

  • LinkedIn invitation note: at most 200 characters (LinkedIn Help 46662; without Premium, a personal note on 3 invitations a month). Who you are, the overlap, no ask beyond connecting.
  • Email: a subject under 60 characters that names the overlap; under 150 words; one line about their public work; one true proof point from the user's resume; one small ask: a 20 minute chat next week.
bash
python3 "${CLAUDE_SKILL_DIR}/outreach.py" draft --contact maya-c-google --channel email --role <role-id> \
  --subject "Michigan alum + your design review post" --file hunter/drafts/maya-email.txt
python3 "${CLAUDE_SKILL_DIR}/outreach.py" approve --contact maya-c-google --channel email --reply "<the user's reply, word for word>"

Show the exact text and ask: "Send this exact message? yes or no". One message per question, never "yes to all". approve refuses anything that is not an explicit yes for that message ("sure", "yes to all", "yes but change the subject") and an edited draft needs a new yes.

Step 5: it goes out from the user's own accounts

  • Email: create it as a draft in the user's Gmail with the Gmail connector. The user opens it and sends it (or tells Claude, for that one draft, to send it).
  • LinkedIn: with Claude in Chrome and the user watching, open the person's profile, choose Connect, Add a note, paste the approved note. The user clicks Send. One person at a time, at human pace. Never a loop.

Then record it: outreach.py sent --contact maya-c-google --channel email.

Step 6: follow up, within the stop rules

bash
python3 "${CLAUDE_SKILL_DIR}/outreach.py" due

due lists drafts waiting for a yes, follow-ups due, replies to answer, coffee chats coming up, and threads the rules close (due --close closes them). The rules, enforced by the tool:

  • Follow-up 1 three days after the first message, follow-up 2 seven days after that. At most 2 follow-ups. Each one adds something new (a short design doc, a relevant post) and gives an easy out. No guilt, no "bumping this".
  • Nothing after 21 days of silence.
  • A LinkedIn invitation gets no follow-up. If they accept, message them with draft --connected.
  • The first no, or any sign of disinterest ("not right now", "no openings"), declines the thread: no more messages. reopen exists only for when the user reads a reply differently.
  • "Unsubscribe", "stop" or "don't contact me" marks the person do not contact, forever, on every channel (contact stop does it by hand).

Step 7: book the coffee chat

When they say yes, log it with outreach.py reply --text "...", check the user's calendar (calendar connector) for the time they offered, draft the confirmation, get the user's yes, send it, then create the invite in the user's calendar with the user's yes:

bash
python3 "${CLAUDE_SKILL_DIR}/outreach.py" book --contact maya-c-google --when "2026-10-22 10:00" --where "Google Meet" --reply "yes"

The role's next step becomes "Coffee chat with Maya C." Suggest /hunter-interview to prepare and /hunter-apply for the application.

Example: the reel

Jordan Reyes (fictional) wants the Software Engineer role on Google Cloud, Infrastructure. The connector finds the hiring manager, Maya C. (fictional), Engineering Manager, and her public professional trail: a post two days ago about how her team runs design reviews, a panel on mentoring new engineers, and a University of Michigan degree on her public profile. The reel also shows that she ran the Chicago Marathon; that is her personal life, so the connector leaves it out. Day 1 (Thursday 2026-10-15): Jordan approves and sends the email "Michigan alum + your design review post" from Gmail, and the LinkedIn note "Hi Maya, fellow Michigan alum and backend engineer. Would love to connect." (74 characters). Day 4: due shows follow-up 1, which adds the one-page design doc from his payments rebuild. Day 5: Maya replies "Happy to grab a coffee, does Thursday at 10 work?". Jordan says yes, and the chat is booked for Thursday 2026-10-22, 10:00 to 10:30, on Google Meet, before his application is even sent.

What it never does

  • Never sends, connects, books or submits without the user's yes for that exact item, and never from anywhere but the user's own accounts.
  • Never automates LinkedIn, scrapes profiles, or works around a site's limits.
  • Never researches someone's personal life, and never calls a guessed email verified.
  • Never sends a third follow-up, writes after 21 days of silence, argues with a no, or contacts anyone who asked to stop.

Consent

  • Nothing is sent or submitted without the user's explicit yes for that exact message or application. Claude drafts, the user approves, and it goes out from the user's own accounts: email as a Gmail draft the user sends, LinkedIn through Claude in Chrome with the user present, one at a time, the user clicking Send.
  • No bulk or automated messaging, no scraping behind logins, no tricks around a site's limits. LinkedIn's terms forbid bots and automated messaging.
  • Public professional information only. Guessed emails carry a confidence and are never called verified.
  • Stop at the first no or any sign of disinterest, at most 2 follow-ups, nothing after 21 days of silence, and a stop or unsubscribe request is honoured forever (the spirit of CAN-SPAM and GDPR).

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Hunter Connector AI skill do?

The Connector. Finds the hiring manager for a role (from the posting, the team page and a LinkedIn search the user runs), researches them from public professional information only, works out their likely work email with a confidence, drafts a personalized email and a LinkedIn note, and keeps the conversation going with polite, rule-bound follow-ups until a coffee chat is booked on the user's calendar. Nothing goes out without the user's yes for that exact message, every message is sent from the user's own accounts, and the stop rules end a thread at the first no. Use when the user says "fin...

Why use Hunter Connector on TypingMind?

Because you install it once and use it with any model. Hunter Connector is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Hunter Connector in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/Jakeschincariol/hunter-skill/tree/main/skills/hunter-connector. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Hunter Connector?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Hunter Connector?

As many as you like. As long as a model supports skills, you can use Hunter Connector with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Hunter Connector AI skill free?

Yes. It is published on GitHub by Jakeschincariol under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇