Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

VSM Visualization

How traditional value streams work

Value-stream mapping on wikipedia.

ValueStreamMap Parts

Each step is represented in a uniform fashion on the diagram. You can scan the diagram and find out that 6 days is the largest lead time, however this takes more effort to do the more steps we add. There's a high cognitive burden when trying to process numbers and find the largest one.

This isn't the only way we can represent the data, and our visulizations shouldn't stop here!

What if we could more easily visulaize the flow of work, and the biggest contraints in the system?

VSM Visualizer (The perfect companion to the VSM)

This script creates a Value Stream Map Visualization in Miro, using Google Sheets as in input.


It's a slightly different way to view the data that's captured in a VSM workshop that can compliment more traditional daigrams.

Running the script

The script connects to miro and sheets APIs, and expects some env vars and an authentication file credentials.json.

Once you have the required auth/setup, run the script with the following commands:


export SHEET_ID='XXX' # or skip this to use the example sheet

python3 ./

Example sheet and miro board: sheet and miro

Controlling the grid (optional env vars):

This part isn't required, but for those wanting more control on how the diagram looks, there are two env vars that you can use.

Env Var Default Info
GRID_X largest value in sheet which is calulated and stored in D2 Specifies how large the grid should be along the X axis
GRID_Y 1 Specifies how large the grid should be along the Y axis

Default grid (one row)

The default values result in a single row for each step, with each neatly fitting below the other and no wrapping or varied spaces between steps.

It's easy to tell which steps are the longest, though for large numbers you'll have to zoom out to see the whole VSM.


Custom grids

It's possible to specify any grid size (e.g 5x5, 2x12, 100x3), with grids repeating in the X axis as needed. This can be desirable to make use of vertical space when you steps have large numbers.

Here's the same data, with GRID_X=5,GRID_Y=5 (creating a 5x5 grid for each step, and for steps with more than 25, multiple grids along the x axis): grids

The script ensure uniform spacing between steps based on the largest possible row size, in this case GRID_Y=5. This means more space between steps that don't have large numbers.

Authentication and Setup

You will need authentication for both miro and google sheets.


Create miro token:

Create miro board (or use existing):

  curl --request POST \
    --url '' \
    --header 'Accept: application/json' \
    --header 'Authorization: Bearer XXX' \
    --header 'Content-Type: application/json' \
    --data '

Env vars for the script:

export MIRO_TOKEN='Bearer XXX'

Google Sheets enable apis and services > sheets oauth > desktop

save as credentials.json

Env vars for the script:

export SHEET_ID='XXX' # or skip to use the example sheet

Also posted as Value Stream Map (VSM) Visualization on


No description, website, or topics provided.







No releases published


No packages published