10 млн событий и один вывод: как я собрал AI-платформу для UX-исследований
Четыре источника, ноль выводов
Клики, реплеи, карты тепла и тикеты поддержки жили каждый в своём инструменте. Каждый выдавал отчёт, который редко кто дочитывал до конца. Аналитик открывал четыре дашборда перед недельной встречей и всё равно пропускал паттерн, который лежал в логе чата с понедельника. Я собрал платформу, где все четыре источника попадают в один поиск. Команда читает вывод первым делом, а к доказательству спускается по ссылке.
Три агента поверх одной ленты
Основа платформы: лента сессии. По ней в порядке идут три агента. Первый расшифровывает звонки и чат, второй вытаскивает из текста интенты и точки трения, третий собирает интенты в формулировки Jobs-to-Be-Done. Каждый этап пишет результат с привязкой к таймкоду, откуда взял текст, поэтому последний этап цитирует реальные слова. Порядок этапов и правила повторов здесь те же, что я описал в посте Разработка ИИ-агентов: от прототипа до продакшена.
Доверие живёт по ссылке
Карточка инсайта держит три вещи: таймкод реплея, точную цитату и уверенность модели. Клик по карточке переносит плеер на этот момент. Цифру уверенности, которую нельзя проверить, никто не читает, поэтому проверка стоит в одном клике. Привычку показывать работу за каждым ответом я описал в посте Glass-box AI: показываю уверенность модели чтобы люди доверяли.
Транскрипты и реплеи хранят текст переписки клиента, поэтому окна хранения, правила экспорта и путь удаления должны были войти в сборку с самого начала. Эти правила разобраны в посте Почему вашему ИИ-агенту нужен комплаенс-слой.
Что сдвинулось
| Что | Было | Стало |
|---|---|---|
| События в поисковом индексе | 0 | 10 000 000 |
| Точность инсайтов | не измерялась | 0,89 |
| Один цикл исследования | 21 день | 3 дня |
Индекс HNSW живёт в том же Neon Postgres, где лежат сессии, поэтому поиск остался внутри одной базы и второй векторный сервис не понадобился. Цифру 0,89 даёт прогон LLM-as-judge по выбранным инсайтам: вторая модель перечитывает цитату и отмечает, держится ли вывод. Вывод, который вторая модель не подтвердила, я прогоняю через этап извлечения заново и с более строгим промптом. Интерфейс я резал вокруг действия, а экраны, которые из этого следуют, собраны в посте Проектирую интерфейсы, которые действуют: гид по агентному UI.
Что я проверяю до такой сборки
Начинаю с вопроса: какое решение меняет этот отчёт. Если команда не называет такого решения, платформа становится пятым дашбордом, а четыре инструмента останутся открытыми. Дальше решаю, какой вывод модель имеет право сделать сама. Здесь каждая формулировка стоит в одном клике от реплея, и именно граница проверки задаёт строгость промптов. Последняя проверка стоит денег: десять миллионов событий в одном индексе делают векторы внутри Postgres дешевле отдельного сервиса, и этот ответ определил всю схему.
Описание и набор тегов лежат на карточке проекта: AI-платформа для UX-исследований.