Гайд · n8n · бриф → КП

Как собрать в n8n ИИ-агента«бриф → черновик КП»

Webhook с сырым брифом → извлечение требований → структура → черновик коммерческого предложения → правка человеком до отправки

Менеджер получает сырой бриф: «нужен сайт, срочно, бюджет примерно как у конкурента». Через час начинается переписка: что входит в объём, какие интеграции, какая цена. ИИ-агент в n8n как раз закрывает эту дыру — но не «красивым письмом клиенту», а цепочкой: требования → структура → черновик → человек.

Коротко. Надёжный сценарий «бриф → черновик КП» в n8n — это не один большой промпт. Это два узких вызова нейросети (извлечь поля и написать текст) плюс обычные ноды между ними: проверка, шаблон, запись, уведомление. Клиенту КП без правки менеджером не уходит.

Webhook → HITL 2× LLM без автоотправки
brief→kp.workflow
extract # JSON-требования
validate # Code / IF
template # каркас КП
generate # Markdown-черновик
hitl # менеджер, не клиент

Два узких LLM, не один «сделай КП»

Extract фиксирует поля. Generate пишет текст по каркасу. Между ними — код и шаблон: цифры не рождаются «из воздуха».

202
Accepted на webhook, пока модель думает
HITL
Клиенту КП шлёт человек
Идемпотентность Хеш брифа → без двойной оплаты LLM и без двух черновиков на один запрос.

Зачем агенту отдавать бриф, а не просить «сразу красивое КП»

Если скормить нейросети весь бриф и сказать «напиши коммерческое предложение», она часто:

  • додумает цену и сроки;
  • смешает «хотелки» клиента с вашим оффером;
  • красиво сформулирует то, чего в брифе не было.

Для отдела продаж это опасно: черновик выглядит уверенно, а цифры — выдуманные. Поэтому цель автоматизации другая: сначала зафиксировать требования, потом собрать каркас КП, и только потом дать модели написать текст по уже известным полям.

Где команда теряет часы на переписке по требованиям

Типичный цикл без агента:

  1. Заявка или письмо с сырым текстом.
  2. Менеджер вручную выписывает услугу, срок, бюджет, ограничения.
  3. Пишет КП в Google Docs / CRM.
  4. Согласовывает с коллегой.
  5. Отправляет клиенту.

Шаги 2–3 повторяются на каждой заявке. Именно их имеет смысл отдать n8n: извлечение полей и черновик текста. Согласование и отправка — человеку.

Чем черновик КП отличается от готового письма клиенту

Черновик КПГотовое письмо клиенту
Кто авторсценарий + модельменеджер
Цифры и срокииз брифа или пометка «уточнить»проверенные
Тончерновой, можно правитьфинальный
Отправкатолько внутрь командыклиенту

Правило продакшена: публикует КП всегда человек, не воркфлоу.

Карта пайплайна: вход → требования → структура → текст → человек

Ниже — рабочая карта, которую можно собрать в n8n workflows без «магии одного агента».

pipeline
Webhook / почта / форма
        ↓
Нормализация текста (Code)
        ↓
Проверка: бриф не пустой? (IF)
        ↓
Ключ идемпотентности (хеш брифа)
        ↓
LLM №1: извлечь JSON-требования
        ↓
Валидация полей (Code / IF)
        ↓
Сборка структуры КП по шаблону (Set / Code)
        ↓
LLM №2: черновик Markdown по полям
        ↓
Запись в таблицу / CRM
        ↓
Telegram / email менеджеру → HITL-правка

Два вызова LLM и детерминированные ноды между ними

У модели в этом пайплайне ровно две задачи:

  1. Extract — вытащить структурированные требования.
  2. Generate — написать текст по уже собранному каркасу.

Всё остальное делают обычные ноды: IF, Set, Code, запись в БД, Telegram. Так вы снимаете с модели ответственность за повторы, формат и «не отправить лишнее».

Альтернатива — один Tools Agent, который сам решает, какие инструменты вызвать. Он уместен, если нужен диалог уточнений («спросить бюджет в CRM»). Для документа с ценой и сроками свободный цикл агента чаще вреден: модель может «дописать» факты через tool или зациклиться.

Где ставить HITL, чтобы модель не «отправила сама»

В n8n есть два уровня HITL — их легко перепутать:

  1. Tool-level — нативный Approve/Deny перед опасным инструментом (например, «отправить email клиенту»). Есть в документации n8n для Human review через Telegram, Slack, Gmail и др.
  2. Workflow-level — агент вообще не шлёт клиенту: кладёт черновик менеджеру («доработай и отправь сам»).

Для коммерческого предложения обязателен второй уровень. Первый — дополнительная страховка, если в Tools Agent вообще есть tool отправки наружу.

Визуал статьи · не hero · n8n

Бриф → JSON → каркас КП → HITL: где останавливается модель

Сцена — карта нод, не первый экран: пакет брифа проходит extract, детерминированную сборку структуры и ждёт человека перед клиентом.

  • LLM №1 — только поля требований (JSON), без «красивого КП».
  • Set / Code — фиксирует скелет коммерческого предложения.
  • HITL — менеджер правит черновик; отправка клиенту не в руках модели.

Дальше — окружение n8n и первая нода триггера.

Цикл ~42 с · бриф → КП → approve

Что поднять до первой ноды: cloud, docker или уже живой n8n

Вам нужен любой рабочий инстанс n8n, куда можно повесить Webhook и credentials к LLM. Варианты:

  • n8n Cloud — быстрее старт, меньше возни с сервером.
  • Self-host / Docker — если важны данные брифов клиентов на своей стороне.
  • Уже развёрнутый n8n в команде — просто новый workflow.

Оплата зарубежных LLM и Cloud из России часто идёт через карты/посредников — заложите это в бюджет. Для текста КП часто хватает OpenAI-совместимого API или моделей через провайдера, к которому у вас уже есть доступ; если доступов нет, сначала решите credentials, потом рисуйте ноды.

Минимальный чеклист доступов к LLM и почте/Telegram

  • API-ключ LLM (или credential в n8n).
  • Telegram-бот и chat_id менеджера или почта для уведомлений.
  • Место хранения: Google Sheets / Postgres / Airtable — куда писать черновик и статус.
  • Секрет webhook (не публиковать URL без токена в query/header).

Какие ноды понадобятся по именам (Webhook, AI Agent/LLM, Set/Code, IF)

Минимальный набор имён в редакторе n8n:

  • Webhook — вход брифа.
  • Respond to Webhook — ответ 200/202/422.
  • Code или Set — нормализация, хеш, шаблон.
  • IF / Switch — валидация и ветки ошибок.
  • Basic LLM Chain / OpenAI / AI Agent — два вызова модели (extract и generate).
  • Telegram / Email — уведомление менеджеру.
  • Error Trigger (отдельный workflow) — ловить падения ночью.

Memory (память диалога) для one-shot «бриф → КП» обычно не нужна: важнее structured output и запись результата в таблицу.

Триггер входа: webhook, письмо или форма с сырым брифом

Три рабочих входа:

  1. Форма на лендинге → Webhook с полем brief.
  2. Письмо → IMAP/Gmail trigger, тело письма = бриф.
  3. Telegram-бот продаж → сообщение менеджера или лида.

На старте проще всего webhook: один POST с текстом, удобно тестировать из Postman или curl.

Как принять повторный бриф без дублей (идемпотентность)

Клиент (или сам webhook при таймауте) часто пришлёт один и тот же бриф дважды. Без защиты вы дважды заплатите за LLM и получите два черновика.

Практика:

  1. Нормализуйте текст (обрезать пробелы, привести переносы).
  2. Посчитайте SHA-256 от текста — это ключ.
  3. Перед LLM проверьте: ключ уже есть? → не вызывайте модель снова.

Таймауты webhook и ответ 202, когда генерация долгая

Два вызова LLM легко выходят за ~60 секунд — типичный лимит ожидания webhook. Если режим ответа «ждать конца флоу», клиент формы получит таймаут и нажмёт «отправить» ещё раз.

Рабочий приём:

  • сразу ответить 202 Accepted («принято, обрабатываем»);
  • дальше гнать async-ветку: extract → generate → Telegram менеджеру;
  • клиенту/форме отдать ссылку на статус или просто «менеджер свяжется».

LLM №1: вытащить требования, а не пересказывать бриф

Первый вызов модели — не «перескажи бриф красиво», а заполни JSON-схему. Модель должна вернуть только поля, без маркетингового текста.

Пример набора полей (адаптируйте под услугу):

  • client_goal — цель клиента
  • pain_points — боли
  • scope — объём работ
  • integrations — интеграции
  • budget — бюджет (или null)
  • deadline — срок (или null)
  • tone — тон общения
  • missing_fields — чего не хватает

Какие поля обязательны: услуга, срок, бюджет, ограничения, тон

Минимум для КП-черновика:

  1. Что продаём (услуга / пакет).
  2. Что входит и что не входит (scope).
  3. Срок или явный пробел.
  4. Бюджет или явный пробел.
  5. Ограничения (стек, регион, SLA — если упомянуты).
  6. Тон: деловой / дружеский / коротко.

Если срока или бюджета нет — модель не придумывает, а пишет в missing_fields и в шаблон подставляет [уточнить у клиента].

Валидация JSON: что делать, если модель «додумала» цену

После LLM №1 всегда ставьте Code/IF:

  • JSON парсится?
  • обязательные ключи на месте?
  • budget / deadline либо число/дата из брифа, либо null + запись в missing_fields?
  • нет «магических» сумм, которых не было во входном тексте?

Если проверка провалена — Respond 422 / ветка «вернуть менеджеру сырой бриф», а не идти в генерацию КП.

Таблица: чего модели нельзя додумывать

ПолеМожно из брифаНельзя «от себя»
Цена / скидкада, если явно сказанонет
Срок сдачиданет
Состав работда, как формулировка клиентанельзя обещать лишнее
Юр. формулировки / SLAтолько цитата/шаблон компаниинет свободной генерации
Контакты / PIIпередавать минимальноне логировать лишнее во внешние сервисы

Сборка каркаса КП без генерации «из воздуха»

Между двумя LLM — детерминированная сборка. Вы маппите JSON в блоки шаблона коммерческого предложения. Здесь ещё нет «красивого текста» — только каркас.

Блоки: оффер, объем, сроки, цена, next step

Базовый каркас:

  1. Оффер — что предлагаем под цель клиента.
  2. Объём — scope + исключения.
  3. Сроки — дата или [уточнить у клиента].
  4. Цена — сумма или [уточнить у клиента].
  5. Next step — «созвон / уточнение / счёт».

Шаблон храните в Set/Code или в таблице — так легче версионировать без правки промпта.

Почему структуру лучше собрать кодом/шаблоном, а не одним промптом

Если структура «живёт» только в голове модели, каждый запуск даёт другой порядок блоков и другие акценты. Код фиксирует скелет: менеджер знает, где искать цену и срок. Модель во втором вызове лишь формулирует абзацы внутри готовых секций.

LLM №2: черновик текста по уже зафиксированным полям

Второй вызов получает только собранный каркас (+ краткий ToV, если нужен). Задача — написать читаемый Markdown/текст КП, не меняя цифры.

Промпт, который запрещает менять цифры и сроки

В system/user prompt явно пропишите:

  • не добавляй цены, сроки и услуги, которых нет во входных полях;
  • если видишь [уточнить у клиента] — оставь маркер, не заменяй на число;
  • не обещай SLA и гарантии сверх шаблона;
  • длина: 1–1,5 страницы, без воды.

Так вы получаете «коммерческое предложение с помощью нейросети», но без иллюзии, что модель «знает ваш прайс».

Стоимость двух вызовов vs один «всё сразу» Tools Agent

Два коротких вызова обычно дешевле и предсказуее одного длинного ReAct-цикла с tools: меньше итераций, меньше лишних tool-call. Один Tools Agent может уйти в Max Iterations, повторить tools и внезапно вырасти в цене — особенно на «болтливых» брифах.

Max Iterations (лимит циклов агента) в n8n по умолчанию часто равен 10: столько раз агент может «подумать и дернуть tool» за один запуск. Если лимит исчерпан, смотрите ветку ошибок — в части версий при Continue On Fail статус мог выглядеть как Success. Проверяйте логи и версию инстанса.

Когда один Tools Agent всё же уместен: нужен диалог уточнений с CRM/календарём до сборки КП. Тогда tool-level HITL на отправку письма обязателен, а цену лучше брать из справочника tool'ом, а не из «памяти» модели.

HITL: кто и где правит черновик до клиента

После LLM №2 сценарий должен:

  1. сохранить черновик;
  2. прислать менеджеру превью;
  3. остановиться с точки зрения клиента.

Approve в Telegram или email: кнопка «ок / вернуть»

Практичные варианты:

  • Telegram: сообщение с текстом КП + кнопки «ок, беру в работу» / «вернуть на доработку» (через Wait / Send and Wait или просто статус в таблице).
  • Email: письмо себе/отделу с черновиком; отправка клиенту — вручную из CRM.
  • Нативный Human review у tool «send email» — только если отправка автоматизирована и вы сознательно включаете авто-outbox.

Не смешивайте «менеджер правит черновик» и «агент сам шлёт клиенту после Approve» без явной политики команды.

Что нельзя отдавать без глаз: PII, скидки, обещания SLA

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

  • персональные данные и внутренние пометки клиента;
  • любые скидки и «особые условия»;
  • формулировки про сроки, штрафы, SLA;
  • что маркеры [уточнить] либо закрыты фактом, либо убраны из клиентской версии.

Брифы часто содержат контакты и бюджеты: на self-host проще контролировать, что уходит во внешнюю LLM; сырой текст лучше не светить в лишних логах.

Типичные поломки: Continue On Fail, память, циклы агента

Max iterations и зацикливание tools

Если всё же используете AI Agent с tools:

  • ограничьте список tools (least privilege);
  • не давайте tool «отправить клиенту» без HITL;
  • следите за Max Iterations;
  • при ошибке tool — fallback на человека, а не «тихий Success».

Логи ошибок, которые экономят ночь дебага

Включите отдельный Error Trigger-workflow: падение LLM, таймаут, 422 валидации → сообщение в Telegram с execution id и кратким reason. Логируйте:

  • ключ идемпотентности;
  • какие поля ушли в missing_fields;
  • сколько токенов съели два вызова (хотя бы приблизительно).

Так вы отличите «модель глючит» от «webhook пришёл дважды» и от «протух API-ключ».

Коротко: n8n vs Make, если цель — именно черновик КП

Когда проще остаться в n8n

  • Нужны Code-ноды под хеш, JSON-валидацию и шаблон.
  • Важен self-host и данные брифов «у себя».
  • Уже есть стек LangChain-нод / AI Agent в n8n.
  • Сценарий документный: extract → validate → generate → HITL.

Когда имеет смысл перенести сценарий в Make

  • Команда уже живёт в Make и быстро клеит CRM ↔ почта ↔ мессенджеры.
  • Нужен быстрый прототип без сервера.
  • AI Agents в Make удобны как визуальная оркестрация SaaS; для жёсткой валидации JSON и идемпотентности чаще всё равно упрётесь в кастомный код.

Развёрнутый гайд по Make AI Agents у нас уже отдельной страницей — здесь достаточно выбора: КП с фактами и проверками → n8n; быстрый SaaS-прототип продаж → Make.

Если команде ближе визуальные сценарии в Make и нужен практический разбор автоматизации с ИИ — смотрите обучение по автоматизации и вайбкодингу: от процесса к рабочим связкам, без «магии вместо схемы».

Как встроить сценарий в контент-завод и продажи

Паттерн тот же, что в контент-заводе: сырьё → структура → черновик → человек → публикация. Меняется только «пакет» на выходе: вместо статьи — коммерческое предложение.

Бриф с лендинга/бота → черновик КП → менеджер

  1. Лид оставляет заявку (форма / бот).
  2. n8n собирает черновик КП за минуты.
  3. Менеджер правит и отправляет из CRM.
  4. Статус «КП отправлено» возвращается в воронку.

Так автоматизация продаж начинается не с «робота-клоузера», а с снятия рутины первого ответа.

Тот же каркас для статей и коммерческих писем

Тот же extract→template→draft→HITL годится для:

  • коммерческих follow-up писем;
  • одностраничных офферов на сайт;
  • брифов для контент-команды («о чём статья / для кого»).

Контент-завод и отдел продаж начинают говорить на одном языке процессов: черновик всегда проходит человека.

Пошаговая сборка: от пустого workflow до первого черновика

Шаг 1. Создайте workflow и Webhook

  1. В n8n: New workflow → нода Webhook.
  2. Method: POST. Path: например brief-to-kp.
  3. Включите заголовок/токен проверки (header X-Hook-Secret).
  4. Добавьте Respond to Webhook пока с простым {"status":"accepted"}.

Признак успеха: тестовый POST возвращает 200/202 и execution появляется в логе.

Шаг 2. Нормализация и идемпотентность

  1. Code: взять body.brief, trim, отказ если длина < N символов.
  2. Посчитать хеш брифа.
  3. Проверить в Sheets/БД: хеш есть? → Respond «already processed» и стоп.
  4. Иначе записать строку со статусом processing.

Признак успеха: повтор того же брифа не создаёт вторую строку и не дергает LLM.

Шаг 3. LLM №1 + валидация JSON

  1. Нода LLM с system: «верни только JSON по схеме…; неизвестные поля — null; пробелы — в missing_fields».
  2. Code: JSON.parse, проверка ключей.
  3. IF: если budget/deadline выдуманы относительно исходного текста — в ошибку.

Признак успеха: на брифе без цены в выходе budget: null и [уточнить у клиента] в каркасе.

Шаг 4. Каркас + LLM №2 + HITL

  1. Set/Code: собрать блоки оффер/объём/сроки/цена/next step.
  2. LLM №2: «напиши КП по полям, цифры не меняй».
  3. Сохранить Markdown в таблицу.
  4. Telegram менеджеру с текстом и ссылкой на запись.
  5. Никакой ноды «Email клиенту» в этой версии.

Признак успеха: в Telegram приходит черновик; в таблице статус draft_ready; клиент ничего не получил.

Типичные ошибки новичка

  1. Один промпт «сделай КП» — лечится разделением extract/generate.
  2. Sync-webhook без 202 — форма отваливается по таймауту, бриф шлётся дважды; включите ранний 202 + идемпотентность.
  3. Continue On Fail на валидации — битый JSON проходит дальше; на критичных нодах лучше падать в Error Trigger.
  4. Автоотправка клиенту — уберите tool/ноду отправки наружу до отдельного согласованного процесса.

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

Короткие ответы для поиска и ИИ-выдачи

Что такое ИИ-агент в n8n и чем он отличается от «просто ChatGPT»?

В ChatGPT вы вручную вставляете бриф и копируете ответ. В n8n ИИ-агент/LLM встроен в workflow: сам принимает заявку, вызывает проверки, пишет черновик в таблицу и зовёт человека. Разница — оркестрация и контроль, а не «более умная модель».

Можно ли собрать сценарий без Docker?

Да. n8n Cloud или уже поднятый инстанс достаточно. Docker нужен, если хотите self-host и контроль данных; для обучения схемы нод он не обязателен.

Нужен ли HITL всегда?

Для КП — да, на выходе к клиенту. Полностью автоматическая отправка коммерческих условий без глаз менеджера — риск для денег и репутации. HITL можно упростить до «менеджер копирует из Telegram», но точка человека должна быть.

Сколько стоят два LLM-вызова?

Зависит от модели и длины брифа. Два коротких structured/generate вызова обычно дешевле одного агента с кучей итераций tools. Закладывайте учёт токенов в логах с первого дня.

Чем этот пайплайн отличается от «создать коммерческое предложение онлайн» в конструкторе?

Конструкторы дают шаблон документа. Здесь — автоматизация входа заявки, извлечения требований и черновика под ваш процесс продаж, с повторяемостью и защитой от дублей.

n8n бесплатный для такого сценария?

Есть бесплатные/trial-режимы и self-host, но LLM API и время команды всё равно стоят денег. Считайте стоимость модели + сопровождение workflow, а не только лицензию n8n.

---

Что проверяли по источникам

  • Практическая схема «два LLM + детерминированные ноды + HITL» и маркеры [уточнить] — по открытому кейсу бриф→КП на n8n (Habr).
  • Поведение AI Agent / Tools Agent, Max Iterations и Human review — по документации n8n.
  • HITL на уровне tool call — по разделу Human-in-the-loop.
Beget — хостинг и VPS