Hi everyone,
Having worked as a Scrum Master and developer for many years, I rely heavily on time estimations and time-tracking for sprint planning and progress reporting.
Over time, I’ve consistently faced a reporting dilemma with Jira's standard Burndown Chart:
In a typical sprint, we see the Original Estimate line go down, while Time Spent climbs. In reality, Time Spent often shoots far past the original estimate, while the estimate line rarely hits zero because planned scope was left unfinished.
The core issue: The burndown line only jumps upward when estimated tickets are added mid-sprint. However, the majority of unplanned work consists of urgent bugs, ad-hoc support, or small operational requests that are added without an estimate (or with 0h).
A classic example from one of my past sprints (see image above):
Planned scope started around 270h, but ~80h remained incomplete at sprint end.
Notice specifically the second week (starting around July 1st): While the remaining estimate line almost stagnates, the Time Spent curve spikes massively all the way up to over 350h.
In this specific case, that divergence was caused entirely by incoming unestimated tasks, urgent operational requests, and support items that absorbed the team's capacity without moving the planned burndown.
To an outside stakeholder looking just at remaining estimates, it looks like a missed commitment — while in reality, the team delivered ~350 hours of pure output, mostly absorbed by untracked shadow work.
By Shadow Work, I mean all the invisible, unestimated tasks and mid-sprint additions that consume real development hours, silently destroy sprint goals, but leave almost no trace in standard burndown analytics.
When planning sprints, I include capacity buffers per person depending on their role. But tracking and isolating where that buffer actually went afterwards remains difficult:
Custom JQL Queries: Filters like created > SprintStartDate AND (originalEstimate is EMPTY OR originalEstimate = 0) help catch newly created items, but they completely miss existing backlog tickets dragged into an active sprint (as standard JQL lacks a clean timestamp for sprint assignment).
External Spreadsheets (Excel/Sheets): I ended up building spreadsheets that pulled Jira data directly via API/exports. While it gave me the numbers, maintaining external sheets created unnecessary overhead, and constantly jumping between Jira and Excel just to run a retrospective feels disconnected and inefficient.
Analyzing these tickets inside our primary workspace is critical, as they are usually the exact reason a sprint misses its commitment.
How do your teams isolate and visualize unestimated/unplanned work vs. original commitment?
Do you rely on custom dashboards/JQL, third-party reporting, or do you also fall back on external tools like Excel?
How do you clearly demonstrate to stakeholders that a missed goal was due to absorbed shadow work, not low team output?
Looking forward to your workflows, setups, and perspectives!
Hi Bevan!
First off, thank you so much for the detailed reply and for taking the time to share those illustrations — really appreciate the perspective!
You hit the nail on the head regarding the cultural aspect: tooling will never replace courageous conversations, and committing strictly to outputs rather than outcomes is a trap many organizations fall into. Forecasting in probabilistic ranges (best/worst/avg) is a fantastic way to reset stakeholder expectations around scope vs. time.
However, where I often see teams get stuck is having the empirical baseline data to even start those conversations effectively, especially when human factors come into play:
The friction with manual labeling: Labels are a great lightweight signal in theory, but they rely 100% on team discipline. When things get stressful, support tickets or ad-hoc requests are quickly pushed into the sprint without the proper labels or flags, which breaks the reporting again.
The barrier of ticket creation: Ticket creation needs to be as low-friction as possible. If the process requires too much categorization or overhead, developers often skip creating a ticket entirely and just do the work "under the table" — which makes the actual data foundation even more distorted.
Data as the foundation for the conversation: To tell stakeholders "we absorbed unexpected complexity", the Scrum Master needs clear, immediate proof. Without clean visualization, retrospectives often turn into subjective debates instead of fact-based reviews.
Operational reality of Time-Tracking: In environments where budgets or client billings are tied to tracked hours, we often can't completely detach from time metrics. Having to manually piece together sprint reports or maintain external analytics dashboards just to see mid-sprint additions adds heavy admin friction.
I really like your point about using the Sprint Report and looking at Atlassian Analytics schemas. But my goal has always been reducing that admin overhead so the team can spend less time wrangling data and more time having exactly the outcome-focused conversations you described.
Thanks again for the great food for thought and the sketches!
I've made for myself a "Capacity planner" browser extension to try to anticipate this.
It allows me to put activity percentages for a ressource, so that i can try to estimate a sprint work quantity more accurately.
It's work in progress for me, but it might help you to visualise that.
The browser extension is free, and available for chrome and firefox (it also includes lots of others stuff that i use every week (poker plannig module, administration module, hubspot connection module, etc ...)). You can search "Jira Admin Hub", and asks me if anything is missing.
Hopes it helps you.
Thanks for sharing this, Quentin! Really impressive feature set — especially love seeing fellow builders tackle Jira’s native UX gaps directly.
A few quick thoughts on your setup:
Having a client-side Capacity Planner for pre-sprint setup makes total sense to dial in realistic workloads early on.
I noticed your Label Manager module as well — which directly connects back to our point above about how quickly manual tagging turns into orphan clutter without dedicated cleanup.
The Tempo enhancements also show you're very familiar with the reality of time-tracking teams!
My main headache remains on the post-sprint retrospective side of things — when the sprint is done, and you need to look back and cleanly isolate: "We planned X capacity, but Y hours were swallowed by untracked shadow work."
I actually went down a very similar rabbit hole and started building a native Forge app (Beam) to automate that retrospective visualization for the exact same reason: getting tired of external spreadsheet workarounds.
I’ll definitely check out Jira Admin Hub — always great to see modular, local-first tools built by practitioners!
Hello @Max Brüssow
(Disclosure: I work at eazyBI).
Thanks for sharing your use case!
The JQL workaround fails for exactly the reason you identified - Jira just doesn't expose sprint assignment timestamps through JQL, so you'll always miss the backlog tickets that get added in mid-sprint.
However, Jira internally logs every sprint scope change in its issue change history - when an issue was added to a sprint, when it was removed, and the state of estimates at each point. eazyBI reads this history directly, which means you don't need labels, custom fields, or team discipline to catch shadow work. It's already in the data
In practice this means you get measures like Sprint issues committed (what was in the sprint at the moment it was started), Sprint issues added (everything pulled in the sprint after it started), and Sprint issues removed. You can then filter the "added" bucket down to only issues with zero or missing estimates - and that's your shadow work, automatically, with no manual tagging involved.
For the stakeholder communication piece - the time tracking burndown report plots remaining estimated hours and actual hours spent day by day on the same chart.
If you want to see what this looks like without setting anything up, here is a screenshot of a report from our demo account
You can find the eazyBI app here, if you're willing to give it a try - eazyBI for Jira Cloud.
All eazyBI reports can be embedded directly into Jira dashboards as gadgets as well.
Best wishes,
Elita from support@eazybi.com
Recommended Learning For You
Level up your skills with Atlassian learning
Learning Path
Apply agile practices
Transform how you manage your work with agile practices, including kanban and scrum frameworks.
Learning Path
Configure agile boards for Jira projects
Plan, prioritize, and estimate upcoming work by creating and configuring agile Jira boards for company-managed projects.
Learning Path
Registered Scrum Basics™
Manage work more effectively by learning scrum basics from a global leader in agile transformation and training—and get credentialed by Scrum Inc.®