Skip to content
Marketing
Skill

/linkedin-job-post-to-buyer-pain-map

Takes pasted LinkedIn job posts or hiring descriptions and converts them into a structured buyer pain map with inferred pains, capability gaps, buy-vs-build signal, account priority scores, and suggested outreach angles. Use when asked to analyze hiring posts, decode job

From plugin
opendirectory-gtm-skills
58364 skills
Install
$ npx -y skills add Varnan-Tech/opendirectory --skill linkedin-job-post-to-buyer-pain-map --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/linkedin-job-post-to-buyer-pain-map

Context preview

The summary Claude sees to decide when to auto-load this skill.

Takes pasted LinkedIn job posts or hiring descriptions and converts them into a structured buyer pain map with inferred pains, capability gaps, buy-vs-build signal, account priority scores, and suggested outreach angles. Use when asked to analyze hiring posts, decode job

SKILL.md

linkedin-job-post-to-buyer-pain-map.SKILL.md
name: linkedin-job-post-to-buyer-pain-map
description: Takes pasted LinkedIn job posts or hiring descriptions and converts them into a structured buyer pain map with inferred pains, capability gaps, buy-vs-build signal, account priority scores, and suggested outreach angles. Use when asked to analyze hiring posts, decode job descriptions for buyer intent, build a pain map from job listings, extract GTM signals from hiring activity, or prioritize accounts based on hiring data. Trigger when a user says "analyze these job posts", "what pain does this hiring signal", "build a pain map from these listings", "decode this job description", or "score these accounts from their hiring".
author: ajaycodesitbetter
version: 1.0.0

LinkedIn Job Post to Buyer Pain Map

Take LinkedIn job posts. Decode them into a structured buyer pain map with scores, pains, and outreach angles.

---

**Critical rule:** Every inferred pain must cite specific language from the job description that supports it. Never hallucinate pains that are not grounded in the text. If a post is too generic to infer pain, say so explicitly and assign a low signal strength score.

**Ethical rule:** Do not infer personal attributes or protected characteristics about candidates. Focus strictly on company-level operational pain and organizational needs.

---

Step 1: Setup Check

Confirm required env vars:

echo "GEMINI_API_KEY: ${GEMINI_API_KEY:+set}"

**If GEMINI_API_KEY is missing:** Stop. Tell the user: "GEMINI_API_KEY is required. Get it at aistudio.google.com. Add it to your .env file."

---

Step 2: Collect Inputs

The skill needs 3 required inputs. Collect them before proceeding.

2a: Product Brief

Ask: "Describe your product in 2-5 sentences. What do you do, what is your core value prop, and who do you target?"

**If the user already included this in their prompt:** Extract it. Confirm: "Product brief captured: [summary]."

2b: ICP Description

Ask: "Describe your ideal customer profile in 2-6 bullets: industries, company sizes, roles you sell to, tech stack hints."

**If the user already included this in their prompt:** Extract it. Confirm: "ICP captured: [summary]."

2c: Hiring Posts

Ask: "Paste the job descriptions you want analyzed. For each post, include the company name, job title, and the full description text. You can paste 1-15 posts."

**Accepted formats:**

  • Raw pasted text with company name and job title clearly labeled
  • Structured JSON objects with fields: `company_name`, `job_title`, `location` (optional), `seniority` (optional), `team_or_function` (optional), `job_description_text`, `job_url` (optional)
  • Multiple posts separated by clear delimiters (--- or numbered)

**If any field is missing:** Infer what you can from the description text. If company_name or job_description_text is missing, ask for it before proceeding.

2d: Optional Inputs

If the user provides any of these, capture them:

  • `account_notes`: additional context per company (funding, tech stack, known tools, contacts)
  • `focus_dimension`: "pipeline" (bias toward scoring and prioritization), "positioning" (bias toward messaging angles), or "both" (default)

---

Step 3: Extract Signals

For each job post, parse and extract:

1. **Team / function:** Which team is this role on? (GTM, Product, Infra, Data, RevOps, CS, Engineering, etc.) 2. **Seniority:** IC, Senior IC, Manager, Director, VP, C-level 3. **Responsibilities emphasis:** Classify the dominant mode:

  • Fire-fighting: "stabilize", "fix", "reduce downtime", "unblock"
  • Building new: "build from scratch", "0→1", "greenfield", "design and implement"
  • Optimizing: "scale", "optimize", "improve efficiency", "automate"
  • Replacing: "replace legacy", "migrate from", "modernize"

4. **Requirement language:** Note keywords that signal intent: "first X hire", "critical role", "immediate", "must have" 5. **Tool / stack hints:** Any references to specific tools, platforms, or technology categories that overlap with the user's product area

**Group by company.** If multiple posts come from the same company, group their signals together.

State: "Extracted signals from X posts across Y companies."

---

Step 4: Score with the LLM

Read `references/scoring-rubric.md` for the full scoring model.

Build the LLM request:

cat > /tmp/pain-map-score-request.json << 'ENDJSON'
{
  "system_instruction": {
    "parts": [{
      "text": "You are a GTM analyst who specializes in decoding hiring signals into buyer intent. For each account provided, you will score three dimensions and infer company context. Rules: (1) Every score must include a one-sentence plain-text explanation. (2) signal_strength measures how many and how specific the hiring signals are relative to the user's product area. (3) urgency measures how time-sensitive the hiring need appears. (4) icp_fit measures how closely the company matches the user's ICP description. (5) Each score is 1-10. (6) overall_score = round((0.4 * signal_strength + 0.3 * urgency + 0.3 * icp_fit) * 10). (7) Infer buy_vs_build from job language. Use EXACTLY one of these labels: 'Leaning build', 'Leaning buy', 'Hybrid (buy-and-build)', 'Unknown'. (8) Infer stage_guess from company clues: funding stage, employee count, company type. (9) Output valid JSON only."
    }]
  },
  "contents": [{
    "parts": [{
      "text": "SCORING_CONTEXT_HERE"
    }]
  }],
  "generationConfig": {
    "temperature": 0.2,
    "maxOutputTokens": 4096
  }
}
ENDJSON
curl -s -X POST \
  "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d @/tmp/pain-map-score-request.json \
  | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['candidates'][0]['content']['parts'][0]['text'])"

Replace `SCORING_CONTEXT_HERE` with:

  • The product brief and ICP description from Step 2
  • The extracted signals per company from Step 3
  • The
Read more
Ships withopendirectory-gtm-skills

AI Agent Skills built for Founders who hate Marketing

Get the whole plugin