The problem
Support, account and delivery teams make promises all day, in comments: "we will have a fix out by Friday", "your refund will be processed within 3 to 5 business days", "I'll call you tomorrow with an update". Nothing in Jira knows these were said. The work item's due date is the team's own plan, an SLA measures how fast the team responds, and neither is the thing the customer was told. So the promise lives in one person's memory. Friday comes, the customer has heard nothing, and the first anyone notices is the follow-up asking where the fix is. Most broken promises are not broken because the work was hard; they are broken because nobody saw the date coming.
What Promised does
- Reads each new comment for a promise: a sentence that commits the team to something and names a date. It works out the day from the day the comment was written: "by Friday", "tomorrow", "within 3-5 business days", "by EOD Monday", "the end of November".
- Tracks firm promises and suggests the rest. "We will send the report by Friday" is tracked at once. "This should be fixed next week" is an expectation with a vague date, so it is shown as a suggestion for a person to confirm or dismiss. Only what the team writes is read: comments from service-project customers and from apps are left alone.
- Shows them on the work item, with buttons to record what happened: Kept, Move the date, Broken, Withdraw. A promise made on a call can be added by hand.
- Reminds before the date passes: the day before, on the day, and once after, as an internal note that mentions the assignee. The customer never sees it.
- Settles promises when the work is finished: finished on or before the promised day counts as kept, later as broken.
- Shows the whole picture: every open promise by urgency, with overdue, due today, due this week and the kept rate, overall and by person; a dashboard gadget; and JQL:
issue in promisesDueWithin(3). - The Promised agent in Rovo answers "what have we promised that is due this week?" and "what did we promise on this work item?", and records what happened when told. Its skill file teaches any agent that drafts customer replies to check what was already promised first, so the reply never contradicts it or hides a missed date. Three read-only tools are exposed through the Atlassian MCP server.
Why rules and not a language model
The same comment always gives the same answer, and the app can say why: every tracked promise keeps the sentence, the words read as the date, and the reason it was read as a promise. Nothing leaves Atlassian and it costs nothing to run on every comment in a busy service project. The Rovo agent then works from the recorded promises, which keeps its answers consistent with the panel, the reminders and the search.
How it is built
Forge only, no egress. Date reading, promise detection and the promise record are pure TypeScript with 184 tests, including the examples in the README and tests on text built to make pattern matching slow.
Built With
- forge
- jira
- jira-service-management
- react
- rovo
- typescript