Social Engagement Responder
Generates contextual, on-brand replies to social media engagement (comments, mentions, DMs, tags). Classifies each interaction for CRM routing and prioritizes lead signals.
Prerequisites
agency.config.json populated (outreach tone, services, case studies)
- Engagement data: the comment/mention/DM text, platform, context (original post if available)
Phase 0: Intake
Read agency.config.json:
agency.name, agency.founder -- for sign-offs and personal touches
outreach.tone -- voice baseline
outreach.banned_phrases -- never use in replies
services[] -- for contextual service mentions
case_studies[] -- for proof points when relevant
Accept parameters:
engagement -- (required) object containing:
platform -- linkedin, twitter, instagram, reddit
type -- comment, mention, dm, tag, reply
text -- the engagement text
author -- name/handle of the person
context -- (optional) the original post or thread context
author_profile -- (optional) brief profile info (title, company, follower count)
batch -- (optional) array of engagement objects for bulk processing
auto_classify -- boolean, classify without generating reply. Default: false
Phase 1: Classification
Classify each engagement into one of these categories:
| Category |
Signals |
Priority |
Action |
| LEAD_SIGNAL |
Asks about services, pricing, availability; mentions pain points; DMs asking for help |
HIGH |
Reply + flag for CRM |
| CUSTOMER_QUESTION |
Existing client asking for support, updates, or clarification |
HIGH |
Reply + flag for account team |
| PARTNERSHIP_OPPORTUNITY |
Collaboration offers, co-marketing, referral partner signals |
MEDIUM |
Reply + flag for founder |
| GENUINE_ENGAGEMENT |
Thoughtful comments, shares experience, adds to discussion |
MEDIUM |
Reply to nurture |
| SIMPLE_REACTION |
"Great post!", "Agree!", emoji-only, basic compliments |
LOW |
Short thank-you or skip |
| TROLL_SPAM |
Hostile, irrelevant, promotional spam, bot-like |
IGNORE |
Do not reply, flag for review |
Classification output:
{
"category": "LEAD_SIGNAL",
"confidence": "HIGH",
"reasoning": "Asked about Shopify development pricing and mentioned they need help with their store",
"suggested_action": "Reply with value, DM to continue conversation",
"crm_flag": true
}
Phase 2: Reply Generation
LEAD_SIGNAL replies
- Acknowledge their need specifically
- Provide one piece of genuine value (tip, insight, quick observation)
- Soft pivot to conversation ("Happy to share more, DM me?" or "We actually helped a brand with exactly this")
- Never hard pitch in a public reply
- If DM: be more direct, offer a quick call or audit
CUSTOMER_QUESTION replies
- Answer directly and helpfully
- If complex, acknowledge + offer to follow up via DM/email
- Reference their specific situation if known
- Keep professional but warm
PARTNERSHIP_OPPORTUNITY replies
- Express interest without over-committing
- Ask a qualifying question ("What kind of collaboration are you thinking?")
- Offer to take it to DM/email
GENUINE_ENGAGEMENT replies
- Match their energy level
- Add value to the conversation (expand on a point, share a related insight)
- Ask a follow-up question to deepen engagement
- Keep it conversational, not corporate
SIMPLE_REACTION replies
- Short acknowledgment: "Thanks!", "Appreciate that", "Glad it resonated"
- Or skip entirely if volume is high (flag as "no reply needed")
TROLL_SPAM replies
- Do not reply
- Flag for manual review
- If borderline, respond once with facts, then disengage
Phase 3: Platform-Specific Formatting
| Platform |
Reply Style |
Length |
| LinkedIn |
Professional, can be 1-3 sentences, use their name |
20-80 words |
| Twitter |
Casual, punchy, match their tweet energy |
Under 280 chars |
| Instagram |
Friendly, use their handle, casual |
10-40 words |
| Reddit |
Helpful, detailed if they asked a question, no self-promo |
30-200 words |
Phase 4: Quality Check
- Banned phrase scan: Check against
outreach.banned_phrases
- Self-promo check: Public replies should not read as ads. Lead with value.
- Tone match: Reply tone should match the engagement's tone (serious reply to serious question, casual to casual)
- Platform limits: Twitter replies under 280 chars
- No emoji overload: Max 1-2 per reply
Phase 5: Output
Return structured JSON:
{
"engagements": [
{
"platform": "linkedin",
"type": "comment",
"author": "Priya Mehta",
"original_text": "This is really insightful. We've been struggling with our Shopify product pages for months.",
"classification": {
"category": "LEAD_SIGNAL",
"confidence": "HIGH",
"reasoning": "Mentions struggling with Shopify product pages, matches our CRO service",
"crm_flag": true
},
"reply": "Priya, product pages are where most D2C brands leave the most revenue on the table. One quick win: make sure your above-the-fold shows social proof + a clear size/variant selector without scrolling. Happy to share a few more specifics if useful, feel free to DM.",
"follow_up_action": "If she DMs, share Kibi Sports case study and offer a free CRO audit",
"word_count": 47
}
],
"summary": {
"total_processed": 12,
"lead_signals": 2,
"customer_questions": 1,
"partnership": 0,
"genuine_engagement": 5,
"simple_reactions": 3,
"troll_spam": 1,
"replies_generated": 8,
"skipped": 4
},
"generated_at": "2026-03-13T10:00:00Z"
}
Phase 6: CRM Handoff
For LEAD_SIGNAL engagements:
- Write to CRM via
crm-writer with: author name, platform, signal text, classification, reply sent, follow-up action
- Set lead stage = NEW if not already in CRM
- Tag source =
social_engagement
Example Usage
Trigger phrases:
- "Process today's LinkedIn comments and mentions"
- "Classify and reply to these Instagram DMs"
- "Handle the comments on my latest LinkedIn post"
- "Check for lead signals in this week's social engagement"
- "Draft replies for these Reddit mentions"
- "Triage my social media inbox"
1---2name: social-engagement-responder3description: Generates contextual replies to comments, mentions, and DMs on social posts. Classifies engagement as lead signal, customer question, partnership opportunity, or troll/spam. Uses brand voice from agency.config.json.4---56# Social Engagement Responder78Generates contextual, on-brand replies to social media engagement (comments, mentions, DMs, tags). Classifies each interaction for CRM routing and prioritizes lead signals.910## Prerequisites1112- `agency.config.json` populated (outreach tone, services, case studies)13- Engagement data: the comment/mention/DM text, platform, context (original post if available)1415## Phase 0: Intake1617Read `agency.config.json`:18- `agency.name`, `agency.founder` -- for sign-offs and personal touches19- `outreach.tone` -- voice baseline20- `outreach.banned_phrases` -- never use in replies21- `services[]` -- for contextual service mentions22- `case_studies[]` -- for proof points when relevant2324Accept parameters:25- `engagement` -- (required) object containing:26 - `platform` -- `linkedin`, `twitter`, `instagram`, `reddit`27 - `type` -- `comment`, `mention`, `dm`, `tag`, `reply`28 - `text` -- the engagement text29 - `author` -- name/handle of the person30 - `context` -- (optional) the original post or thread context31 - `author_profile` -- (optional) brief profile info (title, company, follower count)32- `batch` -- (optional) array of engagement objects for bulk processing33- `auto_classify` -- boolean, classify without generating reply. Default: `false`3435## Phase 1: Classification3637Classify each engagement into one of these categories:3839| Category | Signals | Priority | Action |40|----------|---------|----------|--------|41| **LEAD_SIGNAL** | Asks about services, pricing, availability; mentions pain points; DMs asking for help | HIGH | Reply + flag for CRM |42| **CUSTOMER_QUESTION** | Existing client asking for support, updates, or clarification | HIGH | Reply + flag for account team |43| **PARTNERSHIP_OPPORTUNITY** | Collaboration offers, co-marketing, referral partner signals | MEDIUM | Reply + flag for founder |44| **GENUINE_ENGAGEMENT** | Thoughtful comments, shares experience, adds to discussion | MEDIUM | Reply to nurture |45| **SIMPLE_REACTION** | "Great post!", "Agree!", emoji-only, basic compliments | LOW | Short thank-you or skip |46| **TROLL_SPAM** | Hostile, irrelevant, promotional spam, bot-like | IGNORE | Do not reply, flag for review |4748Classification output:49```json50{51 "category": "LEAD_SIGNAL",52 "confidence": "HIGH",53 "reasoning": "Asked about Shopify development pricing and mentioned they need help with their store",54 "suggested_action": "Reply with value, DM to continue conversation",55 "crm_flag": true56}57```5859## Phase 2: Reply Generation6061### LEAD_SIGNAL replies62- Acknowledge their need specifically63- Provide one piece of genuine value (tip, insight, quick observation)64- Soft pivot to conversation ("Happy to share more, DM me?" or "We actually helped a brand with exactly this")65- Never hard pitch in a public reply66- If DM: be more direct, offer a quick call or audit6768### CUSTOMER_QUESTION replies69- Answer directly and helpfully70- If complex, acknowledge + offer to follow up via DM/email71- Reference their specific situation if known72- Keep professional but warm7374### PARTNERSHIP_OPPORTUNITY replies75- Express interest without over-committing76- Ask a qualifying question ("What kind of collaboration are you thinking?")77- Offer to take it to DM/email7879### GENUINE_ENGAGEMENT replies80- Match their energy level81- Add value to the conversation (expand on a point, share a related insight)82- Ask a follow-up question to deepen engagement83- Keep it conversational, not corporate8485### SIMPLE_REACTION replies86- Short acknowledgment: "Thanks!", "Appreciate that", "Glad it resonated"87- Or skip entirely if volume is high (flag as "no reply needed")8889### TROLL_SPAM replies90- Do not reply91- Flag for manual review92- If borderline, respond once with facts, then disengage9394## Phase 3: Platform-Specific Formatting9596| Platform | Reply Style | Length |97|----------|------------|--------|98| LinkedIn | Professional, can be 1-3 sentences, use their name | 20-80 words |99| Twitter | Casual, punchy, match their tweet energy | Under 280 chars |100| Instagram | Friendly, use their handle, casual | 10-40 words |101| Reddit | Helpful, detailed if they asked a question, no self-promo | 30-200 words |102103## Phase 4: Quality Check1041051. **Banned phrase scan**: Check against `outreach.banned_phrases`1062. **Self-promo check**: Public replies should not read as ads. Lead with value.1073. **Tone match**: Reply tone should match the engagement's tone (serious reply to serious question, casual to casual)1084. **Platform limits**: Twitter replies under 280 chars1095. **No emoji overload**: Max 1-2 per reply110111## Phase 5: Output112113Return structured JSON:114115```json116{117 "engagements": [118 {119 "platform": "linkedin",120 "type": "comment",121 "author": "Priya Mehta",122 "original_text": "This is really insightful. We've been struggling with our Shopify product pages for months.",123 "classification": {124 "category": "LEAD_SIGNAL",125 "confidence": "HIGH",126 "reasoning": "Mentions struggling with Shopify product pages, matches our CRO service",127 "crm_flag": true128 },129 "reply": "Priya, product pages are where most D2C brands leave the most revenue on the table. One quick win: make sure your above-the-fold shows social proof + a clear size/variant selector without scrolling. Happy to share a few more specifics if useful, feel free to DM.",130 "follow_up_action": "If she DMs, share Kibi Sports case study and offer a free CRO audit",131 "word_count": 47132 }133 ],134 "summary": {135 "total_processed": 12,136 "lead_signals": 2,137 "customer_questions": 1,138 "partnership": 0,139 "genuine_engagement": 5,140 "simple_reactions": 3,141 "troll_spam": 1,142 "replies_generated": 8,143 "skipped": 4144 },145 "generated_at": "2026-03-13T10:00:00Z"146}147```148149## Phase 6: CRM Handoff150151For LEAD_SIGNAL engagements:152- Write to CRM via `crm-writer` with: author name, platform, signal text, classification, reply sent, follow-up action153- Set lead stage = NEW if not already in CRM154- Tag source = `social_engagement`155156## Example Usage157158Trigger phrases:159- "Process today's LinkedIn comments and mentions"160- "Classify and reply to these Instagram DMs"161- "Handle the comments on my latest LinkedIn post"162- "Check for lead signals in this week's social engagement"163- "Draft replies for these Reddit mentions"164- "Triage my social media inbox"