Перейти к содержанию
Внутренний продукт

CRM.

Сценарий на 120+ Telegram-контактов и 30 активных диалогов: приём заявок с портфолио и AI OPS, фильтры, задачи, inline-правки и отправка в n8n. ИИ-синхронизация Telegram → CRM каждые 20 минут и умное распределение по 15 параметрам.

Роль

Архитектура, full-stack, деплой

Год

2026

Статус

Next.js 16 · SQLite · n8n

Публичной ссылки нет: CRM работает только для владельца. Метрики — сценарий нагрузки на одном сервере, не публичная аналитика.

crm.webdev07.techВнутренний

Обзор

Лиды

+ Лид

120

контактов

30

активных

0

ошибок

ЛидИсточникЭтап

Анна Орлова

@anna_ops

TelegramНовый

Михаил Ковалёв

m.kovalev@example.com

ПортфолиоКвалифицирован

Ирина Соколова

@irina_smm

TelegramНовый

Денис Морозов

@denis_build

AI OPSСвязались
n8n outboxretry + HMAC

120+

Telegram-контактов

30

активных диалогов

10+

функций

1

пользователь

ГЛАВНОЕ

Умная синхронизация через ИИ

Ответы, этапы и задачи обновляются сами: 20 минут, 15 параметров и один next action.

20 мин

цикл синхронизации

15

параметров распределения

4

шага задач

01

Задача

Лиды приходили из формы портфолио, AI OPS и Telegram-выгрузок. Часть терялась, дубли не отслеживались, а отправка в n8n была ручной.

02

Решение

Одна SQLite-база, один входной API и один экран. Заявки автоматически создают лид, дубли склеиваются по email, Telegram и телефону, а n8n получает подписанный payload из очереди с повторами.

03 — AI SYNC & ROUTING

Что происходит каждые 20 минут

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

Что делает ИИ

Читает новые сообщения, понимает контекст, отличает живого клиента от бота или агрегатора, обновляет этап, температуру и теги. Детерминированный синк переносит историю, score, follow-up и ошибки доставки; повторный запуск не создаёт дубли.

По каким параметрам раскладываем
источникэтаптемператураscore 0–100бюджетязыкчасовой поясканал связипоследняя активностьвозраст лидаSLA без ответаответ / нет ответаfollow-upтегистатус доставки
01

Ответы разбираются по смыслу

Входящее сообщение не теряется: модель определяет, кто пишет — клиент, бот или агрегатор, — и обновляет этап, температуру и теги.

02

Следующий шаг появляется сам

Из контекста и плана рождается задача: ответить, сделать follow-up, повторить после PEER_FLOOD. В работе всегда один next action.

03

Дубли не создаются

Повторная синхронизация обновляет ту же карточку. Дедуп по Telegram, email и телефону; timeline и задачи идемпотентны.

TASKS

Задачи: сначала план

План по датам и приоритетам: первое касание, follow-up через 3 дня, разбор ответа, повтор после PEER_FLOOD. Из него рождаются задачи и next action.

01Разбор
02План по датам
03Очередь задач
04Автозакрытие
04 — ARCHITECTURE

Архитектура

Next.js принимает заявки, SQLite хранит лиды и очередь, worker отправляет в n8n. Всё на одном сервере за Caddy.

01

Источники

Портфолио, AI OPS, Telegram JSON и ручной ввод.

02

API

Bearer-ключ, идемпотентность и дедуп по контактам.

03

SQLite

Лиды, события, задачи и очередь доставок в одном файле.

04

n8n

Вебхук с HMAC, повторами и журналом ответов.

Контракт с n8nlead.v1
{
  "schema": "lead.v1",
  "event": "lead.created",
  "lead": {
    "id": "ld_...",
    "name": "Ivan",
    "email": "ivan@example.com",
    "source": "portfolio",
    "temperature": "hot",
    "score": 70
  },
  "consent": { "granted": true },
  "meta": { "attempt": 1 }
}

Стек

Next.js 16SQLiten8nCaddysystemd

n8n получает lead.v1, проверяет HMAC-подпись и идемпотентность. При 5xx CRM повторяет отправку.

05 — DECISIONS

Ключевые решения

01

Один пользователь — без ролей

Не строил команду и права, которых нет. Один вход, один владелец, минимум лишних сущностей.

02

SQLite вместо Postgres

Для одного пользователя и десятков лидов в день SQLite быстрее, проще и дешевле. WAL и индексы закрывают фильтры.

03

Очередь, а не прямой fetch

Если n8n недоступен, доставка остаётся в очереди. Worker повторяет отправку, а failed видно в журнале.

04

Канонический payload lead.v1

CRM не зависит от формата получателя: наружу уходит один контракт, n8n разбирает его своим workflow.

05

Список — рабочее место, а не витрина

Сортировка, inline-правки, массовые действия и сохранённые виды позволяют вести десятки лидов без постоянных переходов в карточку.

06

Состояние не теряется

Фильтры, сортировка и колонки живут в URL и sessionStorage: возврат из карточки открывает тот же рабочий вид.

06 — FEATURES

Что внутри

01

Гибкие колонки: 21 поле, выбор сохраняется в URL

02

Inline-редактирование этапа, температуры, score, бюджета и даты шага

03

Сохранённые виды: фильтры + сортировка + колонки

04

Расширенные фильтры: score, канал связи, активность и возраст

05

SLA-метка «N дней без ответа»

06

Глобальный поиск ⌘K / Alt+K по всей базе

07

Массовые действия и экспорт только выбранных лидов

08

Закрепление лидов и навигация j/k по строкам

09

Задачи и следующие шаги в одном рабочем экране

010

n8n outbox: HMAC, retry, журнал доставок

011

Импорт Telegram-лидов и дедуп по email / Telegram / телефону

012

API приёма, SQLite, бэкап и systemd

013

ИИ-синхронизация Telegram → CRM каждые 20 минут

014

Распределение по 15 параметрам: score, бюджет, язык, SLA и др.

015

План задач: первое касание, follow-up, разбор ответа, повтор

07 — UI

Как это выглядит

Демо-данные: имена, контакты и сообщения вымышлены. Реальные лиды в скриншотах не показаны.

Обзор01
CRM: обзор лидов, задач и ошибок n8n
Лиды и фильтры02
CRM: список лидов с этапами, score, бюджетом и next action
Карточка лида03
CRM: карточка лида с этапом, тегами, задачами и отправкой в n8n
Задачи04
CRM: экран задач с дедлайнами и next action
Фильтры05
CRM: фильтры по этапам, источникам, температуре, тегам, score, бюджету и next action