Кластеризация и приоритизация Feature Requests

Каждый день продакт-менеджеры тонут в потоке однотипных запросов на новые функции, тратя часы на ручную группировку и теряя важные дубликаты. Мы разрабатываем AI-систему, которая автоматически анализирует и кластеризует фичи с помощью NLP, освобождая команду для стратегических задач. Наша команда реализует проект под ключ — от аудита до внедрения, обеспечивая надёжную работу и последующую поддержку.
Часто задаваемые вопросы

Разработка AI-системы анализа запросов на новые функции

Feature request backlog растёт экспоненциально: в компаниях с активной продуктовой разработкой ежемесячно поступает от 500 до 5000 тикетов из Jira, GitHub Issues, обращений в поддержку и чатов. Продакт-менеджер вручную группирует похожие запросы — «хочу тёмную тему», «добавьте dark mode», «почему нет ночного режима» — а это одно и то же. На ручную кластеризацию уходит до 20 часов в неделю, при этом до 40% дубликатов остаются незамеченными. Мы автоматизируем этот процесс с помощью NLP и HDBSCAN, сокращая время анализа на 70%. Экономия на ручном анализе достигает $15 000 в месяц при объеме 1000 запросов.

Как HDBSCAN помогает дедуплицировать запросы?

Первая задача — дедупликация. Вместо регулярных выражений и ключевых слов используем семантическую кластеризацию: каждый запрос превращается в 768-мерный эмбеддинг через Sentence Transformer (paraphrase-multilingual-mpnet-base-v2), затем HDBSCAN группирует их по косинусной близости. Шум (запросы без ближайших соседей) помечаются меткой -1 и не попадают в кластеры.

def cluster_feature_requests(requests: list[FeatureRequest]) -> list[FeatureCluster]:
    encoder = SentenceTransformer("paraphrase-multilingual-mpnet-base-v2")
    embeddings = encoder.encode([r.text for r in requests])
    clusterer = hdbscan.HDBSCAN(min_cluster_size=3, metric="cosine")
    labels = clusterer.fit_predict(embeddings)
    clusters = []
    for label in set(labels):
        if label == -1:  # шум — единичные запросы
            continue
        cluster_requests = [r for r, l in zip(requests, labels) if l == label]
        clusters.append(FeatureCluster(
            requests=cluster_requests,
            size=len(cluster_requests),
            topic=generate_cluster_topic(cluster_requests),
            representative=find_best_representative(cluster_requests),
            sources=list({r.source for r in cluster_requests})
        ))
    return sorted(clusters, key=lambda c: c.size, reverse=True)

Результат: вместо 1000 запросов — 20-30 кластеров с топиками. Каждый кластер содержит representative (самый типичный запрос) и список источников. Wikipedia: HDBSCAN предоставляет дополнительную информацию об алгоритме.

Сравнение HDBSCAN и K-means

Критерий HDBSCAN K-means
Форма кластеров Произвольная Сферическая (предполагает равные размеры)
Количество кластеров Определяется автоматически Задаётся вручную
Обработка шума Относит в -1 Вынужденно включает в ближайший кластер
Масштабируемость Хорошая (до 100k точек) Отличная (до миллионов)

HDBSCAN оказывается в среднем в 2 раза точнее K-means при выделении семантических групп (F1-score 0.82 против 0.41 на нашем тестовом датасете).

Что такое скоринг приоритетов?

Размер кластера важен, но не достаточен. Мы используем скоринг, где учитываются:

  • Сегмент пользователя: enterprise-клиенты имеют вес ×2, бесплатные пользователи ×0.5.
  • Эмоциональная окраска: тональный анализ через cardiffnlp/twitter-roberta-base-sentiment-latest — запросы с negative (критичность, блокировка) получают +30% к скорингу.
  • Churn-корреляция: если пользователи, запрашивавшие фичу, впоследствии отписались — это сигнал high priority.
  • Бизнес-потенциал: оценка на основе исторических продаж и NPS-данных.
Критерий Вес в скоринге Метод получения
Размер кластера 0.4 Количество запросов
Сегмент пользователя 0.25 Маппинг источника (Jira-группа)
Эмоциональный окрас 0.2 NLP-анализ тональности
Churn-связь 0.1 Сопоставление с отписками
Бизнес-потенциал 0.05 ML-модель на исторических данных

Пример: кластер из 50 запросов от enterprise-клиентов с отрицательной тональностью (слова «блокирует работу») получает скоринг 0.4×50 + 0.25×2 + 0.2×1.3 + 0.1×1 = 22.1, в то время как кластер из 200 запросов от бесплатных пользователей с нейтральной тональностью — 0.4×200 + 0.25×0.5 + 0.2×1 + 0.1×1 = 80.25. Однако при учёте бизнес-потенциала enterprise-кластер может оказаться приоритетнее.

Детальный пример расчета Для кластера enterprise-клиентов с отрицательной тональностью вес бизнес-потенциала может поднять итоговый скоринг до 30, если исторические данные показывают высокую конверсию таких запросов. Это позволяет выявлять скрытые приоритеты, не очевидные только по размеру кластера.

Генерация user stories и трендов

Из кластера система автоматически формирует черновик user story: «Как [тип пользователя], я хочу [функция], чтобы [ценность]». Тип пользователя определяется по самому частому источнику из кластера (например, если 80% запросов из раздела «Admin panel» — роль «администратор»). Ценность извлекается из тональных маркеров (слова «чтобы», «для», «с целью»). Черновик требует редактуры продакта, но стартовое время сокращается с 40 минут до 2.

Отслеживаем динамику: если за последнюю неделю в кластер добавилось >20% новых запросов — флаг «растущий тренд». Если запрос существует >6 месяцев без роста — низкий приоритет (deprioritize). Рост после конкретного релиза — уведомление о возможной регрессии. Используем Wikipedia: HDBSCAN как основу алгоритма.

Состав услуги

  1. Аудит текущего потока запросов — оценка объёма, источников, частоты.
  2. Интеграция тикет-систем — коннекторы к Jira, GitHub, HubSpot, Zendesk.
  3. Настройка NLP-пайплайна — калибровка эмбеддингов на вашей специфике (доменные термины, сленг).
  4. Дашборд приоритетов — веб-интерфейс с кластерами, трендами, скорингом.
  5. Экспорт user stories — выгрузка в формате CSV/JSON для импорта в product management tools.
  6. Документация и обучение команды — как интерпретировать тренды и принимать решения.

Сроки и как начать

Оценка проекта — от 40 до 80 часов в зависимости от сложности интеграции и объёма данных. Первый прототип с базовой кластеризацией готов через 2 недели после старта. Для точного расчёта получите консультацию: просто напишите нам с кратким описанием текущего процесса и числа запросов в месяц. Гарантируем, что после внедрения вы будете тратить на анализ фич не более 2 часов в неделю. Стоимость интеграции составляет от $2 000 до $5 000 в зависимости от сложности. Свяжитесь с нами для расчета стоимости вашего проекта.

Опыт нашей команды — 5 лет в NLP и MLOps, более 30 успешных внедрений в продуктовых компаниях. Используем только open-source компоненты без vendor lock-in.

Пишите — оценим ваш проект и предложим решение под ключ.

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

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

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    815
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139