Inspiration

Every team relitigates decisions. Someone opens "should we switch to MongoDB?" six months after the team chose PostgreSQL for good reasons, and a meeting gets burned rediscovering the rationale that already lives in a Jira comment nobody can find.

What it does

Already Decided turns decisions into first-class, searchable context inside Jira and Confluence:

  • Capture: any line starting with DECISION: in a Jira comment, or recorded through the Confluence content action or the issue panel form, goes into a decision ledger, together with its rationale and source link.
  • Guard: when a new Jira issue is created, a Forge trigger matches it against the ledger. If it overlaps a settled decision, the app comments on the issue right away with the decision, its "why", and a link to the source.
  • Show: the Jira issue panel shows "This may reopen a settled decision", with the match score and source.
  • Rovo: the Decision Keeper agent exposes find-decisions and record-decision actions, so people can ask Rovo "did we already decide X?"

How we built it

Atlassian Forge (Node 22 runtime) with jira:issuePanel (UI Kit), confluence:contentAction, Jira triggers (issue created/commented), rovo:agent plus actions, and Forge KVS for the ledger. A lightweight token-overlap matcher with stop-word filtering is covered by unit tests. Runs fully on Atlassian with no external egress (Runs on Atlassian eligible).

Challenges

Keeping matching precise enough to avoid noisy comments. We tuned a similarity threshold and only comment when the overlap clears it.

What's next

Supersede/expire decisions, ADR export, and Teamwork Graph links.

Code: https://github.com/luongs3/already-decided

Share this project:

Updates

Submission history