What Flow Lens needs
A CSV file where each row is one work item and each workflow stage has its own column containing the date the item entered that stage. Column names don't matter — you map them inside the tool.
The data stays entirely in your browser. Nothing is uploaded anywhere.
CSV structure
The simplest possible file that works:
| ID | Title | To do | Doing | Done |
|---|---|---|---|---|
| TKT-001 | Fix login bug | 2026-01-10 | 2026-01-13 | 2026-01-15 |
| TKT-002 | Add export button | 2026-01-11 | 2026-01-14 | — |
| TKT-003 | Update docs | 2026-01-12 | — | — |
Empty cells mean the item hasn't reached that stage yet — that's expected and handled correctly.
With more stages
Add as many workflow stage columns as your process has. Items that skip stages just have an empty cell for that column.
| ID | Title | Link | Blocked Days | To do | Doing | Ready for review | Review | Done |
|---|---|---|---|---|---|---|---|---|
| TKT-004 | API changes | https://… | 2 | 2026-02-01 | 2026-02-03 | 2026-02-07 | 2026-02-10 | 2026-02-12 |
| TKT-005 | Quick fix | https://… | 0 | 2026-02-04 | 2026-02-04 | — | — | 2026-02-04 |
TKT-005 skipped review stages — that's fine, the tool handles it.
Column types
Start stage — the first stage in your workflow (e.g. To do). Items without this date are ignored.
End stage — the completion stage (e.g. Done). Items without this date are treated as work in progress.
Workflow stage columns — one per stage, containing the date entered. You need at least two for the CFD. Add as many as your process has.
ID — ticket reference. Shown in the data table and control chart tooltips.
Title — item description. Shown in tooltips.
Link — URL to the ticket in your system. Makes IDs clickable.
Blocked Days — total days the item was blocked. Used in flow efficiency and the Blocked tab. Can exceed cycle time if blocking was recorded outside your configured stage window.
Currently Blocked — a boolean flag (Yes/No, True/False, 1/0) marking whether the item is blocked right now. Separate from Blocked Days — this is a live state, not a duration. If not mapped, the Blocked tab's "currently blocked" section is unavailable.
What each tab shows
The tool has two rows of tabs. The Flow row gives you the big picture; the Detail row lets you dig in.
Flow row
Cycle time percentiles, Monte Carlo forecast, current WIP, smelly tickets (WIP over your p85), and multitasking index. Your daily summary page.
Cumulative Flow Diagram. Click to place markers — select two points to get a range analysis: items completed, throughput rate, and WIP change per stage across the period. Export the items in the range as CSV.
Weekly completion rate bar chart. Understand your team's delivery cadence and spot disruptions.
WIP count (bars) and average age of in-progress items (line) each week. Rising average age with flat WIP means items are ageing in place — a flow problem.
Scorecard comparing the current period against the previous same-length period. Traffic lights for throughput, cycle time p50, system WIP, backlog size, FFE time, flow efficiency, and currently blocked. All numbers are period-scoped — they will differ from the summary bar which uses your full date range.
Detail row
Scatter plot of every completed item by date and cycle time. Percentile lines (p50/p70/p85/p95) shown. Orange dots had blocked time. Use this to spot outliers and check whether cycle time is trending up or down over time.
Cycle time distribution. Shows where most items cluster. Option to hide zero-day items (common when your source system back-dates stage entries).
Percentage of each item's cycle time spent in active (process) stages vs queues. Requires stages to be marked P or Q in the Config panel. 100% usually means dates were entered in bulk rather than reflecting real activity.
Every in-progress item plotted by current stage and age in days, against your completed cycle time percentile bands. Red ring = currently blocked. Items above the p85 band are statistical outliers — worth a conversation.
Requires a Blocked Days column. Shows: cycle time comparison (blocked vs not blocked), currently blocked items needing action today (requires Currently Blocked column), and completed items sorted by blocked days. Items where blocked days exceed cycle time are flagged — likely a data recording issue in the source system.
Pre-commitment analysis. Only available if you have workflow stage columns configured before your Start column. Shows how long items spend in the backlog before the team commits to them. See the FFE section below.
Full raw data table with column filters. Useful for investigating individual items flagged by other tabs.
Date formats
The tool detects dates automatically using strict matching. Supported formats:
2026-03-19ISO 8601 — preferred
2026-03-19 14:34:53ISO 8601 with time
19/03/2026Day/Month/Year
03/19/2026Month/Day/Year
Fuzzy Front End and the commitment point
The commitment point is the moment the team commits to doing the work — typically a "Ready" or "Selected" stage. In Flow Lens, this is your Start column.
Cycle time is measured from the commitment point to Done. It represents the customer's wait time once the team has accepted the work.
Everything before the commitment point is the Fuzzy Front End (FFE) — the time an idea spends being created, discussed, refined, and prioritised before the team commits to it. This is not part of cycle time.
How Flow Lens handles this
Any workflow stage columns ordered before your Start column are automatically treated as backlog. You don't need to configure anything separately — the order you set in the Config panel is all that matters.
For example, if your stages are:
| Idea | Refine | Ready ← Start | Doing | Done |
|---|---|---|---|---|
| ← FFE (backlog) | ← cycle time measured here | |||
Idea and Refine are FFE. The Fuzzy Front End tab shows how long items spend here before being committed.
If you don't have pre-start stages
If your CSV only has stages from the commitment point onwards (e.g. To do, Doing, Done), the FFE tab and Team Health backlog metrics will show a blank state. That's expected — there's simply no pre-commitment data to analyse.
A note on "Ready"
Some teams debate whether "Ready" is the commitment point or still part of the queue. In Flow Lens, Ready (your Start column) is the commitment point — cycle time starts here. Items sitting in Ready waiting to be picked up are counted as committed WIP, not backlog. This is the stricter interpretation and the one that keeps cycle time honest.
Setting up the tool
- Drop your CSV onto the tool. It will detect date columns automatically.
- In the Config panel, map your columns: set Start, End, and optionally ID, Title, Link, Blocked Days.
- Drag the workflow stage rows into the correct order — left to right, earliest to latest.
- Hide any terminal stages you don't want counted as completions (e.g. a "Cancelled" or "Not done" column) using the × button next to each stage.
- The charts update immediately. Use the date range filters to zoom in.
Tips and gotchas
Cancelled / rejected items
If your data has a terminal stage for cancelled work (e.g. Not done, Rejected), hide it in the stage list. Items that only have a date in a hidden terminal stage are excluded from the CFD Done count. They will still appear as WIP in other charts until you filter them at source.
Items that skip stages
Common and expected. Leave the cell empty — the tool handles this correctly in all charts including the CFD.
Zero cycle time
If many items show 0-day cycle time, your start and end date columns contain the same date in the source data. The histogram will show an empty state — this is correct, not a bug.
Stage ordering matters for the CFD
Drag stages into the correct process order in the Config panel. The CFD is built from that order — wrong order produces meaningless bands.