Agent skill
reply-analyzer
Classify reply sentiment and determine next action
From ekatasingh1107/b2b-gtm-skills · 99 skills · 2 · pushed 2026-04-11
What it does when it runs
Classify reply sentiment and determine next action
Read from the skill and the 1 file bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- None found.
- Hosts it reaches
- No third-party host appears in the skill or its bundled files.
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It only issues instructions, so there is nothing to bound. - Actions present in the files
- None. Instructions only.
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/ekatasingh1107/b2b-gtm-skills.git /tmp/b2b-gtm-skills git -C /tmp/b2b-gtm-skills sparse-checkout set "skills/capabilities/reply-analyzer" mkdir -p ~/.claude/skills/reply-analyzer cp -R "/tmp/b2b-gtm-skills/skills/capabilities/reply-analyzer/." ~/.claude/skills/reply-analyzer/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
The skill
Source on GitHub ↗Reproduced in full from ekatasingh1107/b2b-gtm-skills/blob/eae8dd0bb98da1c8e84abd297066a87015dd860f/skills/capabilities/reply-analyzer/SKILL.md, which is licensed MIT (repository). 1,535 words, 15 headings.
Reply Analyzer
Classifies the sentiment and intent of replies to outreach messages. Determines the recommended next action, generates draft responses for positive and neutral cases, and outputs CRM stage updates. Used by the evening-scan playbook after inbox-scanner returns responses.
Prerequisites
agency.config.jsonat repo root withoutreach,services,case_studies- Reply data from
inbox-scanneror manually provided
Phase 0: Intake
- Read
agency.config.jsonfrom the project root. - Extract:
services-- list of services offered (for matching interest areas)case_studies-- available case studies (for draft responses)outreach.tone-- voice guidelines for draft responsesoutreach.banned_phrases-- phrases to avoid in draft responsesoutreach.sign_off-- signature line for draft responses
- Accept parameters:
reply_text-- the full text of the reply (required)from_name-- name of the person who repliedfrom_email-- their email address (if available)company-- their company name (if known)channel-- where the reply came from (email,linkedin,instagram)lead_context-- object with cadence day, previous touches, lead score, tier
Phase 1: Sentiment Classification
Analyze the reply text and classify it into exactly one of these categories:
| Category | Signals | Examples |
|---|---|---|
POSITIVE_DEMO | Explicitly requests a meeting, call, or demo | "Let's set up a call", "Can we chat this week?", "Send me a calendar link", "Free Thursday?" |
POSITIVE_INTERESTED | Questions about services, pricing, timeline, availability; general interest | "Sounds interesting, tell me more", "What are your rates?", "How long does a CRO audit take?", "Can you send some examples?" |
NEUTRAL_QUESTION | Asks for info but no clear buying intent | "Who is this?", "How did you find me?", "What does Plasho do?", "Where are you based?" |
NEUTRAL_OOO | Out of office or auto-reply | "I'm out of office until...", "On PTO, back on...", "Auto-reply: I'm currently unavailable" |
NEGATIVE_NOT_NOW | Polite decline with timing indication; not a permanent no | "Not the right time", "Maybe next quarter", "We just signed with someone", "Check back in 3 months" |
NEGATIVE_NOT_INTERESTED | Clear rejection without timing indicator | "Not interested", "We're good, thanks", "Not looking for this", "Please don't contact me" |
NEGATIVE_UNSUBSCRIBE | Wants to be removed from all communication | "Unsubscribe", "Remove me from your list", "Stop emailing me", "Do not contact me again", "This is spam" |
REFERRAL | Redirects to another person inside or outside their company | "You should talk to [name]", "CC'ing my colleague who handles this", "Try reaching out to our head of ecomm" |
Classification rules:
- If multiple signals are present, choose the strongest positive category. A reply that asks a question AND requests a call is
POSITIVE_DEMO, notNEUTRAL_QUESTION. - Short replies ("Thanks", "Got it", "OK") without additional context: classify as
NEUTRAL_QUESTIONwith LOW confidence. - Replies that are clearly automated (vacation responders, ticket confirmations): classify as
NEUTRAL_OOO. - Any mention of "unsubscribe", "remove", "stop", or "spam" overrides all other signals and forces
NEGATIVE_UNSUBSCRIBE.
Phase 2: Intent Extraction
Beyond the top-level sentiment, extract these structured details from the reply:
Questions asked
List every question the person asked, verbatim or paraphrased:
- "What are your rates?"
- "How long does a CRO audit take?"
- "Do you work with brands outside India?"
Objections raised
Identify any objections or hesitations:
- Price: "Too expensive", "What's the budget?", "We don't have budget right now"
- Timing: "Not the right time", "Maybe next quarter", "After our funding round"
- Existing vendor: "We already work with an agency", "We just signed with someone"
- Platform: "We're not on Shopify", "We use WooCommerce", "Thinking of migrating to Shopify"
- Trust: "Never heard of you", "Can you share references?", "How many stores have you done?"
- Scope: "We only need X, not Y", "This is too comprehensive"
People mentioned
Extract any person references that could be referrals:
- Name (if mentioned)
- Title/role (if mentioned)
- Company (if different from the replier's company)
- Contact info (if shared)
Timeline indicators
Extract any timing references:
- Specific dates: "after March", "in Q2", "next month"
- Relative: "in 2 weeks", "next quarter", "after funding"
- Vague: "sometime later", "eventually"
- Urgent: "ASAP", "this week", "immediately"
Interest areas
Map the reply to specific services from agency.config.json:
- Which service(s) they seem interested in
- Any specific problems they mentioned (e.g., "our conversion rate is low" maps to CRO)
Phase 3: Recommended Action
Based on the classification, recommend a specific next action and CRM stage update:
| Classification | Recommended Action | CRM Stage Update | Pause Cadence? |
|---|---|---|---|
POSITIVE_DEMO | Send calendar link immediately. Suggest 2-3 time slots. Keep it short. | DEMO_BOOKED | Yes |
POSITIVE_INTERESTED | Reply with relevant info addressing their questions. Include the most relevant case study. Ask if they want to jump on a 15-min call. | REPLIED | Yes |
NEUTRAL_QUESTION | Answer their question directly and concisely. Re-pitch value in 1-2 sentences. Include a soft CTA for a call. | REPLIED | Yes |
NEUTRAL_OOO | Do nothing now. Note their return date. Reschedule next cadence touch for return date + 1 day. | CONTACTED (keep current) | Adjust timing only |
NEGATIVE_NOT_NOW | Send polite acknowledgment. If they gave a timeline, set a reminder for that date. If no timeline, set reminder for 90 days. | REPLIED | Yes, with reactivation date |
NEGATIVE_NOT_INTERESTED | Send a short, gracious close: "Understood, thanks for letting me know. If things change, we're here." Mark lead as done. | NOT_INTERESTED | Yes, end cadence |
NEGATIVE_UNSUBSCRIBE | Send acknowledgment: "Done, you won't hear from us again." Remove from ALL sequences and lists immediately. | DO_NOT_CONTACT | Yes, permanent |
REFERRAL | Thank the original contact. Add the referred person as a new lead with source = "referral from [original contact]". Begin research on the referred person. | REPLIED (original) + create new lead | Yes (original) |
Draft response generation
Generate a draft response for POSITIVE_DEMO, POSITIVE_INTERESTED, NEUTRAL_QUESTION, NEGATIVE_NOT_NOW, NEGATIVE_NOT_INTERESTED, and NEGATIVE_UNSUBSCRIBE categories.
Draft response rules:
- Follow the
outreach.tonefrom config: direct, helpful, zero fluff - Never use any phrase from
outreach.banned_phrases - Keep it under 100 words for email, under 50 words for LinkedIn/Instagram
- Use the replier's first name
- For positive replies: reference the most relevant
case_studiesentry based on their industry/interest - For demo requests: include a calendar link placeholder
[CAL_LINK] - Sign off with
outreach.sign_off - Match the channel tone: email can be slightly longer, LinkedIn/Instagram should be conversational and brief
Phase 4: Output
Return structured JSON:
{
"classification": "POSITIVE_INTERESTED",
"sentiment": "positive",
"confidence": "HIGH",
"summary": "Interested in CRO audit services, asked about pricing and timeline",
"questions_asked": [
"What are your rates?",
"How long does a CRO audit take?"
],
"objections": [],
"referrals": [],
"timeline_mentioned": null,
"interest_area": "Conversion Rate Optimization",
"recommended_action": "Reply with CRO audit pricing and Kibi Sports case study. Suggest 15-min call.",
"crm_stage_update": "REPLIED",
"pause_cadence": true,
"reactivation_date": null,
"draft_response": "Hey Sarah, glad this caught your eye. For CRO, we typically start with a full audit (takes about a week) -- for reference, our Kibi Sports audit uncovered issues causing 15-25% revenue loss, and the redesign drove measurable uplift in conversions.\n\nHappy to walk through what a quick audit of your store would look like. Got 15 min this week?\n\nEkata | Plasho (plasho.com)",
"new_leads_to_create": []
}
For REFERRAL classification, the new_leads_to_create array is populated:
{
"classification": "REFERRAL",
"sentiment": "neutral",
"confidence": "MEDIUM",
"summary": "Redirected to their Head of Ecommerce, Priya Sharma",
"questions_asked": [],
"objections": [],
"referrals": [
{
"name": "Priya Sharma",
"title": "Head of Ecommerce",
"company": "Brand X",
"email": null,
"source": "Referral from Sarah Chen"
}
],
"timeline_mentioned": null,
"interest_area": null,
"recommended_action": "Thank Sarah for the referral. Research Priya Sharma at Brand X. Add as new lead with referral source.",
"crm_stage_update": "REPLIED",
"pause_cadence": true,
"reactivation_date": null,
"draft_response": "Thanks Sarah, really appreciate the pointer. Will reach out to Priya.\n\nEkata | Plasho (plasho.com)",
"new_leads_to_create": [
{
"name": "Priya Sharma",
"title": "Head of Ecommerce",
"company": "Brand X",
"email": null,
"source": "Referral from Sarah Chen",
"priority": "HIGH"
}
]
}
Confidence levels:
- HIGH: Reply is unambiguous, classification is clear from the text
- MEDIUM: Reply has mixed signals or is short/ambiguous, classification is best guess
- LOW: Reply is very short (1-3 words), automated, or context-dependent
Example Usage
Trigger phrases:
- "Analyze this reply"
- "Classify this response"
- "What should I do with this reply?"
- "Run reply analyzer on these responses"
User: Analyze this reply: "Hey, interesting work on Kibi Sports. We're actually looking at overhauling our Shopify store. What would something like that cost for a mid-size D2C brand? Could do a call next week."
Assistant: [classifies as POSITIVE_DEMO, extracts pricing question + timeline "next week", recommends sending calendar link with 2-3 slots, generates draft response referencing Kibi Sports case study]
User: What do I do with this: "Thanks but we just hired an agency last month."
Assistant: [classifies as NEGATIVE_NOT_NOW, extracts objection "existing vendor", recommends polite acknowledgment with 90-day reminder, generates short gracious reply]
Files bundled with it
These load only when the skill asks for them, so they cost nothing until it runs.
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- serp-analyzer by OpenClaudia · 677
- positive-reply-scoring by growthenginenowoslawski · 668
- copywriting-analyzer by Othmane-Khadri · 290
- reply-handler by Othmane-Khadri · 290
- reply-classifier by janskuba · 200
- reply-prediction by louisblythe · 143
- inbox-reply by extruct-ai · 107
- reply-classification by impecablemee · 66
Need help setting it up?
This page tells you what reply-analyzer does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.