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:
- bug reports can contain text, stack traces, screenshots, and videos
- nearly 100 possible destination teams
- team responsibilities change as teams merge and products evolve
- labeled data may not exist for new structures
- routing recommendations need user trust and manual override
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
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
Why this architecture
The architecture replaced a static classifier because team structures and responsibilities changed faster than labeled-data retraining could keep up.
Models used: Amazon Nova Pro · Anthropic Claude Sonnet 4 · fine-tuned GPT model as prior baseline
Scale
- Miro reports top-1 routing accuracy above 75%, top-3 accuracy of 95%, and production routing of thousands of bugs and support requests.“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“BugManager has successfully routed thousands of bugs and support requests in production, delivering exceptional results for Miro’s development workflow.”article, stated
- BugManager routes across nearly 100 possible engineering teams.“Miro’s engineering organization consists of nearly 100 teams, each responsible for specific product aspects.”article, stated
- Top-1 team-routing accuracy is over 75%, a 70% increase over the previous fine-tuned baseline.“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
- Top-3 accuracy reaches 95% with human override available.“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
- Average classification latency is 53 seconds.“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
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.
Text-only bug triage
Rejected because: BugManager parses screenshots and screen recordings as well as textual bug reports.
A single team label without rationale
Rejected because: The LLM/RAG approach returns ranked teams and rationale, improving trust over a single-label model.
Patterns
rag-retrieval (retrieval)
BugManager retrieves organizational and product context from knowledge bases before asking the model to classify the correct owner team.
tool-use-orchestration (orchestration)
The workflow combines multimodal parsing, RAG, team-description prompting, Slack interaction, and optional repository retrieval for root-cause analysis.
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.
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.
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.
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.
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.
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.
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.
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
Outcomes
- BugManager improved top-1 and top-3 routing accuracy over Miro's prior classifier.
- The system reduced reassignment and shortened time to resolution.
- Miro adopted BugManager across the engineering organization for thousands of bugs and support requests.
This is an AWS co-authored customer post, but it reports concrete production use and measured routing outcomes.