AI-Powered Bug Routing System Using RAG and Multimodal Processing

miro · Tech · 2026 · source Agentic: yes · promotional bias: high · source-backed · extracted with prompt 0.5.4 (schema v2)

Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.

Problem

Domain: Software bug triage and routing

Miro needed to route messy bug reports to the right engineering team across an organization of nearly 100 teams, reducing misrouting, repeated reassignment, and slow resolution.

Constraints:

Architecture

Miro BugManager parses multimodal bug evidence, enriches it with RAG over organizational knowledge, asks Claude Sonnet to classify likely teams, then presents ranked options and rationale through a human-overridable Slack workflow.

Diagram confidence: reconstructed (reconstructed from prose).

flowchart LR
  slack-bug-intake["Slack bug intake"]
  multimodal-parser["Multimodal parser"]
  context-retrieval["Context retrieval"]
  claude-team-classifier["Claude team classifier"]
  team-recommendation-ui["Team recommendation UI"]
  routing-action["Routing action"]
  root-cause-workflow["Root-cause workflow"]
  slack-bug-intake --> multimodal-parser
  multimodal-parser --> context-retrieval
  context-retrieval --> claude-team-classifier
  claude-team-classifier --> team-recommendation-ui
  team-recommendation-ui --> routing-action
  routing-action --> root-cause-workflow
  root-cause-workflow --> context-retrieval
Drag to pan · scroll or use +/− to zoom · reconstructed from the source's described component topology

Components

Component Role Interacts with
Slack bug intake Receives bug descriptions and user-submitted evidence. Multimodal parser
Multimodal parser Uses Nova Pro to parse screenshots, screen recordings, text, and stack traces. Context retrieval
Context retrieval Retrieves team and product context from Bedrock knowledge bases over Jira, PRs, Confluence, and READMEs. Claude team classifier
Claude team classifier Ranks likely destination teams and produces rationales. Team recommendation UI
Team recommendation UI Shows up to five candidate teams with confidence and lets users override. Routing action
Routing action Assigns the bug to the most likely or manually selected team. Root-cause workflow
Root-cause workflow Optionally retrieves code context for deeper diagnosis. Context retrieval

Data flow

BugManager parses screenshots or videos, retrieves context from knowledge bases, ranks up to five teams with confidence, and lets users manually override the routing.

3 supporting quotes
“BugManager first parses non-text data such as screenshots or screen recordings using the multimodal image and video understanding capabilities of Amazon Nova Pro.”article, stated
“These knowledge bases contain, for example, previously resolved Jira issues, GitHub pull requests, Confluence documentation, and GitHub READMEs.”article, stated
“Based on the initial description of the bug, BugManager proposes up to five suitable teams (in order of priority) along with a rationale. By default, the bug is routed to the most likely team, but users can manually overwrite this selection.”article, stated

Why this architecture

The architecture replaced a static classifier because team structures and responsibilities changed faster than labeled-data retraining could keep up.

“They require retraining when organizational changes occur and depend on labeled data that might not exist for new structures. Miro experienced quickly degrading performance with an existing solution based on a fine-tuned GPT model.”article, stated

Models used: Amazon Nova Pro · Anthropic Claude Sonnet 4 · fine-tuned GPT model as prior baseline

Scale

Alternatives considered (roads not taken)

Fine-tuned static NLP classifier returning one team label

Rejected because: Miro chose LLM plus RAG because it adapts to organizational changes and explains ranked options to users.

“Recognizing these challenges, Miro opted for an LLM-powered approach that combines optimized prompts for team classification with Retrieval Augmented Generation (RAG) for context retrieval”article, implied
“This significantly improved user acceptance and trust vs. the fine-tuned NLP solution that only returned a single team without further explanation.”article, stated

Text-only bug triage

Rejected because: BugManager parses screenshots and screen recordings as well as textual bug reports.

“BugManager first parses non-text data such as screenshots or screen recordings using the multimodal image and video understanding capabilities of Amazon Nova Pro.”article, stated
“Automating bug triaging in modern software environments is complex. Bug reports are often messy, lack context, and contain diverse data including text, stack traces, screenshots, and even videos.”article, stated

A single team label without rationale

Rejected because: The LLM/RAG approach returns ranked teams and rationale, improving trust over a single-label model.

“This significantly improved user acceptance and trust vs. the fine-tuned NLP solution that only returned a single team without further explanation.”article, stated

Patterns

rag-retrieval (retrieval)

BugManager retrieves organizational and product context from knowledge bases before asking the model to classify the correct owner team.

“These knowledge bases contain, for example, previously resolved Jira issues, GitHub pull requests, Confluence documentation, and GitHub READMEs.”article, stated

tool-use-orchestration (orchestration)

The workflow combines multimodal parsing, RAG, team-description prompting, Slack interaction, and optional repository retrieval for root-cause analysis.

“BugManager first parses non-text data such as screenshots or screen recordings using the multimodal image and video understanding capabilities of Amazon Nova Pro.”article, stated

confidence-thresholding (evaluation)

BugManager returns a ranked set of likely owner teams, making confidence ordering available for human triage rather than forcing a single opaque answer.

“BugManager returns up to five likely team options (ranked by confidence, exact number is configurable). Top-3 accuracy is 95%, which—when paired with a human-in-the-loop approach—has been proven to boost triaging accuracy further.”article, stated

human-in-the-loop-gate (safety)

The Slack workflow defaults to the top-ranked team but allows engineers to override the selection before ticket assignment.

“Based on the initial description of the bug, BugManager proposes up to five suitable teams (in order of priority) along with a rationale. By default, the bug is routed to the most likely team, but users can manually overwrite this selection.”article, stated

Tradeoffs

How to adapt bug routing to changing teams.

Chose RAG-backed prompting with refreshed organizational knowledge over fine-tuned text classifiers that require retraining.

Rationale: Miro's team structure and product ownership changed often enough that retraining-dependent approaches degraded quickly.

“Recognizing these challenges, Miro opted for an LLM-powered approach that combines optimized prompts for team classification with Retrieval Augmented Generation (RAG) for context retrieval”article, stated

How much routing choice to expose to users.

Chose ranked top team options with manual overwrite over single automatic assignment only.

Rationale: Returning options improves triage accuracy with human input and gives engineers a way to correct edge cases.

“Top-3 accuracy is 95%, which—when paired with a human-in-the-loop approach—has been proven to boost triaging accuracy further.”article, stated

Gotchas (what bit them)

Static classifiers degraded as the engineering organization changed.

Root cause: Team ownership, products, and features changed faster than labeled training data and retraining cycles could keep up.

Resolution: Use RAG and optimized prompts so the system can use refreshed organizational knowledge without retraining for every structure change.

“They require retraining when organizational changes occur and depend on labeled data that might not exist for new structures. Miro experienced quickly degrading performance with an existing solution based on a fine-tuned GPT model.”article, stated

Bug reports were too messy for text-only routing.

Root cause: Reports included stack traces, screenshots, videos, and missing context across many product areas.

Resolution: Parse non-text evidence and augment the report with knowledge-base context before classification.

“Automating bug triaging in modern software environments is complex. Bug reports are often messy, lack context, and contain diverse data including text, stack traces, screenshots, and even videos.”article, stated

A correct-looking team label was not enough for adoption.

Root cause: The prior fine-tuned solution returned a single team without explaining the routing decision.

Resolution: Return rationales and ranked team choices so engineers can trust or override the routing.

“This significantly improved user acceptance and trust vs. the fine-tuned NLP solution that only returned a single team without further explanation.”article, stated

Evaluation

Miro compared BugManager against an existing fine-tuned NLP routing solution, measured routing accuracy, classification latency, team reassignment reduction, and time-to-resolution impact in production use.

Metrics: top-1 routing accuracy over 75% · 70% increase versus existing fine-tuned NLP model · average classification latency of 53 seconds · top-3 accuracy of 95% · 7-9% accuracy gains from Claude extended thinking · six times fewer team reassignments · five times shorter time-to-resolution

“BugManager achieves a top-1 accuracy for bug-to-team routing of over 75% (a 70% increase vs. an existing internal solution based on a fine-tuned NLP model). Average classification latency is 53 seconds”article, stated
“achieving six times fewer team reassignments and five times shorter time-to-resolution powered by Amazon Bedrock.”article, stated

Outcomes

This is an AWS co-authored customer post, but it reports concrete production use and measured routing outcomes.

“BugManager has successfully routed thousands of bugs and support requests in production, delivering exceptional results for Miro’s development workflow.”article, stated
“Miro’s engineering organization consists of nearly 100 teams, each responsible for specific product aspects.”article, stated