Flow Radar Day 2: Build Your Cycle-Time & PPC Tracker

Yesterday’s “Flow Radar” post showed you how to wire Jira and your CI/CD pipeline into an AI bot that pings Slack with the day’s top three bottlenecks, WIP age, blocked status, and cycle-time outliers. 

That quick win turned dashboards into real-time alerts, giving many of you your first taste of data that talks back. Today, we take the next step: translating those alerts into reliable delivery forecasts by mastering cycle time and percent plan complete (PPC). 

Think of cycle time as the speedometer and PPC as the arrival board, hit both and don’t just move fast, you land close to when you said you would. Let’s unpack the setup, the metrics, and the AI tricks that make predictable flow a daily habit. 

Forecast tomorrow’s drag today, stop spill-over before it starts, the team has to learn how to spot that, let's help them. 

Why These Two Metrics Matter Together

  • Cycle time measures how long work takes once it begins.
  • Percent Plan Complete (PPC) shows how much of what you promised actually crossed the finish line. 

If you achieve one but miss the other, you are fooling yourself; if you achieve both, your sprint predictability soars. 

The Real-World Spark

A multinational company in Peru consistently kept “finishing” construction tasks only to carry 40% of them into the next phase. After capturing cycle-time distributions and PPC on the same dashboard, they discovered that review queues, not on-site work, were the bottleneck. One AI forecast later (flagging every task whose cycle time exceeded its 90th-percentile trend), carry-over dropped to 7% across three iterations, and PPC climbed from 62% to 89%.

Your Own Cycle-Time + PPC Radar

StepWhat to DoTool / Script
1Pull timestamps for started and finished statesETL Python cron job
2Calculate cycle_time_days & build a weekly boxplotdf.groupby(week)['cycle_time_days'].describe()
3Define 90th-percentile threshold as early-warning linect_thresh = df['cycle_time_days'].quantile(0.90)
4Flag any story crossing that line while in progressLLM prompt “cycle-time outlier”
5Compute PPC each Fridaycommitted_done / committed_total
6Forecast tomorrow’s PPC by subtracting current outliersLLM prompt for PPC forecast
7Push outlier list & PPC forecast to Slack channel #flow-radarWebhook integration

Daily Workflow in Practice

  1. Morning stand-up: bot posts
    • 5 items exceed cycle-time threshold; PPC forecast → 74% (-11 pts)
  2. The team swarms the worst outlier, slicing scope or pair-programming.
  3. A mid-day re-run shows the PPC forecast nudging upward; morale spikes.
  4. Sprint review: display the before-and-after PPC chart; stakeholders see predictability, not excuses.

Keep Cycle Time Honest

SymptomRoot CauseFix
Long tail of outliersHidden scope creepEnforce Definition of Ready; slice stories smaller
Cycle time fine, PPC badOver-commitmentUse AI forecast as a capacity brake during planning
Good PPC but growing cycle timeTeam gaming the planTrack WIP age alongside cycle time to expose hidden drag

 

What Good Looks Like

  • 85% of stories finish within one inter-quartile cycle-time range.
  • PPC stays above 85% for three consecutive sprints.
  • Forecast accuracy (bot vs actual PPC) is within ±5%.

Try It Today (30-Minute Challenge)

  1. Export the started and finished timestamps for your last three sprints.
  2. Run the Python snippet below to identify cycle-time outliers and PPC.
  3. Paste the report in Slack and tag the owner for the ugliest card.

     

import pandas as pd
df = pd.read_csv('sprint_data.csv')
df['cycle'] = (pd.to_datetime(df['finished']) - pd.to_datetime(df['started'])).dt.days+1
outliers = df[df['cycle'] > df['cycle'].quantile(0.90)]
ppc = len(df[df.status=='Done']) / len(df) * 100
print(outliers[['key','cycle']])
print(f"PPC = {ppc:.1f}%")
    

 

Tomorrow, we dive into DORA metrics and teach your LLM to translate deploy frequency and lead time into board-ready talking points. Keep your data handy, building our predictability muscle.

Ready to activate your own AI tooling?

Download the sample scripts, wire them into your backlog today (make them better BTW), and post your first cycle-time chart in Slack before tomorrow’s stand-up. 

Then grab a seat in our AI for Scrum Master or AI for Product Owner micro-courses to turn those insights into automated coaching workflows. 

Spots fill fast, hit the link, reserve your cohort, and show up with real data.

Register