New: Earn 20% as an AgentAlley affiliate. Share your link and earn on every sale you refer. Join now New: Earn 20% as an affiliate. Join now

Triages all inbound leads from a given period

Inbound lead triage

by gooseworks-ai · MIT license · ★ 1,220 on GitHub · v1.0.0 · updated Sep 21

Inbound lead triage cover

Triages all inbound leads from a given period — demo requests, free trial signups, content downloads, webinar registrations, chatbot conversations. Classifies by urgency, qualifies against ICP, enriches with context, and produces a…

---
name: inbound-lead-triage
version: 1.0.0
description: >
  Triages all inbound leads from a given period — demo requests, free trial signups,
  content downloads, webinar registrations, chatbot conversations. Classifies by urgency,
  qualifies against ICP, enriches with context, and produces a prioritized action queue
  with recommended response for each lead. Tool-agnostic — works with any CRM, form tool,
  or lead source.
tags: [lead-generation]
---

# Inbound Lead Triage

Pulls all inbound leads from a specified period, classifies them by source urgency, qualifies against ICP, enriches with company/person context, and produces a prioritized action queue. Turns a messy inbox of form fills into a clear "who to call first" list.

## When to Auto-Load

Overview

Pulls all inbound leads from a specified period, classifies them by source urgency, qualifies against ICP, enriches with company/person context, and produces a prioritized action queue. Turns a messy inbox of form fills into a clear "who to call first" list.

What you get

  • Normalized lead list with source classification
  • Dedup report"X leads from Y sources, Z duplicates merged"
Manual install (npx, ZIP)
Claude Codenpx skills add gooseworks-ai/goose-skills --skill inbound-lead-triage -g -a claude-code
Claude Code (manual)mkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/gooseworks-ai/goose-skills/tar.gz/615c685f34f8 \ | tar -xz -C ~/.claude/skills --strip-components=4 goose-skills-615c685f34f8/skills/lead-generation/composites/inbound-lead-triage
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/64ffafe0127995bc081e/inbound-lead-triage.zip" -OutFile "$env:TEMP\inbound-lead-triage.zip"; Expand-Archive "$env:TEMP\inbound-lead-triage.zip" -DestinationPath "$HOME\.claude\skills" -Force
Claude.ai / desktopDownload the ZIP and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md15.5 KB
  • skill.meta.json368 B
Read the files here
gooseworks-ai/615c6852 files
SKILL.md
Show the full text376 lines

Inbound Lead Triage

Pulls all inbound leads from a specified period, classifies them by source urgency, qualifies against ICP, enriches with company/person context, and produces a prioritized action queue. Turns a messy inbox of form fills into a clear "who to call first" list.

When to Auto-Load

Load this composite when:

  • User says "triage my inbound leads", "review new leads", "check demo requests"
  • User wants to process a batch of inbound leads from any period
  • User asks "who should I follow up with first?"
  • A scheduled workflow triggers periodic inbound review

Architecture

[Lead Sources] → Step 1: Collect → Step 2: Classify & Rank → Step 3: Qualify → Step 4: Enrich → Step 5: Route & Respond
                    ↓                    ↓                        ↓                  ↓                    ↓
              Raw lead list      Urgency-ranked list       ICP-scored list    Context-rich list    Action queue + drafts

Each step has a clear input/output contract. Tools are configured once per client, not hardcoded.


Step 0: Configuration (Once Per Client)

On first run, ask the user to configure their lead sources and preferences. Save to the current working directory or wherever the user prefers (e.g., config/inbound-triage.json).

{
  "lead_sources": {
    "demo_requests": {
      "source_tool": "HubSpot | Salesforce | Typeform | CSV | other",
      "access_method": "API | CSV export | MCP tool | manual paste",
      "fields_available": ["name", "email", "company", "title", "message"]
    },
    "free_trial_signups": {
      "source_tool": "product database | Stripe | CSV | other",
      "access_method": "API | CSV export | manual paste",
      "fields_available": ["name", "email", "company", "signup_date", "plan"]
    },
    "content_downloads": {
      "source_tool": "HubSpot | Marketo | CSV | other",
      "access_method": "API | CSV export | manual paste",
      "fields_available": ["name", "email", "company", "content_title", "download_date"]
    },
    "webinar_registrations": {
      "source_tool": "Zoom | Luma | CSV | other",
      "access_method": "API | CSV export | manual paste",
      "fields_available": ["name", "email", "company", "webinar_title", "attended"]
    },
    "chatbot_conversations": {
      "source_tool": "Intercom | Drift | Crisp | CSV | other",
      "access_method": "API | CSV export | manual paste",
      "fields_available": ["name", "email", "company", "conversation_summary", "intent"]
    }
  },
  "urgency_overrides": {},
  "response_preferences": {
    "demo_request_sla": "< 1 hour",
    "trial_signup_sla": "< 4 hours",
    "default_sla": "< 24 hours"
  },
  "qualification_prompt_path": "path/to/existing/qualification-prompt.md or null"
}

On subsequent runs: Load config silently, skip setup.

If user provides a raw CSV or pastes leads inline: Skip source config — just classify what's given.


Step 1: Collect Leads

Input
  • Time period (e.g., "last 24 hours", "this week", "since Monday")
  • Lead sources to check (all configured sources by default, or user specifies)
Process
  1. Pull leads from each configured source for the specified period
  2. Normalize into a common schema regardless of source:
{
  "name": "",
  "email": "",
  "company": "",
  "title": "",           // if available
  "source_type": "",     // demo_request | free_trial | content_download | webinar | chatbot | other
  "source_detail": "",   // which form, which webinar, which content piece
  "timestamp": "",
  "raw_message": "",     // form message, chat transcript, or null
  "raw_fields": {}       // all original fields preserved
}
  1. Deduplicate by email — if same person appears in multiple sources, merge into one record with all source types listed (this is a stronger signal)
Output
  • Normalized lead list with source classification
  • Dedup report: "X leads from Y sources, Z duplicates merged"
Human Checkpoint

Present the collected leads count by source. Ask: "These are the leads I found. Proceed with triage?"


Step 2: Classify & Rank by Urgency

Urgency Tier System

Rank every lead into one of four urgency tiers based on their source type and behavioral signals.

Tier 1 — Respond NOW (< 1 hour SLA)

  • Demo requests (explicit buying intent)
  • Chatbot conversations where the prospect asked about pricing, integration, or implementation
  • Any lead that mentions a competitor by name
  • Any lead that mentions a timeline ("looking to switch by Q2", "evaluating this month")
  • Multi-source leads: appeared in 2+ sources (e.g., downloaded content AND requested demo)

Tier 2 — Respond TODAY (< 4 hours SLA)

  • Free trial signups (active evaluation intent)
  • Chatbot conversations with product questions (not pricing)
  • Webinar attendees who actually attended (not just registered)
  • Content downloads of bottom-funnel content (case studies, ROI calculators, comparison guides, pricing pages)

Tier 3 — Respond within 24 hours

  • Webinar registrants who did NOT attend
  • Content downloads of mid-funnel content (how-to guides, industry reports, templates)
  • Free trial signups with personal email domains (gmail, yahoo — lower commercial intent)

Tier 4 — Batch response / nurture

  • Content downloads of top-funnel content (blog posts, general ebooks, infographics)
  • Webinar registrants for broad/educational topics with no other signal
  • Any lead where company or title is missing and can't be enriched
Signal Boosters (Move Up One Tier)
  • Company matches existing ICP (known good industry, size, stage)
  • Person has a title that maps to buyer persona
  • Company is already in pipeline (existing deal — warm context)
  • Person previously engaged (downloaded other content, attended other webinar)
  • Company was flagged by a signal composite (funding, hiring, leadership change)
Signal Dampeners (Move Down One Tier)
  • Personal email domain with no company info
  • Bot-like behavior (form filled in < 3 seconds, nonsense fields)
  • Existing customer (unless upsell signal — keep at tier but flag differently)
  • Competitor employee (flag separately — competitive intelligence, not a lead)
Urgency Override

If the user configured custom urgency rules in urgency_overrides, apply those after the default classification.

Output
  • Lead list sorted by urgency tier, then by timestamp within each tier
  • Each lead tagged with: urgency_tier, urgency_reason, signal_boosters[], signal_dampeners[]

Step 3: Qualify Against ICP

Process

For each lead, run a lightweight ICP qualification check. This is NOT the full lead-qualification capability — it's a fast pass to separate likely-fit from unlikely-fit.

  1. If a qualification prompt exists (from lead-qualification capability): Apply it in fast mode — check hard disqualifiers only, skip deep enrichment
  2. If no qualification prompt: Use the company context to do a basic fit check:
    • Does the company size/industry/stage roughly match ICP?
    • Does the person's title map to a buyer/user persona?
    • Any obvious disqualifiers? (wrong geography, wrong industry, too small/large)
Qualification Categories
  • Strong fit — Company and person clearly match ICP
  • Likely fit — Partial data but what's available looks good
  • Unknown fit — Not enough data to determine (needs enrichment)
  • Poor fit — Clearly outside ICP (but still log — they came inbound for a reason)
  • Flag: Competitor — Employee of a known competitor
  • Flag: Existing customer — Already a customer (route to CS/upsell, not sales)
Output
  • Each lead tagged with: icp_fit, fit_reasoning (one sentence)
  • Leads with "poor fit" or "flag" categories are separated into a secondary list

Step 4: Enrich with Context

Process

For leads in Tier 1 and Tier 2 (and strong/likely fit Tier 3), gather context that helps the responder have a better conversation.

Company enrichment (per unique company):

  • What does the company do? (one sentence)
  • Company size, stage, industry
  • Any recent news or signals? (check if any signal composites have flagged this company)
  • Are they in our pipeline already? (check your CRM — HubSpot, Salesforce, CSV)
  • Previous engagement history (other people from this company who engaged)

Person enrichment:

  • Current role and tenure
  • LinkedIn headline (if available via enrichment tools)
  • Any prior engagement with us (previous downloads, webinar attendance, email replies)
  • Mutual connections or warm intro paths (if detectable)

Engagement context:

  • What content did they download? (summarize the topic — the responder should know what the lead is interested in)
  • What did they say in the demo request form? (quote key phrases)
  • What was the chatbot conversation about? (3-sentence summary)
  • Which webinar did they attend? (topic relevance to product)
Tool Flexibility
  • Use whatever enrichment tools are configured (SixtyFour or Orthogonal, LinkedIn scraper, web search)
  • If no enrichment tools are configured, do a basic web search for company + person
  • Skip enrichment for Tier 4 leads (not worth the cost — batch-nurture them)
Output
  • Each Tier 1-3 lead has an enrichment block with company context, person context, and engagement context
  • Enrichment is best-effort — missing fields are noted, never blocks the process

Step 5: Route & Recommend Response

For Each Lead, Determine:

1. Response action:

Urgency ICP Fit Action
Tier 1 Strong/Likely Immediate personal outreach — draft personalized email or call script
Tier 1 Unknown Immediate outreach + qualify on call — draft email with discovery questions
Tier 1 Poor Still respond (they requested a demo) — draft polite response, qualify on call
Tier 2 Strong/Likely Same-day personal outreach — draft personalized welcome/check-in email
Tier 2 Unknown Same-day templated outreach — send template with one personalized line
Tier 2 Poor Templated response — standard welcome, no prioritization
Tier 3 Strong/Likely Next-day personalized outreach — draft email referencing what they engaged with
Tier 3 Unknown/Poor Add to nurture sequence — automated drip, no manual effort
Tier 4 Any Nurture sequence only — batch add to appropriate drip campaign
Flag: Competitor — Log for competitive intel — do not send sales outreach
Flag: Customer — Route to CS team — flag upsell opportunity if relevant

2. Draft response (for Tier 1-3 leads with personal outreach):

Draft a response email that:

  • References the specific action they took ("I saw you requested a demo of...", "Thanks for downloading our guide on...")
  • Connects their likely interest to a relevant product capability
  • Uses enrichment context naturally (don't be creepy — reference public info only)
  • Has a clear CTA appropriate to the tier:
    • Tier 1: "Are you free [specific time slots] this week for a quick call?"
    • Tier 2: "Would it be helpful if I walked you through [relevant feature]?"
    • Tier 3: "I put together [relevant resource] that builds on what you downloaded. Happy to chat if you have questions."

3. Assign owner (if team structure is configured):

  • Route by territory, account size, or round-robin based on client config
  • If no team structure: all leads go to the user

Output Format

Primary: Prioritized Action Queue

Present as a clear, actionable table organized by urgency tier:

## Inbound Lead Triage: [Period]
Generated: [timestamp]

### Summary
- **Total leads:** X from Y sources
- **Tier 1 (respond now):** X leads
- **Tier 2 (respond today):** X leads
- **Tier 3 (respond within 24h):** X leads
- **Tier 4 (nurture):** X leads
- **Flagged:** X competitors, X existing customers

---

### 🔴 Tier 1 — Respond NOW

#### Lead: [Name] — [Company] — [Title]
- **Source:** Demo request via [tool] at [time]
- **Urgency reason:** Explicit demo request + company matches ICP
- **ICP fit:** Strong — [one sentence reasoning]
- **Company:** [one sentence what they do, size, stage]
- **Signal context:** [any signals from other composites]
- **Engagement:** "[quote from form message or chat]"
- **Recommended action:** Personal email + calendar link
- **Draft response:**
  > [ready-to-send email draft]

---

#### Lead: [Name] — [Company] — [Title]
...

---

### 🟡 Tier 2 — Respond TODAY
...

### 🟢 Tier 3 — Respond Within 24h
...

### ⚪ Tier 4 — Add to Nurture
[Batch list — name, company, source, content engaged with. No individual drafts.]

### 🔵 Flagged
- **Competitors:** [list with company name — route to competitive intel]
- **Existing customers:** [list with company name — route to CS]
Secondary: CSV Export

Also produce a flat CSV with all leads and their triage data:

  • All original fields
  • urgency_tier, urgency_reason, icp_fit, fit_reasoning
  • recommended_action, response_draft
  • company_context, person_context, engagement_context

Save to the current working directory or wherever the user prefers (e.g., leads/inbound-triage-[date].csv).


Handling Edge Cases

No leads in period: Report "No new inbound leads found for [period]" with a note on which sources were checked.

Lead with no email: Still triage if company + name are available. Flag as "no direct contact — needs manual lookup."

Lead from a very large company (enterprise): Boost urgency by one tier. Enterprise inbound is rare and high-value. Note: "Enterprise lead — consider executive-level response."

Lead that's already in an active outbound sequence: Flag: "Already in outbound sequence [campaign name] — check for overlap before responding." Don't send a second competing message.

Duplicate lead (same person, same source, same period): Keep the most recent submission. Note the repeat engagement as a signal booster.

Partial data (no company, no title): Classify based on what IS available. Source type still determines urgency tier. Note: "Incomplete data — consider enrichment before outreach."

High volume (100+ leads in period): For Tier 3-4 leads, skip individual enrichment. Batch-qualify company names against ICP, produce summary stats instead of individual briefs. Focus human attention on Tier 1-2 only.


Cadence

  • 2-3x daily (for active teams): Triage new leads every few hours to hit SLA targets
  • Daily AM (minimum): Morning triage of all leads from previous day/overnight
  • Weekly (lightweight): Summary stats on inbound volume, source effectiveness, response times

Tools Required

The agent should have access to:

  • CRM / form tool access — to pull inbound leads (HubSpot, Salesforce, Typeform, etc.)
  • Web search — for company/person enrichment when other tools aren't available
  • Lead enrichment tools — SixtyFour or Orthogonal, LinkedIn scraper, or similar (optional, enhances quality)
  • Email drafting — references email-drafting capability for response frameworks
  • Calendar tool — to include available time slots in Tier 1 responses (gcalcli or similar)
1---
2name: inbound-lead-triage
3version: 1.0.0
4description: >
5 Triages all inbound leads from a given period — demo requests, free trial signups,
6 content downloads, webinar registrations, chatbot conversations. Classifies by urgency,
7 qualifies against ICP, enriches with context, and produces a prioritized action queue
8 with recommended response for each lead. Tool-agnostic — works with any CRM, form tool,
9 or lead source.
10tags: [lead-generation]
11---
12 
13# Inbound Lead Triage
14 
15Pulls all inbound leads from a specified period, classifies them by source urgency, qualifies against ICP, enriches with company/person context, and produces a prioritized action queue. Turns a messy inbox of form fills into a clear "who to call first" list.
16 
17## When to Auto-Load
18 
19Load this composite when:
20- User says "triage my inbound leads", "review new leads", "check demo requests"
21- User wants to process a batch of inbound leads from any period
22- User asks "who should I follow up with first?"
23- A scheduled workflow triggers periodic inbound review
24 
25## Architecture
26 
27```
28[Lead Sources] → Step 1: Collect → Step 2: Classify & Rank → Step 3: Qualify → Step 4: Enrich → Step 5: Route & Respond
29 ↓ ↓ ↓ ↓ ↓
30 Raw lead list Urgency-ranked list ICP-scored list Context-rich list Action queue + drafts
31```
32 
33Each step has a clear input/output contract. Tools are configured once per client, not hardcoded.
34 
35---
36 
37## Step 0: Configuration (Once Per Client)
38 
39On first run, ask the user to configure their lead sources and preferences. Save to the current working directory or wherever the user prefers (e.g., `config/inbound-triage.json`).
40 
41```json
42{
43 "lead_sources": {
44 "demo_requests": {
45 "source_tool": "HubSpot | Salesforce | Typeform | CSV | other",
46 "access_method": "API | CSV export | MCP tool | manual paste",
47 "fields_available": ["name", "email", "company", "title", "message"]
48 },
49 "free_trial_signups": {
50 "source_tool": "product database | Stripe | CSV | other",
51 "access_method": "API | CSV export | manual paste",
52 "fields_available": ["name", "email", "company", "signup_date", "plan"]
53 },
54 "content_downloads": {
55 "source_tool": "HubSpot | Marketo | CSV | other",
56 "access_method": "API | CSV export | manual paste",
57 "fields_available": ["name", "email", "company", "content_title", "download_date"]
58 },
59 "webinar_registrations": {
60 "source_tool": "Zoom | Luma | CSV | other",
61 "access_method": "API | CSV export | manual paste",
62 "fields_available": ["name", "email", "company", "webinar_title", "attended"]
63 },
64 "chatbot_conversations": {
65 "source_tool": "Intercom | Drift | Crisp | CSV | other",
66 "access_method": "API | CSV export | manual paste",
67 "fields_available": ["name", "email", "company", "conversation_summary", "intent"]
68 }
69 },
70 "urgency_overrides": {},
71 "response_preferences": {
72 "demo_request_sla": "< 1 hour",
73 "trial_signup_sla": "< 4 hours",
74 "default_sla": "< 24 hours"
75 },
76 "qualification_prompt_path": "path/to/existing/qualification-prompt.md or null"
77}
78```
79 
80**On subsequent runs:** Load config silently, skip setup.
81 
82**If user provides a raw CSV or pastes leads inline:** Skip source config — just classify what's given.
83 
84---
85 
86## Step 1: Collect Leads
87 
88### Input
89- Time period (e.g., "last 24 hours", "this week", "since Monday")
90- Lead sources to check (all configured sources by default, or user specifies)
91 
92### Process
931. Pull leads from each configured source for the specified period
942. Normalize into a common schema regardless of source:
95 
96```
97{
98 "name": "",
99 "email": "",
100 "company": "",
101 "title": "", // if available
102 "source_type": "", // demo_request | free_trial | content_download | webinar | chatbot | other
103 "source_detail": "", // which form, which webinar, which content piece
104 "timestamp": "",
105 "raw_message": "", // form message, chat transcript, or null
106 "raw_fields": {} // all original fields preserved
107}
108```
109 
1103. Deduplicate by email — if same person appears in multiple sources, merge into one record with all source types listed (this is a stronger signal)
111 
112### Output
113- Normalized lead list with source classification
114- Dedup report: "X leads from Y sources, Z duplicates merged"
115 
116### Human Checkpoint
117Present the collected leads count by source. Ask: "These are the leads I found. Proceed with triage?"
118 
119---
120 
121## Step 2: Classify & Rank by Urgency
122 
123### Urgency Tier System
124 
125Rank every lead into one of four urgency tiers based on their source type and behavioral signals.
126 
127**Tier 1 — Respond NOW (< 1 hour SLA)**
128- Demo requests (explicit buying intent)
129- Chatbot conversations where the prospect asked about pricing, integration, or implementation
130- Any lead that mentions a competitor by name
131- Any lead that mentions a timeline ("looking to switch by Q2", "evaluating this month")
132- Multi-source leads: appeared in 2+ sources (e.g., downloaded content AND requested demo)
133 
134**Tier 2 — Respond TODAY (< 4 hours SLA)**
135- Free trial signups (active evaluation intent)
136- Chatbot conversations with product questions (not pricing)
137- Webinar attendees who actually attended (not just registered)
138- Content downloads of bottom-funnel content (case studies, ROI calculators, comparison guides, pricing pages)
139 
140**Tier 3 — Respond within 24 hours**
141- Webinar registrants who did NOT attend
142- Content downloads of mid-funnel content (how-to guides, industry reports, templates)
143- Free trial signups with personal email domains (gmail, yahoo — lower commercial intent)
144 
145**Tier 4 — Batch response / nurture**
146- Content downloads of top-funnel content (blog posts, general ebooks, infographics)
147- Webinar registrants for broad/educational topics with no other signal
148- Any lead where company or title is missing and can't be enriched
149 
150### Signal Boosters (Move Up One Tier)
151- Company matches existing ICP (known good industry, size, stage)
152- Person has a title that maps to buyer persona
153- Company is already in pipeline (existing deal — warm context)
154- Person previously engaged (downloaded other content, attended other webinar)
155- Company was flagged by a signal composite (funding, hiring, leadership change)
156 
157### Signal Dampeners (Move Down One Tier)
158- Personal email domain with no company info
159- Bot-like behavior (form filled in < 3 seconds, nonsense fields)
160- Existing customer (unless upsell signal — keep at tier but flag differently)
161- Competitor employee (flag separately — competitive intelligence, not a lead)
162 
163### Urgency Override
164If the user configured custom urgency rules in `urgency_overrides`, apply those after the default classification.
165 
166### Output
167- Lead list sorted by urgency tier, then by timestamp within each tier
168- Each lead tagged with: `urgency_tier`, `urgency_reason`, `signal_boosters[]`, `signal_dampeners[]`
169 
170---
171 
172## Step 3: Qualify Against ICP
173 
174### Process
175For each lead, run a lightweight ICP qualification check. This is NOT the full `lead-qualification` capability — it's a fast pass to separate likely-fit from unlikely-fit.
176 
1771. **If a qualification prompt exists** (from `lead-qualification` capability): Apply it in fast mode — check hard disqualifiers only, skip deep enrichment
1782. **If no qualification prompt:** Use the company context to do a basic fit check:
179 - Does the company size/industry/stage roughly match ICP?
180 - Does the person's title map to a buyer/user persona?
181 - Any obvious disqualifiers? (wrong geography, wrong industry, too small/large)
182 
183### Qualification Categories
184- **Strong fit** — Company and person clearly match ICP
185- **Likely fit** — Partial data but what's available looks good
186- **Unknown fit** — Not enough data to determine (needs enrichment)
187- **Poor fit** — Clearly outside ICP (but still log — they came inbound for a reason)
188- **Flag: Competitor** — Employee of a known competitor
189- **Flag: Existing customer** — Already a customer (route to CS/upsell, not sales)
190 
191### Output
192- Each lead tagged with: `icp_fit`, `fit_reasoning` (one sentence)
193- Leads with "poor fit" or "flag" categories are separated into a secondary list
194 
195---
196 
197## Step 4: Enrich with Context
198 
199### Process
200For leads in Tier 1 and Tier 2 (and strong/likely fit Tier 3), gather context that helps the responder have a better conversation.
201 
202**Company enrichment (per unique company):**
203- What does the company do? (one sentence)
204- Company size, stage, industry
205- Any recent news or signals? (check if any signal composites have flagged this company)
206- Are they in our pipeline already? (check your CRM — HubSpot, Salesforce, CSV)
207- Previous engagement history (other people from this company who engaged)
208 
209**Person enrichment:**
210- Current role and tenure
211- LinkedIn headline (if available via enrichment tools)
212- Any prior engagement with us (previous downloads, webinar attendance, email replies)
213- Mutual connections or warm intro paths (if detectable)
214 
215**Engagement context:**
216- What content did they download? (summarize the topic — the responder should know what the lead is interested in)
217- What did they say in the demo request form? (quote key phrases)
218- What was the chatbot conversation about? (3-sentence summary)
219- Which webinar did they attend? (topic relevance to product)
220 
221### Tool Flexibility
222- Use whatever enrichment tools are configured (SixtyFour or Orthogonal, LinkedIn scraper, web search)
223- If no enrichment tools are configured, do a basic web search for company + person
224- Skip enrichment for Tier 4 leads (not worth the cost — batch-nurture them)
225 
226### Output
227- Each Tier 1-3 lead has an enrichment block with company context, person context, and engagement context
228- Enrichment is best-effort — missing fields are noted, never blocks the process
229 
230---
231 
232## Step 5: Route & Recommend Response
233 
234### For Each Lead, Determine:
235 
236**1. Response action:**
237 
238| Urgency | ICP Fit | Action |
239|---------|---------|--------|
240| Tier 1 | Strong/Likely | **Immediate personal outreach** — draft personalized email or call script |
241| Tier 1 | Unknown | **Immediate outreach + qualify on call** — draft email with discovery questions |
242| Tier 1 | Poor | **Still respond** (they requested a demo) — draft polite response, qualify on call |
243| Tier 2 | Strong/Likely | **Same-day personal outreach** — draft personalized welcome/check-in email |
244| Tier 2 | Unknown | **Same-day templated outreach** — send template with one personalized line |
245| Tier 2 | Poor | **Templated response** — standard welcome, no prioritization |
246| Tier 3 | Strong/Likely | **Next-day personalized outreach** — draft email referencing what they engaged with |
247| Tier 3 | Unknown/Poor | **Add to nurture sequence** — automated drip, no manual effort |
248| Tier 4 | Any | **Nurture sequence only** — batch add to appropriate drip campaign |
249| Flag: Competitor | — | **Log for competitive intel** — do not send sales outreach |
250| Flag: Customer | — | **Route to CS team** — flag upsell opportunity if relevant |
251 
252**2. Draft response (for Tier 1-3 leads with personal outreach):**
253 
254Draft a response email that:
255- References the specific action they took ("I saw you requested a demo of...", "Thanks for downloading our guide on...")
256- Connects their likely interest to a relevant product capability
257- Uses enrichment context naturally (don't be creepy — reference public info only)
258- Has a clear CTA appropriate to the tier:
259 - Tier 1: "Are you free [specific time slots] this week for a quick call?"
260 - Tier 2: "Would it be helpful if I walked you through [relevant feature]?"
261 - Tier 3: "I put together [relevant resource] that builds on what you downloaded. Happy to chat if you have questions."
262 
263**3. Assign owner (if team structure is configured):**
264- Route by territory, account size, or round-robin based on client config
265- If no team structure: all leads go to the user
266 
267---
268 
269## Output Format
270 
271### Primary: Prioritized Action Queue
272 
273Present as a clear, actionable table organized by urgency tier:
274 
275```markdown
276## Inbound Lead Triage: [Period]
277Generated: [timestamp]
278 
279### Summary
280- **Total leads:** X from Y sources
281- **Tier 1 (respond now):** X leads
282- **Tier 2 (respond today):** X leads
283- **Tier 3 (respond within 24h):** X leads
284- **Tier 4 (nurture):** X leads
285- **Flagged:** X competitors, X existing customers
286 
287---
288 
289### 🔴 Tier 1 — Respond NOW
290 
291#### Lead: [Name] — [Company] — [Title]
292- **Source:** Demo request via [tool] at [time]
293- **Urgency reason:** Explicit demo request + company matches ICP
294- **ICP fit:** Strong — [one sentence reasoning]
295- **Company:** [one sentence what they do, size, stage]
296- **Signal context:** [any signals from other composites]
297- **Engagement:** "[quote from form message or chat]"
298- **Recommended action:** Personal email + calendar link
299- **Draft response:**
300 > [ready-to-send email draft]
301 
302---
303 
304#### Lead: [Name] — [Company] — [Title]
305...
306 
307---
308 
309### 🟡 Tier 2 — Respond TODAY
310...
311 
312### 🟢 Tier 3 — Respond Within 24h
313...
314 
315### ⚪ Tier 4 — Add to Nurture
316[Batch list — name, company, source, content engaged with. No individual drafts.]
317 
318### 🔵 Flagged
319- **Competitors:** [list with company name — route to competitive intel]
320- **Existing customers:** [list with company name — route to CS]
321```
322 
323### Secondary: CSV Export
324 
325Also produce a flat CSV with all leads and their triage data:
326- All original fields
327- `urgency_tier`, `urgency_reason`, `icp_fit`, `fit_reasoning`
328- `recommended_action`, `response_draft`
329- `company_context`, `person_context`, `engagement_context`
330 
331Save to the current working directory or wherever the user prefers (e.g., `leads/inbound-triage-[date].csv`).
332 
333---
334 
335## Handling Edge Cases
336 
337**No leads in period:**
338Report "No new inbound leads found for [period]" with a note on which sources were checked.
339 
340**Lead with no email:**
341Still triage if company + name are available. Flag as "no direct contact — needs manual lookup."
342 
343**Lead from a very large company (enterprise):**
344Boost urgency by one tier. Enterprise inbound is rare and high-value. Note: "Enterprise lead — consider executive-level response."
345 
346**Lead that's already in an active outbound sequence:**
347Flag: "Already in outbound sequence [campaign name] — check for overlap before responding." Don't send a second competing message.
348 
349**Duplicate lead (same person, same source, same period):**
350Keep the most recent submission. Note the repeat engagement as a signal booster.
351 
352**Partial data (no company, no title):**
353Classify based on what IS available. Source type still determines urgency tier. Note: "Incomplete data — consider enrichment before outreach."
354 
355**High volume (100+ leads in period):**
356For Tier 3-4 leads, skip individual enrichment. Batch-qualify company names against ICP, produce summary stats instead of individual briefs. Focus human attention on Tier 1-2 only.
357 
358---
359 
360## Cadence
361 
362- **2-3x daily** (for active teams): Triage new leads every few hours to hit SLA targets
363- **Daily AM** (minimum): Morning triage of all leads from previous day/overnight
364- **Weekly** (lightweight): Summary stats on inbound volume, source effectiveness, response times
365 
366---
367 
368## Tools Required
369 
370The agent should have access to:
371- **CRM / form tool access** — to pull inbound leads (HubSpot, Salesforce, Typeform, etc.)
372- **Web search** — for company/person enrichment when other tools aren't available
373- **Lead enrichment tools** — SixtyFour or Orthogonal, LinkedIn scraper, or similar (optional, enhances quality)
374- **Email drafting** — references `email-drafting` capability for response frameworks
375- **Calendar tool** — to include available time slots in Tier 1 responses (gcalcli or similar)
376 
View all files on GitHub →

Details

Version
1.0.0
Updated
Sep 21, 2026
License
MIT
Stars on the repo
★ 1,220
Checked
Source
gooseworks-ai/goose-skills ↗
Creator
gooseworks-ai · 206 listings
View creator

Made with inbound-lead-triage

Inbound lead triage — CleanShot 2026-07-13 at 20 16 54@2x (from the gooseworks-ai/goose-skills README)
Inbound lead triage — CleanShot 2026-07-13 at 20 16 54@2x (from the gooseworks-ai/goose-skills README)

by gooseworks-ai

Similar skills

See all →
SkillAct as a comprehensive AI sales intelligenceAI Sales Team — Main Orchestratorzubair-trabzada/ai-sales-team-claude · by zubair-trabzadaYou are a comprehensive AI sales intelligence and outreach system for Claude Code. You help founders, sales teams, agency owners, and…★ 1.4k GitHub starsSkillAutonomous cold email campaign launcherAuto research publicgrowthenginenowoslawski/coldoutboundskills · by growthenginenowoslawskiAutonomous cold email campaign launcher. Takes one target company domain, scrapes their website, generates an ICP with Claude, pulls matching leads via Prospeo, enriches emails + company descriptions, personalizes each lead with parallel Claude Code Task sub-agents (A/B/C variants), and uploads as a live Smartlead campaign. Uses local JSON files for state (no database required). Use for automated daily campaign launches after you have an initial `client-profile.yaml` from /icp-onboarding. Triggers on "auto-research", "launch an automated campaign", "daily campaign", "run the research loop".★ 736 GitHub starsSkillRun a full Account-Based Marketing campaign end-to-endABM Campaign — DIY Playbookexplorium-ai/gtm-skills · by explorium-aiABM campaign skill for Claude Code: run a full Account-Based Marketing campaign end-to-end — from ICP definition to live LinkedIn Ads. Builds targeted account lists with Vibe Prospecting, enriches and scores companies with real-time B2B data, generates personalized ad creatives with Claude Code and Figma, pushes matched audiences to LinkedIn Ads, and monitors campaigns daily at scale. The complete GTM skill for AI-driven account-based marketing in Claude Code, Codex, Hermes-Agent, and OpenClaw. No agency needed.★ 197 GitHub starsSkillContact data skill for Claude Code and Codex: build a rankedAccount contact shortlistexplorium-ai/gtm-skills · by explorium-aiContact data skill for Claude Code and Codex: build a ranked shortlist of decision-makers and contacts at a target company for outbound prospecting, deal acceleration, or renewal/expansion plays. Returns verified contact data including email, phone, LinkedIn profile, title, seniority, and department. Provide a company name or domain plus optional seniority focus or use case. Use for contact data enrichment, LinkedIn profile lookup, and building outbound contact lists. Works in Claude Code, Codex, Hermes-Agent, and OpenClaw.★ 197 GitHub starsSkillLead scoring and buying signals skill for Claude CodeAccount fit rankexplorium-ai/gtm-skills · by explorium-aiLead scoring and buying signals skill for Claude Code and Codex: rank a list of accounts by ICP fit, buying intent, real-time trigger events, and workforce momentum. Returns composite score (0-100), tier (A/B/C), and a 'why now' signal per account. Use for account-based selling, ABM list prioritization, territory planning, signal-based selling, and buyer-intent ranking. Triggers on 'score these accounts', 'rank by ICP fit and intent', 'prioritize this account list', 'which accounts have the strongest buying signals', 'ICP scoring', 'account prioritization'. Works in Claude Code, Codex, Hermes-Agent, OpenClaw, and Claude Cowork.★ 197 GitHub starsSkillRun end-to-end B2B cold-email outreach through the Hyper MCPhyperfx-ai/marketing-skills · by hyperfx-aiRun end-to-end B2B cold-email outreach through the Hyper MCP — enrich prospects with Apollo, scrape per-prospect signals from company sites and LinkedIn, draft personalized emails using proven hook frameworks, send via Gmail with safe defaults, and route replies into labeled folders. Use when the user wants to write cold emails, run an outbound sequence, prospect a list, build a follow-up cadence, "reach out to leads," or asks why nobody is replying to their cold emails.★ 90 GitHub stars

More from gooseworks-ai

SkillMine the highest-converting ad angles from customer reviewsAd angle minergooseworks-ai/goose-skills · by gooseworks-aiMine the highest-converting ad angles from customer reviews, Reddit complaints, support tickets, and competitor ads. Extracts actual pain language, competitor weaknesses, and outcome phrases that real buyers use. Outputs a ranked angle bank with proof quotes and recommended ad formats per angle.★ 1.2k GitHub starsSkillAnalyze ad campaign performance data to identify what'sAd campaign analyzergooseworks-ai/goose-skills · by gooseworks-aiAnalyze ad campaign performance data (Google, Meta, LinkedIn) to identify what's working, what's wasting budget, and specific cut/scale/test recommendations. Runs statistical analysis, funnel diagnostics, and multi-channel budget reallocation with specific dollar-amount shift recommendations and scenario modeling.★ 1.2k GitHub starsSkillFor paid lead-gen and participant-recruitment adsAd lead quality analyzergooseworks-ai/goose-skills · by gooseworks-aiFor paid lead-gen and participant-recruitment ads, replaces vanity CPA with true CAC per qualified lead by joining ad-platform data with downstream funnel events, surfaces tracking gaps, and classifies every creative into Scale / Keep / Investigate / Cut.★ 1.2k GitHub starsSkillAnalyze the message match between your ads and landing pagesAd to landing page auditorgooseworks-ai/goose-skills · by gooseworks-aiAnalyze the message match between your ads and landing pages. Checks if the promise in the ad copy carries through to the landing page headline, body, and CTA. Flags disconnects that kill conversion rates. Works with Google, Meta, and LinkedIn ads.★ 1.2k GitHub starsSkillCheck and improve your brand's visibility across AI searchAeogooseworks-ai/goose-skills · by gooseworks-aiCheck and improve your brand's visibility across AI search engines (ChatGPT, Perplexity, Gemini, Grok, Claude, DeepSeek). Set up tracking, run visibility analyses, audit your website for AI readability, and get actionable recommendations. Uses the npx goose-aeo@latest CLI.★ 1.2k GitHub starsSkillSearch Amazon products - find items, compare pricesAmazon Product Searchgooseworks-ai/goose-skills · by gooseworks-aiSearch Amazon products - find items, compare prices, read reviews★ 1.2k GitHub stars