Signal Scanner
Detect, score, and prioritize buying signals for target accounts. This skill searches for live signals using WebSearch, scores them on a Fit x Timing x Access x Intent framework, and produces a prioritized action list for GTM teams.
Tools Used
- WebSearch — find real-time signals (funding, hiring, product launches, etc.)
- Read — load
docs/icp.md if it exists (output from the ICP Architect skill)
- Write — save per-company signal reports and summary
- Glob — check for existing signal files to avoid duplicate work
Methodology
Follow these steps in order. Do not skip steps. Do not fabricate data.
Step 1: Context Loading
Check if docs/icp.md exists using Glob.
If it exists: Read it. Extract ICP segments, buyer personas, and known buying signals. Summarize what you loaded so the user can confirm.
If it does not exist: Ask the user three questions before proceeding:
- What does your company sell? (one sentence)
- Who is your ideal buyer? (title, company size, industry)
- What signals indicate someone needs your solution? (list 3-5)
Wait for answers. Do not assume.
Step 2: Signal Taxonomy
Present the full taxonomy of 20 signal types across 4 categories. Ask the user to select 8-12 that are most relevant to their business. Only scan for the selected signal types in Step 3.
Company-Level Signals
- Fundraise announcement — Seed, Series A, B, C+ rounds
- Leadership change — New CXO, VP Sales, VP Marketing, Head of Growth
- Hiring pattern — SDR hiring spree, GTM engineering roles, marketing hires
- Product launch — Major feature release, new product line, GA announcement
- Partnership or integration — New tech partner, channel partner, integration announcement
- Tech stack change — Detected via job postings, BuiltWith, Wappalyzer, or press releases
- Office expansion — New market entry, new office location, international expansion
- Pricing change — New tier launch, pricing model shift, free tier added/removed
Engagement Signals
- Website visit — If tracking pixel is deployed (user must confirm)
- Content download or webinar attendance — Known engagement with your content
- G2/Capterra review activity — Wrote a review of a competitor product
- Community activity spike — Mentions on Reddit, LinkedIn, Slack, or forums about your problem space
- Email engagement — Opens, clicks, replies on existing sequences (user must confirm)
Market Signals
- Competitor customer churn — Switching signals, public complaints, cancellation posts
- Industry regulation change — New compliance requirement that creates demand
- Market event or conference — Speaking at or attending events in your space
- Competitor funding or acquisition — Creates urgency or uncertainty for their customers
Behavioral Signals
- Job posting pattern shift — New role types signal new priorities (e.g., first "Head of AI" hire)
- Social selling activity — Prospect sharing or engaging with content about your problem space
- Direct inquiry or demo request — Inbound interest (user must confirm)
Ask the user: "Which of these 20 signal types are most relevant to your business? Select 8-12 by number."
Wait for their selection before proceeding.
Step 3: Live Signal Scan
Ask the user to provide 1-5 target company names.
For each company, run WebSearch queries for every selected signal type. Use these search patterns:
| Signal Type |
Search Queries |
| Fundraise |
"[company] funding", "[company] series", "[company] raises" |
| Leadership change |
"[company] hires", "[company] appoints", "[company] new CXO/VP" |
| Hiring pattern |
"[company] careers", "[company] hiring", search for their jobs page |
| Product launch |
"[company] launches", "[company] announces", "[company] new feature" |
| Partnership |
"[company] partners with", "[company] integrates", "[company] integration" |
| Tech stack change |
"[company] tech stack", "[company] migrates to", check job postings for tech requirements |
| Office expansion |
"[company] opens office", "[company] expands to" |
| Pricing change |
"[company] pricing", "[company] new plan" |
| G2/Capterra reviews |
"[company] vs [competitor] G2", site:g2.com [company] |
| Community activity |
"[company] reddit", "[company] [problem-space-keyword]" |
| Competitor churn |
"switching from [competitor] to", "[competitor] alternative", "leaving [competitor]" |
| Regulation change |
"[industry] regulation 2026", "[industry] compliance new" |
| Conference attendance |
"[company] [conference-name]", "[company] speaks at" |
| Competitor funding |
"[competitor] acquired", "[competitor] funding" |
| Job posting shift |
"[company] job openings", "[company] head of [role]" |
| Social selling |
"[decision-maker-name] [problem-space-keyword]" |
Rules for this step:
- Use WebSearch to find REAL signals. Never fabricate data.
- If WebSearch returns nothing for a signal type, record "No signal detected" for that type. Do not invent results.
- Only search within the last 90 days unless the user specifies a different window.
- Record each signal found with: type, date (as specific as possible), source URL, and details (one sentence).
Step 4: Signal Scoring (Fit x Timing x Access x Intent)
Score each company on four dimensions. Each dimension is rated 1-5.
Fit (1-5) — How well does this company match the ICP?
| Score |
Criteria |
| 5 |
Perfect match: right size, industry, stage, and budget |
| 4 |
Strong match: 3 of 4 criteria met |
| 3 |
Partial match: 2 of 4 criteria met |
| 2 |
Weak match: 1 criterion met |
| 1 |
No match or insufficient data |
Timing (1-5) — How recent/urgent is the strongest signal?
| Score |
Criteria |
| 5 |
Signal detected in the last 7 days |
| 4 |
Signal detected in the last 30 days |
| 3 |
Signal detected in the last 90 days |
| 2 |
Signal older than 90 days |
| 1 |
No timing signal detected |
Access (1-5) — Can you reach the decision maker?
| Score |
Criteria |
| 5 |
Warm intro available (mutual connection willing to introduce) |
| 4 |
Mutual connection exists (LinkedIn 2nd degree, shared community) |
| 3 |
Cold but contact info known (email, LinkedIn profile found) |
| 2 |
Cold, no direct contact info |
| 1 |
Gatekeepered, no visible path to decision maker |
Intent (1-5) — How strong is the buying intent?
| Score |
Criteria |
| 5 |
Direct inquiry, demo request, or inbound interest |
| 4 |
Competitor review, active evaluation (G2 comparison, "alternatives" search) |
| 3 |
Hiring for a role your product replaces or enables |
| 2 |
General interest signals (content engagement, community activity) |
| 1 |
No intent signal detected |
Composite Score and Tier Classification
Composite Score = Fit + Timing + Access + Intent (max 20)
| Composite |
Tier |
Action |
| 17-20 |
HOT |
Reach out today. Personalize based on the strongest signal. |
| 13-16 |
WARM |
Add to nurture sequence. Monitor for escalation signals. |
| 9-12 |
COLD |
Monitor weekly. Build relationship through content and community. |
| Below 9 |
PARK |
Not ready. Set a reminder to re-scan in 90 days. |
Interactive scoring: Present your suggested scores for Fit and Access, but ask the user to confirm or adjust them. Fit and Access require human judgment (you may not know about warm intros or internal budget data). Timing and Intent are derived from the signal scan data and should be scored by you.
Step 5: Output
Write two files:
Per-Company Report: docs/signals/{company-name}.md
Use this structure:
# Signal Report: {Company Name}
**Scan Date:** {YYYY-MM-DD}
**Scanned By:** Signal Scanner v1.0.0
## Company Overview
{One-line description of the company, pulled from search results.}
## Signals Detected
| Signal Type | Date | Source | Details |
|---|---|---|---|
| {type} | {YYYY-MM-DD or "~Month YYYY"} | [{source name}]({url}) | {One sentence} |
| ... | ... | ... | ... |
**Signals found:** {count}
**No signal detected:** {list of signal types with no results}
## Scoring Breakdown
| Dimension | Score | Rationale |
|---|---|---|
| Fit | {1-5} | {Why this score} |
| Timing | {1-5} | {Why this score} |
| Access | {1-5} | {Why this score} |
| Intent | {1-5} | {Why this score} |
| **Composite** | **{total}/20** | |
## Tier: {HOT / WARM / COLD / PARK}
## Recommended Action
{Specific next step. Not generic advice. Reference the strongest signal and suggest a concrete outreach angle, message hook, or monitoring action.}
Summary: docs/signals/README.md
If this file already exists, update it. If not, create it.
# Signal Scanner — Account Priority Board
Last updated: {YYYY-MM-DD}
## HOT (17-20) — Reach Out Today
| Company | Score | Strongest Signal | Recommended Action |
|---|---|---|---|
| ... | ... | ... | ... |
## WARM (13-16) — Nurture
| Company | Score | Strongest Signal | Recommended Action |
|---|---|---|---|
| ... | ... | ... | ... |
## COLD (9-12) — Monitor
| Company | Score | Strongest Signal | Recommended Action |
|---|---|---|---|
| ... | ... | ... | ... |
## PARK (Below 9) — Re-Scan in 90 Days
| Company | Score | Strongest Signal | Recommended Action |
|---|---|---|---|
| ... | ... | ... | ... |
When updating README.md, merge new results with any existing entries. If a company was previously scanned, replace its row with the new data and note the previous score in the details.
Key Rules
- Never fabricate signals. Every signal must come from a WebSearch result with a real URL. If you cannot find a signal, say "No signal detected."
- Always attribute sources. Every signal row must include a clickable source URL.
- Fit and Access are human-confirmed. Suggest scores, but always ask the user to confirm or adjust before finalizing.
- Timing and Intent are data-driven. Score these based on what the signal scan actually found.
- 90-day window by default. Only surface signals from the last 90 days unless the user specifies otherwise.
- No more than 5 companies per run. If the user provides more than 5, batch them and run the highest-priority batch first.
- Check for existing reports. Before scanning, use Glob to check
docs/signals/ for existing reports. If a company was previously scanned, tell the user and ask if they want a fresh scan or want to skip it.
- Keep it generic. This skill works for any B2B company. Do not reference specific internal tools, databases, or vendor accounts.
1---2name: signal-scanner3description: Use when searching for buying signals, detecting intent data, scoring prospect readiness, or monitoring accounts for trigger events. Triggers: 'scan for signals', 'find buying signals', 'who is ready to buy', 'intent signals', 'signal scoring', 'account signals'.4---5
6# Signal Scanner
7
8Detect, score, and prioritize buying signals for target accounts. This skill searches for live signals using WebSearch, scores them on a Fit x Timing x Access x Intent framework, and produces a prioritized action list for GTM teams.
9
10## Tools Used
11
12- **WebSearch** — find real-time signals (funding, hiring, product launches, etc.)
13- **Read** — load `docs/icp.md` if it exists (output from the ICP Architect skill)
14- **Write** — save per-company signal reports and summary
15- **Glob** — check for existing signal files to avoid duplicate work
16
17## Methodology
18
19Follow these steps in order. Do not skip steps. Do not fabricate data.
20
21### Step 1: Context Loading
22
23Check if `docs/icp.md` exists using Glob.
24
25**If it exists:** Read it. Extract ICP segments, buyer personas, and known buying signals. Summarize what you loaded so the user can confirm.
26
27**If it does not exist:** Ask the user three questions before proceeding:
28
291. What does your company sell? (one sentence)
302. Who is your ideal buyer? (title, company size, industry)
313. What signals indicate someone needs your solution? (list 3-5)
32
33Wait for answers. Do not assume.
34
35### Step 2: Signal Taxonomy
36
37Present the full taxonomy of 20 signal types across 4 categories. Ask the user to select 8-12 that are most relevant to their business. Only scan for the selected signal types in Step 3.
38
39#### Company-Level Signals
401. **Fundraise announcement** — Seed, Series A, B, C+ rounds
412. **Leadership change** — New CXO, VP Sales, VP Marketing, Head of Growth
423. **Hiring pattern** — SDR hiring spree, GTM engineering roles, marketing hires
434. **Product launch** — Major feature release, new product line, GA announcement
445. **Partnership or integration** — New tech partner, channel partner, integration announcement
456. **Tech stack change** — Detected via job postings, BuiltWith, Wappalyzer, or press releases
467. **Office expansion** — New market entry, new office location, international expansion
478. **Pricing change** — New tier launch, pricing model shift, free tier added/removed
48
49#### Engagement Signals
509. **Website visit** — If tracking pixel is deployed (user must confirm)
5110. **Content download or webinar attendance** — Known engagement with your content
5211. **G2/Capterra review activity** — Wrote a review of a competitor product
5312. **Community activity spike** — Mentions on Reddit, LinkedIn, Slack, or forums about your problem space
5413. **Email engagement** — Opens, clicks, replies on existing sequences (user must confirm)
55
56#### Market Signals
5714. **Competitor customer churn** — Switching signals, public complaints, cancellation posts
5815. **Industry regulation change** — New compliance requirement that creates demand
5916. **Market event or conference** — Speaking at or attending events in your space
6017. **Competitor funding or acquisition** — Creates urgency or uncertainty for their customers
61
62#### Behavioral Signals
6318. **Job posting pattern shift** — New role types signal new priorities (e.g., first "Head of AI" hire)
6419. **Social selling activity** — Prospect sharing or engaging with content about your problem space
6520. **Direct inquiry or demo request** — Inbound interest (user must confirm)
66
67**Ask the user:** "Which of these 20 signal types are most relevant to your business? Select 8-12 by number."
68
69Wait for their selection before proceeding.
70
71### Step 3: Live Signal Scan
72
73Ask the user to provide 1-5 target company names.
74
75For each company, run WebSearch queries for every selected signal type. Use these search patterns:
76
77| Signal Type | Search Queries |
78|---|---|
79| Fundraise | `"[company] funding"`, `"[company] series"`, `"[company] raises"` |
80| Leadership change | `"[company] hires"`, `"[company] appoints"`, `"[company] new CXO/VP"` |
81| Hiring pattern | `"[company] careers"`, `"[company] hiring"`, search for their jobs page |
82| Product launch | `"[company] launches"`, `"[company] announces"`, `"[company] new feature"` |
83| Partnership | `"[company] partners with"`, `"[company] integrates"`, `"[company] integration"` |
84| Tech stack change | `"[company] tech stack"`, `"[company] migrates to"`, check job postings for tech requirements |
85| Office expansion | `"[company] opens office"`, `"[company] expands to"` |
86| Pricing change | `"[company] pricing"`, `"[company] new plan"` |
87| G2/Capterra reviews | `"[company] vs [competitor] G2"`, `site:g2.com [company]` |
88| Community activity | `"[company] reddit"`, `"[company] [problem-space-keyword]"` |
89| Competitor churn | `"switching from [competitor] to"`, `"[competitor] alternative"`, `"leaving [competitor]"` |
90| Regulation change | `"[industry] regulation 2026"`, `"[industry] compliance new"` |
91| Conference attendance | `"[company] [conference-name]"`, `"[company] speaks at"` |
92| Competitor funding | `"[competitor] acquired"`, `"[competitor] funding"` |
93| Job posting shift | `"[company] job openings"`, `"[company] head of [role]"` |
94| Social selling | `"[decision-maker-name] [problem-space-keyword]"` |
95
96**Rules for this step:**
97- Use WebSearch to find REAL signals. Never fabricate data.
98- If WebSearch returns nothing for a signal type, record "No signal detected" for that type. Do not invent results.
99- Only search within the last 90 days unless the user specifies a different window.
100- Record each signal found with: **type**, **date** (as specific as possible), **source URL**, and **details** (one sentence).
101
102### Step 4: Signal Scoring (Fit x Timing x Access x Intent)
103
104Score each company on four dimensions. Each dimension is rated 1-5.
105
106#### Fit (1-5) — How well does this company match the ICP?
107| Score | Criteria |
108|---|---|
109| 5 | Perfect match: right size, industry, stage, and budget |
110| 4 | Strong match: 3 of 4 criteria met |
111| 3 | Partial match: 2 of 4 criteria met |
112| 2 | Weak match: 1 criterion met |
113| 1 | No match or insufficient data |
114
115#### Timing (1-5) — How recent/urgent is the strongest signal?
116| Score | Criteria |
117|---|---|
118| 5 | Signal detected in the last 7 days |
119| 4 | Signal detected in the last 30 days |
120| 3 | Signal detected in the last 90 days |
121| 2 | Signal older than 90 days |
122| 1 | No timing signal detected |
123
124#### Access (1-5) — Can you reach the decision maker?
125| Score | Criteria |
126|---|---|
127| 5 | Warm intro available (mutual connection willing to introduce) |
128| 4 | Mutual connection exists (LinkedIn 2nd degree, shared community) |
129| 3 | Cold but contact info known (email, LinkedIn profile found) |
130| 2 | Cold, no direct contact info |
131| 1 | Gatekeepered, no visible path to decision maker |
132
133#### Intent (1-5) — How strong is the buying intent?
134| Score | Criteria |
135|---|---|
136| 5 | Direct inquiry, demo request, or inbound interest |
137| 4 | Competitor review, active evaluation (G2 comparison, "alternatives" search) |
138| 3 | Hiring for a role your product replaces or enables |
139| 2 | General interest signals (content engagement, community activity) |
140| 1 | No intent signal detected |
141
142#### Composite Score and Tier Classification
143
144**Composite Score** = Fit + Timing + Access + Intent (max 20)
145
146| Composite | Tier | Action |
147|---|---|---|
148| 17-20 | **HOT** | Reach out today. Personalize based on the strongest signal. |
149| 13-16 | **WARM** | Add to nurture sequence. Monitor for escalation signals. |
150| 9-12 | **COLD** | Monitor weekly. Build relationship through content and community. |
151| Below 9 | **PARK** | Not ready. Set a reminder to re-scan in 90 days. |
152
153**Interactive scoring:** Present your suggested scores for Fit and Access, but ask the user to confirm or adjust them. Fit and Access require human judgment (you may not know about warm intros or internal budget data). Timing and Intent are derived from the signal scan data and should be scored by you.
154
155### Step 5: Output
156
157Write two files:
158
159#### Per-Company Report: `docs/signals/{company-name}.md`
160
161Use this structure:
162
163```markdown
164# Signal Report: {Company Name}
165
166**Scan Date:** {YYYY-MM-DD}
167**Scanned By:** Signal Scanner v1.0.0
168
169## Company Overview
170
171{One-line description of the company, pulled from search results.}
172
173## Signals Detected
174
175| Signal Type | Date | Source | Details |
176|---|---|---|---|
177| {type} | {YYYY-MM-DD or "~Month YYYY"} | [{source name}]({url}) | {One sentence} |
178| ... | ... | ... | ... |
179
180**Signals found:** {count}
181**No signal detected:** {list of signal types with no results}
182
183## Scoring Breakdown
184
185| Dimension | Score | Rationale |
186|---|---|---|
187| Fit | {1-5} | {Why this score} |
188| Timing | {1-5} | {Why this score} |
189| Access | {1-5} | {Why this score} |
190| Intent | {1-5} | {Why this score} |
191| **Composite** | **{total}/20** | |
192
193## Tier: {HOT / WARM / COLD / PARK}
194
195## Recommended Action
196
197{Specific next step. Not generic advice. Reference the strongest signal and suggest a concrete outreach angle, message hook, or monitoring action.}
198```
199
200#### Summary: `docs/signals/README.md`
201
202If this file already exists, update it. If not, create it.
203
204```markdown
205# Signal Scanner — Account Priority Board
206
207Last updated: {YYYY-MM-DD}
208
209## HOT (17-20) — Reach Out Today
210| Company | Score | Strongest Signal | Recommended Action |
211|---|---|---|---|
212| ... | ... | ... | ... |
213
214## WARM (13-16) — Nurture
215| Company | Score | Strongest Signal | Recommended Action |
216|---|---|---|---|
217| ... | ... | ... | ... |
218
219## COLD (9-12) — Monitor
220| Company | Score | Strongest Signal | Recommended Action |
221|---|---|---|---|
222| ... | ... | ... | ... |
223
224## PARK (Below 9) — Re-Scan in 90 Days
225| Company | Score | Strongest Signal | Recommended Action |
226|---|---|---|---|
227| ... | ... | ... | ... |
228```
229
230When updating README.md, merge new results with any existing entries. If a company was previously scanned, replace its row with the new data and note the previous score in the details.
231
232## Key Rules
233
2341. **Never fabricate signals.** Every signal must come from a WebSearch result with a real URL. If you cannot find a signal, say "No signal detected."
2352. **Always attribute sources.** Every signal row must include a clickable source URL.
2363. **Fit and Access are human-confirmed.** Suggest scores, but always ask the user to confirm or adjust before finalizing.
2374. **Timing and Intent are data-driven.** Score these based on what the signal scan actually found.
2385. **90-day window by default.** Only surface signals from the last 90 days unless the user specifies otherwise.
2396. **No more than 5 companies per run.** If the user provides more than 5, batch them and run the highest-priority batch first.
2407. **Check for existing reports.** Before scanning, use Glob to check `docs/signals/` for existing reports. If a company was previously scanned, tell the user and ask if they want a fresh scan or want to skip it.
2418. **Keep it generic.** This skill works for any B2B company. Do not reference specific internal tools, databases, or vendor accounts.