AI-система персонализации email-рассылок для медиа

Массовые рассылки с одинаковым контентом для всей базы — это устаревший подход: open rate 15–20%, а отток подписчиков достигает 5–8% в месяц. Наши инженеры замечают, что медиа теряют до 70% потенциала вовлечения из-за игнорирования поведенческих сигналов. Мы строим pipeline персонализации на базе LL

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1267
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1003

Массовые рассылки с одинаковым контентом для всей базы — это устаревший подход: 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 Russian.\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%.