Кейс · клієнтський проєкт · під NDA

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

клієнтський проєкт · під NDA · Python + Claude + Google Sheets + Telegram · 2026 · у проді

Клієнту треба було щодня тримати око на п'яти галузевих джерелах і не пропустити те, що стосується його бізнесу. Я зібрала систему: вона сама обходить сайти кожні дві години, розбирає кожну публікацію моделлю, зводить одну подію з різних видань в один рядок, веде реєстр у таблиці й о сьомій ранку кладе в Telegram готовий звіт. Від брифа до продакшену — тиждень.

~1 500
публікацій на місяць система читає замість людини
7 днів
від брифа до працюючого продакшену
$7
на місяць за весь AI — замість $33, які виходили спочатку
2:23
хвилини — повний прогін від збору до готового звіту
01

Задача

У клієнта п'ять галузевих джерел, які треба читати щодня. Разом вони дають близько півтори тисячі публікацій на місяць — це майже пʼятдесят на день. Людина фізично читає їх по діагоналі, а те, що справді важливо, губиться між дублями й фоновим шумом.

Важливо, що це не «стрічка новин». Клієнту потрібні приводи для дії: хто вийшов на ринок, кому потрібне рішення, де зʼявився запит. Тобто система мала не переказувати новини, а знаходити в них сигнал.

  • Під NDA: ні галузі, ні назви замовника, ні джерел не називаю. Показую систему — вона моя
  • Обсяг: п'ять джерел, ~1 500 публікацій на місяць
  • Строк: сім днів від брифа до продакшену
  • Роль: усе сама — архітектура, код, промпти, інтеграції, передача
02

Як влаштована система

Шість кроків. Усе крутиться в хмарі за розкладом — мій ноутбук у цьому не бере участі взагалі.

Схема системи моніторингу: збір з п'яти джерел, класифікація моделлю, згортання подій, фільтр релевантності, реєстр у таблиці, ранковий дайджест у Telegram
Збір
Кожні дві години система обходить джерела. Три віддають нормальну стрічку, два довелось розбирати парсером — один із них узагалі малює сторінку скриптом, і звичайний парсер там безсилий. Що вже бачили — не тягнемо вдруге.
Класифікація
Кожна публікація йде в модель зі строгою схемою відповіді: дев'ять категорій, статус («потребує дії», «сигнал», «шум»), короткий висновок і список згаданих компаній і організацій. Модель не може відповісти «як їй зручно» — формат зафіксований.
Згортання подій
Три видання написали про одне й те саме — це одна подія, а не три рядки. Модель зводить їх у кластер зі стабільним номером, який більше ніколи не змінюється. Так 216 публікацій перетворились на 178 подій.
Реєстр
Google Sheets на три вкладки: стрічка подій, компанії, організації. Статус підсвічений кольором, джерела клікабельні. Клієнт може працювати в таблиці, навіть не відкриваючи Telegram.
Дайджест
О сьомій ранку в Telegram лягає звіт: спершу те, що потребує дії, далі згадки компаній, далі решта сигналів. Шум у месенджер не потрапляє — він лишається в таблиці. Час обрав клієнт: щоб звіт уже чекав, коли люди приходять на роботу.
Бот у два боки
Кинеш боту номер події — він віддасть повну картку. Кинеш посилання на новий сайт — він сам знайде стрічку й підключить джерело до системи. Клієнт розширює моніторинг без розробника.
03

Як дешева модель навчилась у дорогої

Перша версія працювала на найпотужнішій моделі — і рахунок виходив близько тридцяти трьох доларів на місяць. Для системи, яка просто читає новини, це дорого, і що більше джерел, то гірше.

Замість того щоб просто перемкнутись на дешеву модель і змиритись із гіршою якістю, я зробила інакше. Взяла дорогу модель і посадила її написати правила для прикордонних випадків — тих самих, де дешева помилялась: пропускала абревіатури, недооцінювала терміновість. Ці правила вшила в інструкцію дешевої моделі, а зверху поклала звичайну перевірку в коді — на випадок, якщо вона все одно спробує притягнути щось не те.

  • Було: $33 на місяць
  • Стало: близько $7 на місяць — у пʼять разів дешевше
  • Якість: на контрольній вибірці дешева модель збіглася з дорогою за статусами повністю
  • Запобіжник: найгрубіші помилки ловить не модель, а звичайна перевірка в коді — вона працює завжди
04

Чому стоп-слова не працюють

Замовник спершу просив звичайний фільтр: ось список слів, за якими новину викидаємо. Класична ідея — і вона ламається на першому ж прикладі. Слово, яке в одному контексті означає сміття, в іншому стоїть у самій цінній новині місяця. Мінусуєш його — і разом зі шумом викидаєш те, заради чого все будувалось.

Тому фільтр релевантності — не список слів, а судження по суті: чи це справді стосується бізнесу клієнта. Навчала його на його ж власному відборі: він показав, що вважає сигналом, а що ні. Перший прогін без цих прикладів дав три збіги з семи. Після того як його відбір став якорями — дев'ять із дев'яти.

05

Цифри

Проєкт під NDA: ні галузі, ні замовника, ні джерел не називаю. Усі цифри нижче — про систему, а не про бізнес клієнта.
МетрикаЗначенняЩо це означає
Джерел під наглядом5Три зі стрічкою, два довелось розбирати власним парсером
Публікацій на місяць~1 500Виміряно по кожному джерелу окремо, не оцінка на око
Публікацій → подій216 → 178Дублі між виданнями згортаються в одну подію
Категорій і статусів9 + 3Кожна публікація отримує категорію і статус: дія, сигнал або шум
Вартість AI на місяць$7Було $33. Дистиляція дорогої моделі в дешеву
Повний прогін2 хв 23 сВід обходу джерел до готового звіту в месенджері
Строк розробки7 днівВід брифа до системи, яка щодня працює сама
Коду2 328 рядківPython без зовнішніх залежностей — менше того, що може зламатись

Дані на 14.07.2026 · джерела: код системи, база подій, історія розробки

06

Що було складно

Три місця, де система поводилась не так, як обіцяла теорія.

Сайт відкривається у мене, але не в хмари

Одне джерело віддавало сторінку локально й відмовляло серверу: захист сайту не любить запити з дата-центрів. Гірше було інше — падіння одного джерела валило весь обхід, і система мовчала цілий ранок.

Висновок: система тепер зупиняється, тільки якщо впали всі джерела. Одне впало — решта чотири все одно принесуть новини, а в звіті буде видно, що одне джерело мовчить.

Бот зациклився й не пускав клієнта

Замовник не міг підключитись до бота. Причина виявилась злою: новому чату бот намагався віддати всю накопичену картину — а вона розрослась до тридцяти восьми тисяч символів. Месенджер відбивав таку пачку, бот падав ще до того, як запамʼятовував нового користувача, і все починалось спочатку.

Висновок: довгі відповіді ріжуться на шматки з паузами, а на відмову месенджера бот чекає й повторює. Реєстрація користувача тепер відбувається до того, як бот починає щось слати.

Розклад у хмарі — це не будильник

Планувальник хмари не гарантує точного часу: він може запустити задачу пізніше або пропустити вікно, коли навантаження велике. Звіт «рівно о сьомій» перетворювався на «десь між шостою і одинадцятою».

Висновок: рішення «пора слати звіт» ухвалює не розклад, а сама система: вона памʼятає, коли слала востаннє. Клієнту я пообіцяла вікно, а не секунду — і це чесно.

07

Що отримав клієнт

  • Один звіт замість п'яти сайтів. Ранок починається з готового дайджесту, а не з обходу вкладок
  • Реєстр компаній і подій — окремі вкладки, які накопичуються самі: хто зʼявився, що зробив, коли, з посиланням на джерело
  • Шум не турбує людину. Він лишається в таблиці, у месенджер іде тільки те, що вимагає уваги
  • Систему можна розширювати без мене — нове джерело додається повідомленням боту
  • Утримання — сім доларів на місяць. Не тисячі за підписку на чужий сервіс, а власна система на власних даних
08

Що з цього взяти собі

  • Дорога модель — не обовʼязково та, що працює щодня. Хай вона напише правила, а щоденну роботу віддайте дешевій. У цьому проєкті різниця — пʼятикратна
  • Стоп-слова не фільтрують сенс. Те саме слово буває і сміттям, і головною новиною місяця. Фільтрувати треба судженням, і навчати його на власному відборі замовника
  • Не довіряйте моделі те, що можна перевірити кодом. Найгрубіші помилки має ловити звичайна умова, яка працює завжди
  • Обіцяйте вікно, а не секунду. Хмарний розклад — це не будильник, і чесніше сказати це відразу, ніж виправдовуватись потім
  • Моніторинг — це не стрічка новин, а лідоген. Питання не «що сталось», а «до кого тепер іти»

Схожа система під ваші джерела — від $1 500. Строк залежить від кількості джерел і того, наскільки складно з них дістати текст; називаю після брифа, у той самий день.

Часті питання

Скільки коштує утримання такої системи?

У цьому проєкті — близько $7 на місяць за весь AI. Плюс безкоштовний хмарний планувальник і Google Sheets. Ключі до моделі оформлюються на замовника, тож він платить напряму й бачить кожну копійку.

Чи можна моніторити не сайти, а соцмережі чи Telegram-канали?

Так, принцип той самий: збір, розбір моделлю, згортання дублів, звіт. Складність залежить від того, як джерело віддає текст — десь достатньо стрічки, десь потрібен окремий парсер.

Що буде, якщо джерело перестане працювати?

Система не зупиниться: вона падає тільки якщо мовчать усі джерела одразу. Решта продовжують працювати, а в звіті видно, що одне джерело недоступне.

Кому належить код і дані?

Замовнику. Система живе в його репозиторії, на його ключах, дані — у його таблиці. Я передаю доступи й письмову інструкцію, після якої систему може супроводжувати будь-який розробник.

Треба стежити за ринком — напишіть три речення

За чим саме треба стежити, скільки джерел і що ви робите з цією інформацією далі. Цього досить, щоб я сказала, чи розкладається це на систему і скільки вона коштуватиме. Відповідаю в той самий день.

Наступний кейс EMBODY — магазин під ключ