Задача
У клієнта п'ять галузевих джерел, які треба читати щодня. Разом вони дають близько півтори тисячі публікацій на місяць — це майже пʼятдесят на день. Людина фізично читає їх по діагоналі, а те, що справді важливо, губиться між дублями й фоновим шумом.
Важливо, що це не «стрічка новин». Клієнту потрібні приводи для дії: хто вийшов на ринок, кому потрібне рішення, де зʼявився запит. Тобто система мала не переказувати новини, а знаходити в них сигнал.
- Під NDA: ні галузі, ні назви замовника, ні джерел не називаю. Показую систему — вона моя
- Обсяг: п'ять джерел, ~1 500 публікацій на місяць
- Строк: сім днів від брифа до продакшену
- Роль: усе сама — архітектура, код, промпти, інтеграції, передача
Як влаштована система
Шість кроків. Усе крутиться в хмарі за розкладом — мій ноутбук у цьому не бере участі взагалі.
Як дешева модель навчилась у дорогої
Перша версія працювала на найпотужнішій моделі — і рахунок виходив близько тридцяти трьох доларів на місяць. Для системи, яка просто читає новини, це дорого, і що більше джерел, то гірше.
Замість того щоб просто перемкнутись на дешеву модель і змиритись із гіршою якістю, я зробила інакше. Взяла дорогу модель і посадила її написати правила для прикордонних випадків — тих самих, де дешева помилялась: пропускала абревіатури, недооцінювала терміновість. Ці правила вшила в інструкцію дешевої моделі, а зверху поклала звичайну перевірку в коді — на випадок, якщо вона все одно спробує притягнути щось не те.
- Було: $33 на місяць
- Стало: близько $7 на місяць — у пʼять разів дешевше
- Якість: на контрольній вибірці дешева модель збіглася з дорогою за статусами повністю
- Запобіжник: найгрубіші помилки ловить не модель, а звичайна перевірка в коді — вона працює завжди
Чому стоп-слова не працюють
Замовник спершу просив звичайний фільтр: ось список слів, за якими новину викидаємо. Класична ідея — і вона ламається на першому ж прикладі. Слово, яке в одному контексті означає сміття, в іншому стоїть у самій цінній новині місяця. Мінусуєш його — і разом зі шумом викидаєш те, заради чого все будувалось.
Тому фільтр релевантності — не список слів, а судження по суті: чи це справді стосується бізнесу клієнта. Навчала його на його ж власному відборі: він показав, що вважає сигналом, а що ні. Перший прогін без цих прикладів дав три збіги з семи. Після того як його відбір став якорями — дев'ять із дев'яти.
Цифри
| Метрика | Значення | Що це означає |
|---|---|---|
| Джерел під наглядом | 5 | Три зі стрічкою, два довелось розбирати власним парсером |
| Публікацій на місяць | ~1 500 | Виміряно по кожному джерелу окремо, не оцінка на око |
| Публікацій → подій | 216 → 178 | Дублі між виданнями згортаються в одну подію |
| Категорій і статусів | 9 + 3 | Кожна публікація отримує категорію і статус: дія, сигнал або шум |
| Вартість AI на місяць | $7 | Було $33. Дистиляція дорогої моделі в дешеву |
| Повний прогін | 2 хв 23 с | Від обходу джерел до готового звіту в месенджері |
| Строк розробки | 7 днів | Від брифа до системи, яка щодня працює сама |
| Коду | 2 328 рядків | Python без зовнішніх залежностей — менше того, що може зламатись |
Дані на 14.07.2026 · джерела: код системи, база подій, історія розробки
Що було складно
Три місця, де система поводилась не так, як обіцяла теорія.
Сайт відкривається у мене, але не в хмари
Одне джерело віддавало сторінку локально й відмовляло серверу: захист сайту не любить запити з дата-центрів. Гірше було інше — падіння одного джерела валило весь обхід, і система мовчала цілий ранок.
Висновок: система тепер зупиняється, тільки якщо впали всі джерела. Одне впало — решта чотири все одно принесуть новини, а в звіті буде видно, що одне джерело мовчить.
Бот зациклився й не пускав клієнта
Замовник не міг підключитись до бота. Причина виявилась злою: новому чату бот намагався віддати всю накопичену картину — а вона розрослась до тридцяти восьми тисяч символів. Месенджер відбивав таку пачку, бот падав ще до того, як запамʼятовував нового користувача, і все починалось спочатку.
Висновок: довгі відповіді ріжуться на шматки з паузами, а на відмову месенджера бот чекає й повторює. Реєстрація користувача тепер відбувається до того, як бот починає щось слати.
Розклад у хмарі — це не будильник
Планувальник хмари не гарантує точного часу: він може запустити задачу пізніше або пропустити вікно, коли навантаження велике. Звіт «рівно о сьомій» перетворювався на «десь між шостою і одинадцятою».
Висновок: рішення «пора слати звіт» ухвалює не розклад, а сама система: вона памʼятає, коли слала востаннє. Клієнту я пообіцяла вікно, а не секунду — і це чесно.
Що отримав клієнт
- Один звіт замість п'яти сайтів. Ранок починається з готового дайджесту, а не з обходу вкладок
- Реєстр компаній і подій — окремі вкладки, які накопичуються самі: хто зʼявився, що зробив, коли, з посиланням на джерело
- Шум не турбує людину. Він лишається в таблиці, у месенджер іде тільки те, що вимагає уваги
- Систему можна розширювати без мене — нове джерело додається повідомленням боту
- Утримання — сім доларів на місяць. Не тисячі за підписку на чужий сервіс, а власна система на власних даних
Що з цього взяти собі
- Дорога модель — не обовʼязково та, що працює щодня. Хай вона напише правила, а щоденну роботу віддайте дешевій. У цьому проєкті різниця — пʼятикратна
- Стоп-слова не фільтрують сенс. Те саме слово буває і сміттям, і головною новиною місяця. Фільтрувати треба судженням, і навчати його на власному відборі замовника
- Не довіряйте моделі те, що можна перевірити кодом. Найгрубіші помилки має ловити звичайна умова, яка працює завжди
- Обіцяйте вікно, а не секунду. Хмарний розклад — це не будильник, і чесніше сказати це відразу, ніж виправдовуватись потім
- Моніторинг — це не стрічка новин, а лідоген. Питання не «що сталось», а «до кого тепер іти»
Схожа система під ваші джерела — від $1 500. Строк залежить від кількості джерел і того, наскільки складно з них дістати текст; називаю після брифа, у той самий день.
Часті питання
Скільки коштує утримання такої системи?
У цьому проєкті — близько $7 на місяць за весь AI. Плюс безкоштовний хмарний планувальник і Google Sheets. Ключі до моделі оформлюються на замовника, тож він платить напряму й бачить кожну копійку.
Чи можна моніторити не сайти, а соцмережі чи Telegram-канали?
Так, принцип той самий: збір, розбір моделлю, згортання дублів, звіт. Складність залежить від того, як джерело віддає текст — десь достатньо стрічки, десь потрібен окремий парсер.
Що буде, якщо джерело перестане працювати?
Система не зупиниться: вона падає тільки якщо мовчать усі джерела одразу. Решта продовжують працювати, а в звіті видно, що одне джерело недоступне.
Кому належить код і дані?
Замовнику. Система живе в його репозиторії, на його ключах, дані — у його таблиці. Я передаю доступи й письмову інструкцію, після якої систему може супроводжувати будь-який розробник.
Треба стежити за ринком — напишіть три речення
За чим саме треба стежити, скільки джерел і що ви робите з цією інформацією далі. Цього досить, щоб я сказала, чи розкладається це на систему і скільки вона коштуватиме. Відповідаю в той самий день.