Перейти до вмісту
Внутрішній продукт

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