Inbound lead triage

Triages all inbound leads from a given period — demo requests, free trial signups, content downloads, webinar registrations, chatbot conversations.

How to use it

  1. Hit Copy the whole skill.
  2. Claude: ⋯ → Download .md, then Customize → Skills → Add → Upload skill.
    ChatGPT: make a Project and paste it into Instructions.
    Neither? Paste it at the top of a new chat — it works for that chat.
  3. Describe your job in plain words. The AI follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit gooseworks-ai/goose-skills/skills/lead-generation/composites/inbound-lead-triage#main ~/.claude/skills/inbound-lead-triage

For one project only, change the path to .claude/skills/inbound-lead-triage.

Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Show the full text376 lines
inbound-lead-triage/SKILL.md376 lines15.5 KBpushed 96d agoRawView on GitHub

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 

Discussion

Alternatives

Also in Lead lists