PLATFORM 24 queued / 18d avg wait
INBOUND 45 items / week
OUTBOUND 8 items / week
DOWNSTREAM blocked
Demand Intelligence

The Moneyball Move Nobody in Program Management is Making

Jamil Jadallah June 2026 12 min read

You know the conversation. Backlog's too big, velocity's all over the place, and someone says "it's complex" and everyone nods like that ends the argument. It doesn't. It just means you're stuck.

The ceremonies, the labels, the hours spent producing a single-page report. All of it describes what already happened. The forecast lives in the same data. Nobody's asked it the right question.

01 / The Problem

The Problem Is Invisible But You Already Feel It

Every sprint, same ritual. Somewhere in the standups, retros, and PI planning, someone fills out a ticket with labels that mean different things to everyone who touches them. "Backend" means one thing to product, another to engineering, another to whoever built the taxonomy three sprints ago.

Then the report. Hours pulling numbers, cleaning definitions, aligning on what "done" means. One page. Handed up. The question it answers: what happened?

Velocity tells you what shipped. Tags tell you what someone categorized. Neither one tells you where demand is accumulating or where it's going to back up next quarter.

This is the coordination overhead nobody names. Not the meetings themselves. The hours spent producing information about what already happened, while the system accumulates pressure you can't read from a dashboard.
02 / The Move

SAFe Dashboards Won't Fix This

You've already tried it. Better tagging. Power BI, Tableau, every reporting tool that promised visibility. Each one produces a more polished version of the same backward-looking answer. The labels aren't the constraint. The question is wrong.

For a hundred years, baseball teams hired players based on batting average. Then Billy Beane walked into the Oakland A's and asked a question nobody thought was worth asking: not "how many hits," but "what gets a runner on base?"

Beane needed a room of statisticians to answer that question. That was the gate: the SQL, the data pipelines, the two-week analyst queue. AI closed it. The analysis that used to take six weeks now takes an afternoon. The instrument is a prompt.

For program management, the question is: what is actually flowing through my system?

Not whether you shipped on time (velocity answers that). Not whether teams are at capacity (SAFe answers that). The question that changes your leadership conversations: where does demand accumulate, what does the team configuration need to look like to move it, and what structural change actually resolves it? "We need another front-end developer" is the surface answer. The frames produce the structural one.

The Instrument

The instrument is already in your issue tracker. Ninety days of signal: titles, descriptions, created dates, resolved dates.

AI doesn't care about your taxonomy; it reads volume, pattern, and time. Not surveys. Not interviews. Not clean tags. The artifact trail you've been generating since the project started.

The output isn't a status report. It's a forecast.

The Visibility Problem

Your Org Chart and Your Demand Are Different Shapes

ORG CHART CONSTELLATION DEMAND CONSTELLATION PLATFORM BACKEND FRONTEND QA DATA INFRA DEMAND BACKEND API PIPELINES REVIEW ✦ THE INSIGHT The gap between these two shapes is where misalignment lives. This is what the four frames make visible.
Frame 01 / Demand Velocity

What's Actually Flowing

Is your system accumulating or drawing down?

Created (inflow)
Resolved (outflow)
+20 +15 +10 +5 0 −5 −10 W1 W2 W3 W4 W5 W6 W7 W8 W9 W10 W11 W12 W13 ▲ WK 11 +18 NET
Export
Source Jira or Linear
Window 90 days
Fields key, title, status, created, resolved
Strip
Remove assignee, labels, components
Why Claude reads flow, not taxonomy
Prompt Here's a 90-day Jira export: everything the system produced. I haven't filtered columns or cleaned anything. First, scan what's here. Tell me which fields are actually carrying signal about how work enters and exits this system. What's useful, what's noise, and what surprised you. Then, using whatever date fields you find meaningful: for each week in this 90-day window, how many issues entered the system and how many left it? Give me a week-by-week table. Are we accumulating or drawing down? Where are the spikes? What does the trend suggest about where we're headed if nothing changes? [Paste full export here]

What you're looking for: a week-by-week table and a plain-language trend statement.

This is the first time you can say "our system accumulates at X rate" instead of "it feels like the backlog is big." This ends the "are we slow or overloaded?" argument forever. You have data.

Now you know what's flowing through your system. The next question is what skills that flow is actually consuming.

Frame 02 / Skills Signal

What the Work Requires, Not What Your Org Chart Says

Does the work you're doing match the team you have?

% of work demand
% of team capacity
DEMAND TEAM PLATFORM / INFRA 34% 12% API / BACKEND 22% 28% FRONTEND / UI 18% 32% DATA / ANALYTICS 15% 8% MOBILE 8% 12% DOCUMENTATION 3% 8%
Export
WindowSame 90 days
Fieldstitle, description, acceptance criteria
Strip
Removeeverything else
WhyClaude reads the work, not the taxonomy
Prompt Same 90-day export. Don't use the labels or assignees. Those reflect how the team categorized the work, not what the work actually requires. Read the issue titles and descriptions. From the language of the work itself, build your own skill taxonomy. Don't use my org chart categories. What technical capabilities does this work actually demand? Group issues by skill domain, give me frequency and percentage of total demand, and flag anything that was ambiguous. Then tell me where demand is concentrated and which skill categories are carrying more than their share given what I probably have on my team. [Paste full export here]

What you're looking for: a skill frequency table that almost certainly doesn't match your org chart.

This is the "oh" moment. Your org chart doesn't match what the work requires. The mismatch is concrete, not anecdote. You found it by reading the work. Nobody would have told you.

Now you have a demand profile and a skill profile. The last piece is time. Time is where the real argument lives.

Frame 03 / Historical Trend

Is This Structural or Just This Quarter

Is the pattern getting better, worse, or staying the same?

Inflow / outflow ratio (actual)
Projected (no change)
1.0× 2.0× 3.0× 4.0× structural concern PROJECTED → 1.2× 1.6× 2.3× 2.9× 3.6× 4.2× Q1 '24 Q2 '24 Q3 '24 Q4 '24 Q1 '25 Q2 '25
Export
RunFrame 1 query at two windows
Period A90 days (current)
Period B90 days prior (compare)
Prompt I'm pasting two 90-day Jira exports: the period ending [e.g. December 31] and the most recent 90 days ending [e.g. March 31]. Before you compare them, scan each one independently. What do you see in each period on its own? Then compare: has the inflow/outflow ratio changed? Is the type of work accumulating in the queue shifting? Is the skill demand profile evolving or stable? Final question, and I need a direct answer: is this pattern structural or execution variance? Structural means the gap between demand and resolution is consistent regardless of sprint pace. Variance means it spikes around specific events. Tell me which one, show me why, and give me a specific projection for where queue depth sits in 90 days if nothing changes. [Paste Period 1 here] [Paste Period 2 here]

What you're looking for: the difference between "bad quarter" and "this has been building for eight months."

This ends the debate about whether it's a bad quarter or a structural problem. You have the answer. It's structural. This is the sentence that replaces "it feels like" forever.

You now have three things nobody else in your planning meeting has: a flow state, a skill profile, and a trend line. In Frame 4, all three become a proposal.

Frame 04 / Team Configuration

Here's What You Need to Propose

Given demand, skills, and trend: what team configuration actually resolves this?

Platform / Infra
API / Backend
Data / Analytics
Other
CURRENT 18 HC PROPOSED 20 HC (+2) FRONTEND API / BE PLATFORM API / BE FRONTEND +3 HC +1.5 −2 HC
Required Context
Frame 1 outputpaste inflow/outflow ratio
Frame 2 outputpaste skill frequency table
Frame 3 outputpaste trend statement
New exportnone required
Prompt I'm building a staffing proposal and I need it grounded in data, not intuition. My current team: [describe composition, e.g. 3 backend engineers, 2 frontend, 1 DevOps, 1 data engineer] Here's what the last 90 days of analysis shows: - Demand pattern: [paste Frame 1 output] - Skill demand breakdown: [paste Frame 2 output] - Trend and projection: [paste Frame 3 output] Given the demand data, the skill gaps, and the trend: what configuration closes the most critical gap? Don't give me "hire more people." Give me a specific argument: which skills, why those skills over others, and what does queue depth look like in 90 days with and without the change? Then anticipate the three most likely objections from a skeptical VP of Engineering and pre-answer each one with the data.

What you're looking for: a staffing argument with a spine. Not "I need more people." Here's the demand, the gap, the proposal, and the answer to every pushback.

Advocating says you need resources. Advising shows what the data says you need. Frame 4 produces the latter.

The Single Team Is Only Half the Picture

You can read your team. But programs aren't single teams. They're systems. And in systems, teams block each other.

At scale, the question changes: where do teams queue up waiting on each other?

Think of your program like an airport. Different ground crews handle different operations. Each team has a throughput rate. But if refueling is slow, the plane is grounded and every downstream team is blocked. The question isn't "is each team fast?" It's "where is the bottleneck that's preventing the whole system from flowing?"

This is what SAFe dashboards hide. Dependency maps show you're connected. They don't show where work stalls. One constraint, multiple downstream effects. Platform receives 45 items per week, processes 8, queue builds to 24. Downstream teams grounded. The signal is in the artifact trail. You just have to know how to read it.

Program Coordination Canvas

Where Teams Queue Up Waiting on Each Other

UPSTREAM HUB DOWNSTREAM 24 QUEUED MOBILE 8 in / 8 out /wk CLEAR DESIGN 12 in / 9 out /wk 6 QUEUED · BUILDING FRONTEND 18 in / 16 out /wk 3 QUEUED · FLOWING PLATFORM 45 in / 8 out /wk 24 queued · 18d avg wait BOTTLENECK downstream throughput: 8/wk DATA BLOCKED · 14d avg waiting on Platform QA GROUNDED · 11d avg blocked by Platform BACKEND THROTTLED · 5/wk in 8d avg wait

PLATFORM receives 45 items/week, processes 8. Every downstream team is flying on fumes from a single constraint.

Real-Time Health

Velocity charts are historical. By the time you see the problem, it's already a crisis.

The Common Operating Picture gives you live system state. Which teams are green, which are warning, which need a decision today. You glance at it and know the system the way an air traffic controller knows airport operations: by reading the board, not a report.

Common Operating Picture

What Your Leadership Standup Should Show

Product Journey PLATFORM LINE · QUARTERLY INTEGRATION LINE · MONTHLY DEVELOPER LINE · WEEKLY Dev Experience ✓ Smooth CI/CD ⚠ 8 waiting Build Tools ✓ Fast Source Control ✓ Normal Feature Flags ✓ Ready Pipelines ⚠ 12 blocked Deployment ⚠ Waiting on Infra Platform Foundations ⚠ 18 items queued Compliance ✓ On track Infrastructure ● 24 waiting 18d avg wait Identity & Access Data Governance ✓ Flowing Networking ✓ Healthy System Status INFRASTRUCTURE is the system bottleneck: 24 items queued, 18-day wait. ⚠ PLATFORM FOUNDATIONS and CI/CD are backing up due to Infrastructure constraint. ✓ Developer-line work is healthy. Upstream blocks are creating artificial WIP limits.

The Decision Cycle

Boyd's OODA loop: Observe, Orient, Decide, Act, then Observe again. Most organizations complete one cycle per quarter. You can complete one per month.

You complete one full cycle while competitors are still gathering data for their quarterly review. You see problems ten weeks early. You intervene before they become crises.

OODA Loop

One Full Cycle Per Month

NEXT MONTH → 01 OBSERVE WK 1 Run Frames 1 + 2 Capture current state 02 ORIENT WK 2 Run Frame 3 Check the COP 03 DECIDE WK 3 Run Frame 4 Close the gap 04 ACT WK 4 Present the case Make the move

The Monthly Practice

Not a project. A practice. First Monday of the month: export 90-day CSV. Same session, all four frames. Total time once you've done it once: 90 minutes.

Month 1
Snapshot
Frames 1 + 2
Baseline the state
Log the ratio
Month 3
Trend
Add Frame 3
Structural or variance?
Update the trend line
Month 6
Forecast
Frame 4 active
You see problems
10 weeks early

What You Can Now See

The conversations that went in circles. The arguments about capacity that nobody could win because nobody had data. The problems you found out about only after they'd already cost the team two sprints. This wasn't a people problem.

You were trying to manage a system you couldn't read. No instrument for demand velocity. No map of skills versus work. No trend line to show whether this quarter was structural or noise. Gut feel and retrospective damage control were the only tools available.

Each frame replaces one of those unanswerable questions with a readable signal.

BEFORE NOW FRAME 01
“I don’t know if we’re keeping up or falling behind.”
DEMAND VELOCITY
13 weeks of created vs. resolved. The accumulation rate is visible.
FRAME 02
“I can’t prove the team is misaligned to the work.”
SKILLS SIGNAL
Demand % vs. team capacity % by skill category. The gap has a shape.
FRAME 03
“I don’t know if this is a blip or a real problem.”
HISTORICAL TREND
Structural vs. variance, with a projection line that shows where it goes.
FRAME 04
“I can’t propose a staffing change without a fight.”
TEAM CONFIGURATION
Current vs. proposed staffing, grounded in demand, not opinion.

The data does the arguing now. Show up knowing what you know, and leadership stops guessing.