See every blocked Asana task and who is holding it up

By General Input

Open one board before standup that lists every task stuck behind unfinished work, ranked by how long it has been waiting, and chase the owner in a click.

Integrations

  • Asana
  • Slack Bot

Type

App

Categories

  • Product
  • Operations

Build me a blocked work board I open before standup to see everything that is stuck waiting on something else. It works across a set of Asana projects I choose, and it answers two questions a normal task list cannot: what is blocked right now, and who is personally holding up the most work. I should be able to act on what I see without leaving the screen, using Asana and Slack.

Project picker and data loading. On first open, let me pick which Asana projects the board covers, listing the options with Get Multiple Projects, and remember my selection so the board loads the same way every morning. Load tasks with Get Multiple Tasks scoped by project, one call per selected project. For each incomplete task, call Get Task Dependencies to find the tasks blocking it, and use Get Task Dependents to work out how many other tasks a given blocker is holding up, including blocked tasks that live outside my selected projects. Use Get a Task for the detail on each blocking task, such as its assignee, due date, and completion state. Use Get Stories for a Task on each blocking task to find the timestamp of its most recent activity.

Important performance note: dependencies are read one task at a time, so the app must work from the chosen set of projects rather than the whole workspace. Respect Asana's rate limits of 150 requests per minute on free plans and 1500 on paid, with a maximum of 50 concurrent GET requests, so batch the dependency reads with a sensible concurrency cap and show a progress indicator while the graph builds. Do not use Search Tasks in a Workspace anywhere; it requires a premium Asana plan and returns a payment error otherwise, which is why the project-scoped path is the right one. Cache the built graph for the session so switching between the two views does not refetch everything.

View one, the blocked work board. A table listing every task in the selected projects that has at least one unfinished blocker, sorted by how long it has been stuck, longest first. Each row shows the blocked task and its owner on the left, then the blocking task, that blocker's owner, the blocker's due date, and how long the block has been sitting there. Flag rows where the blocker is already past its due date, and where the blocker has no owner at all, since an unowned blocker is the worst kind. If a task is blocked by more than one unfinished task, show a row per blocking relationship rather than collapsing them, because each one needs chasing separately. Let me filter by project and by blocker owner, and set a minimum stuck age so short waits stay off the board.

View two, the people view. Same underlying data, grouped the other way: list people by how much work they are personally holding up. Each person is a row showing how many other tasks are blocked behind their unfinished blockers, how many distinct projects those blocked tasks span, the oldest block they are sitting on, and how many of their blocking tasks are already overdue. Sort by the number of blocked tasks so the biggest bottleneck is at the top. Expanding a person shows their individual blocking tasks and what is waiting behind each one, with the same row actions available.

Row actions. First, chase the blocker's owner: post a comment on the blocking task with Create a Comment on a Task naming what is waiting behind it and how long it has been stuck, then send that person a Slack direct message with the Slack Bot Send a Message operation including a link to the blocking task. Map the Asana owner to their Slack account by matching on email with Look Up User by Email, and if there is no match, still post the Asana comment and tell me in the interface that the Slack side could not be delivered. Second, push the blocking task's due date with Update a Task, letting me pick the new date from the row. Third, clear the dependency outright with Remove Task Dependencies when the block is no longer real, removing the blocker from the blocked task so it stops showing as blocked for everyone. Every action should update the board in place rather than forcing a full reload.

Rules to bake in. Stuck time is measured from the last activity on the blocking task, taken from the most recent story on it, not from the task's creation date, because a blocker created months ago but commented on yesterday is not actually stalled. Only incomplete blockers count; the moment a blocking task is marked complete the row drops off the board. And the same person must not be chased twice about the same task within twenty four hours, so keep a record of every chase with who was chased, which blocking task it was about, and when, and enforce that cool-off by disabling the chase button on affected rows, showing when the last nudge went out instead. Keep that chase history so I can see at a glance what has already been pressed this week.

Every row should link straight through to the task in Asana. If nothing in the selected projects is blocked, say so plainly rather than showing an empty table, since that is genuinely good news worth stating.

Related prompts

Explore more prompts
A brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasonLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsLinkedIn Ads budget pacing dashboard for every client accountGive your team Looker numbers without buying more seatsPause marketing emails to escalated customers, then restore them