Blog
Why Jira Rovo Gets Your Technical Questions Wrong — It Just Doesn't Have the Code
11 min read
Jira Rovo is a well-designed product. It does what Atlassian says it does: it searches across Jira and Confluence, answers questions from your team's documented knowledge, and runs agents across connected tools. For teams whose questions are about tickets, project status, and team documentation, it delivers real value. The interface is clean. The answers are fast.
The problem is that the questions software teams actually need answered are not about tickets and documentation. They are about the code. "Why is this ticket taking longer than estimated?" "Which services will this epic affect?" "Did we actually ship what we said we'd ship?" "What broke, and why?" Rovo answers these questions confidently — from Jira. And Jira does not have the answers. The code does.
This is not a bug in Rovo. It is the honest boundary of any system that has never read the codebase. Jira records what teams planned and said. The codebase records what teams built. For the questions that matter most in software delivery, those two sources have different answers — and Rovo only has access to one of them.
What Rovo knows — and what it cannot know
Rovo's strength is the breadth of its Atlassian-native knowledge. Every ticket transition, comment, sprint assignment, epic link, and velocity data point is available to it. Confluence documentation, decision logs, and project summaries are indexed. If the information was entered into a Jira or Confluence field, Rovo can find it and reason over it.
What Jira Rovo knows — and doesn't know:
Rovo knows:
-> Every Jira ticket, status, assignee, comment, and transition history
-> Confluence pages, docs, and linked knowledge
-> Sprint history, velocity data, epic structure
-> Connected third-party data (if integrated)
-> What the team said they would do, when, and who said it
Rovo does not know:
-> What code was actually written to implement any of it
-> Which services are involved in any ticket's implementation
-> Whether the implementation matches the acceptance criteria
-> What the codebase looks like today vs. six months ago
-> Why an engineer's estimate is what it is
-> What will break if a proposed change landsThe column on the right is not a minor gap. It is the column that contains the answers to most of the questions people bring to Rovo hoping it can finally answer without involving an engineer. "Which services will this change touch?" requires the codebase — specifically, the call graph and service dependency map that only exists in the code itself. "Why is this taking so long?" often has an answer that lives in the codebase: a dependency that was not discovered until implementation started, a refactor in a previous sprint that introduced a conflict, a schema constraint that only surfaces when you try to write the code.
None of that is in Jira. Engineers write tickets before they fully understand the implementation. They update tickets occasionally during implementation. They close tickets when the work is done — or sometimes when the sprint ends. The ticket is a planning artifact. The code is the truth. Rovo has the artifact.
The specific answers Rovo gets wrong
Rovo's answers for software delivery questions are not vague or hedged. They are specific, well-formatted, and drawn from real data — the real data that is available to Rovo, which is Jira. The problem is that the question being asked requires data that is not in Jira. The confident answer reflects an incomplete picture. And because the answer looks authoritative, the person asking it often acts on it without realizing it is incomplete.
The same question — Rovo's answer vs. the codebase's answer:
Question: "Why is FEAT-312 taking longer than estimated?"
Rovo answer (from Jira):
"FEAT-312 was estimated at 5 days. It has been in progress for 9 days.
The assignee added a comment on Day 4: 'Running into some complexity
with the auth layer.' No further updates."
What the codebase actually shows:
The "auth layer complexity" is a circular dependency introduced in a
previous sprint: session-service imports from user-service, which now
imports back from session-service after a refactor in EPIC-287 three
weeks ago. The engineer discovered this on Day 4 and has been working
around it. The fix requires either a shared interface layer or a
service boundary change — neither of which was scoped in FEAT-312.
Rovo answer: accurate summary of what was said
Codebase answer: the actual reason, which is actionableThis pattern repeats across every category of software delivery question. "Why is this taking longer?" Rovo answers from ticket comments — what engineers said in Jira. The actual answer is in the code — what the engineers discovered when they tried to implement it. "Which teams will be affected?" Rovo answers from ticket mentions — the teams named in the description. The actual answer is in the dependency graph — the services that are connected in code but never named in a ticket because the person who wrote the ticket did not know about them.
The three questions that expose the limit every time
There are three questions that product owners, scrum masters, and non-technical leaders ask routinely — and that Rovo answers in a way that sounds correct and frequently is not. They are worth examining specifically, because they represent the category of question that requires code and that Rovo handles with Jira data.
Questions Rovo confidently answers — incorrectly:
"Is EPIC-44 on track to ship this quarter?"
Rovo: "EPIC-44 has 7 of 12 tickets marked Done. Velocity suggests
completion in 3 weeks."
Reality: 2 of those 7 tickets were marked Done but the implementation
has a known bug. The remaining 5 tickets share a dependency
on a service that is being rewritten on a separate branch,
currently 4 weeks from merge.
"Which teams will be affected by this sprint's work?"
Rovo: "Based on ticket mentions and linked epics, the payment team
and the notifications team are referenced."
Reality: The implementation touches the orders service and the
audit logging service — neither mentioned in any ticket —
because the engineer who wrote the tickets didn't know
about those implicit dependencies when writing them.
"What did we actually ship in Q1?"
Rovo: "Based on tickets transitioned to Done in Q1, here is the list..."
Reality: 3 of those tickets were marked Done before the feature was
reverted due to a production issue. They were never
re-opened in Jira. Rovo counts them as shipped.The third example — "what did we actually ship in Q1?" — is particularly instructive. A ticket marked Done in Jira is the record of a decision to close the ticket. It is not evidence that the feature was shipped, that it worked in production, or that it was not subsequently reverted. Jira's status is a team communication artifact. Whether code actually reached production and stayed there is a codebase question. Rovo answers the former. Teams need the latter.
This gap between "engineering says it shipped" and "the feature is actually there" is one of the most consistent frustrations non-technical leaders report. Rovo surfaces the Jira record — which shows the ticket was marked Done — without surfacing the codebase reality, which may tell a different story.
Why Rovo answering from Jira is not a criticism of Rovo
Atlassian built Rovo to be an AI layer over Jira and Confluence. That is what it is. The criticism here is not of a product doing what it was designed to do. It is of the expectation — common in 2026 — that "AI connected to our project management tools" is the same thing as "AI that understands our software delivery." Those are not the same thing.
Project management tools record intent and process. Software delivery happens in the code. The most important questions about software delivery — what will break, why something is slow, what was actually shipped — live in the code, not in the project management record of what was planned. An AI layer over Jira is an AI layer over intent and process. It is not an AI layer over delivery reality.
Rovo is genuinely good at what it was built for. The expectation that it should also answer implementation questions is the problem — and it is an expectation Rovo cannot meet without access to the codebase, which it does not have.
What happens when you add codebase context to Jira intelligence
The questions that Rovo gets wrong become answerable when the query surface has access to both Jira and the codebase simultaneously. Not instead of Jira — in addition to it. The ticket is still the starting point. The codebase provides what the ticket cannot: the implementation reality, the dependency graph, the service map, the actual diff between what was planned and what was built.
What changes when codebase context is added to Jira intelligence:
"Why is FEAT-312 taking longer than estimated?"
→ surfaces the circular dependency in the auth layer
→ names the specific services and the sprint when it was introduced
→ gives the scrum master the actual blocker, not just the ticket comment
"Which teams will be affected by this sprint?"
→ traces the dependency graph from the planned changes
→ names the orders service and audit service — neither in any ticket
→ gives the PM a real risk list before the sprint starts
"What did we actually ship in Q1?"
→ cross-references tickets marked Done with what actually landed in main
→ flags the 3 tickets whose work was reverted
→ produces a shipping list grounded in code, not Jira transitions"Why is FEAT-312 taking longer?" moves from "the engineer mentioned complexity in a comment" to "there is a circular dependency introduced in a previous sprint that requires a service boundary change not scoped in this ticket." The first answer is a description of what is visible in Jira. The second is an explanation of what is visible in the code. The second answer enables action. The first just confirms that something is wrong.
The "what did we actually ship?" question becomes verifiable rather than dependent on ticket hygiene. Instead of counting tickets marked Done, the query checks what actually reached the main branch, whether it was subsequently reverted, and whether the acceptance criteria in the ticket match the implementation in the code. Stakeholder updates built on Jira status are built on what teams said was done. Updates built on codebase reality are built on what was actually done.
The role this matters for most
Non-technical leaders — product owners, scrum masters, founders, operations managers — are the people most likely to use Rovo and most likely to act on its answers without independent knowledge to check against. A developer who asks Rovo "which services does this epic touch?" and gets a ticket-based answer will know the answer is incomplete, because they know the codebase well enough to recognize what is missing. A product owner asking the same question has no independent reference. The Rovo answer becomes the working assumption.
This is where the cost of Rovo's codebase gap is highest. Not for developers who can check the code themselves, but for non-technical team members who cannot — and who are relying on Rovo to be the bridge. Rovo bridges ticket knowledge effectively. It cannot bridge to code it has never read. For the roles that need the bridge most, the gap is widest.
Final take
Jira Rovo is a strong AI product. It gives non-technical teams better access to the knowledge that lives in Jira and Confluence, and that is genuinely useful. The wrong answers come from the questions that require knowledge that does not live in Jira and Confluence — the questions about what the code does, what it connects to, and what was actually built.
Rovo's wrong answers are not hallucinations. They are correct summaries of incomplete information. The information that is missing is the codebase. Until Rovo has access to the code — not just the tickets about the code — it will keep answering the most important software delivery questions with the most incomplete source available to it. The fix is not a better AI. It is a bigger input: the codebase itself, indexed and connected alongside the Jira layer that Rovo already handles well.