Что получится в результате
Соберем ИИ-агента, который принимает ответы из NPS, CSAT, форм обратной связи и открытых комментариев, нормализует данные, выделяет темы, считает группы NPS, находит риск оттока, создает задачи ответственным и готовит короткий отчет по инсайтам.
Первая рабочая версия будет делать так:
- ответы приходят из Typeform, SurveyMonkey, HubSpot, Google Forms или webhook;
- n8n создает строку в `feedback_queue`;
- исходный ответ сохраняется в `raw_responses`;
- агент приводит ответ к единому формату в `normalized_responses`;
- NPS/CSAT/CES считаются по правилам, а не “на глаз”;
- открытый текст классифицируется по темам из `topic_rules`;
- риск и приоритет считаются по `triage_rules`;
- негативные и срочные ответы уходят в `action_queue`;
- продуктовые идеи попадают в `product_backlog`;
- позитивные цитаты уходят в `testimonial_candidates`;
- повторяющиеся темы собираются в `insight_report`;
- ошибки и спорные ответы пишутся в `review_queue` и `error_log`.
В первой версии агент не должен сам обещать компенсации, спорить с клиентом, публиковать цитаты, менять статус клиента или закрывать проблему без человека.
Что понадобится
- n8n Cloud или self-hosted n8n.
- Источник ответов: Typeform, SurveyMonkey, HubSpot, Google Forms, CRM, helpdesk или webhook.
- Google Sheets для очередей, правил, логов и отчетов.
- LLM API для классификации тем и кратких резюме.
- CRM или helpdesk для задач команде.
- 50-100 тестовых ответов: положительные, нейтральные, негативные и спорные.
- Ответственные: Customer Success, поддержка, продукт, маркетинг, продажи.
- Правила согласия на обработку и публикацию цитат.
Шаг 1. Выберите один поток обратной связи
Не смешивайте NPS, CSAT, отзывы после вебинара и продуктовые идеи в один MVP.
Для первого прототипа выберите сценарий:
NPS после 30 дней использования продукта
Входит:
- оценка 0-10;
- открытый комментарий;
- сегмент клиента;
- владелец клиента;
- тариф или продукт;
- дата ответа;
- действие при негативе;
- отчет по повторяющимся темам.
Не входит:
- публичная публикация отзывов;
- автоматическая компенсация;
- массовая рассылка клиентам;
- изменение статуса клиента в CRM без approval;
- обработка анонимных ответов как персональных;
- ответы клиенту от имени менеджера без проверки.
Проверка: вы можете назвать источник ответов, метрику и команду, которая будет реагировать.
Шаг 2. Создайте структуру папок и таблиц
В Google Drive создайте папку:
Feedback AI agent
raw_exports
insight_reports
review_items
testimonials_review
test_responses
Создайте Google Sheet:
NPS feedback AI agent
Добавьте листы:
feedback_queue
survey_sources
raw_responses
normalized_responses
topic_rules
triage_rules
action_queue
product_backlog
testimonial_candidates
review_queue
insight_report
audit_log
error_log
test_cases
settings
Проверка: n8n может писать в таблицу, а папка для отчетов создана.
Шаг 3. Настройте survey_sources
В `survey_sources` храните описание каждого опроса.
Колонки:
source_id
source_name
source_system
survey_type
metric_scale
trigger_event
owner_team
owner_email
consent_required
public_quote_allowed
is_active
Типы:
nps
csat
ces
product_feedback
event_feedback
churn_feedback
support_feedback
Пример:
nps_30d | NPS после 30 дней | Typeform | nps | 0-10 | 30 дней после активации | customer_success | csm@company.ru | yes | no | true
Проверка: у каждого источника есть владелец и понятный тип метрики.
Шаг 4. Создайте feedback_queue
В `feedback_queue` добавьте колонки:
feedback_id
created_at
source_id
source_system
response_id
customer_id
customer_email
segment
owner_email
survey_type
score
nps_group
status
risk_level
priority
assigned_team
last_error
updated_at
Статусы:
new
registered
normalizing
classifying
triage
needs_review
action_created
reported
done
error
Проверка: один тестовый ответ можно добавить со статусом `new`.
Шаг 5. Настройте сбор ответов
Создайте workflow:
Feedback intake
Минимальные узлы:
- `Webhook`, `Typeform Trigger`, `HTTP Request`, `HubSpot` или `Google Sheets Trigger`;
- `Get response payload`;
- `Generate feedback_id`;
- `Write raw_responses`;
- `Append feedback_queue`;
- `Set status = normalizing`.
В `raw_responses` храните:
feedback_id
source_system
response_id
raw_json
received_at
Проверка: новый ответ из формы создает строку в `feedback_queue` и копию исходного JSON.
Шаг 6. Нормализуйте ответ
В `normalized_responses` приведите разные формы к одному формату.
Колонки:
feedback_id
survey_type
score
open_text
language
customer_id
customer_email
customer_name
segment
plan
related_ticket_id
related_event
owner_email
consent
submitted_at
Правила:
- если email отсутствует, не связывайте ответ с конкретным клиентом;
- если нет consent, не используйте цитату публично;
- если score пустой, отправляйте в review;
- если open_text пустой, анализ тем не запускайте.
Проверка: Typeform, SurveyMonkey и HubSpot приводятся к одному набору полей.
Шаг 7. Рассчитайте NPS-группу
Для `survey_type = nps` используйте правило:
0-6 -> detractor
7-8 -> passive
9-10 -> promoter
NPS считается так:
NPS = % promoters - % detractors
Не просите LLM определять NPS-группу, это обычная формула.
Проверка: score 6 всегда `detractor`, score 8 всегда `passive`, score 10 всегда `promoter`.
Шаг 8. Создайте topic_rules
В `topic_rules` опишите темы, которые агент должен искать.
Колонки:
topic_id
topic_name
description
examples
owner_team
default_priority
is_active
Первый набор:
support_quality | качество поддержки | долго отвечали, не решили, грубо | support | high
price | цена и тарифы | дорого, непонятная оплата, скидка | sales | medium
bug | ошибка продукта | не работает, сломалось, баг | product | high
feature_request | запрос функции | не хватает, хотелось бы | product | medium
onboarding | запуск и обучение | сложно начать, непонятно | customer_success | medium
performance | скорость и стабильность | тормозит, падает | engineering | high
positive_quote | позитивная цитата | нравится, удобно, рекомендую | marketing | low
churn_risk | риск ухода | уйдем, отменим, конкурент | customer_success | high
Проверка: у каждой темы есть владелец и приоритет.
Шаг 9. Классифицируйте открытый текст
Создайте LLM-узел `Classify feedback`.
Prompt:
Классифицируй обратную связь клиента по topic_rules.
Верни только JSON.
Не выдумывай причины, которых нет в тексте.
Формат:
{
"summary": "",
"sentiment": "positive|neutral|negative|mixed",
"topics": [
{
"topic_id": "",
"evidence_quote": "",
"confidence": 0.0
}
],
"customer_request": "",
"risk_signals": [],
"public_quote_candidate": true|false
}
Проверка: каждая тема имеет цитату из ответа клиента.
Шаг 10. Создайте triage_rules
В `triage_rules` добавьте правила приоритета.
Колонки:
rule_id
condition
risk_level
priority
assigned_team
action_type
message
is_active
Первый набор:
nps_detractor | survey_type=nps and score<=6 | high | urgent | customer_success | create_task | Связаться с клиентом
churn_words | text contains уйдем/отменим/конкурент | high | urgent | customer_success | create_task | Риск оттока
bug_high_value | topic=bug and segment=enterprise | high | urgent | product | create_issue | Баг у enterprise-клиента
support_complaint | topic=support_quality | medium | high | support | create_task | Разобрать жалобу
promoter_quote | nps_group=promoter and public_quote_candidate=true | low | normal | marketing | review_quote | Проверить цитату
feature_request | topic=feature_request | medium | normal | product | backlog_item | Добавить в backlog
Проверка: негативный NPS создает задачу, а позитивная цитата не публикуется автоматически.
Шаг 11. Выполните triage
Создайте workflow:
Feedback triage
Логика:
- прочитать normalized response;
- прочитать темы от LLM;
- применить `triage_rules`;
- рассчитать `risk_level`;
- рассчитать `priority`;
- выбрать `assigned_team`;
- создать действие в нужной очереди.
Если уверенность LLM по теме ниже 0.65:
status = needs_review
review_reason = low_topic_confidence
Проверка: спорные ответы уходят человеку, а не в неправильную команду.
Шаг 12. Создайте action_queue
В `action_queue` попадают задачи на реакцию.
Колонки:
action_id
feedback_id
customer_id
assigned_team
assigned_owner
action_type
task_text
evidence_quote
priority
status
due_date
created_at
closed_at
Типы действий:
create_csm_task
create_support_task
create_product_issue
create_sales_followup
review_testimonial
manual_review
Проверка: каждое действие содержит цитату и понятный следующий шаг.
Шаг 13. Создайте product_backlog
Продуктовые идеи не должны теряться в общей очереди.
Колонки:
backlog_id
feedback_id
topic_id
customer_segment
request_summary
evidence_quote
impact
status
owner_product
created_at
Impact:
high: enterprise или повторяется часто
medium: несколько клиентов или важный сценарий
low: единичная идея
Проверка: feature request попадает продукту как структурированная карточка.
Шаг 14. Создайте testimonial_candidates
Позитивные отзывы можно готовить к маркетингу, но не публиковать автоматически.
Колонки:
testimonial_id
feedback_id
customer_id
quote
context
consent
public_quote_allowed
status
reviewer
created_at
Статусы:
new
needs_consent
approved
rejected
published
Проверка: цитата без согласия получает `needs_consent`.
Шаг 15. Создайте review_queue
В `review_queue` отправляйте спорные ответы.
Колонки:
review_id
feedback_id
reason
question
assigned_owner
status
decision
decision_comment
created_at
closed_at
Причины:
low_topic_confidence
missing_score
no_consent
sensitive_data
unclear_customer
possible_abuse
duplicate_response
Проверка: агент не решает спорные случаи сам.
Шаг 16. Подготовьте ответ клиенту как черновик
Если нужен follow-up, создавайте только черновик.
Prompt:
Подготовь короткий черновик ответа клиенту.
Не обещай компенсацию.
Не спорь.
Не придумывай срок решения.
Стиль: спокойный, конкретный, с признанием проблемы.
Верни:
{
"draft_reply": "",
"manager_note": "",
"needs_approval": true
}
Проверка: менеджер может быстро проверить текст перед отправкой.
Шаг 17. Обновите CRM или helpdesk через черновик
В первой версии не пишите финальные изменения напрямую.
Создайте draft update:
feedback summary
risk level
next action
task owner
due date
related quote
Статус:
draft
approved
sent
rejected
Проверка: критичные действия проходят approval.
Шаг 18. Соберите insight_report
В `insight_report` добавьте агрегированные строки.
Колонки:
report_period
survey_type
segment
nps_score
responses_count
detractors_count
passives_count
promoters_count
top_topics
top_risks
top_positive_quotes
recommended_actions
created_at
Отчет раз в неделю:
- NPS по сегментам;
- доля негативных ответов;
- топ-5 тем;
- новые продуктовые идеи;
- риски оттока;
- задачи, которые еще не закрыты;
- позитивные цитаты на review.
Проверка: отчет можно отправить команде без ручной сборки из таблиц.
Шаг 19. Ведите audit_log
В `audit_log` добавьте колонки:
event_id
feedback_id
event_type
actor
source
details
created_at
Логируйте:
- получение ответа;
- нормализацию;
- расчет NPS-группы;
- классификацию тем;
- triage;
- создание задачи;
- создание backlog item;
- создание testimonial candidate;
- review decision;
- CRM draft;
- отчет.
Проверка: по одному ответу можно восстановить весь путь обработки.
Шаг 20. Настройте error_log
В `error_log` добавьте колонки:
error_id
feedback_id
workflow_name
node_name
error_type
error_message
input_snapshot
status
owner
created_at
Типы ошибок:
payload_missing
source_unknown
score_invalid
llm_json_invalid
topic_rules_missing
triage_rule_missing
crm_match_failed
task_creation_failed
consent_missing
Проверка: сбой не теряется, а превращается в понятную строку.
Шаг 21. Создайте test_cases
В `test_cases` добавьте тестовые ответы.
Колонки:
test_id
survey_type
score
open_text
expected_nps_group
expected_topics
expected_risk_level
expected_action_type
last_run_at
last_result
Первый набор:
nps_10_positive_quote
nps_8_no_text
nps_2_support_complaint
nps_4_churn_risk
csat_1_bad_support
feature_request_enterprise
bug_report
price_complaint
empty_text
missing_score
Проверка: изменение prompt или правил не ломает базовую классификацию.
Шаг 22. Прогоните полный путь на одном ответе
Порядок:
- отправьте тестовый NPS 2 с негативным комментарием;
- проверьте `raw_responses`;
- проверьте `normalized_responses`;
- проверьте `nps_group = detractor`;
- проверьте темы из `topic_rules`;
- проверьте `risk_level = high`;
- проверьте задачу в `action_queue`;
- проверьте CRM draft;
- проверьте `audit_log`;
- проверьте отсутствие ошибок в `error_log`.
Проверка: от ответа клиента до задачи CSM процесс проходит без ручного копирования.
Минимальная проверка результата
Прототип работает, если выполняются все пункты:
- ответ попадает в `feedback_queue`;
- исходный JSON сохраняется в `raw_responses`;
- ответ нормализуется в `normalized_responses`;
- NPS-группа считается формулой;
- темы определяются по `topic_rules`;
- triage выполняется по `triage_rules`;
- негативные ответы создают задачи в `action_queue`;
- продуктовые идеи попадают в `product_backlog`;
- позитивные цитаты идут в `testimonial_candidates`;
- спорные ответы уходят в `review_queue`;
- weekly summary появляется в `insight_report`;
- история видна в `audit_log`;
- ошибки пишутся в `error_log`;
- `test_cases` проходят после изменения prompt.
Что нельзя автоматизировать в первой версии
- обещание компенсации клиенту;
- публичную публикацию цитат;
- массовую рассылку ответов;
- изменение статуса клиента без approval;
- закрытие негативного ответа без человека;
- раскрытие персональных данных в отчетах;
- передачу чувствительного фидбека не той команде;
- удаление исходных ответов;
- трактовку анонимного ответа как персонального.
Частые вопросы
Можно ли начать без Typeform или SurveyMonkey?
Да. Для прототипа достаточно Google Sheets или webhook, куда попадают тестовые ответы. Главное - сразу привести данные к `normalized_responses`, чтобы потом легко заменить источник.
Нужно ли использовать LLM для расчета NPS?
Нет. NPS-группа и итоговый NPS считаются формулами. LLM нужен для открытого текста: темы, краткое резюме, риск, цитаты и черновик follow-up.
Можно ли агенту самому отвечать на негативный NPS?
В первой версии лучше создавать черновик ответа и задачу CSM. Негативный отзыв часто требует контекста клиента, истории обращений и аккуратного тона.
Как не потерять продуктовые идеи?
Отдельно ведите `product_backlog`. Если складывать feature requests в общую очередь с жалобами и NPS, продуктовые сигналы быстро потеряются.
Какой минимум нужен для запуска?
`feedback_queue`, `survey_sources`, `raw_responses`, `normalized_responses`, `topic_rules`, `triage_rules`, `action_queue`, `product_backlog`, `insight_report`, `audit_log`, `error_log` и 10 тестовых ответов.