AgentUp logo
Засновник AgentUp
agentup.agency
AI Automation Engineer · n8n & LLM Workflow Developer

Андрій Соколов

Будую AI-агентів та n8n-автоматизації, що реально працюють у продакшені — з живими користувачами, зовнішніми API та грошима на кону, а не демо-прототипи.

Останній час розробляю AgentUp — власну агенцію автоматизації для малого бізнесу, де самостійно пройшов весь шлях: від архітектури n8n-воркфлоу та промпт-інженерії до інтеграції зовнішніх API, проєктування бази даних і продакшен-деплою на власному сервері. Нижче — детальний розбір цього проєкту як кейс мого підходу до роботи: 5 AI-агентів, технологічний стек та реальні інженерні задачі, які довелось вирішити по дорозі.

5 AI-агентів в архітектурі
4 повністю в production
200+ нод n8n
10+ зовнішніх API та сервісів
self-hosted інфраструктура на VPS
3 канали прийому лідів (Instagram · Telegram · сайт)

Технологічний стек

Інструменти та сервіси, з якими реально побудована й працює система

Оркестрація
n8n (self-hosted)
LLM
OpenRouter — Gemini 2.5 Flash, GPT-4o-mini, DeepSeek (маршрутизація моделі за складністю задачі)
База даних
Supabase (PostgreSQL)
CRM
Notion API
Месенджери
Telegram Bot API, Instagram Graph API (Meta)
Соцмережі / постинг
Buffer (MCP), Instagram Graph API
Генерація зображень
FLUX.2 [pro] (Together AI), з підтримкою фото-референсу
Відгуки
Google Places API
Інфраструктура
Hetzner VPS, Docker, Traefik, Let's Encrypt SSL
Frontend
Статичний сайт, адаптивний, укр/eng, темна/світла тема

Архітектура агентів

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-кнопку навіть при помилці.