Разработка 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 как основу алгоритма.
Состав услуги
- Аудит текущего потока запросов — оценка объёма, источников, частоты.
- Интеграция тикет-систем — коннекторы к Jira, GitHub, HubSpot, Zendesk.
- Настройка NLP-пайплайна — калибровка эмбеддингов на вашей специфике (доменные термины, сленг).
- Дашборд приоритетов — веб-интерфейс с кластерами, трендами, скорингом.
- Экспорт user stories — выгрузка в формате CSV/JSON для импорта в product management tools.
- Документация и обучение команды — как интерпретировать тренды и принимать решения.
Сроки и как начать
Оценка проекта — от 40 до 80 часов в зависимости от сложности интеграции и объёма данных. Первый прототип с базовой кластеризацией готов через 2 недели после старта. Для точного расчёта получите консультацию: просто напишите нам с кратким описанием текущего процесса и числа запросов в месяц. Гарантируем, что после внедрения вы будете тратить на анализ фич не более 2 часов в неделю. Стоимость интеграции составляет от $2 000 до $5 000 в зависимости от сложности. Свяжитесь с нами для расчета стоимости вашего проекта.
Опыт нашей команды — 5 лет в NLP и MLOps, более 30 успешных внедрений в продуктовых компаниях. Используем только open-source компоненты без vendor lock-in.
Пишите — оценим ваш проект бесплатно и предложим решение под ключ.







