AI-система управления продуктом
Продуктовые команды тонут в данных: фидбек из App Store, Intercom, Jira, Slack, интервью — всё это существует в разных системах и не связано между собой. PM тратит 30–40% времени на агрегацию и не успевает на аналитику. AI-система управления продуктом решает именно эту проблему: она собирает сигналы, структурирует инсайты и помогает принимать обоснованные решения на каждом этапе продуктового цикла.
Что автоматизирует система
Агрегация фидбека — подключение к App Store, Google Play, Intercom, Zendesk, Slack-каналам, CSV-выгрузкам NPS. Все источники индексируются в единую базу с векторными эмбеддингами через sentence-transformers (all-mpnet-base-v2).
Тематическое кластеризование — BERTopic или кастомная классификация выявляет топ-проблемы, группирует синонимичные запросы, строит временной тренд по каждой теме.
Связь с бэклогом — система сопоставляет кластеры фидбека с Jira-тикетами через semantic similarity. Если 200 пользователей жалуются на проблему, которой нет в бэклоге — это сразу видно.
Генерация PRD-черновиков — по описанию фичи и накопленным данным LLM (GPT-4o / Claude 3.5 Sonnet) создаёт черновик: цели, user stories, acceptance criteria, open questions.
Архитектура ядра
from langchain_openai import ChatOpenAI
from langchain_community.vectorstores import Qdrant
from sentence_transformers import SentenceTransformer
from bertopic import BERTopic
import pandas as pd
class ProductIntelligenceSystem:
def __init__(self):
self.embedder = SentenceTransformer("all-mpnet-base-v2")
self.llm = ChatOpenAI(model="gpt-4o", temperature=0.2)
self.topic_model = BERTopic(
language="multilingual",
min_topic_size=15,
nr_topics="auto"
)
def analyze_feedback_corpus(self, feedback_df: pd.DataFrame) -> dict:
"""Кластеризация фидбека и генерация инсайтов"""
texts = feedback_df["text"].tolist()
topics, probs = self.topic_model.fit_transform(texts)
topic_info = self.topic_model.get_topic_info()
# Топ-10 тем по частоте (исключая шум -1)
top_topics = topic_info[topic_info["Topic"] != -1].head(10)
return {
"top_topics": top_topics[["Topic", "Count", "Name"]].to_dict(),
"topic_details": {
t: self.topic_model.get_topic(t)
for t in top_topics["Topic"].tolist()
}
}
def generate_prd_draft(self, feature_description: str, context: dict) -> str:
prompt = f"""Создай черновик PRD для следующей фичи.
Описание фичи: {feature_description}
Данные фидбека: {context.get('relevant_feedback', [])}
Связанные проблемы пользователей: {context.get('user_problems', [])}
Структура PRD:
1. Problem Statement
2. Goals & Success Metrics
3. User Stories (минимум 5, формат: As a [role], I want [action], so that [benefit])
4. Acceptance Criteria
5. Open Questions
Будь конкретен. Используй данные из фидбека."""
return self.llm.invoke(prompt).content
Глубокий разбор: тематический анализ фидбека
Самая распространённая ошибка — запускать BERTopic на сырых данных без предобработки. Когда фидбек многоязычный (ru + en + смесь), модель создаёт темы по языку, а не по смыслу. Решение — нормализация через перевод или multilingual embeddings.
Вторая проблема: min_topic_size=5 на 10 000 отзывов даёт 200+ тем — половина из которых «шум» с overlap 40%. Оптимальный диапазон: min_topic_size = max(10, corpus_size * 0.003). При 10 000 записей — 30, при 50 000 — 50.
# Правильная конфигурация для продуктового фидбека
from bertopic.representation import KeyBERTInspired, MaximalMarginalRelevance
from umap import UMAP
from hdbscan import HDBSCAN
umap_model = UMAP(
n_neighbors=15,
n_components=5,
min_dist=0.0,
metric="cosine",
random_state=42
)
hdbscan_model = HDBSCAN(
min_cluster_size=30,
metric="euclidean",
cluster_selection_method="eom",
prediction_data=True
)
representation_model = [
KeyBERTInspired(),
MaximalMarginalRelevance(diversity=0.3)
]
topic_model = BERTopic(
umap_model=umap_model,
hdbscan_model=hdbscan_model,
representation_model=representation_model,
language="multilingual",
calculate_probabilities=True
)
Кейс из практики: SaaS-продукт с 18 000 отзывов за 12 месяцев. После настройки BERTopic получили 23 чистые темы (до — 87 с мусором). Топ-3 по росту за последние 3 месяца: «медленная загрузка отчётов» (+340%), «ошибки при экспорте в Excel» (+210%), «нет мобильного приложения» (+180%). Все три темы отсутствовали в бэклоге. Две из трёх вошли в следующий квартальный план.
Интеграции
| Источник | Метод | Частота обновления |
|---|---|---|
| App Store / Google Play | API + парсинг | Ежедневно |
| Intercom | Webhooks | Realtime |
| Zendesk | REST API | Каждый час |
| Jira | REST API | Каждые 15 минут |
| Slack | Events API | Realtime |
| NPS-опросы (CSV) | File import | По загрузке |
Процесс внедрения
Аудит источников данных — какие системы есть, качество данных, объём. Разработка коннекторов и нормализация схемы. Настройка тематической модели под конкретный продукт и язык. Построение дашборда с трендами тем и связями с бэклогом. Обучение команды работе с инсайтами.
Сроки
- MVP с агрегацией и кластеризацией: 3–5 недель
- Полная система с PRD-генератором и дашбордом: 8–12 недель







