Ми обрали n8n як шар оркестрації, бо клієнт хотів сам читати робочі процеси після нашого відходу. Візуальний граф n8n чесний щодо того, чим він є — спрямованою послідовністю HTTP-викликів, перетворень і розгалужень — і не ховає під собою закритий рантайм. Компроміс називаємо вголос: n8n повільніший для написання, ніж голий код для одного інженера, і швидший для підтримки для не-інженера-власника. Клієнт — це другий випадок.
Сторона прийому — це збір потоків в одну точку. Вхідні webhook-и від форми на сайті, поштовий опитувальник для трьох аліасів і офіційні канали двох соціальних платформ — усе приземляється в одну точку входу n8n. Ми нормалізуємо вантаж до єдиної схеми — source, channel, raw_body, contact, received_at — і записуємо до бази даних ще до будь-яких інших дій. Якщо крок моделі або CRM далі дасть збій, нічого не втрачено: відтворюємо зі сховища.
Крок аналізу — один виклик до LLM зі схемою структурованого виводу. Промпт короткий і навмисно консервативний: класифікує намір, витягує контактні поля, оцінює терміновість за трирівневою шкалою, позначає все, що схоже на спам або відгук на вакансію. Перш ніж пускати в роботу, ми виміряли модель на двохстах історичних повідомленнях і налаштовували промпт, доки класифікації не збіглися з рішеннями оператора в важливих випадках. Складні випадки, у яких модель помиляється, спрямовуються до черги людського перегляду, а не йдуть як впевнено неправильна відповідь.
Диспетчер сповіщень працює за правилами поверх класифікації. Ліди продажів із високою терміновістю піднімають власника облікового запису у тому чаті, яким він і так користується. Запити підтримки повідомляють спільну скриньку підтримки і командний канал. Усе, що класифіковано як спам або поза темою, записується в журнал і відкидається. Правила лежать у невеликому JSON-файлі, який клієнт може редагувати; ми не сховали їх у таблицю бази, бо читати їх важливіше, ніж писати.
Останній крок надсилає структурованого ліда до CRM через її API, а оригінальне повідомлення додає як примітку для контексту. CRM від цього моменту — джерело істини. n8n тримає копію кожного запуску протягом тридцяти днів для розбору помилок, потім очищає.
Ми додали невелику панель — одна сторінка, рендериться на сервері, без жодного фреймворку — яка показує останні двадцять чотири години прийому, розподіл за класифікацією і будь-які елементи в черзі людського перегляду. Оператор відкриває її раз зранку замість того, щоб увесь день оновлювати таблицю.