Масові розсилки з однаковим контентом для всієї бази — це застарілий підхід: open rate 15–20%, а відтік підписників сягає 5–8% на місяць. Наші інженери зауважують, що медіа втрачають до 70% потенціалу залучення через ігнорування поведінкових сигналів. Ми будуємо pipeline персоналізації на базі LLM і event streaming, який підіймає open rate до 35–50%: профіль читача → скоринг статей → генерація теми листа через велику мовну модель. Технічно це ланцюжок, що включає Apache Kafka для подій, Redis для профілів та batch-обробку за 1–2 години до відправки. У результаті кожен підписник отримує дайджест, релевантний його інтересам, що скорочує відтік у 2–3 рази та економить до 40% бюджету на email-маркетинг за рахунок зниження кількості нецільових відправок.
Які дані критичні для персоналізації?
Для якісного профілю потрібно мінімум 10–15 прочитаних статей. Збираємо події: перегляди, час на сторінці, лайки, шерінг. До цього порогу використовуємо категорійну персоналізацію — обираємо розділи на основі останніх інтересів. Дані зберігаються в Redis з TTL 30 днів; топики зважуються з експоненціальним загасанням. Без достатньої історії алгоритм перемикається на fallback, щоб не погіршувати досвід.
Чому масові розсилки програють персоналізації?
Однотипні дайджести ігнорують поведінкові сигнали: який розділ читач відкриває частіше, які теми пропускає. LLM-персоналізація враховує свіжість контенту, редакційну оцінку та навіть час доби. Порівняйте:
| Метрика | Масова розсилка | Персоналізований дайджест |
|---|---|---|
| Open rate, % | 15–20 | 35–50 |
| Click-through rate, % | 2–5 | 8–15 |
| Відтік за місяць, % | 5–8 | 2–4 |
| Час на читання | 30–60 с | 2–5 хв |
Після впровадження персоналізації open rate зріс з 18% до 41% за три місяці, — зазначає технічний директор одного з клієнтів.
Як ми будуємо pipeline персоналізації?
Крок 1. Профілювання читача. Збираємо події через Apache Kafka: перегляди, лайки, час на статті. Зберігаємо в Redis з TTL 30 днів. Топики зважуємо з експоненціальним загасанням. Для кожного читача формуємо 1536-вимірний embedding на основі історії переглядів.
Крок 2. Скоринг статей. Для кожного непрочитаного матеріалу розраховуємо комбінований score:
- Відповідність топикам (50%)
- Свіжість (30%) — що молодша стаття, то вище
- Редакційна оцінка (20%)
Крок 3. Генерація теми листа. Використовуємо Claude 3.5 Sonnet з few-shot промптом. Модель отримує три найкращі статті та інтереси читача, видає заголовок до 55 символів українською. Приклад коду:
from anthropic import Anthropic def generate_personalized_digest(user_profile, available_articles, n_articles=5): llm = Anthropic() read_ids = user_profile.get('read_ids', set()) unread = [a for a in available_articles if a['id'] not in read_ids] topics = user_profile.get('topics', {}) scored = [] for article in unread: topic_score = topics.get(article.get('topic', 'general'), 0.05) freshness = max(0, 1.0 - article.get('hours_old', 24) / 48) quality = article.get('editorial_score', 0.7) scored.append({**article, 'score': topic_score*0.5 + freshness*0.3 + quality*0.2}) top_articles = sorted(scored, key=lambda x: -x['score'])[:n_articles] article_titles = [a['title'] for a in top_articles] response = llm.messages.create( model="claude-3-5-sonnet-20241022", max_tokens=80, messages=[{ "role": "user", "content": f"Write a compelling email subject line for a news digest in Ukrainian.\nArticles: {article_titles[:3]}\nReader's main interests: {list(topics.keys())[:3]}\nMax 55 chars. No clickbait." }]) return {'articles': top_articles, 'subject': response.content[0].text.strip()} Поріг запуску персоналізації — 10–15 прочитаних статей. Інакше вмикається категорійна персоналізація (вибір розділу) без статейного рівня. При необхідності використовуємо fine-tuning моделі на корпусі редакційних матеріалів за допомогою LoRA.
Які результати дає персоналізація?
Персоналізовані дайджести в 2–3 рази ефективніші за масові розсилки за основними метриками. Ми проводимо A/B-тестування для кожної моделі, фіксуючи lift на рівні p99 latency менше 200 мс. Досвід нашої команди в MLOps і NLP дозволяє швидко адаптувати pipeline під будь-яку редакцію. Економія на нецільових відправках сягає 30–40% при збереженні якості контенту.
| Метод | Необхідні дані | Латентиність | Холодний старт |
|---|---|---|---|
| Коллаборативна фільтрація | Історія оцінок | Висока | Проблема |
| Контентна фільтрація | Профілі, метадані | Середня | Частково |
| LLM-персоналізація (наш) | Поведінка + NLP | Низька (batch) | Немає |
Що входить у роботу «під ключ»
- Архітектура рішення з блок-схемою
- Код pipeline на Python з використанням LangChain і Redis
- Інтеграція з CRM та ESP через REST API
- Документація та навчання команди
- Гарантія на 3 місяці та підтримка при релізах
Терміни та вартість
Термін впровадження: від 2 до 6 тижнів залежно від складності інтеграцій. Вартість розраховується індивідуально після аудиту поточного стеку. Оцінимо проєкт безкоштовно — отримайте консультацію через форму на сайті.
Як почати?
Розкажіть про вашу базу підписників, поточні метрики та завдання. Ми підготуємо пропозицію з точним складом робіт і календарним планом. Зв'яжіться з нами — допоможемо підняти open rate до 50%.







