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-04——2026-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

Flow Insights is your summary page. Every other tab sits in one of five menus along the top — hover or click a menu to see its tabs.

Flow Insights

Flow Insights

Lead time percentiles, Monte Carlo forecast ("what can we close this month?"), current WIP, smelly tickets (WIP older than your p85), and multitasking index. Your daily summary page.

WIP & Flow menu

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.

WIP Over Time

WIP count each week with a 4-week average. Counts items from Active Work Starts (or Start Date if not set) until Done — items waiting in your committed queue are not WIP. Rising WIP means more is starting than finishing.

Work Split

How your work divides across a category column such as type or priority.

Aging WIP

Every in-progress item plotted by current stage and age in days, against your completed lead time percentile bands. Red ring = currently blocked. Items above the p85 band are worth a conversation. Also shows WIP count vs average age over time.

Arrival vs Departure

Items started vs items finished each week. When arrivals keep beating departures, WIP — and lead time — will grow.

Lead Time menu

LT Over Time

Weekly lead time trend. Click a week to see the items behind it.

Histogram

Lead time distribution — where most items cluster. Min/max inputs hide outliers from the view.

Control Chart

Every completed item by finish date and lead time, with p50/p70/p85/p95 lines. Orange dots had blocked time. Spot outliers and trends.

Flow Efficiency

Share of each item's time spent in active (process) stages vs queues. Needs stages marked P or Q in Config (X stages are ignored). 100% usually means dates were entered in bulk rather than as work happened.

Fuzzy Front End

Pre-commitment analysis — how long items wait before the team commits to them. Needs stage columns before your Start column. See the FFE section below.

Time in Stage

P50 and P85 days spent in each stage. The stage with the highest numbers is usually your bottleneck.

Throughput menu

Throughput

Items completed per week, with an optional normal range (XmR) and a distribution chart. Click a bar to see what was delivered that week.

Burn Up

Completed items climbing towards a scope target, with a straight-line forecast and optional faster/slower scenarios.

Epic Progress

Needs an Epic Link column. One row per Epic: progress bar (Done / In progress / Committed / Not started), start date, pace and a finish forecast. Click an Epic to see its stories. How pace and forecast are worked out ↓

Forecast

Monte Carlo forecasting — "when will these N items be done?" and "how many by this date?", at 50/70/85/95% confidence, based on your throughput history.

Health menu

Team Health

Scorecard comparing this period with the previous one of the same length. Traffic lights for throughput, lead time p50, WIP, backlog size, FFE time, flow efficiency and currently blocked. Numbers are period-scoped, so they will differ from the summary bar.

Blocked

Needs a Blocked Days column. Lead time for blocked vs never-blocked items, items blocked right now (needs Currently Blocked), and completed items sorted by blocked days.

Data menu

Breakdown

Metrics side by side for each value of a category column — backlog, committed, WIP, done, throughput, lead time and blocked %. Best used without slice filters.

Data

Full table of every imported item. Useful for checking items flagged elsewhere.

Data Quality

Where every row went (completed, WIP, committed, backlog) and any problems found — e.g. dates out of order, Done before Start, or items committed but not moved in 4+ weeks. The ⚠ next to Items completed links here.

AI (beta)

Builds a prompt from your flow data that you can paste into an AI assistant for a written analysis.

How Epic Progress works out pace and forecast

Each story linked to an Epic is put in one of four groups: Done (has a Done date), In progress (reached Active Work Starts or any later stage), Committed (reached Start Date only) or Not started.

Started is the date the Epic's first story reached Active Work Starts — when real work began, not when it was committed.

Pace = stories done ÷ weeks since Started (counted as at least 1 week).

Forecast = today + (stories left ÷ pace).

Example: an Epic started on 18 Sept. On 9 Oct — 3 weeks later — 6 of its 7 stories are done. Pace = 6 ÷ 3 = 2 stories a week. One story left ÷ 2 a week = half a week, so the forecast is about 12 Oct.

The forecast only appears once an Epic has 3 or more stories done — before that it shows Too early, because one or two data points can't tell you a pace. It is a rough guide, not a promise: it assumes the team keeps the same pace on that Epic and that no new stories are added. If stories keep being added, the date will keep moving — and that in itself is worth a conversation.

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 Active Work Starts, ID, Title, Link, Blocked Days, Currently Blocked and Epic Link.
  3. Drag the workflow stage rows into the correct order — left to right, earliest to latest.
  4. Set each stage's type with its button: P process, Q queue, X discarded (e.g. Cancelled, Withdrawn, Not done). More on discarded stages ↓
  5. The charts update immediately. Use the date range filters to zoom in.
  6. Click Save config to keep your setup as a small JSON file. Next time, drop in the new CSV and click Load config.

If your export gains a new stage column (say you start capturing Withdrawn), just load your old config. Your saved settings are applied and the new column is added to the workflow with a note asking you to check its type. Then Save config again to keep it.

Tips and gotchas

Cancelled / rejected items — mark them Discarded (X)

Each stage in the Config stage list has a type button. Click it to cycle through:

A discarded item stops being WIP or backlog on the date it was discarded, but it is never counted as delivered — it is left out of throughput, lead time, forecasts and Burn Up scope. You'll see discarded items as their own band at the bottom of the CFD, a dashed "Discarded" line on Arrival vs Departure, a "Discarded" row on the Data Quality tab, and "+N discarded" on Epic Progress.

You no longer need to filter cancelled items out of your data. Filtering removes their history — they really were in progress until they were cancelled. Marking the stage X keeps WIP over time accurate. If an item has both a Done date and a Discarded date (export tools fill in every stage an item passes through), whichever column comes later in your file wins — so it works whether your export puts Withdrawn before or after Done.

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.