Your ICP describes a costume. A Pain Signal Profile describes Tuesday at 11am.
A Pain Signal Profile is a five-part buying brief: a public signal, the operational pain it implies, why that pain is acute now, who feels it at 11am on Tuesday, and the exact phrases that person uses. It replaces a static ICP.
You already know the costume. Series B. VP of Marketing. Fifty employees. You can write that slide in your sleep. It does not tell you who to email on Thursday.
A Demand Gen Lead job post, four days ago, does. That is a thing they did. The PSP names what that post does to the person who feels the pipeline gap at 11am, and the words they use when they talk about it.
We scored both samples in this repo. The costume scored 37. The signal scored 100. The Python that did that is in scripts/score_psp.py. No LLM. No paid API.
The build guide teaches the framework to a human. This pack teaches the same framework to an agent.
A static ICP deck. A $15K positioning sprint's first week. The slide that says "our buyer is a VP" and then wonders why outbound is quiet.
Two commands. Works in Claude Code, Cursor, Codex, Grok, Copilot, Windsurf, Cline, OpenCode, and the rest of the skills CLI list.
npx skills add cmj-hub/claude-psp --all -g --full-depth/plugin marketplace add cmj-hub/gtm-operator-skills
/plugin install psp
Also: npm install github:cmj-hub/claude-psp then npx jmc-psp. Or curl -fsSL https://raw.githubusercontent.com/cmj-hub/claude-psp/main/install.sh | bash.
Artifact: examples/good.json versus examples/bad.json.
python3 scripts/score_psp.py --file examples/good.json
python3 scripts/score_psp.py --file examples/bad.jsonScore the sample. Then write yours. One loop. One ICP. Example data. That is the whole first run.
It will not hunt LinkedIn for you. It will not pick this quarter's PSP. It will not ingest your CRM.
This pack drafts and scores. It will not pick this quarter's PSP, ingest your CRM, or update when Gmail changes the spam window. Those are judgement calls and live data. This pack gives you the instrument and the rubric; you bring the account.
An ICP names who they are — stage, title, headcount. A Pain Signal Profile names what they just did, what that does to their Tuesday, why it is acute now, who feels it, and the phrases they actually use.
State is not a signal. A job post four days ago is. If you cannot fill all five parts, you do not have a PSP yet.
No. The Series-B sample is in examples/. Score it. Then swap in a signal from your book. Live hunt is not the first loop.
No. After the sample, signal-hunt names the kinds of public signals worth watching — job posts, funding, launches, hires. It does not log in. Closed-loop hunt on live accounts is out of scope here.
- Pain Signal Profile Extractor — the same job as this pack, hosted. No account, no key.
- Pain Signal Profiles framework
- Pain Signal Playbook
Foundation Scorecard — 14 checkpoints on the targeting layer under your GTM, plus a 90-minute prioritization guide.
That one does ask for an email, and it enrols you in a short follow-up on the same topic. Unsubscribe whenever.
The Friday Signal — one free edition a week on building GTM systems that compound. No pitch in it.
- claude-evp — 22-word Early Value Proposition per Schwartz tier
- claude-cold-email — signal, pain, EVP, binary ask
- claude-founder-brand — Pillar / Proof / Process / Person
- claude-pricing — three-tier contrast and pocket-price leaks
MIT. See LICENSE.
Built by Jay Mount Consulting.
assets/social-preview.png and assets/header.png are generated from assets/spec.json by a vendored renderer — no CI, no shared workflow, no network beyond the webfonts:
node assets/card.mjs assets/spec.json assets/ # social-preview.png + header.png
npm i playwright-core && node assets/demo.mjs assets/spec.json assets/demo.gif
