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

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
AI-система персоналізації email-розсилок для медіа
Простий
від 1 дня до 3 днів
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1285
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    902
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1122
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    859

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

Масові розсилки медіа з однаковим контентом для всієї бази дають open rate 15-20%. Персоналізовані дайджести з підборкою під інтереси конкретного читача — 35-50%. Технічно це pipeline: профіль читача → вибір статей → адаптація теми листа.

Персоналізований дайджест

from anthropic import Anthropic
import pandas as pd
from collections import defaultdict

def generate_personalized_digest(user_profile: dict,
                                   available_articles: list[dict],
                                   n_articles: int = 5) -> dict:
    """
    Підбір та компонування персонального дайджесту.
    user_profile: {'topics': {'tech': 0.4, 'politics': 0.3}, 'read_ids': set()}
    """
    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.
Articles: {article_titles[:3]}
Reader's main interests: {list(topics.keys())[:3]}
Max 55 chars. No clickbait. Be specific."""
        }]
    )

    return {
        'articles': top_articles,
        'subject': response.content[0].text.strip(),
        'personalization_applied': True
    }

Персоналізовані дайджести потребують мінімум 10-15 прочитаних статей для якісного профілю. До цього порога — категорійна персоналізація (вибір розділу) без статейного рівня. Технічний стек: Redis для зберігання профілів, Apache Kafka для event streaming, batch-генерація за 1-2 години до відправки.