π₯ Reply Classification Agent
Automation Level: 90% AUTO
Classifies every inbound reply within 1 hour. Routes leads automatically based on intent. Only βinterestedβ and βobjectionβ replies require human follow-through.
Manifest Stage: S7 β See 01-Process-Manifest Input: Inbound replies from 05-Email-Sequence-Engine (all reply events) Output: Classified + routed replies β CRM, human queue, 09-Metrics-and-Self-Improvement
π― Agent Objective
agent:
name: ReplyClassificationAgent
version: 1.0.0
model: claude-haiku-4-5 # fast, cheap β classification only
objective: >
Read every inbound reply, classify the intent into one of 6 categories,
take the appropriate automated action, and hand off to a human only when
genuine interest or a nuanced objection is detected.
sla: "Classify within 60 minutes of receipt"
run_mode: event_driven # triggers on every new replyπ·οΈ Classification Schema
classes:
- id: INTERESTED
label: "Interested / Wants to talk"
examples:
- "Yes, let's chat"
- "Can you send me more info?"
- "When are you free this week?"
- "Who else do you work with in [industry]?"
confidence_threshold: 0.85
auto_action: false # HUMAN handles these
human_sla_hours: 4
- id: OBJECTION
label: "Objection (addressable)"
examples:
- "We already use X for this"
- "Not the right time, maybe Q3"
- "We're too small for this"
- "Can you share pricing first?"
confidence_threshold: 0.80
auto_action: partial # agent drafts response, human sends
human_sla_hours: 24
- id: NOT_NOW
label: "Not now (nurture)"
examples:
- "Reach out in 6 months"
- "We just signed a contract elsewhere"
- "Budget is frozen until next quarter"
confidence_threshold: 0.80
auto_action: true
action: add_to_nurture_sequence, set_reminder_90d
- id: REFERRAL
label: "Wrong person / Referral"
examples:
- "You should talk to our VP of Sales, Sarah"
- "I'm not the right contact for this"
- "Try reaching out to our marketing team"
confidence_threshold: 0.85
auto_action: true
action: extract_referred_contact, add_to_sourcing_queue
- id: UNSUBSCRIBE
label: "Unsubscribe / Stop contacting"
examples:
- "Please remove me from your list"
- "Unsubscribe"
- "Stop emailing me"
- "Not interested"
confidence_threshold: 0.75 # lower threshold = safer
auto_action: true
action: immediate_sequence_stop, add_to_suppression_list, log_in_crm
- id: OUT_OF_OFFICE
label: "OOO / Bounce"
examples:
- "I'm out of the office until..."
- "This email address is no longer active"
confidence_threshold: 0.95 # very high confidence needed
auto_action: true
action: pause_sequence_until_return_date, update_email_if_bounceπ Classification & Routing Flow
flowchart TD A["Reply received<br/>from Sequence Engine"] A --> B["Stop sequence<br/>for this lead"] B --> C["Classify intent<br/>with LLM"] C --> D{Classification} D -->|"INTERESTED"| E["π΄ Human Queue<br/>Alert COO within 1h<br/>Create CRM task"] D -->|"OBJECTION"| F["π‘ Draft response<br/>Human reviews and sends"] D -->|"NOT_NOW"| G["π’ Auto: Add to nurture<br/>Set 90-day reminder"] D -->|"REFERRAL"| H["π’ Auto: Extract contact<br/>Add to sourcing queue"] D -->|"UNSUBSCRIBE"| I["π’ Auto: Suppress immediately<br/>Log in CRM"] D -->|"OUT_OF_OFFICE"| J["π’ Auto: Pause<br/>Set return date reminder"] E & F & G & H & I & J --> K["Log to Metrics Loop"]
π€ Automated Response Templates
OBJECTION β Draft Response (Human Approves Before Sending)
The agent drafts a response and places it in a human review queue. Human edits and sends.
Prompt:
Given this cold email reply from {{first_name}} at {{company}}:
---
{{reply_text}}
---
The objection type is: {{objection_category}}
Draft a brief (50β80 word) response that:
1. Acknowledges their specific concern without dismissing it
2. Offers a relevant reframe or social proof
3. Makes a single, low-friction ask (e.g., "Would 15 min help clarify?")
Tone: direct, confident, no desperation.
NOT_NOW β Nurture Acknowledgement (Auto-sent)
Hi {{first_name}},
Totally understand β timing matters. I'll circle back in {{remind_months}} months.
In the meantime, [one useful resource / quick thought relevant to their context].
Best,
{{sender_name}}
REFERRAL β Contact Extraction (Auto-routed)
Hi {{first_name}},
Thanks for the steer β I'll reach out to {{referred_name}} directly.
Appreciate it.
{{sender_name}}
π€ Output Schema
{
"reply_id": "reply_2026-04-03-042",
"lead_id": "lead_001",
"received_at": "2026-04-03T14:22:00Z",
"classified_at": "2026-04-03T14:45:00Z",
"classification": "INTERESTED",
"confidence": 0.94,
"requires_human": true,
"human_sla": "2026-04-03T18:22:00Z",
"auto_action_taken": "sequence_stopped, crm_task_created, dima_alerted",
"draft_response": null,
"referred_contact": null,
"reply_text_snippet": "Yes, would love to learn more. Are you free Thursday?",
"sequence_step_replied_to": 1,
"crm_updated": true
}π Agent KPIs
Tracked in 09-Metrics-and-Self-Improvement.
| Metric | Target | Alert |
|---|---|---|
| Classification accuracy | β₯92% | <85% |
| Time to classify | β€1 hour | >2 hours |
| INTERESTED leads alerted | 100% within 1h | Any miss |
| UNSUBSCRIBE auto-action rate | 100% | <100% |
| Human queue response time (COO) | β€4 hours | >8 hours |
| False negative UNSUBSCRIBE | 0 | Any occurrence |
Critical Rule
A mis-classified UNSUBSCRIBE as INTERESTED is a compliance risk. The agent is set to a lower confidence threshold (0.75) for UNSUBSCRIBE β when in doubt, it opts for suppression. This is intentional.
β οΈ Edge Cases
edge_cases:
- case: ambiguous_reply
example: "Maybe. Depends on the price."
action: classify_as_OBJECTION + flag_for_human_review
- case: reply_in_foreign_language
action: translate_then_classify, flag_if_confidence < 0.8
- case: very_long_reply
example: "2+ paragraphs with multiple intent signals"
action: classify_dominant_intent, log full reply for human review
- case: classification_confidence < threshold
action: escalate_to_human_immediatelyπ Related Files
- 05-Email-Sequence-Engine β Upstream: generates reply events
- 01-Process-Manifest β Stage S7 definition
- 07-Human-Review-Gates β Human handles INTERESTED + OBJECTION replies
- 09-Metrics-and-Self-Improvement β All reply data feeds improvement loop
- 03-Lead-Sourcing-Agent β REFERRAL replies feed back into sourcing queue