Sprint Retrospective Summaries with Asana

Use Asana’s “status updates” in new ways

Successful teams follow through on the ideas and suggestions that come up during Sprint retrospectives. While some teams are fortunate to have steadfast members that track and address these items, in many cases these notes get written on a whiteboard on a Friday afternoon, only to be forgotten as team members shift their attention to the weekend.

Documenting Retro summaries is an excellent practice to support a team’s internal process improvement, as well as maintaining a historical record of a team’s velocity over time.

Asana Status Update as Retro Summary

In my current organization, we are using Asana for project management. Asana enables team members to enter a status updates about each project-board. If you are using Asana, you are probably also using a single project-board to manage each team’s Sprint. A status update created during the Sprint retro is perfect data-store and opportunity to enter a retro summary.

An example Asana status update with customized fields
An example Asana status update with customized fields

Customize Your Retro Fields

Asana’s status update feature comes with generic preset field options. You can customize the fields to make the status update more relevant for communicating about the outcome of a Sprint.

For example, you can add:

  • The total number of points completed in Sprint
  • Was the Sprint completed?
  • Ideas for process improvements
  • What was the overall sentiment/mood of the team

Another compelling feature is Asana’s ability to drag-and-drop a group of completed tasks or milestones into a status update to show the completed tasks.

Stakeholder’s Vantage Point

As a manager that is concerned about the outcome of Sprints and their overall trends, this Sprint retro/status-update is an ideal way to receive this information across team’s in a standard way.

Code Sample

Below is a JavaScript code sample to export the points from a status update into a tabular format. For more details see:

const asana = require("asana");

const ASANA_TOKEN = process.env.ASANA_TOKEN;
const ASANA_PROJECT = process.env.ASANA_PROJECT;

const client = asana.Client.create().useAccessToken(ASANA_TOKEN);

const parseCompletedFromText = (text) => {
const lines = text.split("\n");
const pointLine = lines.indexOf("Sprint points complete") + 1;
if (pointLine === 0) return 0;
return lines[pointLine];

.then(({ data }) =>
Promise.all({ gid }) =>
.then((data) => {
data.forEach(({ created_at, text }) => {

About the Author

Ryan's FaceRyan Mahoney is the director of technology for the customer-facing technology department of state of Massachusetts’ public transportation agency. He has spent the past two decades leading engineering teams as a founder, director, manager, and tech lead working with brilliant engineers that make positive impacts with their work.

More Posts in Agile