Daily Sprint Health Check & Burndown Alert
Catch sprint problems on day 2, not day 10.
Nora monitors Jira sprint progress daily, alerts when tasks fall behind, highlights blockers, and projects whether the sprint will complete on time.
Every weekday at 9:00 AM, Nora queries Jira via JQL to find the active sprint and retrieves all associated issues. It pulls the sprint's burndown data, comparing actual completion against the ideal trajectory based on story points. Nora also scans for issues in the "In Progress" status for more than two days without comments or updates. It calculates a projected completion date and sends a Slack message to the team channel, highlighting stuck tasks and flagging if the sprint is at risk of overrunning.
The Operations Manager who previously spent their morning manually reviewing Jira boards now starts their day with a clear summary of at-risk work. They spend their time discussing blockers with assignees and deciding which lower-priority items to descope, rather than clicking through individual Jira tickets to find out who forgot to log their updates.
Runs daily at 9:00 am using Jira and Slack, run by your Operations Manager.
How it works
- Query active Jira sprint — At 9:00 AM, Nora connects to the Jira API and runs a JQL query to identify the currently active sprint. It retrieves all issues assigned to that sprint, including their current status, story points, assignees, and the last updated timestamps.
- Calculate ideal burndown trajectory — Nora pulls the sprint start and end dates along with the total committed story points. It calculates where the team should be on the current day of the sprint, establishing an ideal burndown line to compare against actual completed work.
- Identify stuck and stale tasks — Nora filters the retrieved issues to find any marked as "In Progress" that have not received a status change, comment, or work log update in the last 48 hours. These are flagged as potentially blocked or abandoned.
- Project final completion date — Using the actual completion rate versus the elapsed time, Nora calculates whether the remaining story points can be finished by the sprint end date. If a significant percentage of work remains past the midpoint, it marks the sprint as at risk.
- Handle empty or starting sprints — If the sprint just started and no work is expected to be completed yet, or if there is no active sprint, Nora stops. It sends a brief Slack message noting the status and skips the full burndown calculation to avoid false alarms.
- Send Slack alert to team — Nora formats the findings using Slack Block Kit and posts a message to the designated team channel. The alert includes the projected completion status, a list of the specific stuck tasks with links to Jira, and tags the relevant assignees.
What this replaces
Every morning, a Scrum Master or Operations Manager opens the active Jira board and manually checks the burndown chart. They click through every "In Progress" ticket to see when it was last updated and ping individual developers on Slack to ask if they are blocked. Finally, they estimate whether the remaining points will actually fit into the remaining days.
- Open Jira and locate the active sprint board.
- Review the burndown chart to assess overall progress.
- Click into individual in-progress tickets to check for recent activity.
- Message developers on Slack to ask about stale tickets.
- Calculate if remaining story points can be finished on time.
Rough estimate rather than a measured figure: about 15 minutes a day, assuming an active sprint with 30 tickets and spending 20 to 30 seconds checking each ticket's history and messaging assignees.
What it needs to run
Accounts and plans
- Jira Cloud account with Atlassian REST API access
- Slack workspace with permissions to install bot integrations
Access it asks for
- Basic Auth (email + API token) for Jira to read issues and sprint data
- chat:write in Slack to send messages to channels and users
- users:read in Slack to map Jira assignees to Slack user handles
What Nora reads
- Active sprint details (start date, end date, total points)
- Jira issues via JQL (status, assignee, story points, last updated timestamp)
- Slack workspace members to match names for tagging
What Nora writes
- Slack messages to specific channels or direct messages
- Slack tags mentioning specific users for stuck tasks
When it goes wrong
- Jira API rate limits are exceeded during the issue retrieval. Nora pauses the operation and respects the Atlassian adaptive rate limit headers. It waits for the specified retry window before attempting to fetch the remaining Jira issues, preventing the daily check from failing entirely.
- A developer's Jira name does not match their Slack handle. Nora falls back to listing the Jira display name in plain text within the Slack message. It notes at the bottom of the alert that it could not find a matching Slack user to tag.
- The sprint contains unestimated tasks with no story points. Nora excludes unestimated tasks from the burndown projection calculation to avoid skewed math. It lists these tasks in a separate "Unestimated Work" section in the Slack alert so the team can size them.
- There is no active sprint in the configured Jira project. Nora detects that the JQL query returns zero active sprints. It halts the check and does not post a Slack message, avoiding unnecessary noise between sprint cycles.
- Slack API rejects the message due to invalid channel configuration. If the target channel was archived or deleted, Nora sends a direct message to the Operations Manager who originally configured the automation, asking them to specify a new destination channel.
Who this is for
Worth it if
- Scrum Masters managing 2-week sprints with 5+ developers where standups run long.
- Operations Managers overseeing multiple concurrent Jira projects who need a unified morning summary.
- Remote engineering teams that rely on asynchronous Slack communication to surface blockers.
Not worth it if
- Small teams with 2 or 3 members who already communicate constantly and know exactly what everyone is working on.
- Teams using Kanban or continuous flow rather than fixed-length sprints, as the burndown math will not apply.
- Organizations using on-premise Jira Server installations that cannot expose the Atlassian REST API to external services.
A worked example
A 12-person software agency runs two-week sprints with around 60 tickets. They configure Nora to check the "Backend Services" Jira project every morning at 9:00 AM and post the summary to the #eng-backend Slack channel.
*Sprint Health Check: Backend Services Sprint 42* *Status:* [At Risk] Day 6 of 10. *Burndown:* 45/120 points completed. Ideal trajectory expected 72 points by today. Projected completion is 3 days late. *Stuck Tasks (No updates in 48h):* - [BACK-402] Implement Stripe webhooks - @sarah (In Progress since Tuesday) - [BACK-415] Fix database migration script - @david (In Progress since Monday) *Recommendation:* You are 27 points behind the ideal line. Consider descoping [BACK-450] or [BACK-451] to protect the sprint goal.
Frequently asked questions
What happens if we work over the weekend? Does it send alerts on Saturday?
By default, Nora runs this check every day at 9:00 AM, including weekends. If your team only works Monday through Friday and you do not want weekend alerts, you can tell Nora in chat to restrict the schedule to weekdays. Nora will update its cron schedule to only pull Jira data and post to Slack on those specific days.
How does Nora know which Slack users to tag for stuck Jira tickets?
Nora reads the assignee's email address or display name from the Jira ticket and uses the Slack users:read scope to search your Slack workspace for a matching profile. If it finds a match, it tags them directly in the alert. If it cannot find a match, it just prints the Jira display name in plain text so the team still knows who owns the task.
Can we change what counts as a "stuck" task?
Yes. The default definition flags any task in an "In Progress" status that has not had a status transition, comment, or work log entry in 48 hours. If you want a tighter threshold, like 24 hours, or want to exclude weekends from the calculation, you just tell Nora in your chat channel. Nora will adjust the logic it uses when filtering the Jira issues.
Does Nora change any Jira statuses or move tickets automatically?
No. For this specific automation, Nora only reads data from Jira to calculate the burndown and identify stale tasks. It does not transition issues, add comments to Jira, or move tickets into the backlog. The output is strictly the Slack message, leaving the actual decisions about descoping or updating tickets to your Operations Manager or Scrum Master.
Connects to
Related automations
- Daily Standup Digest to Slack Channel — Compile team updates into a single daily message so you never miss critical blockers.
- Auto-Respond to FAQ in Slack — Answer common questions instantly in Slack threads so your team stays unblocked.
- Extract Action Items from Slack Threads to Task Board — Turn meeting discussions into tracked tasks automatically.
- Smart DM Follow-Up Reminders — Never lose track of messages awaiting response.
- Route Customer Feedback to Relevant Teams — Automatically send customer feedback to the right Slack channel for action.
- Automated New Hire Onboarding in Slack — Run every new hire through the same onboarding checklist, tracked automatically.
- Alert Team When Big Expenses Hit Slack — Stay on top of unexpected large expenses before they impact budget.
- Weekly Business Metrics Report to Slack — Get critical KPIs delivered to your team every Monday morning.