Blog
Jira Service Management's AI Answers From Old Tickets, Not From Your System
9 min read
Jira Service Management's AI — Rovo, the virtual service agent, smart triage — works from your historical ticket data, your Confluence pages, your KB articles, and your service catalog entries. These are the knowledge sources it has access to. They are useful for a wide range of support questions. They are not the same as your live system, and every time something in your system changes without a corresponding documentation update, the Atlassian AI answers drift further from current reality.
This is not a criticism of Atlassian's AI quality. The answers it provides are good within its data sources. The limitation is the data sources themselves: they represent what was true when someone last wrote something down, not what is true in the current codebase.
What Rovo and JSM AI actually know
Atlassian's AI surfaces knowledge from the Atlassian ecosystem: Jira, Confluence, JSM service catalog, historical tickets. When you ask Rovo a question about an incident, it searches past tickets. When JSM's virtual agent answers a customer question, it retrieves KB articles. When smart triage suggests routing, it patterns against historical assignments.
This is valuable for repeated, documented knowledge. Teams that have good Confluence documentation and well-maintained KB articles get useful answers. Teams with documented runbooks get relevant suggestions. The quality of the AI outputs scales with the quality and recency of the documentation inputs.
What Rovo and JSM AI learn from:
-> Past Jira tickets and resolutions
-> Confluence pages and documentation
-> KB articles and service catalog entries
-> Historical routing patterns
-> Uploaded runbooks and FAQs
What Rovo and JSM AI cannot access:
-> Your live codebase
-> Current service ownership (CODEOWNERS)
-> Recent commits and deployments
-> Current system configuration
-> Behavior introduced after last documentation updateThe documentation lag is structural, not fixable
The fundamental problem is that documentation always lags the system. Code ships continuously. Documentation gets updated periodically, if at all. Teams under shipping pressure deprioritize documentation updates. Services get refactored and the Confluence pages don't follow. Teams reorganize and the service catalog doesn't update. Ownership changes and the routing table drifts.
Codebase documentation is always out of date — this is not a discipline problem, it's a structural reality of software development. The documentation lag means that Rovo and JSM AI are always, to some degree, answering based on a stale model of the system. The staler the documentation, the more the answers drift.
The documentation lag problem:
Event: checkout service refactored (May 15)
Documentation update: Confluence page "Checkout Service Overview"
-> Last updated: March 3
-> Still describes pre-refactor architecture
Rovo answer to "which team handles checkout errors?":
-> Reads Confluence, finds "Checkout team" (pre-reorg)
-> Checkout team merged with Payments in April
-> Escalation routed to Checkout team that no longer exists
Codebase answer (Kognita):
-> Reads CODEOWNERS, current ownership
-> "Payments team" (post-reorg, current)
-> Escalation routes correctlyWhere historical tickets mislead
Historical ticket patterns present a different problem. Rovo learns routing from how tickets were historically routed. If historical routing was systematically wrong in certain areas — sending tickets to the wrong team, assigning to individuals who have since left, routing on stale component configurations — Rovo learns those patterns. The model is trained on the organization's routing history, which includes all its historical errors.
Historical patterns are also blind to new services. If a new microservice was introduced in the last quarter, there are no historical tickets for that service. Rovo has no learned pattern for routing tickets that relate to it. The service doesn't exist in Rovo's learned routing model because it didn't exist when the training data was collected.
The codebase is always current
While documentation lags and historical patterns drift, the codebase is always the most current representation of how the system actually works. CODEOWNERS files reflect who owns each service as of the last commit. Directory structures reflect the current service boundaries. Recent commits reflect what changed and when. This information doesn't require a documentation update step — it updates automatically as code is written.
This is what Kognita provides: answers from the codebase rather than from documentation. When the checkout service ownership changed from the Checkout team to the Payments team in April, that change was reflected in the codebase immediately. Kognita reads from the codebase, so tickets from May route to Payments team — not to a Checkout team that no longer exists, as Rovo's Confluence-trained routing might suggest.
Where Rovo is strong and where Kognita fills the gap
Rovo and JSM AI are strong for documented, stable knowledge: what your SLA covers, how to navigate account settings, what KB articles address common issues, what similar past incidents looked like. These answers are stable because the underlying information doesn't change frequently.
Kognita fills the gap for dynamic system knowledge: current service ownership, recent code changes, live system behavior, which team to route a new issue to. These answers require the codebase because they change with every deploy.
How Rovo and Kognita complement each other:
Rovo strong:
-> "What does our premium SLA cover?"
-> "What was the resolution for ticket PROJ-1823?"
-> "Summarize recent tickets in the billing project"
-> "Suggest response templates for upgrade questions"
Kognita strong:
-> "Which service is responsible for this error?"
-> "What changed in the payments area this week?"
-> "Which team currently owns the auth service?"
-> "Is this behavior consistent with the current code?"Teams that use both get the best of each. Rovo handles the documented knowledge base well. Kognita handles the live system truth. The combination — through Kognita's Jira webhook integration — means every escalation ticket gets enriched with current codebase context before triage, while Rovo continues to surface past patterns and KB knowledge that are genuinely useful for context.
What the Jira MCP integration adds
Beyond webhook enrichment, Kognita's Jira MCP integration lets teams ask questions that bridge ticket data and codebase data simultaneously. "Which open Jira escalations touch the payments service?" "Are there active bugs in the same area as the feature we're releasing this sprint?" "Which tickets filed this week are related to the new deploy?" These questions require both Jira data and codebase context — Rovo alone can't answer them, and a codebase tool alone can't either.
Final take
Atlassian's AI is a documentation AI. It learns what you've written down and answers from that knowledge. For questions where the documentation is accurate and current, it works well. For questions where the system has moved ahead of the documentation — which is most technical triage questions in a team that ships regularly — the answers drift from reality.
The fix is not to write better documentation (though that helps). The fix is to have a system-of-record that doesn't require manual updates — the codebase itself. Kognita reads from the codebase, stays current without documentation updates, and fills the gap that Atlassian's AI cannot close by design.
Rovo answers from what you wrote down. Kognita answers from what your system actually is. The distance between those two things grows with every deploy that ships without a Confluence update — which, in most teams, is most deploys.