# Signal Triage

> Classify an incoming outbound signal by tier (T1/T2/T3), set the SLA, and recommend the outreach channel. Use whenever the user pastes signal data, describes a buying signal, mentions a target account firing a signal, or asks how to prioritize incoming outbound signals — even if they don't explicitly use the word "triage." Also use for questions like "should I reach out?", "how fast should I respond?", or "is this a hot lead?"

- Skill: `faiz-sayyad/signal-triage` (Agent Skill)
- Install (CLI): `npx skillmds@latest add faiz-sayyad/signal-triage`
- Raw SKILL.md: https://api.skillmd.com/api/skills/faiz-sayyad/signal-triage/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: faiz-sayyad (https://skillmd.com/u/faiz-sayyad)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/faiz-sayyad/signal-triage

---


# Signal Triage

Classify one signal event into a tier, an SLA (time to respond), and a recommended channel + owner. Read `icp.md` before running this skill — the tier decision depends heavily on ICP fit.

## When this skill triggers

The user has pasted or described a signal event and wants to know:
- What tier it belongs to (T1 / T2 / T3 / Nurture)
- How fast someone needs to respond
- Which channel is the right first touch
- Whether it's worth acting on at all

## The tiering rubric

Signal tier is a composite of **signal strength × ICP fit × recency**.

### Signal strength (which type of signal fired)

**Strong signals (worth +25 to +40 points):**
- Anonymous website visitor de-anonymized on pricing/demo/case-study page
- Same domain visited pricing 3+ times in 7 days
- High-intent asset downloaded (ROI calculator, pricing guide, comparison sheet)
- Champion job change into an ICP-fit account
- Exec at target account publicly posted about a problem you solve

**Moderate signals (worth +15 to +25 points):**
- Repeat LinkedIn engagement from a target account (3+ touches in 14 days)
- Review site activity in your category
- Funding round announced at target account
- Strategic hire posted (SDR, RevOps, Head of Marketing at ICP-fit company)

**Weak signals (worth +5 to +15 points):**
- Tech-stack change (added or churned competitor)
- General LinkedIn engagement (1-2 touches)
- News mention without specific problem-language
- New follower from an ICP-fit domain

### ICP fit (from `icp.md`)

- Perfect ICP match (all firmographic filters pass) → +25 pts
- Adjacent (industry-fit, wrong size band) → +15 pts
- Right industry, wrong role/persona → +5 pts
- Doesn't match ICP at all → 0 pts (regardless of signal strength)

### Recency

- Signal fired in last 72 hours → +25 pts
- 3–7 days ago → +15 pts
- 7–30 days ago → +5 pts
- More than 30 days ago → 0 pts (functionally dead)

### Composite tier

Add the three scores. Then:

| Composite | Tier | SLA |
|---|---|---|
| 75–100 | T1 (All-hands) | 4 hours |
| 50–74 | T2 (Priority) | 24 hours |
| 30–49 | T3 (Sequence) | 7 days |
| Below 30 | Nurture | No direct outreach — add to newsletter or content nurture |

## Channel recommendation

Match channel to tier and to the nature of the signal:

| Situation | Recommended first channel |
|---|---|
| T1 + LinkedIn signal (post engagement, job change) | LinkedIn DM |
| T1 + web/pricing signal (RB2B, page returns) | Email if you have it, LinkedIn if not |
| T1 + champion at new account | Warm reintroduction email or LinkedIn DM |
| T2 + any signal | LinkedIn connection request with note |
| T3 | Triggered email sequence, LinkedIn as a secondary touch |
| Nurture | Add to newsletter list, no direct 1:1 outreach |

## Owner recommendation

| Tier | Owner |
|---|---|
| T1 | Named AE for that account, OR most senior person on outbound team |
| T2 | SDR queue |
| T3 | Automated sequence (SDR reviews replies only) |
| Nurture | Marketing / content team |

## Input the skill expects

Any of these three shapes:

1. **JSON-ish structured data**:
```json
{
  "signal_type": "champion_job_change",
  "person": "Sarah Chen",
  "title": "CTO",
  "company": "Acme Corp",
  "company_size": "200 employees",
  "industry": "B2B SaaS",
  "signal_date": "2 days ago",
  "notes": "left Beta (customer of ours) to join Acme"
}
```

2. **Freeform description**:
> "Sarah Chen just changed jobs — was CTO at Beta, moved to Acme as CTO. Acme is Series A B2B SaaS, 200 employees. Happened 2 days ago. Beta was a customer of ours."

3. **A pasted signal alert from Trigify, RB2B, or similar** — parse the relevant fields.

If required data is missing (specifically: signal type, ICP fit indicators, or recency), ask the user for it before scoring.

## Output format

Always return in this structure. Use fenced code blocks so the user can paste into their CRM.

```
TRIAGE RESULT

Signal: Champion job change → Sarah Chen → Acme Corp (Series A B2B SaaS, 200 emp)
Signal date: 2 days ago (recency = strong)
ICP fit: Perfect (matches size, industry, geo)
Signal strength: +35 (champion moved into an ICP-fit target)
ICP score: +25
Recency: +25

Composite: 85 → TIER 1 (All-hands)
SLA: 4 hours
Channel: LinkedIn DM (warm reintro — she was at a former customer)
Owner: Named AE for Acme, OR founder if no AE assigned yet

Reason: This is the closest thing to free pipeline. Champion knows you, trusts you, and now has budget authority at a target account.

RECOMMENDED NEXT STEP
1. Confirm no active opportunity or existing customer status at Acme
2. Draft opener referencing Beta relationship + her new role, NOT the product yet
3. Send in the first 4 hours — new-role attention window is tight
```

## Rules

- Never triage a signal without checking against `icp.md`. If ICP is stubbed, ask the user to fill it before continuing.
- Never assign a tier higher than T3 for a signal on an account that doesn't match ICP, no matter how strong the signal type.
- Never guess about recency — if you don't have the signal date, ask.
- Never recommend a channel that requires data you don't have (e.g., don't say "email" if you have no email address surfaced).
- Never invent an owner name. If the user hasn't specified who owns which account, recommend the role (AE / SDR) not a person.

## Common failure modes

**Failure: over-tiering weak signals because ICP is a perfect match.**
Fix: Weak signal + perfect ICP is still T3 at best. Signal strength ceiling matters.

**Failure: under-tiering strong signals because the account is smaller than the "usual" ICP.**
Fix: A signal on a smaller company that still passes core ICP filters can absolutely be T1 — just note the smaller ACV in the reasoning.

**Failure: assigning T1 SLA to something the user's team can't actually respond to in 4 hours.**
Fix: If the user has told you their team can't hit 4-hour SLA, downshift to their real cadence and note it. Better to be honest about the constraint than to set impossible SLAs.

## Examples

### Example 1 — clean T1

**Input:** "Someone just visited our pricing page for the third time this week. RB2B says it's HubSpot, someone with a Head of Sales title, based on the domain resolution."

**Output:**
```
TRIAGE RESULT

Signal: Pricing page returns → Head of Sales @ HubSpot → 3 visits in 7 days
Signal strength: +35 (repeat pricing = active budget conversation)
ICP fit: +25 if HubSpot fits your ICP (Head of Sales at large SaaS)
Recency: +25 (this week)

Composite: 85 → TIER 1
SLA: 4 hours
Channel: LinkedIn DM (RB2B doesn't surface email — need to bridge to LinkedIn)
Owner: Named AE for the HubSpot account (if you're targeting them enterprise), otherwise founder

Reason: Third pricing visit means someone at HubSpot is building an internal case. The window is small — a week from now they'll have made a decision without you.

RECOMMENDED NEXT STEP
1. Enrich the persona: find the exact person via LinkedIn Sales Navigator
2. Send a LinkedIn DM referencing the buying motion (NOT the pageview — that reads as surveillance)
3. Angle: "Building an eval short-list for [category]? Happy to save you the demo-week tax."
```

### Example 2 — T3 with a nuance

**Input:** "Trigify just flagged that Acme raised a Series A. They're in B2B SaaS, 40 employees. Announcement was 5 days ago."

**Output:**
```
TRIAGE RESULT

Signal: Funding round → Series A → Acme Corp (B2B SaaS, 40 emp)
Signal strength: +20 (funding = budget forming, but no direct buying signal)
ICP fit: +15 if 40-emp is below your usual band but adjacent
Recency: +15 (5 days ago is still fresh but not urgent)

Composite: 50 → TIER 2 (borderline)
SLA: 24 hours
Channel: Personalized LinkedIn connection request + email if you can find one
Owner: SDR

Reason: Series A companies typically finalize stack decisions in the first 60-90 days post-funding. The window is real but not urgent. Also — you're outside their peak "everyone's pitching me" week (day 1-3) which is actually a good thing.

RECOMMENDED NEXT STEP
1. Enrich for buyer persona: who runs GTM at Acme? Usually a co-founder at 40 emp
2. Angle: forward-looking. "Congrats on the round. Companies at your stage typically rebuild [function] in the first 90 days — happy to share what's worked at [comparable co]."
3. Send in the next 24 hours
```

## Related skills

If the triage lands at T1 or T2, the user's next step is usually to draft outreach. Suggest they use:
- `linkedin-opener` for the first line
- `linkedin-connection-note` if they need to send a connection request first
- `follow-up-sequence` after 5 days of silence

