skills/composites/inbound-lead-triage/SKILL.md
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.
npx skillsauth add gooseworks-ai/goose-skills inbound-lead-triageInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
Load this composite when:
[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.
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.
{
"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
}
Present the collected leads count by source. Ask: "These are the leads I found. Proceed with triage?"
Rank every lead into one of four urgency tiers based on their source type and behavioral signals.
Tier 1 — Respond NOW (< 1 hour SLA)
Tier 2 — Respond TODAY (< 4 hours SLA)
Tier 3 — Respond within 24 hours
Tier 4 — Batch response / nurture
If the user configured custom urgency rules in urgency_overrides, apply those after the default classification.
urgency_tier, urgency_reason, signal_boosters[], signal_dampeners[]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.
lead-qualification capability): Apply it in fast mode — check hard disqualifiers only, skip deep enrichmenticp_fit, fit_reasoning (one sentence)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):
Person enrichment:
Engagement context:
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:
3. Assign owner (if team structure is configured):
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]
Also produce a flat CSV with all leads and their triage data:
urgency_tier, urgency_reason, icp_fit, fit_reasoningrecommended_action, response_draftcompany_context, person_context, engagement_contextSave to the current working directory or wherever the user prefers (e.g., leads/inbound-triage-[date].csv).
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.
The agent should have access to:
email-drafting capability for response frameworksdevelopment
End-to-end skill that turns a single reference image into a fully-installed, example-rendered style preset for the goose-graphics composite. Analyzes the image, writes the slim style spec, registers it in styles/index.json, generates all 7 format examples using the standard brief, renders PNGs via Playwright, and updates examples/manifest.json. Invoke with /goose-graphics-create-style.
development
Evaluate YC batch companies for investment — scrapes the YC directory, researches each company and its founders (work history, LinkedIn, website), assesses founder-company fit, and exports to Google Sheets with priority rankings. Use when asked to evaluate YC companies, research a YC batch, screen startups, or do due diligence on YC companies.
tools
Take screenshots of any website using Notte browser automation. Use when asked to screenshot, capture, or snap a webpage.
development
Search the web, platforms, and datasets. Use when asked to search, find, look up, research, or discover information from the web, YouTube, Amazon, eBay, news, academic sources, or any online platform.