Инженерная организация Miro насчитывает около 100 команд, каждая из которых отвечает за отдельный продуктовый домен. Когда баг попадал не в ту команду, начиналась цепочка переназначений: разработчики тратили время на изучение чужого контекста, SLA нарушались, а пользователи ждали. По оценке самой компании, суммарные потери от этой проблемы составляли 42 года рабочего времени ежегодно.

Предыдущая система маршрутизации строилась на дообученной модели GPT. Её слабое место — статичность: при слиянии команд, появлении новых продуктов или изменении зон ответственности модель требовала переобучения на размеченных данных. Таких данных для новых структур зачастую просто не существовало, и точность классификации быстро падала. Схожая проблема характерна для любых fine-tuned классификаторов — BERT и его производных: они плохо справляются с динамичными организационными изменениями.

МетрикаДо BugManagerПосле BugManager
Количество переназначений между командамибазовый уровеньв 6 раз меньше
Time-to-resolutionнесколько днейв 5 раз быстрее (часы)
Потери от неверной маршрутизации~42 года рабочего времени/годсущественно снижены

Вместе с командой AWS PACE (Prototyping and Cloud Engineering) Miro разработала BugManager — систему, которая не требует переобучения. В её основе лежит подход RAG (Retrieval Augmented Generation): вместо того чтобы «запоминать» знания о командах в весах модели, система каждый раз извлекает актуальный контекст из базы знаний. Источниками служат ранее закрытые тикеты Jira, pull request'ы из GitHub, документация Confluence и README-файлы репозиториев. Это позволяет системе адаптироваться к изменениям в структуре компании без какого-либо дополнительного обучения.

Время решения инцидентов сократилось в 5 раз — с нескольких дней до нескольких часов.

Miro сократила время разбора багов в 5 раз с помощью RAG и Amazon Bedrock
· Источник: AWS Machine Learning Blog

Рабочий процесс BugManager начинается в Slack: инженер публикует описание бага в выделенном канале. Если к сообщению прикреплены скриншоты или видеозаписи экрана, система передаёт их в Amazon Nova Pro — мультимодальную модель, которая преобразует визуальный контент в текст. Чтобы извлечённое описание было специфичным, а не абстрактным, перед парсингом система уже делает RAG-запрос по тексту бага и подгружает документацию о конкретной функции продукта, изображённой на скриншоте.

Полученный текст обогащается контекстом из нескольких баз знаний через Amazon Bedrock Knowledge Bases, после чего Claude Sonnet 4 формирует итоговый промпт для классификации. На выходе — список до пяти команд-кандидатов с обоснованием выбора. По умолчанию баг назначается на первую команду, но инженер может скорректировать выбор вручную. Опционально система генерирует анализ первопричины, обращаясь к исходному коду репозиториев Miro.

Вся система работает как Python-микросервис в кластере Amazon EKS. Интеграция через Slack снизила порог входа для инженеров: не нужно переходить в отдельный интерфейс или осваивать новый инструмент. Результат — шестикратное снижение числа переназначений и пятикратное ускорение time-to-resolution. Подход демонстрирует, что для задач с высокой динамикой данных RAG-архитектура может быть практичнее дообученных классификаторов даже при большом числе классов.