Skip to main content
Product Management/ipm-plan

IPM Plan

You need a draft plan for iteration planning.

Use this when it's time to prepare for iteration planning and you want to select candidate stories, assess readiness, propose an iteration goal, and output a draft iteration plan.

Related resources: estimation-sizing-guide.md and velocity-forecasting-guide.md -- coaching guides for relative sizing, Planning Poker, and delivery forecasting (standalone, printable).

Process

Step 1: Gather inputs

Ask the user to provide:

  1. Current backlog — the top 8-12 stories in priority order (titles, descriptions, acceptance criteria). Accept pasted text, a file path, or a tracker link.
  2. Recent velocity — how many stories or points the team completed in the last 2-3 iterations. Even a rough number works ("we usually finish 5-6 stories").
  3. Team composition — who's available this iteration (e.g., "2 engineers, 1 designer, 1 PM" or "one pair out on PTO").
  4. Carry-overs — any stories from last iteration that didn't finish, and why.
  5. Iteration dates — start and end date (default: 1-week Monday-Friday).

Step 2: Readiness check

For each of the top stories, assess readiness:

CheckCriteria
Acceptance criteriaDoes it have clear, testable Gherkin criteria?
SizeCan it be completed in 1-3 days? Flag oversized stories as split candidates.
Design readinessAre designs available if this story involves UI?
Open questionsAre there unresolved unknowns that block estimation or implementation?
DependenciesDoes this depend on another story finishing first?

Mark each story as: Ready / Needs refinement / Blocked

Step 3: Sizing and commitment

  1. Give each ready story a relative size: S (half day), M (1-2 days), L (2-3 days)
  2. Based on velocity and team capacity, recommend:
    • Committed stories — what the team should commit to finishing
    • Stretch goals — 1-2 stories to pull in if the team finishes early
  3. Propose an iteration goal — one sentence describing what must be true by the end of the iteration

Step 4: Risk flags

Identify:

  • Stories that overlap in code areas or design surfaces
  • Stories that need cross-functional pairing (Eng + Design, PM + Eng)
  • External dependencies (client decisions, third-party APIs, access needed)
  • Any story where the estimate feels uncertain

Step 5: Generate the iteration plan

Output the plan in this format:


Iteration (number) — (start date) to (end date)

Iteration goal: (One sentence — what must be true by Friday?)

Committed stories

#StorySizePair/OwnerNotes
1(title)S/M/L(assigned pair)(risks, dependencies)
2(title)S/M/L(assigned pair)
...

Stretch goals

  • (Story title) — pull in if committed work finishes early

Carry-over from last iteration

  • (Story title) — (why it carried over, what remains)

Blockers and risks

  • (Known issues that could affect the iteration)

Stories sent back to refinement

  • (Story title) — (what's missing before it's ready)

Step 6: Review

Ask the user:

  • Does the iteration goal capture the right priority?
  • Any stories you want to swap in or out?
  • Are the pair assignments right?
  • Want me to adjust commitment level up or down?

Remember: this draft multiplies your output, not your judgment. You own the final narrative.

Output location

Present the iteration plan as formatted text in the conversation. If the user wants it saved, write to a file path they specify.

Example Output

Input

  • Current backlog: 10 stories from Maple Health's patient portal redesign — top stories include "Display medication refill status on dashboard," "Allow patients to message their care team," "Add insurance card photo upload," "Show upcoming appointment reminders," "Enable push notifications for lab results," "Edit profile: preferred name and pronouns," "Filter appointment history by provider," "Export visit summary as PDF," "Add accessibility alt-text to all dashboard images," and "Integrate with Stripe for copay collection"
  • Recent velocity: Completed 6 stories in Iter 14, 5 in Iter 13, 6 in Iter 12 (~5-6 stories/iteration)
  • Team composition: 2 full-stack engineers (Priya, Devon), 1 product designer (Lena), 1 PM (Marcus) — Devon out Thursday/Friday for travel
  • Carry-overs: "Allow patients to message their care team" — carried from Iter 14; backend thread model done, frontend compose UI incomplete; stalled on open question about attachment file size limits
  • Iteration dates: June 9–13, 2025

Output

Iteration 15 — June 9 to June 13, 2025

Iteration goal: By end of Friday, patients can view medication refill status and upcoming appointment reminders on their dashboard, and the care team messaging UI is complete and demoed.


Readiness check

StoryStatusNotes
Display medication refill status on dashboardReadyClear AC, Figma specs approved
Allow patients to message their care team (carry-over)ReadyResolve file-size question before kickoff Monday
Show upcoming appointment remindersReadyAC complete; no UI changes needed
Edit profile: preferred name and pronounsReadySmall scope, AC well-defined
Add accessibility alt-text to all dashboard imagesReadyNo design dependency
Add insurance card photo uploadNeeds refinementNo AC for error states; upload size limits TBD
Enable push notifications for lab resultsNeeds refinementThird-party push provider not selected yet
Filter appointment history by providerNeeds refinementDesigns not started
Export visit summary as PDFBlockedDepends on visit summary data model — blocked on backend work in separate squad
Integrate with Stripe for copay collectionBlockedStripe sandbox credentials not provisioned; legal review pending

Committed stories

#StorySizePair/OwnerNotes
1Allow patients to message care team (carry-over)MPriya + LenaConfirm 5MB attachment limit with PM Monday AM
2Display medication refill status on dashboardMDevon + PriyaDevon must complete before Thursday travel
3Show upcoming appointment remindersSDevonSchedule for Mon–Tue while Devon is available
4Edit profile: preferred name and pronounsSPriyaBackend only; Lena consults on label copy
5Add accessibility alt-text to dashboard imagesSPriyaCan be paired with any dashboard story in-flight

Projected load: 5 stories × avg mix of S/M = well within 5-6 story velocity; Devon's reduced week accounted for by front-loading his stories.


Stretch goals

  • Filter appointment history by provider — pull in only if designs land by Wednesday; Lena to confirm feasibility Monday
  • Insurance card photo upload — pull in if AC for error states is written by Tuesday IPM refinement slot

Carry-over from last iteration

  • Allow patients to message their care team — frontend compose UI incomplete; blocked mid-sprint on attachment policy question. Remaining: compose view, send action, empty state. Estimated 1.5 days of frontend work.

Blockers and risks

  • Devon's availability — out Thu/Fri; all Devon-owned stories should reach PR-ready state by Wednesday EOD
  • File size limit decision — Marcus to confirm with clinical ops before Monday standup or messaging story risks another carry-over
  • Dashboard code overlap — Stories 1, 2, and 5 all touch DashboardContainer; Priya and Devon should align on component ownership Monday to avoid merge conflicts
  • Push notifications (backlog) — Do not pull in this iteration; provider decision is a prerequisite and adds sprint risk

Stories sent back to refinement

  • Add insurance card photo upload — needs AC for error states (network failure, wrong file type, oversized file) and confirmed upload size limit
  • Enable push notifications for lab results — needs third-party provider selected and sandbox environment available
  • Filter appointment history by provider — needs design exploration before estimation

Step 6: Review questions

  • Does the iteration goal correctly prioritize messaging completion over new feature work?
  • Should "Edit profile: preferred name and pronouns" be swapped for something higher visibility given the upcoming patient advisory board demo June 18?
  • Are you comfortable with Priya holding most of the load Thu/Fri while Devon is out?
  • Want to adjust commitment down to 4 stories given Devon's reduced week, or keep the stretch goal as a safety valve?