InsInspiration

Duplicate issues are one of those small problems that quietly waste a lot of time on software teams. I’ve often seen the same bug reported multiple times with slightly different wording, leading to repeated triage and cluttered backlogs. Many existing solutions rely heavily on black-box AI, which raises concerns around data privacy, trust, and unpredictability. I wanted to build something teams could rely on without sending their data outside Atlassian.

What it does

Rovo Issue Deduplicator helps teams quickly identify and resolve duplicate Jira issues. Given an issue key, it analyzes the issue’s content and compares it against other issues in the project to find true duplicates. It clearly separates real duplicates from near matches and unrelated noise, shows confidence scores with explanations, and allows teams to link and resolve duplicates in a single action.

Challenges we ran into

One of the main challenges was building reliable duplicate detection without relying on external AI services. Working within the Forge runtime meant implementing text normalization and similarity logic manually, while still keeping performance fast and results accurate.

Another challenge was tuning similarity thresholds so that true duplicates were confidently identified without accidentally merging issues that only sounded similar. Striking the right balance between precision and caution was critical.

Finally, Rovo UI availability varies by Jira tenant, which made live agent testing inconsistent. To work around this, I focused on validating the core logic using controlled datasets and expected behavior analysis, ensuring the solution remained correct even when the UI was not fully accessible.

Accomplishments that we're proud of

I’m proud of building a fully deterministic, privacy-first duplicate detection system that runs entirely inside Atlassian Forge with zero data egress. The app reliably distinguishes true duplicates from near matches and unrelated noise, giving teams confidence in the results.

I’m also proud of delivering explainable outcomes instead of black-box decisions, with clear confidence scores and reasoning that help users trust the system. Finally, shipping a production-ready Forge app as a solo developer—complete with deployment, distribution, and Rovo integration—was a meaningful accomplishment in itself.

What we learned

I learned that for enterprise tools, trust and predictability matter more than flashy AI features. Combining a conversational interface with deterministic logic creates a better balance between usability and reliability.

I also learned the importance of explainability—users are far more comfortable acting on results when they understand why a decision was made. Finally, building within platform constraints like Forge and Jira reinforced that simple, well-reasoned solutions often scale better than complex ones.

What's next for Rovo Issue Deduplicator

Next, I plan to extend duplicate detection across larger project histories and give teams more control over similarity thresholds. I’d also like to integrate detection earlier in the Jira workflow, such as during issue creation or backlog grooming, to prevent duplicates before they enter the system.

As Rovo features continue to roll out more broadly, I plan to enhance conversational interactions while keeping the core logic deterministic, privacy-first, and fully contained within Atlassian Forge.

Built With

  • atlassian-forge
  • atlassian-rovo-agent
  • css3
  • custom-nlp-(porter-stemmer
  • forge/api
  • forge/bridge
  • forge/resolver
  • issue-links
  • jaccard
  • javascript-(es6+)
  • jira-cloud
  • jira-rest-api-v3
  • node.js-20
  • react-18
  • router
  • tf-idf
  • useeffect)-atlassian-apis-&-sdks-@forge/api-backend-api-calls-to-jira-rest-api-@forge/bridge-frontend-to-backend-communication-(invoke
  • view)-@forge/resolver-define-resolver-functions-for-custom-ui-jira-rest-api-v3-issue-search
  • vite
Share this project:

Updates