Архітектура агентів
5 незалежних AI-агентів, кожен — окремий n8n-воркфлоу з власною логікою, базою знань і Telegram-ботом керування
01Instagram DM-агент
✅ Production
Кваліфікує вхідні ліди у трьох каналах — Instagram Direct, Telegram-бот і чат-віджет сайту — ведучи природний діалог і по черзі з'ясовуючи ім'я, тип бізнесу та біль клієнта. Перехід з сайту до Telegram зберігає контекст розмови: бот впізнає клієнта по session_id і не перепитує з початку.
Instagram DM→
Webhook (миттєвий ACK)→
AI Agent + пам'ять (10 повідомлень)→
кваліфікація ліда→
Supabase + Notion CRM→
Telegram-сповіщення
- Офіційний Meta App у Live-режимі — не тестова інтеграція, реальні DM реальних клієнтів
- Передача діалогу людині за справжнім сигналом, а не таймером: розпізнається власна відповідь Андрія в Instagram (echo) і відрізняється від echo самого бота
- Окремий Telegram control-бот із 4 AI-інструментами: оновлення бази знань агента, запити до CRM, резюме переписки конкретного ліда, нотатки по угоді
- Виправлено продакшн-баг подвійної обробки одного повідомлення — Meta ретраїла webhook через таймаут довгої обробки; вирішено патерном миттєвого ACK до запуску AI
- Міст сайт → Telegram зі збереженням сесії: клієнт з сайту отримує CTA-кнопку переходу в Telegram з унікальним session_id — бот впізнає повернення і не перепитує контекст; при збої моделі fallback автоматично показує кнопку
- Boss-режим із живими Supabase-запитами: власник пише в Telegram "скільки лідів за 3 дні" — агент виконує реальний запит і відповідає числами; оновлення бази знань агента застосовується миттєво до наступного повідомлення без перезапуску
02Контент-агент
✅ Production
Генерує та публікує пости одночасно на 4 платформи — Instagram, Telegram, LinkedIn, X —
кожну своєю мовою й тоном, з AI-зображеннями за фотореференсом.
Telegram-команда (текст/фото)→
AI визначає намір→
генерація тексту + FLUX.2 зображення→
прев'ю з кнопками→
публікація (нативні API + Buffer MCP)
- Мовна стратегія за каналом: укр для Instagram/особистого Telegram-каналу, eng для LinkedIn/X (канали пошуку клієнтів)
- Перенесення обличчя/об'єкта з фото-референсу у згенеровану сцену через FLUX.2 reference images
- Інтеграція через Buffer MCP-сервер для LinkedIn і X — нестандартний шлях, бо класичний Buffer REST API закритий для нових інтеграцій
- Автоматичне щотижневе очищення старих чернеток постів окремим cron-воркфлоу
- 51 нода n8n, повністю в production — підтверджено власником: "все працює ідеально"
03Агент відгуків
🟡 Збірка завершена
Раз на 2 години підтягує нові Google-відгуки компанії, дедуплікує і шле сповіщення в Telegram;
окремий control-бот відповідає на запитання про статистику відгуків.
Cron (раз на 2 год)→
Google Places API→
дедуплікація в Supabase→
Telegram-сповіщення
- Дедуплікація без зайвої логіки — через UNIQUE-обмеження бази даних і insert-стратегію "ignore-duplicates" замість окремої IF-перевірки
- Економна модель для простих задач — control-бот для Q&A по відгуках свідомо працює на дешевшій LLM, бо складність задачі цього не вимагає
- Google Business Profile для AgentUp створений: профіль налаштований (Kyiv, сфера послуг), API-ключ Places API отримано й підключено до workflow; активація після індексації профілю в публічній базі Places
04Агент лідогенерації
✅ Production
Щодня сканує 6 Telegram-груп малого бізнесу, AI оцінює кожен пост за шкалою 1–10 і верифікує
компанію онлайн — кваліфікований лід іде Сергію на підтвердження, і тільки після кліку
"Відправити" userbot надсилає персоналізоване повідомлення напряму.
Cron (6 TG-груп)→
AI-скоринг 1–10 (Gemini)→
Tavily-верифікація→
pending approval → Сергій ✅/❌→
userbot (Python/Pyrogram)
- Approval-флоу: жодне повідомлення не відправляється без кліку — AI пропонує, людина вирішує; кнопки ✅ Відправити / ❌ Відхилити прямо в Telegram
- Окремий userbot-мікросервіс (Python/Pyrogram на сервері) для Telegram DM — єдина точка відправки у системі; Агент 5 делегує йому через webhook
- Верифікація вакансій: пост "шукаємо менеджера продажів" — потенційний лід, але тільки якщо компанія знаходиться онлайн через Tavily (захист від спаму)
- Напівавтономний пошук нових груп: щодня знаходить кандидатів через Tavily, але пропонує Сергію самостійно, не вступає без дозволу
- Instagram-фолбек о 13:00: якщо за день ще немає лідів — шукає бізнеси за 4 нішами (фітнес/краса/авто/дитячі центри) та сповіщає Сергія
05Менеджер-агент
✅ Production
Головний Telegram-бот — єдина точка управління всіма агентами. Розуміє довільні текстові
команди, визначає намір і делегує задачу потрібному агенту через webhook'и, маючи 10 AI-інструментів.
Telegram-команда→
Gemini 2.5 Pro (пам'ять 20 повідомлень)→
вибір інструменту→
webhook Агента 2 або 4→
відповідь у чат
- 10 AI-інструментів: повний CRUD по будь-якій таблиці Supabase, генерація зображень (FLUX.1-schnell), веб-пошук (Tavily), публікація в Telegram-канал, trigger Агента 2 (контент) і Агента 4 (відправка ліду через userbot)
- Оркестрація ланцюжком: "зроби пост про X" → Агент 5 тригерить Агента 2 → превью з кнопками Публікувати/Переробити повертається назад у чат Менеджера
- ReplyKeyboard із 5 постійних кнопок: 📊 Звіт / ✍️ Пост / 🎯 Ліди / ⭐ Відгуки / ⚙️ Статус
- Модель Gemini 2.5 Pro — найсильніша в системі, бо потрібне розуміння складних мультикрокових задач і правильний вибір інструменту з 10 варіантів
Навички, застосовані в проєкті
Те, що реально використано при побудові системи — не теорія
n8n / Workflow automation
AI Agent nodes
Structured Output Parser
Memory buffers
Custom Code-ноди (fetch)
Webhook-дизайн
Ідемпотентність / race conditions
Cron-тригери
LLM / Prompt engineering
Мультимодельна маршрутизація
Системні промпти для кваліфікації лідів
Generation з контролем тону й мови
Structured output / nullable schemas
Tool calling
Інтеграції API
Meta / Instagram Graph API
Telegram Bot API
Google Places API
Notion API
Buffer MCP
FLUX.2 image generation
Бази даних
Supabase / PostgreSQL
Проєктування схеми CRM
Дедуплікація на рівні БД
PostgREST-запити
DevOps / Інфраструктура
Docker / Docker Compose
Traefik
Let's Encrypt SSL
Hetzner VPS
Доменний менеджмент
Frontend
Адаптивна верстка
Мультимовність
Темна / світла тема
Чат-віджети
Інженерні задачі, які довелось вирішити
Реальні production-проблеми, а не навчальні приклади
Подвійна обробка одного повідомлення Instagram
Meta ретраїла webhook, бо обробка через AI займала 20–30 секунд і не вкладалась у таймаут. Вирішено патерном миттєвого ACK: воркфлоу підтверджує отримання за <1 секунду, ще до виклику AI.
"Тихий" провал structured-парсера через несумісну схему
AI Agent інколи повертав вивід, загорнутий у додаткове поле, що ламало Structured Output Parser. Виправлено явною nullable-схемою і обробкою помилки замість мовчазного fallback.
Прихований стан credentials у production-воркфлоу
Воркфлоу позначався як активний, але реально не працював — частина нод втратила прив'язку credentials, що інструмент керування воркфлоу не показував напряму. Діагностовано через прямий запит до REST API n8n.
Розпізнавання "людина перехопила діалог" без штучного таймера
Замість таймера on/off для AI — реальний сигнал: власна відповідь власника бізнесу в Instagram відрізняється від echo самого бота і миттєво вимикає AI для цього ліда.
Бот ігнорував англомовні повідомлення
При надсиланні першого повідомлення англійською агент відповідав українською і не реагував на мову клієнта. Виправлено переписуванням промпту: визначення мови стало першим і найпріоритетнішим правилом — до будь-якої логіки кваліфікації.
CTA-кнопка "Перейти в Telegram" зникала через збій моделі
Поодинокий збій OpenRouter (порожня відповідь, finish_reason: error) саме на фінальному повідомленні кваліфікації ламав structured-парсер — запускався безликий fallback без посилання. Вирішено подвійним захистом: retryOnFail (3 спроби) на вузлі AI Agent і fallback-текст, що примусово рендерить CTA-кнопку навіть при помилці.