Project Management for SaaS Development
There's no "before launch" phase on a live product. Every sprint plans new features and defends against whatever broke for a paying customer overnight.
The board has two customers, and they disagree
Most project management advice assumes a project has a start and an end. SaaS development doesn't work that way once there's a single paying customer on the product. There's no version of the plan where the team stops shipping new features to go fix things, because both are happening on the same live system, this week, at the same time.
The result is a board under constant pressure from two directions. Product wants the next roadmap item planned and estimated. Support wants the bug a customer is currently annoyed about fixed today. Both are legitimate, both are urgent by someone's definition, and a tracker that treats them as the same kind of item (sequenced by whoever shouted last) is how roadmap commitments quietly slip a sprint at a time without anyone deciding that on purpose.
What a continuous-delivery team actually needs isn't a bigger backlog. It's a way to see, in one glance, how much of this sprint's capacity just got eaten by production work, before that becomes an explanation offered after the fact. This is the specific split ShipSprint's triage inbox and per-column WIP limits are built for: production work gets sized and capped instead of just absorbed.
There's a subtler cost too: a team that's constantly interrupted starts padding every estimate to survive the interruptions, and the padding becomes indistinguishable from the actual work over time. Nobody can tell anymore whether a feature genuinely takes three weeks or whether three weeks is what's left after the interruptions that always happen.
Leadership usually only sees the symptom, not the cause: a roadmap that consistently runs behind, presented every quarter with a slightly different explanation. Without a way to actually see how much of a sprint went to production work versus planned features, "the roadmap is behind" and "the team is absorbing more incident work than anyone budgeted for" look identical from the outside, and only one of them is a team performance problem.
Triage before it becomes a Slack fire
Bug reports and incident work land in a triage inbox rather than as a message to whoever's online, which does two things at once: it stops an urgent-sounding report from jumping the queue just because it arrived loudly, and it forces someone to actually size it against the sprint before it lands on the board. Not after, when the commitment's already been quietly broken.
Per-column WIP limits do the rest of the work. When the "in progress" column is capped and a production fix has to go in, something visibly has to come out, or the column visibly overflows. That's a much more honest signal than a sprint that just runs long every single time without anyone naming why.
The GitHub sync (Team plan and up) keeps the two kinds of work honest against each other: a merged pull request for a hotfix closes its card the same way a merged feature branch does, so the record of what actually shipped this week, features and fixes both, comes from the code, not from memory at the retro.
Roadmap and production, on one honest board
Production issues get sized and scheduled instead of jumping straight into someone's day. What's urgent is decided against actual capacity, not against who reported it loudest.
Delivery forecasts are calculated from measured velocity as sprints close, so when production work has been eating roadmap capacity for three sprints running, the projected date for the next feature reflects that. Nobody has to be surprised in month four.
Branches move cards, merged pull requests close them. What shipped this week is whatever's actually in production, not whatever got mentioned in standup.
The built-in wiki holds postmortems and decisions next to the tasks they produced, with history, so the same outage doesn't get partially relearned in six months by whoever's on call then.
The owner command center rolls up roadmap progress and open incidents into one view, with a digest that lands Monday morning without anyone spending Sunday night assembling it.
The Claude and ChatGPT connection means "how much of last sprint went to production fixes?" gets answered without pulling an engineer off whatever they're actually fixing right now.
Today's roadmap items sit next to today's production tasks on the same screen, so nobody's planning their day around only half of what's actually on their plate.
Scorecards are leave-adjusted and outcome-based, with no activity tracking behind them: a sprint spent firefighting a production issue doesn't quietly read as underperformance.
Deciding what counts as "roadmap capacity" in the first place
Teams that handle this well tend to stop treating production work as an exception and start budgeting for it as a known cost. A fixed share of each sprint (a fifth, a quarter, whatever the historical average actually is) gets reserved before planning starts, rather than discovered as an overrun after the sprint ends.
That number comes from the same velocity data the forecast already uses, so it's not a guess dressed up as a policy. A team that's spent 30% of the last six sprints on production work isn't an anomaly that needs fixing before next quarter's roadmap gets planned. It's a fact the plan should already account for, and it's exactly the kind of fact ShipSprint's forecast is built to surface on its own, without anyone digging through six sprints of notes to find it.
The alternative, planning as if production work won't happen and then explaining every quarter why the roadmap ran behind, is the more common approach and the less useful one. It produces the same conversation every quarter instead of a number anyone can actually plan around.
There's a version of this that goes further, and it's worth naming: some teams run two effectively separate queues (a roadmap sprint and a standing "keep the lights on" allocation) rather than one blended sprint that quietly absorbs both. Whether that split makes sense depends on how volatile the production load actually is; a product with a stable, mature codebase rarely needs it, while one still shaking out early scaling issues usually does.
Keeping the roadmap honest when reality keeps interrupting it
- Reserve a portion of every sprint's capacity for production work up front, instead of discovering after the fact that it consumed the whole sprint
- Route every incoming bug report through triage, sized and prioritised, before it lands on anyone's board
- Let the forecast, not a gut feeling, say whether the roadmap is actually still on track after a rough week
- Write the postmortem where the next person doing the same debugging will actually find it
None of this makes production work stop happening. It makes it visible enough that the roadmap commitment made in the planning meeting matches the one the team can actually keep.
Same rigor as any engineering board, one plan wider
The mechanics underneath (sprints, story points, cycle time, GitHub-synced cards) are the same ones a team running a single internal project uses; see the software development use case for that side of it. What changes for a live SaaS product is the triage layer sitting in front of the board, and a forecast that accounts for interruption as a fact of life rather than an exception.
Every workspace is an isolated tenant with two-factor authentication and an admin action log, worth checking on security if your product handles customer data and your own SaaS agreement gets asked about vendor practices, which it eventually will.
Common questions
Route bug reports through the triage inbox instead of straight to an engineer, and reserve sprint capacity for them up front. WIP limits then make it visible in real time when production work is pushing roadmap items out, instead of that only becoming clear at the retro.
No, that's still your monitoring stack's job. ShipSprint picks up once an incident becomes work: triaging the fix, tracking it against a merged pull request, and keeping the postmortem next to the tasks it generated.
Yes, through the triage inbox, and each department can run on its own templates within the same subscription rather than working out of a spreadsheet that engineering never sees.
Yes. Any branch referencing the work item moves its card, and any merge closes it, whether it's a feature branch off a sprint or a hotfix branch cut straight from main at 11pm. The sync is part of the Team plan and up.
Look at the last several sprints' actual velocity split between roadmap and production items. That historical ratio is a better starting reservation than a guess, and it's the same data the forecast is already built from.
Related pages
See it on your own work.
A workspace your whole company will actually use is 60 seconds away. No card, no risk, nothing to install.
14-day full-access trial · sample project included · no card required