On this page (10 sections)
The good, bad and ugly retrospective, named after Sergio Leone's 1966 Western, sorts the sprint into The good, The bad and The ugly. The last column sets it apart: Bad is for what went wrong, Ugly is for what the team has been avoiding talking about. Use it when you suspect the real problem isn't on the board yet.
The three columns
| Column | What goes here | Example note |
|---|---|---|
| 😀 The good | What went well and should be repeated | "Shipped the checkout rewrite a day early, with no support tickets." |
| 😕 The bad | What went wrong and everyone already knows about | "Two days lost to the expired API certificate." |
| 😬 The ugly | What the team avoided, worked around or joked about instead of fixing | "We say 'code freeze', then merge nine PRs after it. Nobody wants to be the one who says no." |
Bad vs Ugly. Bad happened to the team: an outage, a late spec, a flaky test. Ugly is something the team does or tolerates and hasn't said out loud: the estimate nobody believed, the service nobody wants to touch, the planning meeting where nobody pushes back. If a note would surprise nobody, it's Bad. If someone hesitates before posting it, it's probably Ugly.
Where it comes from. The name is the film's. No single person is credited with turning it into a retro. Retromat lists it as activity 121, credited to a 2016 Wild West retro plan by Manuel Küblböck, who calls it a variation of Mad Sad Glad. Versions differ on Ugly; Retromat calls it "non-optimal". We use it for what's gone unsaid, which the other two columns miss.
In Retro Rabbit
The Good, Bad, Ugly template in Retro Rabbit
Pick Good, Bad, Ugly from the format library when you create a Team Room (or later in its Settings) and the board starts with its three columns. Your team adds notes during the sprint, with or without their name shown, then votes on what to talk about.
Good, Bad, Ugly · Sprint #14
Example notes
The good
- Shipped the checkout rewrite a day early, with no support tickets2 votes
- New on-call handover doc meant zero 3am questions4 votes
The bad
- Two days lost to the expired API certificate5 votes
- Search spec changed twice after we started building3 votes
The ugly
- We say code freeze, then merge nine PRs after it3 votes
- Everyone knew the estimate was fiction when we agreed to it2 votes
- The good
- The bad
- The ugly
14-day free trial · No credit card
When to use it (and when not to)
Use it when:
- the sprint felt off, but other formats only surface small things
- something was obviously avoided: a deadline everyone knew would slip, a rewrite nobody would call failing
- the team trusts each other and can handle blunt notes
- a lighter tone helps. The film name gives people permission to be direct.
Pick something else when:
- trust is low or there's been conflict between people. Ugly turns into accusations; run a Psychological Safety Check first.
- the team is new. Ugly needs shared history; start with What Went Well.
- one incident dominates. An Incident Review gives you a timeline, not opinions.
- people mostly need to say how they feel. Mad Sad Glad is built for that.
How to run it live (30 minutes)
| Time | Step |
|---|---|
| 0–4 min | Review last retro's action items, including older open ones |
| 4–11 min | Silent writing in all three columns |
| 11–14 min | Move notes between Bad and Ugly; group duplicates |
| 14–17 min | Dot vote: three votes each |
| 17–21 min | Good and Bad: quick round on the top notes |
| 21–28 min | Ugly: its own block |
| 28–30 min | Agree on action items and owners |
- Check the carry-over. Open the Previous Retro tab in the Action Items panel, then Old / Unresolved Items. Actions from Ugly notes are the likeliest to sit there.
- Remind people about names, then write. Anyone can turn off Show Name to post without their name shown. Then set the shared timer for seven minutes.
- Sort Bad from Ugly. Use the test above. Move anything that's an open secret into Ugly.
- Vote, then sort by Most Votes.
- Keep Good and Bad short. Four minutes for both; Bad items are often already being fixed.
- Protect the Ugly block. For each top note, ask "what would have to change for this to stop?", not "who did this?"
- Decide. Ugly items need an owner and a check, or they'll be back next sprint.
How to run it async over a sprint
Ugly notes are easier to write alone than in a room. The hard conversation still works better live.
- Day 1: in Retro Rabbit, the next board is ready once someone clicks Start New Retro after the last retro. The facilitator posts a short note explaining what Ugly is for, with an example.
- During the sprint: add Bad notes the day something goes wrong. Add Ugly notes whenever you notice the team working around something. Use the board or Quick Notes on the Team Room page.
- Mid-sprint: if Ugly is empty, the team lead adds one about their own work.
- Two days before the end: everyone votes.
- The day before: the facilitator groups notes and reads the CarrotIQ Sprint Summary for each column.
- Retro day: a 20-minute call on the top Ugly notes. We don't recommend running this format fully async: hard topics go badly in writing.
More in how to run an async retrospective.
10 example prompts
The good
- What are you proud of from this sprint?
- What went better than we expected?
- What should we do again on the next project like this?
The bad 4. What went wrong that we could have seen coming? 5. Where did we lose the most time? 6. What broke, and how did we find out?
The ugly 7. What do we all know but never say in meetings? 8. What are we working around instead of fixing? 9. Which estimate or deadline did we not believe when we agreed to it? 10. What would a new joiner find strange about how we work?
Facilitator tip and a common pitfall
Tip: go first on Ugly. If the team lead posts an Ugly note about their own decision ("I agreed to the scope knowing it wouldn't fit"), it shows the column is for patterns, not blame. Others follow faster than after any explanation.
Pitfall: Ugly gets two minutes. Bad is familiar and easy to talk about, so it fills the time and Ugly gets squeezed. That's why the agenda gives Ugly its own block. If you run short, cut Bad, not Ugly.
How AI helps with this format
On Pro AI (and during the free trial), CarrotIQ takes care of the admin:
- Group names. Bad and Ugly notes often describe the same thing from two sides: "release slipped two days" (Bad) and "we merge after code freeze" (Ugly). Drag them together and CarrotIQ names the group, for example "Code Freeze Breaches".
- Summaries. The Sprint Summary covers each column plus the whole retro. Read the Ugly summary before sharing it with anyone who wasn't there.
- Suggested action items. CarrotIQ Suggest drafts an action from the notes, weighting the most-voted ones. When the team votes for Ugly notes, the draft aims at them. Edit it and assign an owner.
Example action items
| Note | Action item |
|---|---|
| Ugly: "We merge after code freeze" | "Anything merged after freeze needs a second approver, and Nadia, as release lead, says no by default. At the retro, count late merges against this release's nine." |
| Ugly: "Nobody believed the estimate" | "At planning, anyone can call 'no confidence' on an estimate and we re-estimate it on the spot. Chris tracks how often it's used over two sprints." |
| Ugly: "Nobody wants to touch the billing service" | "Jo pairs with Sam on the next two billing tickets. At the next retro, Sam says whether he could fix a billing bug alone." |
| Bad: "Two days lost to an expired certificate" | "Ali sets up expiry alerts 30 days ahead for all three services by Friday." |
| Good: "Checkout rewrite shipped early" | "Repeat what worked: Maya adds a 20-minute pre-mortem to the next project's kickoff." |
Next retro, the Previous Retro tab lists these; older open ones sit under Old / Unresolved Items. More in retrospective action items that actually get done.
Use this template in Retro Rabbit
- Start a 14-day free trial. No card is needed.
- Pick Good, Bad, Ugly from the format library: choose "Browse all formats" when you create your Team Room, or later in the Team Room's Settings.
- Before the first retro, tell the team how to turn off Show Name, so Ugly notes can go up without a name shown.
See pricing for plans.
Related formats
- Mad Sad Glad: when the team needs to talk about feelings first
- Rose, Bud, Thorn: a gentler three columns, with room for what could grow
- Psychological Safety Check: when Ugly notes don't come, check whether people feel safe writing them
- What Went Well: the default, when nothing's being avoided
- More formats in Quick retrospectives
- All retrospective templates
Frequently asked questions
What is the good, bad and ugly retrospective?
A three-column retrospective named after the 1966 Western. The Good is what went well, the Bad is what went wrong, and the Ugly is what the team has been avoiding talking about.
What's the difference between the bad and the ugly?
Bad is what went wrong and everyone already knows, like an outage or a late spec. Ugly is something the team does or tolerates and hasn't said out loud, like a deadline nobody believed. If someone hesitates before posting a note, it's probably Ugly.
Who created the good, bad and ugly retrospective?
No single person is credited with it. Retromat lists it with credit to a 2016 write-up by Manuel Küblböck, who describes it as a variation of Mad Sad Glad.
How long does a good, bad and ugly retrospective take?
About 30 minutes for a two-week sprint. Give the Ugly column its own block of at least seven minutes, even if that means cutting the Bad discussion short.
Can people post Ugly notes without their name?
Yes. In Retro Rabbit, each person can turn off Show Name to post notes without their name shown. Remind the team before the retro, not during it.
What if nobody writes anything in the Ugly column?
Post one about your own work first. If it's still empty, people may not feel safe enough to write one, and a Psychological Safety Check is a better next retro.
Run this retro in Retro Rabbit
Your team adds notes during the sprint, CarrotIQ groups and summarizes them and suggests action items, and unfinished items carry into the next retro.
14-day free trial · No credit card