Inspiration

Every team has the same graveyard: action items in meeting notes that nobody ever looks at again. Confluence tasks only catch what someone formally typed as a task, and most promises are written as prose — "Ada will rewrite the permission prompts and resubmit the build by October 24." Nothing connects those words to Jira, and nobody notices when a promise quietly slips until the next meeting asks "wait, who was doing that?"

We wanted the context that already exists in Confluence and Jira to do the remembering for us.

What it does

Kept reads Confluence pages — meeting notes, incident reviews, decision logs — and turns every commitment into a tracked object: who promised what, by when, and whether Jira knows about it.

  • Finds commitments in native action items and in prose, resolving owners to Atlassian accounts and relative dates ("by Friday", "next week") to real dates.
  • Reconciles with Jira: links commitments to issues referenced on the page or to the owner's existing open issues; anything else is flagged untracked.
  • Closes the loop in one click: creates Jira issues (assignee, due date, quote of the commitment, link back to the meeting), and posts a follow-through status table on the meeting page so every attendee sees what's done, on track, overdue or untracked.
  • Reports follow-through: kept rate, overdue commitments, and a per-owner breakdown across all meetings.

Four ways in:

  1. Rovo agent "Kept" — "What did we commit to on this page?", "Which commitments from the last two weeks are overdue?", "Create Jira issues for the untracked ones in MOBL."
  2. Rovo MCP server — the same six tools in Claude, Cursor or any MCP client, plus an open-source SKILL.md for third-party agents.
  3. Confluence byline — a Kept item on every page with the page's commitments and actions.
  4. Jira global page — the team's follow-through dashboard with charts.

How we built it

  • Forge, fully on Atlassian: rovo:agent with seven action modules; six of them also exposed through rovo:mcp; confluence:contentBylineItem and jira:globalPage in UI Kit; Forge KVS for storage.
  • Forge LLMs (Atlassian-hosted Claude) for extraction, called with a forced tool/function schema so output is structured. The prompt includes the page's native tasks and a two-week calendar anchored to the meeting date, which made relative dates reliable.
  • Deterministic parsing first: Confluence storage format is parsed for action items, @mentions, <time> dates and Jira macros. The LLM adds prose commitments and normalizes wording; if it's unavailable, native items are still captured.
  • Multi-app compatibility: Confluence required, Jira optional — one installation, one data store, shared by the agent, the MCP tools, the byline and the Jira page.
  • asUser everywhere: Kept can only read and change what the person using it can.

Challenges we ran into

  • Prose is messy. "Kevin agreed to run an A/B test before launch" is a commitment; "it would be nice to refresh the photography at some point" is not. Tight extraction rules plus a forced schema fixed most false positives.
  • Relative dates. Models are bad at weekdays. Giving the model an explicit calendar ("2026-11-06 Friday") made "by Friday" resolve correctly.
  • Matching existing work. Text search alone missed obvious matches on a cold index, so Kept first compares against the owner's open issues, then falls back to Jira text search.
  • One app, two products. Designing state that Confluence UI, a Jira page, a Rovo agent and external MCP clients all share — without double counting or losing manual decisions on rescans.

Accomplishments that we're proud of

  • On our demo site, three real-looking meetings produced 18 commitments. Kept found 11 that were written only as prose, linked existing Jira issues instead of duplicating them, and created five fully-populated issues for the launch sync in a single action.
  • The same capability works in Rovo chat, in Confluence, in Jira and in Claude/Cursor via MCP, without duplicating logic.
  • No external services or API keys: everything runs on Forge.

What we learned

  • MCP + Rovo actions are a great pairing: design the actions once, and they become tools everywhere.
  • Deterministic structure (tasks, mentions, dates) plus an LLM for prose beats either on its own.
  • The most useful "AI" feature was a calendar.

What's next for Kept

  • Scheduled daily scans with nudges to owners (Jira comment / Confluence inline task) before a commitment goes overdue.
  • Teamwork Graph integration to connect commitments to teams, goals and projects.
  • Meeting-series view (weekly syncs) showing which promises keep rolling over.
  • Marketplace listing.

Built With

Share this project:

Updates

Submission history