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 athina-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 frameworkscontent-media
Takes an existing screen recording or demo video and adds professional zoom/pan effects synchronized to the narration. Uses transcript-driven zoom targeting and Remotion for rendering. Optionally replaces audio with a soundtrack.
tools
Repurposes long-form video (podcasts, interviews, talks) into short-form vertical clips for Instagram Reels, TikTok, and YouTube Shorts. Handles transcription, moment selection, clip extraction, speaker-tracked reframing (16:9 to 9:16), and animated captions.
development
Creates talking head videos from any source material (docs, changelogs, blog posts, notes, transcripts). Produces multi-scene videos with avatar narration over screenshots/images using HeyGen v2 API. Supports Quick Shot and Full Producer modes.
tools
Generates Instagram-ready product reels from any e-commerce product page URL. Scrapes product images, classifies by type, generates AI-animated clips via Higgsfield API, creates text overlays with style presets, and composes a 15-20 second reel with music. Supports model-based and product-only reels.