Inspiration

Every team has this moment. Someone opens a ticket with a great idea, everyone gets excited, and three weeks later somebody remembers: "we already tried this… we already said no." The decision was made, with good reasons, but it got lost in a comment on a ticket nobody opens anymore. New people pay for it the most: they learn the team's history the hard way.

Codegeist 2026 asks for apps that give teams a shared understanding of "what's already been decided". That is exactly the gap Déjà Vu fills: it turns decisions that already live in Jira into a memory that speaks up at the right moment.

What it does

  • Remembers decisions where teams already write them. Déjà Vu reads Jira comments that state a decision ("Decision: …", "we decided…", "we will not…") and issues closed as "Won't Do". Nothing new to fill in, nothing new to learn.
  • Speaks up before work starts. When someone creates an issue that goes against a past decision, the Déjà Vu panel on the issue shows "You've been here before." with what was decided, who decided it, when, why, and a link to the original issue. The collapsed panel shows a small "1 conflict" label, so it is visible even before you open it.
  • Shows what it remembered. On the issue where a decision was made, the panel shows "Remembered from this issue."
  • Lets you ask. A past decision is not a rule. One click opens the Déjà Vu agent in Rovo, which explains the decision and what it would take to revisit it, clearly separating what was written down from its own opinion.
  • Remembers new decisions. Tell the agent "we decided today…": it confirms the wording, and after you confirm, it saves the decision as a comment on the issue, for whoever comes next.
  • Respects permissions. A decision is only shown to people who can open the issue it came from.

How we built it

  • Forge app with a Custom UI jira:issueContext panel (chat-style messages, follows Jira's light and dark themes) and dynamic properties for the "conflict / related / decision" label on the collapsed panel.
  • A Jira event trigger (issue created, updated, commented) keeps the memory up to date; a first scan reads recent issues.
  • Forge Storage (KVS) holds the remembered decisions; no external services and no paid AI calls, so the app is eligible for Runs on Atlassian.
  • Decisions are found with transparent text rules, matched to new issues with a small BM25 relevance score, and simple rules tell a conflict ("migrate to X" vs. "we will not move to X") from a merely related decision.
  • Permissions: reads shown to a person use asUser(), and every decision is checked against the source issue before it is shown. The app stores no account IDs or author names: a comment's author is read from Jira only when the decision is shown.
  • Rovo: a rovo:agent ("Déjà Vu") with three rovo:action modules: Decisions for an issue, Find past decisions and Remember a decision. The agent only states decisions returned by the actions and never invents a date, a reason or a person. Saving goes through Rovo's confirmation card.
  • An invented sample team (one click, clearly labelled, removable) lets anyone try the app on an empty site.

Challenges we ran into

  • Telling a real conflict from a related topic without an LLM: we kept the rules deliberately careful and let the agent give the reasoned explanation.
  • Keeping decisions private to the people allowed to see them, also inside the agent's answers.
  • Making the experience feel native to Jira (light and dark themes, a collapsed-panel label, a calm design) instead of another tool.

Accomplishments that we're proud of

  • It works end to end in a real Jira site: the warning appears on a brand-new issue, the agent explains it, and a new decision saved through the agent shows up on the issue and in the panel.
  • No setup and no new habits: teams keep writing comments the way they already do.

What we learned

  • How far Forge and Rovo go together: a panel, a trigger, storage and an agent with actions in one small app.
  • Good context beats more AI: a short, sourced answer at the right moment is what people actually need.

What's next for Déjà Vu

  • Confluence decision blocks and meeting notes as a second source of decisions.
  • Teamwork Graph, to connect decisions to goals, people and outcomes.
  • A short weekly digest: "decisions your team made this week".

About the use of AI

This project was built with the help of AI. The code, the video and these texts were made with an AI assistant (Claude, by Anthropic) under my direction: I chose the idea and the features, tested everything in Jira and decided every change. The logo was generated by me with an AI image generator. In the video, the team is invented, the narration voice is synthetic (Kokoro text to speech) and the music and sound effects were generated in code for this video.

Built With

Share this project:

Updates

Submission history