Register your interest: Tag @Cody, get an agent
BlogEngineering

How to automate sprint retrospective reports without killing the retro

The data should arrive before the conversation, not replace it. What is worth gathering, what the numbers cannot see, and why a report that ranks people ends the honesty.

Amman VediAmman Vedi11 min read

Summarize with AI

How to automate sprint retrospective reports without killing the retro
On this page

A retrospective spends its first twenty minutes reconstructing what happened. What shipped, what carried over, what the incidents were, how long things took — all of it available in systems, all of it assembled by somebody scrolling through boards on the morning of the meeting.

That part is worth automating, and it is the only part. The conversation that follows is the retrospective, and a report that arrives as a verdict rather than as material makes that conversation worse rather than shorter.

What we'll cover

What the report is for

Removing the reconstruction. Twenty minutes of "what did we actually do" is the most wasteful part of most retrospectives.

Providing shared facts. Disagreements about what happened are common, unproductive, and resolvable with data.

Surfacing what nobody noticed — a piece of work that sat in review for eight days, a recurring interruption, an incident nobody mentioned.

Not producing conclusions. The report should say what happened, not what it means, because what it means is the conversation.

Not evaluating anybody. Covered below, and it is the failure that quietly ends the usefulness of retrospectives entirely.

What to gather

Completed and carried-over work, with the carried-over items named rather than counted.

Time in each state, particularly waiting — in review, blocked, waiting on another team — which is where the elapsed time usually is.

Work added mid-sprint, with the total, since unplanned work is the most common reason a sprint misses and it arrives one item at a time.

Incidents and interruptions, including out-of-hours pages, which are real work that appears on no board.

Anything that went backwards — reopened, returned for more information, failed review — because rework is invisible and expensive.

The trend against previous sprints, since a single sprint's numbers mean very little and the direction means quite a lot.

What the numbers cannot see

Being explicit about this in the report is what stops the data being over-read.

Why something took long. The board says eight days in review; it does not say the reviewer was on holiday, the requirement changed, or the author was learning the area.

Work that happened off the board — helping another team, an unplanned investigation, supporting a customer — which is frequently the reason a sprint went differently from plan.

How people are. Sustainable pace, frustration, and confusion are the most important things a retrospective discusses and appear in no system.

Whether the work was any good. Shipping on time and shipping something worth shipping are different, and only the first is measurable.

Whether the right things were chosen, which is a product question the sprint data cannot address at all.

Say so in the report. A line noting what it does not cover keeps the conversation open rather than letting the numbers close it.

Building it with CodeWords

CodeWords connects to more than 3,000 integrations, so the tracker, the repository, and the incident tool can be assembled into one report automatically.

  1. Open CodeWords and start a new automation.
  2. Describe what should happen in plain language to Cody, the automation builder: which team, which sources, and when the report should arrive.
  3. Authorize the connections — the tracker, the repository host, and the incident tool.
  4. Describe the exceptions: a sprint with no completed work, an item that moved between boards, a team with a different cadence.
  5. Run it against a past sprint and check it against what the team remembers.

You describe the outcome; Cody builds it, connects it, and deploys it. The free plan covers light use, with Pro at $39 per month and Business at $100 per month as usage grows; details are on the pricing page.

The report that ends the honesty

The failure worth guarding against, because it is quiet and permanent.

Never attribute to individuals. Tickets closed per person, lines written, review counts — all of it changes behaviour towards the number and none of it measures contribution.

A retrospective depends on people saying what went wrong, including things they did. A report that could be used in a performance conversation ends that immediately and does not come back.

Report at team level, always, including for things like review latency where the individual data exists.

Do not share it upward by default. A retrospective report circulating to management changes what the team is willing to put in it, even if nobody intended that.

Say who it is for, explicitly, at the top.

If somebody asks for per-person data, that is a management conversation to have separately and not through a retrospective artefact.

Making it arrive at the right time

Before the meeting, not during it. A report read aloud is a meeting spent reading.

The day before is usually right — enough time to look, not enough to forget.

In the channel where the team is, not as an attachment in a calendar invitation.

Short enough to read in two minutes. A page of numbers gets skimmed and a summary with three or four findings gets read.

Lead with what changed since last sprint rather than with absolute values, since a stable number tells nobody anything.

Include the carried-over items by name, since those are what the conversation usually starts with.

Tracking what the retro decided

The step that determines whether retrospectives are worth having.

Actions from a retrospective are the output, and most of them are never looked at again.

Record them where the team works, not in a document opened once a fortnight.

Bring the previous sprint's actions into the next report, with their status. This single addition changes retrospectives more than any amount of data.

Expect some to be abandoned, and make that explicit rather than letting them accumulate silently — an action nobody did for three sprints is a decision, and it should be recorded as one.

Report the completion rate over time, to the team only, since a consistently low rate means the retrospective is producing intentions rather than changes.

Keep the count small. One or two actions completed beats six recorded and ignored.

Collecting the qualitative half

The data covers what happened; the other half of a retrospective is how it felt, and that can be gathered in advance too.

Ask two or three questions before the meeting, asynchronously, so people arrive having thought rather than improvising in a room.

Keep it short. Three questions get answered; a form of ten does not, and a low response rate is worse than not asking.

Allow anonymity where the team wants it, and respect that the option existing changes what gets said — which is the point.

Group the responses by theme rather than reading them out individually, so the meeting discusses patterns rather than performing a list.

Quiet people contribute more this way, which is one of the stronger arguments for the practice and is frequently the main benefit.

Do not automate the discussion of them. Collecting and grouping is mechanical; deciding what the themes mean is the meeting.

Making it survive

Handle the sprint that does not fit the pattern — a shortened week, a team on a different cadence — rather than reporting misleading comparisons.

Match work across systems by a stable identifier, since the tracker and the repository refer to the same work differently.

Handle work that moved boards, which otherwise appears as both carried over and completed.

Make it idempotent, so a re-run does not duplicate a post.

Report the outcome. Sources gathered, items included, and anything that could not be matched.

Limits worth knowing about

Tracker data reflects how the team uses the tracker, not reality. A team that closes tickets in batches produces a different-looking sprint from one that closes as it goes.

Estimates are not a measure of anything and are frequently mistaken for one.

Cross-team dependencies are usually invisible, which is where a substantial share of delay originates.

A short cadence means small samples, and a two-week sprint's numbers are noisy enough that only the trend is meaningful.

Comparing teams is almost always a mistake, since they work on different things with different constraints and the comparison invites exactly the behaviour you do not want.

What to build first

A short pre-read delivered the day before: what completed, what carried over by name, work added mid-sprint with the total, and the status of the previous retrospective's actions. It removes the reconstruction, it gives the conversation a starting point, and the actions line is what makes retrospectives cumulative rather than repetitive.

Two habits make the difference. Report at team level only, since a retrospective depends on people being willing to say what went wrong and an artefact that could reach a performance conversation ends that permanently. And carry the previous actions forward, because a retrospective that never revisits its own decisions produces intentions rather than change.

Frequently asked questions

What should the report actually contain?

What completed, what carried over by name, work added mid-sprint with the total, time spent waiting, incidents and interruptions, and anything that went backwards — plus the previous retrospective's actions and their status.

Should it include per-person data?

No. A retrospective depends on people saying what went wrong, and a report that could be used in a performance conversation ends that immediately and permanently. Report at team level even where individual data exists.

When should it arrive?

The day before, in the channel where the team is, short enough to read in two minutes. A report read aloud during the meeting is a meeting spent reading, which is the thing automation was supposed to remove.

What can the data not tell you?

Why something took long, work that happened off the board, how people are, whether what shipped was any good, and whether the right things were chosen. Saying so in the report keeps the conversation open.

What makes retrospectives cumulative?

Carrying the previous sprint's actions into the next report with their status. Without it, actions are recorded and never revisited, and the same issues are raised every fortnight.

Should the report be shared with management?

Not by default. Even with no intent to evaluate, a retrospective artefact that circulates upward changes what the team is willing to put in it — which is the same problem as per-person metrics arriving by a different route.

Can I compare teams with this?

Almost never usefully. They work on different things under different constraints, and the comparison invites exactly the behaviour — optimising the measured number — that makes the underlying data worthless.

Can the qualitative half be gathered in advance too?

Yes — two or three short questions asked asynchronously before the meeting, grouped by theme rather than read out individually. People arrive having thought, and quieter team members contribute considerably more than they do in a room.

Should responses be anonymous?

Offer it where the team wants it, and accept that the option's existence changes what gets said — which is the reason to have it. What you lose in attribution you gain in candour.

Get started today

Your first workflow is free to build.

Describe what you need. Cody handles the build, the connections, and the deployment.