Flow Lens

Data guide
Open tool →

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.

No data yet? Click Try with example data on the drop screen. It loads a fictional team dataset — all charts, tabs, and filters fully working, no setup required. Dates are always relative to today so it never looks stale.

CSV structure

The simplest possible file that works:

ID Title To do Doing Done
TKT-001Fix login bug 2026-01-102026-01-132026-01-15
TKT-002Add export button 2026-01-112026-01-14
TKT-003Update 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-004API changeshttps://…2 2026-02-012026-02-032026-02-072026-02-102026-02-12
TKT-005Quick fixhttps://…0 2026-02-042026-02-042026-02-04

TKT-005 skipped review stages — that's fine, the tool handles it.

Column types

Required

Start stage — the first stage in your workflow (e.g. To do). Items without this date are ignored.

Required

End stage — the completion stage (e.g. Done). Items without this date are treated as work in progress.

Stage

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.

Optional

ID — ticket reference. Shown in the data table and control chart tooltips.

Optional

Title — item description. Shown in tooltips.

Optional

Link — URL to the ticket in your system. Makes IDs clickable.

Optional

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.

Optional

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

Flow Insights

Cycle time percentiles, Monte Carlo forecast, current WIP, smelly tickets (WIP over your p85), and multitasking index. Your daily summary page.

CFD

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.

Throughput

Weekly completion rate bar chart. Understand your team's delivery cadence and spot disruptions.

WIP Over Time

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.

Team Health

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

Control Chart

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.

Histogram

Cycle time distribution. Shows where most items cluster. Option to hide zero-day items (common when your source system back-dates stage entries).

Flow Efficiency

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.

Aging WIP

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.

Blocked

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.

Fuzzy Front End

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.

Data

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-19

ISO 8601 — preferred

2026-03-19 14:34:53

ISO 8601 with time

19/03/2026

Day/Month/Year

03/19/2026

Month/Day/Year

All date columns must use the same format throughout the file.

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.

FFE time is measured from the earliest date in any pre-start stage to the date the item entered your Start column.

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

  1. Drop your CSV onto the tool. It will detect date columns automatically.
  2. In the Config panel, map your columns: set Start, End, and optionally ID, Title, Link, Blocked Days.
  3. Drag the workflow stage rows into the correct order — left to right, earliest to latest.
  4. 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.
  5. 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.

Best practice: filter cancelled items out of the CSV before loading. Add a status column to your export and remove rows where status = Cancelled.

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.