Пошаговые инструкции intermediate 24 мин

Как сделать ИИ-агента для лидогенерации и обработки заявок

Пошаговая инструкция от нуля до рабочего агента для входящих лидов: формы, нормализация, CRM-дубли, scoring, handoff, follow-up, SLA и логи.

AI-агенты CRM follow-up handoff SLA лидогенерация lead scoring входящие заявки

Что получится в результате

Соберем ИИ-агента для входящих лидов, который принимает заявки с сайта, форм, почты, мессенджеров и рекламы, приводит их к единому формату, проверяет дубли в CRM, уточняет недостающие данные, считает lead score, создает контакт или сделку, назначает менеджера, готовит первый ответ и контролирует follow-up.

Первая рабочая версия будет делать так:

  1. все заявки попадают в `lead_inbox`;
  2. сырые данные сохраняются в `raw_payloads`;
  3. нормализованные поля пишутся в `normalized_leads`;
  4. согласие и источник фиксируются в `consent_log`;
  5. CRM-дубли пишутся в `dedupe_log`;
  6. enrichment сохраняется в `enrichment_results`;
  7. правила квалификации лежат в `qualification_rules`;
  8. lead score пишется в `lead_scores`;
  9. недостающие поля попадают в `clarification_queue`;
  10. spam и нерелевантные заявки пишутся в `rejection_log`;
  11. готовые лиды попадают в `handoff_queue`;
  12. CRM-черновики пишутся в `crm_updates`;
  13. задачи менеджерам создаются через `task_queue`;
  14. первый ответ пишется в `response_drafts`;
  15. follow-up хранится в `followup_queue`;
  16. SLA по новым заявкам пишется в `sla_monitor`;
  17. спорные действия уходят в `approval_queue`;
  18. все действия фиксируются в `audit_log`;
  19. ошибки попадают в `error_log`;
  20. weekly report показывает качество лидов и скорость обработки.

В первой версии агент не должен обещать скидки, цены, сроки внедрения, юридические гарантии и условия договора. Он не должен создавать сделку без проверки дублей, писать клиенту без согласия на коммуникацию и менять CRM-стадии без понятного правила.

Что понадобится

  • n8n Cloud или self-hosted n8n.
  • Google Sheets для управляющих таблиц.
  • Один канал заявок для MVP: сайт, Tilda, Bitrix Forms, email, Telegram, WhatsApp или CRM webhook.
  • CRM: HubSpot, Pipedrive, amoCRM, Bitrix24 или другая.
  • Канал для задач менеджерам: CRM tasks, Telegram, Slack, Asana или Jira.
  • API-ключ LLM-провайдера.
  • 50-100 прошлых заявок для теста.
  • Правила квалификации: кто хороший лид, кто мусор, кому нужен быстрый ответ.

Шаг 1. Выберите один поток заявок

Не подключайте сразу все каналы. Возьмите поток, где чаще всего теряются заявки или менеджеры тратят время на ручной перенос.

Хорошие первые варианты:

  1. форма “Оставить заявку” на сайте;
  2. заявка на демо;
  3. расчет стоимости;
  4. входящее письмо на sales@;
  5. лид-форма из рекламы;
  6. Telegram или WhatsApp-заявка;
  7. чат на сайте;
  8. заявка из вебинара или мероприятия.

Проверка: вы можете сказать, откуда приходит заявка, кто ее обрабатывает и за сколько минут должен быть первый ответ.

Шаг 2. Опишите результат обработки

Для каждой заявки агент должен выдать не “summary”, а конкретный набор полей.

Минимальный результат:

lead_status
lead_score
lead_type
company_name
contact_name
contact_email
contact_phone
need
budget_signal
timeline
product_interest
missing_fields
spam_reason
recommended_next_step
manager_owner
crm_action
first_response_draft

Проверка: менеджер открывает карточку и понимает, что делать дальше.

Шаг 3. Создайте таблицу проекта

Создайте Google Sheet:

Lead intake agent

Добавьте листы:

settings
lead_inbox
raw_payloads
normalized_leads
consent_log
dedupe_log
enrichment_results
qualification_rules
lead_scores
clarification_queue
rejection_log
handoff_queue
crm_updates
task_queue
response_drafts
followup_queue
sla_monitor
approval_queue
audit_log
weekly_report
error_log

Проверка: n8n может читать и писать во все листы.

Шаг 4. Заполните settings

В `settings` добавьте колонки:

key
value
description
updated_at

Заполните базовые настройки:

default_language | ru | язык ответов
first_response_sla_minutes | 15 | SLA первого ответа
auto_create_crm_contact | true | контакт можно создавать после dedupe
auto_create_deal | false | сделка только после правил или approval
auto_send_first_response | false | клиентское сообщение только после approval
min_hot_score | 80 | порог горячего лида
min_warm_score | 50 | порог теплого лида
require_consent | true | нужна проверка согласия
approval_channel | telegram | куда отправлять спорные действия

Проверка: внешняя отправка и создание сделки выключены или ограничены правилами.

Шаг 5. Настройте lead_inbox

`lead_inbox` - единая очередь всех входящих заявок.

Колонки:

lead_id
source
source_object_id
channel
received_at
status
priority
owner_email
created_at
updated_at

Статусы:

new
normalizing
dedupe
enriching
scoring
clarification_needed
ready_for_handoff
waiting_approval
done
rejected
error

Пример:

LEAD-1001 | website_form | form_882 | site | 2026-05-24 10:15 | new | normal

Проверка: заявка из выбранного канала появляется в `lead_inbox`.

Шаг 6. Сохраняйте raw_payloads

Никогда не теряйте исходные данные.

В `raw_payloads` добавьте колонки:

lead_id
source
payload_json
headers_json
utm_source
utm_medium
utm_campaign
ip_hash
user_agent
received_at

Правило:

raw_payloads не редактируется агентом, только дописывается

Проверка: если нормализация ошиблась, можно открыть исходную заявку.

Шаг 7. Подключите первый канал

Для сайта сделайте webhook в n8n:

POST /webhook/lead-intake

Минимальная цепочка:

  1. Webhook Trigger;
  2. Function node для создания `lead_id`;
  3. Google Sheets node для записи `raw_payloads`;
  4. Google Sheets node для записи `lead_inbox`;
  5. ответ форме `ok`.

Пример payload:

{
  "name": "Иван",
  "email": "ivan@example.ru",
  "phone": "+79990000000",
  "company": "ООО Альфа",
  "message": "Хотим автоматизировать обработку заявок с сайта",
  "utm_source": "yandex",
  "utm_campaign": "ai-agent"
}

Проверка: тестовая заявка не теряется и получает уникальный `lead_id`.

Шаг 8. Нормализуйте normalized_leads

В `normalized_leads` добавьте колонки:

lead_id
contact_name
contact_email
contact_phone
company_name
company_domain
job_title
message_text
product_interest
budget_text
timeline_text
region
utm_source
utm_campaign
language
normalized_at

Правила нормализации:

  1. email привести к нижнему регистру;
  2. телефон привести к одному формату;
  3. домен извлечь из корпоративного email;
  4. пустые поля оставить пустыми;
  5. не выдумывать компанию по имени;
  6. личные email помечать отдельно.

Проверка: данные из разных форм выглядят одинаково.

В `consent_log` добавьте колонки:

lead_id
consent_type
consent_value
consent_text
source
created_at

`consent_type`:

communication
privacy_policy
marketing
unknown

Правило:

если require_consent = true и communication consent отсутствует, не отправлять автоматическое сообщение

Проверка: агент не пишет человеку, если канал не дает права на коммуникацию.

Шаг 10. Сделайте dedupe_log

Перед созданием CRM-сущностей проверьте дубли.

В `dedupe_log` добавьте колонки:

dedupe_id
lead_id
crm_system
matched_contact_id
matched_company_id
matched_deal_id
match_type
match_confidence
decision
created_at

`match_type`:

email
phone
domain
company_name
none

`decision`:

new_contact
update_existing_contact
attach_to_existing_deal
manual_review
reject_duplicate

Проверка: повторная заявка от того же email не создает второго контакта.

Шаг 11. Подключите CRM lookup

В n8n добавьте workflow:

Lead CRM dedupe

Цепочка:

  1. взять `lead_inbox` со статусом `dedupe`;
  2. прочитать `normalized_leads`;
  3. искать контакт по email;
  4. искать контакт по телефону;
  5. искать компанию по домену;
  6. искать открытую сделку по contact/company;
  7. записать результат в `dedupe_log`;
  8. поставить следующий статус.

Проверка: CRM lookup возвращает понятное решение, а не просто “найдено/не найдено”.

Шаг 12. Настройте enrichment_results

Enrichment нужен не для всех заявок. Сначала используйте его для B2B-лидов с доменом.

В `enrichment_results` добавьте колонки:

lead_id
company_domain
company_name
industry
employee_count
country
city
linkedin_url
tech_stack
company_summary
data_source
confidence
created_at

Варианты данных для enrichment:

  1. Apollo;
  2. Clearbit;
  3. Clay;
  4. CRM company data;
  5. ручная таблица компаний;
  6. сайт компании.

Проверка: enrichment не блокирует обработку простых лидов, но улучшает B2B scoring.

Шаг 13. Опишите qualification_rules

В `qualification_rules` добавьте колонки:

rule_id
lead_type
field
condition
value
points
severity
reason
is_active
updated_at

Примеры:

QR-001 | b2b | contact_email | corporate_email | true | 15 | positive | Корпоративная почта
QR-002 | b2b | message_text | contains_need | true | 20 | positive | Есть понятная задача
QR-003 | b2b | timeline_text | contains_urgent | true | 15 | positive | Есть срок
QR-004 | b2b | company_size | greater_than | 20 | 10 | positive | Компания подходит по размеру
QR-005 | any | message_text | spam_like | true | -100 | critical | Похоже на спам
QR-006 | any | consent | missing | true | -20 | high | Нет согласия на коммуникацию

Проверка: score можно объяснить правилами.

Шаг 14. Рассчитайте lead_scores

В `lead_scores` добавьте колонки:

score_id
lead_id
lead_type
score
status
reasons_json
missing_fields_json
recommended_next_step
confidence
created_at

Статусы:

hot
warm
cold
needs_clarification
spam
manual_review

Формула MVP:

score = сумма points из qualification_rules

Проверка: лид с задачей, корпоративной почтой и сроком получает высокий score.

Шаг 15. Добавьте LLM-разбор заявки

LLM нужен для извлечения смысла из свободного текста.

Prompt:

Ты анализируешь входящую заявку.
Используй только переданные поля.
Не выдумывай компанию, бюджет, сроки и потребность.
Если данных нет, верни null.
Верни JSON:
{
  "need": "какая задача у клиента или null",
  "product_interest": "что интересует или null",
  "budget_signal": "есть/нет/unknown",
  "timeline": "срок или null",
  "role": "роль контакта или unknown",
  "missing_fields": ["поле"],
  "spam_signals": ["сигнал"],
  "summary_for_manager": "до 700 символов",
  "recommended_question": "один уточняющий вопрос",
  "needs_human_review": true
}

Проверка: модель возвращает валидный JSON без Markdown.

Шаг 16. Создайте clarification_queue

Если не хватает ключевых данных, не создавайте сделку сразу.

В `clarification_queue` добавьте колонки:

clarification_id
lead_id
missing_fields
question_text
channel
approval_required
status
created_at
sent_at

Примеры вопросов:

Подскажите, пожалуйста, для какой компании рассматриваете решение?
Какую задачу хотите автоматизировать в первую очередь?
Есть ли ориентир по срокам запуска?

Проверка: агент задает один полезный вопрос, а не анкету на 12 пунктов.

Шаг 17. Настройте rejection_log

Спам и нерелевантные заявки тоже нужно фиксировать.

В `rejection_log` добавьте колонки:

rejection_id
lead_id
reason
evidence
decision
review_required
created_at

Причины:

spam
test_request
student_request
vendor_pitch
wrong_geo
wrong_segment
duplicate
no_consent
invalid_contact

Проверка: мусорная заявка не исчезает молча, а получает причину.

Шаг 18. Создайте handoff_queue

`handoff_queue` передает понятные лиды менеджеру.

Колонки:

handoff_id
lead_id
manager_email
priority
summary_for_manager
recommended_next_step
sla_deadline
status
created_at
accepted_at

Приоритеты:

urgent
high
normal
low

Правила:

  1. hot lead получает `high` или `urgent`;
  2. warm lead получает `normal`;
  3. spam не попадает в handoff;
  4. manual_review получает отдельного владельца;
  5. если SLA близко, приоритет повышается.

Проверка: менеджер получает задачу с понятным следующим шагом.

Шаг 19. Подготовьте crm_updates

В `crm_updates` храните черновики CRM-действий.

Колонки:

crm_update_id
lead_id
crm_system
update_type
payload_json
approval_required
status
created_at
processed_at

`update_type`:

create_contact
update_contact
create_company
update_company
create_lead
create_deal_request
add_note
create_task

Правило:

contact и note можно создавать после dedupe; deal создавать только если lead_score hot или есть approval

Проверка: CRM не получает дублей и мусорных сделок.

Шаг 20. Настройте task_queue

`task_queue` создает задачи менеджерам.

Колонки:

task_queue_id
lead_id
task_system
task_payload_json
approval_required
status
created_at
processed_at
error_message

Пример payload:

{
  "title": "Связаться с лидом ООО Альфа",
  "assignee": "sales@company.ru",
  "due_at": "2026-05-24 10:30",
  "description": "Hot lead: хочет автоматизировать заявки с сайта, срок - в июне.",
  "source": "lead_intake_agent"
}

Проверка: задача создается в CRM или task manager и содержит summary.

Шаг 21. Подготовьте response_drafts

В `response_drafts` добавьте колонки:

draft_id
lead_id
channel
recipient
subject
body
purpose
contains_price
contains_discount
contains_guarantee
approval_required
status
created_at

Prompt:

Составь первый ответ на входящую заявку.
Пиши коротко, спокойно и по делу.
Не обещай цену, скидку, сроки и юридические гарантии.
Если данных не хватает, задай один уточняющий вопрос.
Если лид hot, предложи короткий созвон или следующий шаг.
Верни JSON:
{
  "subject": "тема или null",
  "body": "текст ответа",
  "purpose": "clarify|book_call|send_info|reject",
  "risk_flags": []
}

Проверка: менеджер может отправить черновик после быстрой правки.

Шаг 22. Проверьте опасные обещания

Перед отправкой ответа проверяйте текст правилами.

Флаги:

contains_price
contains_discount
contains_guarantee
contains_legal_terms
contains_deadline_promise
contains_sensitive_claim

Запрещенные фразы:

мы гарантируем
точно успеем
скидка только сегодня
подпишем договор без проверки
можем начать завтра
цена будет

Проверка: рискованный черновик уходит в `approval_queue`.

Шаг 23. Создайте followup_queue

В `followup_queue` храните напоминания.

Колонки:

followup_id
lead_id
followup_type
scheduled_at
message_draft
owner_email
status
created_at
sent_at

`followup_type`:

no_reply
missing_info
demo_reminder
manager_followup
long_nurture

Правила:

  1. если нет ответа 2 рабочих дня, создать мягкий follow-up;
  2. если менеджер не принял hot lead 15 минут, отправить напоминание;
  3. если лид не подходит, не запускать sales follow-up;
  4. любой отказ останавливает follow-up.

Проверка: лиды не теряются после первого ответа.

Шаг 24. Настройте sla_monitor

В `sla_monitor` добавьте колонки:

lead_id
received_at
first_response_deadline
manager_accept_deadline
first_response_at
manager_accepted_at
sla_status
breach_reason
created_at

`sla_status`:

ok
warning
breached
paused
not_applicable

Проверка: hot lead не висит без ответа часами.

Шаг 25. Настройте approval_queue

В `approval_queue` добавьте колонки:

approval_id
lead_id
object_type
object_id
reason
preview
approver_email
status
created_at
decided_at

`object_type`:

response_draft
crm_deal_request
manual_review
spam_rejection
no_consent_message

Статусы:

pending
approved
rejected
needs_edit
expired

Проверка: спорное действие не выполняется без человека.

Шаг 26. Сделайте Telegram approval

В n8n создайте workflow:

Lead approval

Цепочка:

  1. найти `approval_queue` со статусом `pending`;
  2. отправить preview в Telegram;
  3. добавить кнопки `Approve`, `Needs edit`, `Reject`;
  4. обновить статус;
  5. записать действие в `audit_log`;
  6. продолжить CRM update или отправку только после approve.

Сообщение:

Нужно согласовать ответ по лиду LEAD-1001
Причина: черновик содержит срок запуска

Preview:
Спасибо за заявку. Можем обсудить запуск...

[Approve] [Needs edit] [Reject]

Проверка: approval реально блокирует действие.

Шаг 27. Настройте audit_log

В `audit_log` добавьте колонки:

audit_id
lead_id
actor
action
object_type
object_id
before_json
after_json
created_at

Логируйте:

  1. получение заявки;
  2. нормализацию;
  3. consent check;
  4. CRM dedupe;
  5. enrichment;
  6. scoring;
  7. создание clarification;
  8. rejection;
  9. handoff;
  10. CRM update;
  11. задачу менеджеру;
  12. response draft;
  13. follow-up;
  14. approval;
  15. SLA breach;
  16. ошибку API.

Проверка: можно восстановить весь путь лида.

Шаг 28. Настройте error_log

В `error_log` добавьте колонки:

error_id
lead_id
workflow_name
node_name
error_type
error_message
payload_snapshot
status
owner_email
created_at

Типы ошибок:

webhook_payload_invalid
crm_lookup_failed
enrichment_failed
llm_invalid_json
consent_missing
task_create_failed
crm_update_failed
approval_timeout
sla_breach

Проверка: ошибка не оставляет заявку в неопределенном статусе.

Шаг 29. Соберите weekly_report

В `weekly_report` добавьте колонки:

week_start
leads_received
hot_leads
warm_leads
cold_leads
spam_leads
clarification_needed
crm_duplicates
tasks_created
first_response_sla_breaches
avg_first_response_minutes
lead_to_deal_count
top_sources
top_rejection_reasons
created_at

Минимальный отчет:

  1. сколько заявок пришло;
  2. сколько hot/warm/cold;
  3. сколько спама;
  4. сколько дублей;
  5. сколько задач создано;
  6. сколько SLA нарушено;
  7. какие каналы дают качественные лиды;
  8. почему заявки отклоняются.

Проверка: видно не только количество заявок, но и качество обработки.

Шаг 30. Протестируйте на 50 прошлых заявках

Возьмите реальные старые заявки без лишних персональных данных.

Проверьте вручную:

  1. все заявки попали в `lead_inbox`;
  2. raw payload сохранился;
  3. email и телефон нормализованы;
  4. дубли найдены;
  5. spam отделен от нормальных заявок;
  6. hot lead получил высокий score;
  7. заявка без компании получила clarification;
  8. CRM update не создал дубль;
  9. задача менеджеру имеет deadline;
  10. response draft не обещает лишнего;
  11. follow-up не создается для отказа;
  12. SLA breach виден в `sla_monitor`;
  13. ошибки попали в `error_log`.

Проверка: минимум 40 из 50 заявок должны получить корректный статус без ручного исправления логики.

Минимальная проверка результата

MVP готов, если:

  • заявки попадают в `lead_inbox`;
  • исходные данные пишутся в `raw_payloads`;
  • нормализация работает в `normalized_leads`;
  • consent фиксируется в `consent_log`;
  • CRM-дубли пишутся в `dedupe_log`;
  • enrichment пишется в `enrichment_results`;
  • правила есть в `qualification_rules`;
  • score пишется в `lead_scores`;
  • недостающие данные уходят в `clarification_queue`;
  • отказы пишутся в `rejection_log`;
  • готовые лиды попадают в `handoff_queue`;
  • CRM-действия идут через `crm_updates`;
  • задачи создаются через `task_queue`;
  • черновики ответов пишутся в `response_drafts`;
  • follow-up пишется в `followup_queue`;
  • SLA виден в `sla_monitor`;
  • спорные действия уходят в `approval_queue`;
  • audit и error logs заполнены;
  • weekly report показывает качество.

Перед живым запуском пройдите чек-лист:

  1. Отправьте тестовую заявку с сайта.
  2. Отправьте дубль с тем же email.
  3. Отправьте заявку без компании.
  4. Отправьте явно мусорную заявку.
  5. Запустите CRM dedupe.
  6. Запустите scoring.
  7. Проверьте `handoff_queue`.
  8. Отклоните один response draft через approval.
  9. Одобрите одну задачу менеджеру.
  10. Проверьте `audit_log`, `error_log` и `weekly_report`.

Что нельзя автоматизировать в первой версии

  • обещания цены, скидки, сроков и гарантий;
  • создание сделки без проверки дублей;
  • отправку клиенту без consent;
  • автозакрытие лида как spam без evidence;
  • смену CRM stage без правила;
  • создание нескольких контактов на один email;
  • длинную анкету вместо одного уточняющего вопроса;
  • follow-up после отказа;
  • удаление исходных данных заявки;
  • игнорирование SLA по hot leads.

Частые вопросы

Чем агент для лидогенерации отличается от outbound-агента?

Агент для лидогенерации чаще работает с входящими заявками: человек уже оставил форму, написал письмо или пришел из рекламы. Outbound-агент сам выбирает компании и контакты, поэтому у него другие риски: стоп-листы, отписки и репутация домена.

Нужно ли сразу создавать сделку в CRM?

Не всегда. Если заявка неполная или похожа на ранний интерес, лучше создать contact, note и task. Сделку создавайте, когда есть понятная задача, продуктовый интерес, следующий шаг или approval менеджера.

Нужен ли Apollo для входящих заявок?

Не обязательно. Для простых заявок достаточно CRM и формы. Apollo или другой enrichment полезен в B2B, когда нужно понять размер компании, роль контакта, домен, отрасль и приоритет лида.

Можно ли агенту самому отвечать клиенту?

В первой версии лучше готовить draft. Автоответ можно включить для безопасных сценариев: подтверждение получения заявки или один уточняющий вопрос без цены, сроков и обещаний.

Как понять, что агент реально помогает продажам?

Смотрите на скорость первого ответа, долю заполненных CRM-карточек, меньше дублей, меньше потерянных hot leads, выше конверсию lead to deal и меньше ручного времени менеджеров на первичную обработку.

Дальше по теме

Похожие материалы