Автоматизация анализа отдела продаж с помощью n8n и локальных нейросетей

Практический курс по созданию автоматизированного конвейера для обработки звонков. Вы научитесь настраивать n8n, внедрять диаризацию спикеров и использовать AI для оценки эффективности менеджеров и настроения клиентов.

1. Настройка экосистемы: установка n8n и интеграция с локальными LLM и STT моделями

Настройка экосистемы: установка n8n и интеграция с локальными LLM и STT моделями

Добро пожаловать на курс «Автоматизация анализа отдела продаж с помощью n8n и локальных нейросетей». Это первая и фундаментальная статья, в которой мы заложим техническую основу для всего дальнейшего обучения. Наша конечная цель — создать систему, которая автоматически слушает звонки ваших менеджеров, транскрибирует их в текст, определяет, кто говорит (клиент или менеджер), и проводит глубокий анализ качества продаж.

Сегодня мы не будем писать сложные скрипты анализа, наша задача — построить «завод», на котором этот анализ будет производиться. Мы настроим оркестратор процессов (n8n) и подключим к нему «уши» (STT — Speech-to-Text) и «мозг» (LLM — Large Language Model).

Почему мы выбираем локальные решения?

В мире существуют мощные облачные решения, такие как OpenAI (ChatGPT, Whisper API) или Google Cloud. Однако для анализа отдела продаж локальный стек технологий часто выигрывает по трем причинам:

  • Конфиденциальность данных. Записи разговоров с клиентами часто содержат коммерческую тайну и персональные данные. Обрабатывая их на собственном сервере, вы гарантируете, что аудиофайлы не покинут ваш контур безопасности.
  • Стоимость. Облачные API тарифицируются за минуту аудио или за количество токенов. При анализе сотен часов разговоров в месяц счета могут быть внушительными. Локальные модели используют только ресурсы вашего железа.
  • Независимость. Вы не зависите от изменений политик провайдера, блокировок или изменения цен.
  • !Архитектура нашей локальной системы автоматизации

    Инструментарий курса

    Для реализации задуманного нам понадобятся три ключевых компонента:

    * n8n — это мощная система автоматизации рабочих процессов (workflow automation tool). Она позволяет соединять различные приложения и сервисы с помощью визуального редактора узлов (nodes). В нашем случае n8n будет забирать аудиофайлы, отправлять их на распознавание и затем передавать текст на анализ. * Whisper (через Docker) — нейросеть от OpenAI для распознавания речи. Мы будем использовать её открытую версию, запущенную локально. * Ollama — инструмент для простого запуска больших языковых моделей (таких как Llama 3, Mistral) на локальном компьютере. Это будет наш аналитик.

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

    Шаг 1: Подготовка среды и установка Docker

    Прежде чем начать, убедитесь, что ваш компьютер соответствует минимальным требованиям. Для комфортной работы с локальными нейросетями желательно иметь: * Процессор: Современный Intel Core i5/i7 или AMD Ryzen 5/7. * Оперативная память: Минимум 16 ГБ (лучше 32 ГБ). * Видеокарта (GPU): NVIDIA с поддержкой CUDA (минимум 6-8 ГБ видеопамяти) значительно ускорит процесс, но для обучения можно использовать и мощный CPU (будет медленнее).

    Вам необходимо установить Docker Desktop (для Windows/Mac) или Docker Engine (для Linux). Скачать их можно с официального сайта Docker.

    Шаг 2: Установка n8n

    Мы будем использовать n8n в режиме self-hosted. Самый простой способ запустить его — использовать команду в терминале. Откройте терминал (PowerShell в Windows или Terminal в macOS/Linux) и выполните следующую команду:

    Разберем, что делает эта команда: * docker run — команда запуска контейнера. * -p 5678:5678 — пробрасывает порт. Это значит, что n8n будет доступен в вашем браузере по адресу http://localhost:5678. * -v n8n_data:/home/node/.n8n — создает том (volume) для хранения данных, чтобы ваши настройки не пропали после перезагрузки.

    После запуска перейдите в браузере по адресу http://localhost:5678 и пройдите простую регистрацию администратора.

    Шаг 3: Настройка локального «мозга» (Ollama)

    Ollama — это настоящий прорыв в мире локальных LLM. Она позволяет запускать модели одной командой.

  • Скачайте и установите Ollama с официального сайта ollama.com.
  • После установки откройте терминал и запустите модель. Для наших задач анализа текста отлично подойдет модель Llama 3 или Mistral. Введите команду:
  • При первом запуске Ollama скачает веса модели (несколько гигабайт). После загрузки вы сможете общаться с ней прямо в терминале. Но нам важно, что Ollama автоматически запускает локальный API сервер на порту 11434.

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

    Расчет потребления памяти

    Важно понимать, сколько ресурсов потребляют модели. Для оценки необходимой видеопамяти (VRAM) часто используют упрощенную формулу квантования. Если мы используем модель с квантованием 4-bit (стандарт для Ollama), формула выглядит так:

    где: * — необходимый объем видеопамяти в Гигабайтах. * — количество параметров модели в миллиардах (например, для Llama-3-8B это 8). * — эмпирический коэффициент, учитывающий размер весов в 4-битном формате и накладные расходы на контекстное окно (KV-cache).

    Например, для модели на 8 миллиардов параметров: ГБ. Значит, видеокарты с 6 ГБ памяти будет достаточно для запуска, но впритык.

    Шаг 4: Настройка «ушей» (Whisper)

    Для Whisper нам нужен сервис, который будет принимать аудиофайл по API и возвращать текст. Существует отличный проект whisper-asr-webservice. Запустим его через Docker.

    Выполните в терминале:

    * -p 9000:9000 — сервис будет доступен на порту 9000. * -e ASR_MODEL=base — мы выбираем базовую модель. Для лучшего качества русского языка рекомендуется использовать small или medium, но они требуют больше ресурсов.

    Теперь у нас есть API для транскрибации по адресу http://localhost:9000.

    Шаг 5: Интеграция в n8n

    Теперь самое интересное — соединить всё вместе. Мы создадим простейший сценарий в n8n, чтобы проверить связь.

    !Пример тестового workflow в n8n

  • Откройте n8n и создайте новый Workflow.
  • Добавьте узел HTTP Request.
  • Настроим его для общения с Ollama:
  • * Method: POST * URL: http://host.docker.internal:11434/api/generate (Обратите внимание: если n8n в Docker, а Ollama на хосте, используйте host.docker.internal вместо localhost). * Body Content: JSON * JSON:
  • Нажмите Execute Node. Если вы получили ответ "response": "Да, я готова...", поздравляю! Ваш n8n успешно управляет локальным искусственным интеллектом.
  • Заключение

    Мы успешно развернули экосистему для автоматизации. У нас есть: * n8n для управления процессами. * Ollama для интеллектуального анализа. * Whisper Service для превращения голоса в текст.

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

    2. Работа с аудио: транскрибация и диаризация для четкого разделения голосов в диалоге

    Работа с аудио: транскрибация и диаризация для четкого разделения голосов в диалоге

    В предыдущей статье мы построили наш «завод» по переработке данных: установили n8n, запустили локальный LLM (Ollama) и сервис распознавания речи (Whisper). Теперь пришло время запустить конвейер. Сырьем для нашей системы служат аудиозаписи звонков.

    Просто превратить звук в текст недостаточно. Чтобы оценить работу менеджера, нам нужно четко понимать: кто именно произнес ту или иную фразу. Сказал ли «Дорого!» клиент, или это менеджер цитировал возражение? Этот процесс разделения спикеров называется диаризацией.

    Сегодня мы разберем, как нейросети «слышат» звук, как математически отличаются голоса и как настроить этот процесс в n8n.

    Анатомия звука: как нейросеть понимает речь

    Для компьютера аудиофайл — это просто длинный массив чисел, описывающий колебания мембраны микрофона. Чтобы найти в этом хаосе слова, нейросеть Whisper преобразует звук в визуальное представление — спектрограмму.

    !Процесс превращения звуковой волны в спектрограмму и последующая расшифровка нейросетью

    Мел-спектрограмма

    Это «тепловая карта» звука, где по оси X идет время, по оси Y — частота, а цвет показывает громкость. Whisper использует логарифмическую шкалу (Mel scale), потому что человеческое ухо лучше различает низкие частоты, чем высокие.

    Математически процесс преобразования сигнала в спектрограмму можно описать упрощенно так:

    Где: * — значение спектрограммы на частоте в момент времени . * — исходный аудиосигнал во времени. * — кратковременное преобразование Фурье (Short-Time Fourier Transform), которое раскладывает звук на частоты. * — логарифм, применяемый для сжатия динамического диапазона (чтобы тихие и громкие звуки были видны одновременно).

    Именно эту картинку «видит» нейросеть, когда мы отправляем ей файл.

    Проблема «Каши»: Транскрибация vs Диаризация

    Существует два понятия, которые новички часто путают:

  • Транскрибация (ASR — Automatic Speech Recognition): Перевод голоса в текст. Результат: «Здравствуйте я по поводу машины сколько стоит».
  • Диаризация (Speaker Diarization): Процесс ответа на вопрос «Кто говорит и когда?». Результат:
  • Спикер А (00:00 - 00:02):* Здравствуйте. Спикер Б (00:02 - 00:04):* Я по поводу машины. Спикер А (00:04 - 00:06):* Сколько стоит?

    Без диаризации анализ продаж невозможен. Если мы не разделим каналы, LLM не поймет, кто хамил — клиент или менеджер.

    Как работает нейронная диаризация?

    Если у вас запись моно (все голоса в одной дорожке), нейросеть должна определить смену говорящего по тембру голоса. Для этого используется концепция Speaker Embeddings (векторных отпечатков голоса).

    Нейросеть нарезает аудио на короткие кусочки и превращает каждый кусочек в вектор (набор чисел). Если два вектора «смотрят» в одну сторону, значит, это говорит один человек. Для сравнения голосов используется косинусное сходство:

    Где: * и — векторы (цифровые отпечатки) двух фрагментов аудио. * — скалярное произведение векторов. * и — длины (нормы) этих векторов. * — косинус угла между векторами. Если он равен 1, голоса идентичны. Если 0 — они совершенно разные.

    !Визуализация кластеризации векторов голоса: разные спикеры образуют разные облака точек

    Практика в n8n: Обработка аудио

    Перейдем к настройке workflow в n8n. Наша задача: получить файл, подготовить его и отправить в Whisper.

    Шаг 1: Подготовка аудио (FFmpeg)

    Whisper лучше всего работает с аудио частотой 16000 Гц (16 kHz). Кроме того, файлы телефонии часто приходят в специфических форматах (ogg, gsm). Нам нужен универсальный конвертер.

    Для этого в n8n мы будем использовать узел Execute Command, который обращается к утилите ffmpeg (она должна быть установлена в контейнере n8n или доступна ему).

    Команда для нормализации аудио:

    * -ar 16000: Устанавливает частоту дискретизации 16 кГц. * -ac 1: Делает звук моно (если мы полагаемся на нейронную диаризацию) или оставляем стерео, если используем разделение каналов.

    Шаг 2: Отправка в Whisper Service

    В прошлой статье мы запустили whisper-asr-webservice на порту 9000. Теперь настроим узел HTTP Request в n8n для отправки файла.

    Настройки узла: * Method: POST * URL: http://host.docker.internal:9000/asr * Body Content: Form-Data * Parameter Name: audio_file (тип File) * Query Parameters: * task: transcribe * language: ru (или auto) * output: json

    Выбор формата json критически важен. В отличие от простого текста (txt), JSON вернет нам массив сегментов с временными метками.

    Пример ответа от Whisper:

    Шаг 3: Разделение спикеров (Стерео vs Моно)

    Здесь мы подходим к развилке. В телефонии есть «Золотой стандарт» — Стерео-запись. Это когда голос клиента пишется в левый канал, а менеджера — в правый. Это самый надежный способ диаризации, не требующий сложных нейросетей.

    Вариант А: У вас Стерео (Рекомендуемый) В этом случае мы не просим нейросеть угадывать голоса. Мы просто транскрибируем каждый канал отдельно.

  • С помощью ffmpeg разделяем файл на left.wav и right.wav.
  • Отправляем оба файла в Whisper.
  • В n8n объединяем два JSON-ответа, сортируя фразы по полю start (время начала).
  • Вариант Б: У вас Моно (Нейронная диаризация) Если у вас моно-запись, стандартный Whisper (особенно base модель) не вернет вам метки Speaker A / Speaker B.

    Для решения этой задачи в рамках нашего курса мы будем использовать контекстный метод на следующем этапе (с помощью LLM). Мы передадим модели текст с временными метками и попросим её определить роли, основываясь на логике диалога (менеджер обычно здоровается первым, представляет компанию и т.д.).

    > «Технологии развиваются быстро, но простая физика разделения каналов всё ещё надежнее самых умных алгоритмов кластеризации» — из документации библиотеки pyannote.audio.

    Итоговая структура данных

    После прохождения узла Whisper в n8n, мы должны сформировать JSON-объект, который пойдет на вход нашему «мозгу» (Ollama). Он должен выглядеть примерно так:

    В следующей статье мы научим нашу локальную Llama 3 брать этот JSON, определять, кто есть кто (заполнять поле role), и проводить глубокий анализ эмоций клиента.

    Резюме

  • Мы узнали, что спектрограмма — это способ представления звука для нейросети.
  • Разобрали формулу косинусного сходства, которая позволяет математически сравнивать голоса.
  • Настроили отправку аудио в Whisper через n8n и получение JSON с таймкодами.
  • Поняли, что для идеального разделения голосов лучше использовать стерео-запись, но готовы работать и с моно через логический анализ.
  • 3. Структурирование данных: алгоритмы идентификации ролей менеджера и клиента

    Структурирование данных: алгоритмы идентификации ролей менеджера и клиента

    В предыдущих модулях мы построили фундамент нашей системы: настроили n8n, развернули локальные нейросети и научились превращать аудиопоток в текст с временными метками. Однако на данном этапе у нас есть лишь сырой материал — список фраз, приписанных абстрактным «Спикеру 0» и «Спикеру 1» (или просто поток текста, если запись была моноканальной).

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

    В этой статье мы разберем алгоритмы, с помощью которых локальная LLM (Large Language Model) структурирует хаос человеческой речи.

    Проблема «Слепого» текста

    Представьте, что вы видите транскрипцию:

    > — Здравствуйте. > — Добрый день. > — Сколько стоит доставка?

    Для человека очевидно, что второй спикер — скорее всего менеджер, а третий — клиент. Но для компьютера это просто набор символов. Если мы перепутаем роли, система аналитики сделает ложный вывод, что менеджер спрашивает цену, а клиент её называет.

    Существует два основных подхода к решению этой задачи:

  • Эвристический (на основе правил). Например, «Тот, кто говорит первым — менеджер» (верно для исходящих) или «Тот, кто говорит больше слов — менеджер». Эти методы ненадежны.
  • Семантический (на основе смысла). Это использование LLM для анализа контекста фраз. Именно этот метод мы будем внедрять.
  • !Слева иконка документа с сырым текстом диалога. Стрелка ведет в центр к иконке мозга (LLM). От мозга отходят три стрелки вправо к блокам: "Роли определены", "Эмоции распознаны", "Итог подведен".

    Математика выбора: Как нейросеть принимает решение

    Когда мы просим модель (например, Llama 3) определить, является ли фраза речью менеджера, под капотом происходит вероятностная классификация. В финальном слое нейросети используется функция Softmax, которая преобразует выходные значения нейронов (логиты) в распределение вероятностей.

    Формула функции Softmax для класса выглядит так:

    Где: * — вероятность того, что входные данные принадлежат классу (например, класс «Менеджер»). Значение всегда находится в диапазоне от 0 до 1. * — вектор входных значений (логитов), полученных от предыдущих слоев нейросети. * — значение логита для конкретного класса . * — математическая константа, число Эйлера (примерно 2.718). * — общее количество классов (в нашем случае 2: Менеджер и Клиент). * — сумма экспонент всех логитов, служащая нормализующим коэффициентом, чтобы сумма всех вероятностей была равна 1.

    Модель анализирует семантику фразы (например, наличие слов «наша компания», «предлагаем», «акция») и максимизирует вероятность класса «Менеджер».

    Инженерный подход: Промпт-инжиниринг для Llama 3

    Локальные модели, в отличие от гигантов вроде GPT-4, требуют очень четких инструкций. Наша задача — подать на вход JSON с транскрипцией и получить на выходе JSON с аналитикой. Любой лишний текст («Конечно, вот ваш анализ...») сломает автоматизацию в n8n.

    Структура системного промпта

    В n8n мы будем использовать узел HTTP Request для обращения к Ollama (или специальный узел LangChain, если вы используете его). Тело запроса должно содержать system prompt (инструкцию) и user prompt (сами данные).

    Вот пример эффективного промпта для анализа продаж:

    Реализация в n8n

    Теперь соберем это в единый сценарий. Предполагается, что у вас уже есть JSON от Whisper из предыдущего урока.

    Шаг 1: Агрегация данных

    Whisper часто выдает массив сегментов. Перед отправкой в LLM их лучше объединить в одну строку или упрощенный JSON, чтобы не тратить контекстное окно модели на лишние технические поля.

    Используйте узел Code в n8n:

    Шаг 2: Запрос к Ollama

    Создайте узел HTTP Request: * Method: POST * URL: http://host.docker.internal:11434/api/chat * Body:

    Обработка галлюцинаций и ошибок

    Локальные модели могут ошибаться. Иногда Llama 3 может перепутать роли, если менеджер говорил мало, а клиент вел диалог агрессивно.

    Для повышения точность используется метод Chain-of-Thought (Цепочка рассуждений). Вы можете попросить модель сначала написать почему она решила, что Спикер А — это менеджер, и только потом выдать финальный JSON.

    Пример изменения в промпте: > "Сначала добавь поле 'reasoning', где опиши логику определения ролей, затем выведи остальной JSON".

    Это заставляет модель «подумать» перед ответом, что математически повышает вероятность выбора правильного токена в классификации.

    Заключение

    Мы научились превращать безликий текст в структурированные данные. Теперь у нас есть система, которая:

  • Понимает, кто есть кто в диалоге.
  • Оценивает эмоциональный фон.
  • Выносит вердикт по сделке.
  • В следующей, заключительной статье курса, мы займемся визуализацией и отчетностью. Мы настроим отправку этих данных в Google Таблицы или Telegram, чтобы руководитель отдела продаж мог в реальном времени видеть пульс своего отдела.

    4. Глубокий анализ: оценка скриптов продаж и эмоционального состояния клиента нейросетью

    Глубокий анализ: оценка скриптов продаж и эмоционального состояния клиента нейросетью

    Мы подошли к финальной и самой важной части нашего курса. В предыдущих статьях мы построили сложный инженерный конвейер: настроили n8n, развернули Docker-контейнеры с Whisper и Ollama, научились транскрибировать аудио и разделять диалог по ролям. Теперь у нас есть структурированный текст, где понятно, что сказал менеджер, а что — клиент.

    Но сам по себе текст — это просто набор букв. Бизнесу не нужны тексты, бизнесу нужны инсайты.

    * Соблюдал ли менеджер скрипт? * Был ли клиент раздражен, и в какой момент? * Почему сделка сорвалась: из-за цены, сроков или грубости сотрудника?

    В этой статье мы научим нашу локальную нейросеть (Llama 3 или Mistral) отвечать на эти вопросы, превращая сырой диалог в строгие цифры и отчеты.

    !Визуализация процесса преобразования текста диалога в аналитические данные

    Отход от ключевых слов к смысловому анализу

    Раньше системы речевой аналитики работали на основе ключевых слов (keywords spotting). Если клиент сказал слово «дорого», система ставила тег «Возражение по цене».

    Проблема этого подхода в отсутствии контекста. Фраза «Это совсем не дорого для такого качества» содержит слово «дорого», но имеет противоположный смысл. Локальные LLM (Large Language Models) решают эту проблему, так как они «читают» диалог целиком и понимают семантические связи.

    Наша задача — создать такой системный промпт, который заставит модель работать как строгий контролер качества (ОКК).

    Математика оценки качества звонка

    Чтобы оцифровать работу менеджера, недостаточно просто сказать «хорошо» или «плохо». Нам нужна числовая метрика. В отделах продаж обычно используется Call Quality Score (CQS) — индекс качества звонка.

    Мы можем запрограммировать нейросеть не просто проверять наличие этапов продаж, но и взвешивать их важность. Например, «Приветствие» весит меньше, чем «Отработка возражений».

    Формула расчета взвешенной оценки выглядит следующим образом:

    Где: * — итоговая оценка качества звонка в процентах (от 0 до 100). * — общее количество критериев в чек-листе (например, приветствие, выявление потребностей, презентация). * — порядковый номер текущего критерия. * — вес (важность) -го критерия (например, от 1 до 5). * — результат выполнения критерия: , если выполнено, и , если не выполнено. * — знак суммирования, означающий сложение всех значений.

    Эту формулу мы не будем заставлять считать саму нейросеть (у LLM плохо с арифметикой). Мы попросим модель вернуть JSON с результатами (), а подсчет выполним уже средствами n8n или Google Таблиц.

    Настройка промпта для глубокого анализа

    В n8n, в узле взаимодействия с Ollama, мы должны передать модели контекст всего диалога (который мы сформировали в прошлой статье) и жесткую инструкцию.

    Структура идеального промпта

    Промпт должен состоять из трех блоков:

  • Роль и задача: Ты — старший аналитик.
  • Критерии оценки: Четкое описание того, что считать успехом.
  • Формат вывода: Строгий JSON schema.
  • Пример промпта (System Message):

    !Настройка узла LLM в n8n для отправки промпта и диалога

    Обработка галлюцинаций и нюансов

    Локальные модели (особенно небольшие, вроде Llama 3 8B) могут иногда «галлюцинировать» или быть слишком мягкими. Чтобы повысить точность, используйте следующие техники:

    1. Temperature (Температура)

    В настройках модели в n8n установите параметр Temperature на значение 0.1 или 0.2. * Высокая температура (0.8+) делает модель креативной (хорошо для стихов). * Низкая температура (0.1) делает модель детерминированной и строгой (хорошо для аналитики).

    2. Chain of Thought (Цепочка рассуждений)

    Если модель ошибается в оценке, попросите её сначала обосновать решение. Измените формат JSON, добавив поле reasoning:

    Когда модель «проговаривает» логику, вероятность ошибки в финальном true/false снижается математически, так как генерация каждого следующего токена зависит от предыдущего контекста.

    Анализ эмоций и Sentiment Analysis

    Оценка эмоций — это не просто «позитив» или «негатив». В продажах важно отслеживать динамику.

    Идеальный звонок выглядит так: * Начало: Нейтрально (3/5) * Середина (обсуждение цены): Напряжение (2/5) * Конец (отработка): Удовлетворение (4/5)

    Если вы хотите получить такой график, вам нужно просить нейросеть оценивать эмоции не для всего диалога сразу, а для каждого логического блока. Однако для MVP (минимально жизнеспособного продукта) достаточно общей оценки и выделения «красных флагов».

    Попросите модель выделить массив red_flags — фразы, где клиент проявил явную агрессию или сарказм. Это позволит руководителю отдела продаж слушать не все 100 звонков, а только те 5, где были проблемы.

    Финализация данных в n8n

    После того как Ollama вернет нам JSON с анализом, наш workflow в n8n будет выглядеть так:

  • Whisper Node: Вернул текст и роли.
  • Ollama Node: Вернул JSON с аналитикой (checklist, status, score).
  • Code Node (JavaScript): Рассчитывает итоговый балл по формуле, которую мы разобрали выше.
  • Google Sheets / Telegram Node: Сохраняет данные.
  • Пример кода для узла Code в n8n для расчета балла:

    Куда сохранять результаты?

    Лучшее место для хранения такой аналитики — Google Таблицы или базы данных (PostgreSQL), подключенные к BI-системе (например, Google Looker Studio или Power BI).

    Создайте таблицу с колонками: * Дата и время * Имя менеджера (из названия файла или CRM) * CQS (Балл качества) * Статус сделки * Эмоция клиента (1-5) * Причина отказа * Ссылка на аудио

    !Итоговая таблица с аналитикой звонков

    Заключение курса

    Поздравляю! Вы прошли путь от установки Docker до создания собственной системы речевой аналитики.

    Мы создали решение, которое:

  • Автономно: Работает на ваших серверах, данные не утекают.
  • Бесплатно: Вы не платите за минуты распознавания облачным провайдерам.
  • Интеллектуально: Система понимает смысл, а не просто ищет ключевые слова.
  • Теперь ваш отдел продаж под полным контролем искусственного интеллекта. Вы можете масштабировать эту систему, добавляя новые сценарии, например, автоматическое создание карточки клиента в CRM на основе данных из диалога или отправку саммари встречи клиенту в Telegram сразу после звонка.

    Автоматизация — это не будущее, это настоящее, которое вы только что построили своими руками.

    5. Финальная аналитика: выявление ключевых факторов успеха или провала сделки

    Финальная аналитика: выявление ключевых факторов успеха или провала сделки

    Поздравляю! Вы прошли огромный путь. Мы начали с установки Docker и n8n, настроили «уши» (Whisper) и «мозг» (Ollama), научились разделять голоса и оценивать каждый отдельный звонок. Теперь у вас есть система, которая автоматически обрабатывает аудио и выдает вердикт: «Менеджер Иван, звонок №452, оценка 85/100, клиент доволен».

    Но анализ одного звонка — это тактика. Стратегия строится на больших данных. В этой финальной статье мы поднимемся над рутиной и научимся видеть лес за деревьями. Мы соберем статистику сотен диалогов, чтобы ответить на главный вопрос бизнеса: почему одни сделки закрываются успешно, а другие проваливаются?

    От микро к макро: Агрегация данных

    До этого момента наш workflow в n8n работал линейно: Аудио -> Текст -> Анализ -> Отчет. Теперь нам нужно изменить подход к хранению данных. JSON-файл с анализом конкретного звонка полезен менеджеру «здесь и сейчас», но бесполезен для аналитика, если он не попал в общую базу данных.

    Структура идеального датасета

    Чтобы найти закономерности, нам нужно превратить вложенные JSON-структуры в плоскую таблицу. Представьте, что каждая строка — это один звонок, а столбцы — это параметры (фичи), которые мы извлекли нейросетью.

    !Пример структуры плоской таблицы данных для аналитики продаж

    В n8n перед сохранением в Google Таблицы или PostgreSQL (через соответствующие узлы) убедитесь, что вы сохраняете следующие метрики:

  • Hard Skills (Скрипт): Выполнил ли менеджер ключевые этапы (Приветствие, Презентация, Закрытие)? (0 или 1 для каждого этапа).
  • Soft Skills (Эмпатия): Средняя оценка настроения клиента (от 1 до 5).
  • Объективные метрики: Длительность звонка, соотношение речи менеджера и клиента (Talk-to-Listen ratio).
  • Целевая переменная (Target): Результат звонка (1 — успех/продажа/встреча, 0 — отказ/думает).
  • Математика успеха: Корреляционный анализ

    Когда у вас наберется хотя бы 50-100 звонков, вы сможете применить статистический анализ. Наша цель — понять, какие параметры сильнее всего влияют на успех сделки. Действительно ли вежливое приветствие повышает конверсию, или всё решает только цена?

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

    Где: * — искомый коэффициент корреляции. Значение варьируется от -1 до 1. * — значение фактора в конкретном звонке (например, оценка эмоций клиента). * — среднее значение этого фактора по всем звонкам. * — результат конкретного звонка (1 — успех, 0 — провал). * — средний результат (конверсия) по всем звонкам. * — знак суммы (суммирование по всем звонкам).

    Как интерпретировать результат (): Близко к 1: Сильная прямая связь. Пример:* Чем выше настроение клиента, тем выше шанс продажи. Близко к -1: Сильная обратная связь. Пример:* Чем больше менеджер перебивает клиента, тем ниже шанс продажи. Близко к 0: Связи нет. Пример:* Длительность приветствия никак не влияет на продажу.

    Вам не нужно считать это вручную. Экспортируйте данные из n8n в Google Таблицы и используйте функцию =CORREL(). Это позволит вам научно обосновать требования к менеджерам: «Ребята, мы выяснили, что отработка возражений повышает конверсию на 30%, а вот называние имени клиента каждые 5 минут не влияет ни на что».

    Семантический поиск причин провала (Root Cause Analysis)

    Цифры показывают что влияет, но не всегда объясняют почему. Здесь снова вступает в игру наша локальная LLM (Ollama).

    Мы можем настроить отдельный сценарий в n8n, который запускается раз в неделю. Он будет собирать тексты всех звонков со статусом «Провал» (Refusal) и отправлять их в Llama 3 с просьбой найти общие паттерны.

    Промпт для кластеризации отказов

    Такой подход позволяет выявить проблемы, которые не видны на уровне одного звонка. Например, если 40% клиентов отказываются после фразы о сроках доставки, проблема не в скрипте продаж, а в логистике.

    Визуализация: Дашборд руководителя

    Финальный этап автоматизации — визуализация. Данные должны быть понятны с первого взгляда. Используя Google Looker Studio (бесплатно подключается к Google Таблицам), вы можете построить дашборд с ключевыми виджетами.

    !Пример дашборда для руководителя отдела продаж

    Ключевые метрики для мониторинга:

  • CQS (Call Quality Score) Trend: Растет или падает качество общения отдела в целом?
  • Objection Heatmap: На какие продукты клиенты реагируют негативно чаще всего?
  • Manager Performance: Сравнение конверсии менеджеров при одинаковом качестве лидов.
  • Автоматическая петля обратной связи (Feedback Loop)

    Высший пилотаж автоматизации — когда система не просто фиксирует ошибки, а помогает их исправлять. В n8n можно настроить триггеры на критические ошибки.

    Сценарий «Тревожная кнопка»:

  • LLM определяет в звонке маркеры конфликта (мат, угрозы судом, требование начальства).
  • n8n мгновенно отправляет уведомление в Telegram руководителю отдела продаж (РОП) с ссылкой на аудио и расшифровкой момента конфликта.
  • РОП может вмешаться и спасти клиента, пока тот еще «горячий».
  • Сценарий «Персональный тренер»:

  • Система накапливает статистику по каждому менеджеру.
  • Раз в неделю n8n генерирует персональный PDF-отчет для сотрудника: «Иван, ты отлично делаешь презентацию, но в 70% случаев забываешь назначить следующий шаг. Вот 3 примера твоих удачных и неудачных концовок».
  • Заключение курса

    Мы прошли путь от пустого сервера до интеллектуальной системы аналитики уровня Enterprise.

    Что мы создали: * Независимость: Ваши данные обрабатываются локально, вы не платите за API и не боитесь утечек. * Масштабируемость: Docker позволяет развернуть систему на любом железе, а n8n — бесконечно усложнять логику. * Объективность: Нейросеть не устает, у нее нет любимчиков, и она оценивает 100% звонков, а не выборочные 5%.

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

    Удачи в автоматизации и высоких вам конверсий!