Automation / Playbook

AI lead qualification and routing for outbound replies

AI qualification does four jobs in an outbound system: it classifies each reply, scores the account against your ICP, routes the lead to an owner, and moves a positive reply toward a booked call. Automate the sorting and the data entry. Keep a person on the first answer to a positive reply, on every opt-out edge case, and on a weekly accuracy check.

What to automate and what to keep human

Automation fits work that is high in volume, repetitive and cheap to correct. It does not fit work where one mistake loses a meeting or breaks a law. That rule sorts most of the tasks in a reply workflow.

Reply-handling tasks and who should do them (our recommendation)
TaskAutomate?Reason
Classify the replyYes, with a human review sampleHigh volume, one wrong label is fixable
Pull out a referred name or a return dateYes, with reviewShort text, easy to check
Score the account against the ICPYesThe score exists before the reply arrives
Create or update the CRM recordYesPure data entry
Route to an ownerYes, by written rulesThe rules decide, the model does not
Suppress after an unsubscribeYes, plus a keyword rule and spot checksA miss has legal and deliverability cost
First answer to a positive replyNo. A person sends itThis is the moment the meeting is won or lost
Answer objections, pricing, complaintsNoContext and judgment
Offer times and send the booking linkYes, after the first human answerRoutine once the prospect is engaged

The scripts and response targets for the human steps are in handle replies and book the call.

Two of our engagements used AI qualification in different places. A B2B consulting firm saw 400% more qualified leads and a 70% lower cost, using scraping, enrichment and AI qualification (our work). An AI feedback SaaS booked 40+ meetings a month from 1,000+ emails a day on multi-inbox infrastructure with AI qualification (our work). The setup behind this kind of work is described on our automation service page.

Classify replies with a language model

Classification turns free text into a label the rest of the workflow can act on. n8n's Text Classifier node does this by passing each item to a connected chat model, which picks a category you define (n8n docs, checked 18 October 2026). According to those docs, each category has a name and a description, and the description is how you tell the model what the category means. Write the descriptions the way you would brief a new SDR: what the reply says, one or two example phrasings, and what it does not cover.

Start with the categories from the reply playbook: positive, objection, not now, wrong person, unsubscribe. Add out-of-office and a catch-all. Three settings in the node matter for outbound.

  • Allow Multiple Classes To Be True is off by default, which gives one class per item. A reply such as "not now, but talk to Priya" carries two intents, so either turn it on or send mixed replies to a person.
  • When No Clear Match defaults to Discard Item. In a reply workflow that means a reply the model cannot place disappears. Switch it to the extra Other branch and send that branch to a human queue.
  • Enable Auto-Fixing sends schema parsing errors back to the model and asks it to correct the output format. It repairs format problems and cannot repair a wrong label.

The node's documented options include no confidence threshold. If you want one, you have to build it, for example by sending every positive and every unsubscribe to a person for a quick confirmation before anything irreversible happens. That is cheap at normal volumes. At 1,000 sends and our planning benchmarks, you would see 3 to 15 positive replies.

Add a keyword rule before the classifier as a second layer for opt-outs. Any reply containing "unsubscribe", "remove me" or "stop" goes straight to the suppression branch, and the classifier runs only on what is left. The model then cannot misread "Great, take me off your list" as a positive.

Score, route and schedule

Keep two scores apart. Fit score says how well the account matches your ICP, and it exists before you send anything. Reply class says what the person did. Routing uses both.

In our engagements, fit scores came from AI scoring of the list. For Fema Tape, 12,000 firms were found and 8,000 remained after we cut everything below 50 out of 100 (Fema Tape case study). Rapid Lanyard segmented targets scored 75 or higher out of 100 (Rapid Lanyard case study). Igrek had 9,000+ firms found and 1,800+ ideal after scoring (Igrek case study). Those scores ranked a list before sending. Carrying the same number into the CRM lets routing use it later.

Example routing rules (illustration, adjust the thresholds to your own data)
ConditionOwnerDeadline
Positive reply, fit score at or above your cutoffAccount executive or founder1 business hour
Positive reply, fit score below the cutoffSDR reviews before any booking1 business hour
ObjectionSDRSame business day
Not now with a dateTask on the existing owner, datedOn the date
Wrong person with a nameSDR adds the contact and writes to themSame business day
UnsubscribeAutomatic suppression, weekly auditImmediately
Other, out-of-office, unclearHuman queueNext business day

Give each account one owner and write the rule down. If two people can both claim a company, someone will email the same prospect twice. The CRM cleanup playbook covers ownership fields.

Scheduling comes next. n8n's Calendly Trigger node listens for two events, Event created and Event canceled, and the docs add that Calendly webhooks fire only for bookings and cancellations managed by Calendly (n8n docs, checked 18 October 2026). Use the first to move the contact to a meeting-booked stage and stop all follow-up, and the second to create a reschedule task for the owner.

Build outline in n8n

This is an example build, so adapt it. Node names and options are from the n8n and Smartlead documentation (checked 18 October 2026), so confirm them against your own versions.

  1. Trigger. Smartlead's webhook documentation lists six event types, including EMAIL_REPLIED, which fires when a reply is received. The payload includes the lead's email, first and last name and company name, the campaign ID, and a reply object with subject, body and received time (Smartlead API docs). If you read replies from a mailbox instead, n8n's Gmail Trigger node has a Message Received event, caps emails per poll at 50 (default 10), and by default picks up unread mail only (n8n docs).
  2. Keyword pre-filter. An IF or Switch node sends opt-out phrases to the suppression branch.
  3. Text Classifier with the categories above and the Other branch switched on.
  4. CRM write. n8n's HubSpot node lists operations to create or update a contact, search contacts, and search companies by domain. It lists no separate upsert operation, so search by email first and branch on the result (n8n docs).
  5. Notify the owner by Slack or email with the reply text, the class and the fit score. For a positive reply, include a draft answer for the person to edit and send.
  6. Suppression. Add opt-outs to the shared suppression list used by every sending tool. The EMAIL_UNSUBSCRIBED webhook event fires when the unsubscribe link is clicked, which means a reply that says "remove me" never triggers it. Your classifier and keyword rule cover that gap.
  7. A second workflow with the Calendly Trigger node, as above.
  8. An error workflow. In n8n, an error workflow starts with the Error Trigger node and receives the failed execution's ID, URL, error message and last node executed, plus the workflow name. The Stop and Error node lets you fail a run on purpose, for example when the classifier returns a label that is not on your list (n8n docs). Send those alerts to a channel someone reads.

CRM sync fields

Store the model's output in its own fields so a person's correction never overwrites it. Our suggested set is below.

Fields to write on every classified reply (suggested schema)
FieldContentWhy it exists
Reply class (AI)The label from the classifierAccuracy measurement
Reply class (confirmed)The label after human reviewSource of truth for reporting
Reply received atTimestamp from the webhookResponse-time reporting
Fit scoreThe ICP score carried over from the listRouting
Campaign and sequence stepIDs from the payloadWhich message earned the reply
Owner and next-step dateSet by the routing ruleNothing stays unowned

Duplicates are the usual way this breaks. HubSpot matches contacts on email, but its documentation says companies created through the API are not deduplicated by domain (HubSpot Knowledge Base, checked 18 October 2026). A workflow that creates companies on every positive reply will build duplicates, so search by domain before it creates anything.

Accuracy checks and failure modes

n8n separates two kinds of evaluation. A light evaluation runs before deployment on a small, often hand-made set, and you compare results by eye. A metric-based evaluation runs after deployment on a larger dataset, often built from production executions, scores each run with a numeric metric, and doubles as a regression test after you change a prompt (n8n docs, checked 18 October 2026).

Here is the version we would run. Export 200 past replies from your sequencer, label them by hand, and run the classifier on the same set. Count the matches in a table of true label against predicted label. Weight the two expensive errors above the rest: a positive labeled as anything else loses a meeting, and an unsubscribe labeled as anything else invites a complaint. As an illustration of the arithmetic, 190 correct out of 200 is 95 percent, and a 95 percent Wilson interval around that result runs from about 91 to 97 percent (our calculation). A set of 200 can tell 95 percent from 85 percent, but it cannot tell 95 from 93. After launch, read 25 randomly chosen classifications every week, plus every reply a person relabeled, and rerun the full set whenever you edit a prompt or change the model.

Failure modes and guards
FailureExampleGuard
Polite phrasing hides a refusal"Great, take me off your list"Keyword rule first, human check on positives
Two intents in one reply"Not now, ask Priya"Allow multiple classes or send to a person
Auto-replies read as real repliesOut-of-office labeled "not now"A separate category and a return-date rule
Unmatched reply disappearsNode left on Discard ItemUse the Other branch
Reply never picked upGmail Trigger set to unread only, and someone opened it firstUse the sequencer webhook, or change the read-status filter
Booking not syncedMeeting booked outside CalendlyAdd a manual stage change
Quality driftsA prompt edit shifts labelsRerun the labeled set after every change

Non-English replies need their own test. If a market answers in another language, add 30 or so labeled examples in that language before trusting the results there.

Questions

Can AI classify cold email replies reliably?

It can sort most replies, but you have to measure it on your own data. Label about 200 past replies by hand, run the classifier on them, and check the two costly errors: positives missed and opt-outs missed. Keep people on the first answer to every positive reply.

Which n8n node classifies replies?

The Text Classifier node. Each item goes to a connected chat model, which picks one of the categories you define. Set When No Clear Match to the Other branch, because the default discards unmatched items (n8n docs, checked 18 October 2026).

Should AI send the first reply to an interested prospect?

We recommend a person sends it, with a draft prepared for them. The first answer decides whether the meeting happens, and a wrong or tone-deaf automated reply costs more than the minutes it saves.

How do I keep AI qualification from creating duplicate CRM records?

Search before you create. HubSpot matches contacts on email, but companies created through its API are not deduplicated by domain, so look up the company by domain first and write only when no match comes back.

Sources

Worked examples are illustrations unless a case study is linked. How we write and check these pages.

Related service

Automation

Qualification, routing and follow-up that run without manual work.

See how it works ↗

Next step

Tell us who you sell to.

A 30-minute call. You get a plan for your outbound, whatever you decide about working with us.

Book a strategy call Or email salih@tibexa.com