This page is the reference for the flowss engines that strategists, product managers, project managers, consultants, risk managers, service designers and operations leads use every day: strategy maps and canvases (Wardley Maps, Business model canvas, Quadrant Matrix, Argument map), plans and schedules (Gantt & critical path, PERT / CPM network, Roadmap, User story map, Kanban board, Timeline), people and responsibility (Org chart, RACI matrix), customers and services (Service Blueprint, Journey map, Sales / conversion funnel), decisions and risk (DMN, Decision tree, Decision matrix, Risk matrix), the classic business charts (Waterfall, Bullet / KPI, Marimekko) and mind maps (Markmap). Each section explains what the engine draws, gives a minimal example you can paste straight into the Studio, lists the syntax and options, and says exactly what flowss works out or checks for you. Every engine here, apart from Markmap, is built into flowss: wherever a figure shows a number (a total, a float, a conversion rate, an expected value) it is computed from your source rather than typed, so the figure and its arithmetic cannot drift apart.
At a glance
| Engine | Use it for | What flowss works out for you | Reference |
|---|---|---|---|
| Wardley Maps | A value chain plotted against evolution | Dependencies that contradict the value chain, backwards evolution arrows | wardley |
| Business model canvas | The Business Model Canvas and the Lean Canvas | Validated, assumed and unmarked notes; empty blocks; monthly cost and revenue totals | bmc |
| Quadrant Matrix | 2×2 prioritisation, Eisenhower, BCG, risk and stakeholder grids | Points that could not be placed, off-scale coordinates, captions that contradict the axes | quadrant |
| Argument map | Claims with supporting and opposing reasons | Arguments that never reach the claim, wording that contradicts the colour | argmap |
| Gantt & critical path | Project schedules on a working calendar | Critical path, float, over-allocation, missed deadlines, dependency loops, what to shorten | gantt |
| PERT / CPM network | Activity networks with early and late dates | ES, EF, LS, LF and slack in every node; the critical path | pert |
| Roadmap | Product and technology roadmaps in lanes on a time axis | Dependency conflicts with the overlap in days, overdue items, the longest dependency chain, counts by status | roadmap |
| User story map | Releases sliced across a user journey | First-release gaps, walking skeleton, release totals | storymap |
| Kanban board | Work boards with WIP limits | Columns over their WIP limit, cards outside any column | kanban |
| Timeline (history) | Eras and events across years or centuries | Events and eras outside the axis, backwards ranges | timeline |
| Org chart | Organisations from an indented outline | Rows that could not become a card, fields that were dropped | orgchart |
| RACI matrix | Who is Responsible, Accountable, Consulted and Informed | Tasks with no Accountable or more than one, tasks with no Responsible | raci |
| Service Blueprint | Customer journey, frontstage, backstage and support lanes | Misspelt or repeated lanes, step text that did not fit | serviceblueprint |
| Journey map | A customer or user experience, stage by stage, with an emotion curve | Moment of truth, peak, pain points per stage, sharpest drop, pains with no opportunity | journeymap |
| Sales / conversion funnel | Stage-by-stage conversion | Conversion from the previous stage and end to end; stages that rise | funnel |
| DMN | Decision requirements and decision tables | Overlapping rules and inputs no rule answers | dmn |
| Decision tree | Choices under uncertainty, rolled back to an expected value | Expected value on every node, the optimal strategy, risk profile, probabilities that do not sum to 1 | decisiontree |
| Decision matrix | Weighted scoring and Pugh concept selection | Normalised weights, totals, ranking, must-have exclusions, how fragile the winner is | decisionmatrix |
| Risk matrix | A risk register and its likelihood × impact heat map | Scores, ratings, inherent to residual movement, exposure, risks above appetite | riskmatrix |
| Waterfall Chart | Revenue bridges, budget walks and variance analysis | Running totals and the closing figure | waterfall |
| Bullet / KPI | KPIs against targets and qualitative bands | Values past the maximum, unordered bands | bullet |
| Marimekko / Mosaic | Share × volume, market structure | Column widths and segment shares normalised to 100% | marimekko |
| Markmap (Markdown) | Mind maps and outlines from Markdown | Dropped branches, indentation that does not nest | markmap |
Every engine on this page works on every plan, including Free, and none of them is metered: they draw inside flowss (Markmap in your browser), so there is no daily render allowance to use up. Only the optional AI features need AI: there is no AI on Free, your own AI key works from Starter, and hosted AI points start on Plus. See Plans and what they include.
Working with these engines
Opening an engine
- In the Studio, click Engines & templates on the tool rail (or press
/), or the engine name at the top of the code sheet. The Library flyout opens on its Engines tab. - Search for the engine by name or by what you are making: "critical path", "org chart", "RACI", "2x2", "business model", "funnel", or the tool you are replacing, such as "Microsoft Project", "Trello" or "Strategyzer".
- Click the engine. Its starter (its first template) replaces the current figure's source. The switch is one undo step, so
⌘Z(Ctrl+Zon Windows and Linux) brings your source back, but start a New figure (⌥⌘N) first if you want to keep both.
You can also click Open in Studio on any engine's reference page, or filter the template gallery by engine, for example /templates?engine=gantt.
Conventions shared by these engines
- Line-based and forgiving. Each statement sits on its own line. A half-typed document keeps drawing while you type.
- Comments.
#and//start a comment in most engines; the exceptions are noted in each section (in Markmap,#is a Markdown heading, not a comment). Blank lines are ignored. - Quote labels that contain spaces, punctuation or a keyword the engine uses, for example
task api "Service API" 15d. - Nothing is dropped in silence. A line an engine could not read is named in a notice band under the figure, or in the figure's findings, with the line number and what the engine expected there. When nothing could be drawn, the figure says so instead of showing an empty frame.
- Checks feed readiness. The checks of every engine on this page except Roadmap, Journey map, Decision tree, Decision matrix and Risk matrix also feed the readiness chip in the Studio's status panel; those five state their findings in a panel inside the figure itself. Open the chip's detail to see what is Blocking or Holding it at a level, and use Fix beside a finding to hand that one finding to the flowss Studio Agent. See Flow-systems analysis in Studio.
- Drawn inside flowss. All of these engines except Markmap render inside flowss itself: they work offline, your source never leaves flowss, and the render API can draw them on a server for thumbnails, embeds and automated reports. Markmap is drawn in your browser.
- Size budget. Before drawing, the Studio checks the source against a size budget: 300,000 bytes for Gantt, 200,000 for DMN, 60,000 for the other native engines on this page and 100,000 for Markmap. Where an engine has its own caps (listed under Limits and known constraints), those are reached long before the budget, and the figure says which cap was hit. A source past the budget is not drawn and the message begins "Source is … — past the … safe-rendering budget".
Strategy
Wardley Maps
Strategic maps that plot the components of a value chain by visibility to the user (up the page) and evolution (across the page, from Genesis to Commodity). Compatible with the common subset of the onlinewardleymaps.com syntax.
Engine id wardley · Reference Wardley Maps · Upstream docs https://learnwardleymapping.com/
title Tea Shop
anchor Customer [0.95, 0.60]
component Cup of tea [0.85, 0.55]
component Tea [0.65, 0.40]
component Hot water [0.55, 0.45]
component Kettle [0.40, 0.35] inertia
component Power [0.15, 0.80] commodity
note Strategic bet [0.70, 0.85]
evolve Kettle 0.70
Customer -> Cup of tea
Cup of tea -> Tea
Cup of tea -> Hot water
Hot water -> Kettle
Kettle -> Power
Coordinates are [visibility, evolution], each from 0 to 1. Visibility 1 is the top of the map (closest to the user); evolution 0 is the left edge (Genesis) and 1 the right edge (Commodity). The evolution axis is labelled Genesis, Custom built, Product / rental and Commodity / utility.
| Statement | Drawn as |
|---|---|
component Name [v, e] | A circle with its label. Multi-word names need no quotes |
component Name [v, e] inertia | The same, with an inertia bar beside it |
component Name [v, e] commodity | The same, captioned "commodity" |
anchor Name [v, e] | A bold rounded box: the user or need at the top of the chain |
note Text [v, e] | A note box |
market Name [v, e] | A diamond |
build, buy or outsource Name [v, e] | A circle ringed green (build), blue (buy) or amber (outsource), captioned with the method |
pipeline Name [start, end] | A bar spanning an evolution range, attached to the component of that name; if there is none yet, a component is created at mid-height in the middle of the range |
evolve Name 0.7 or evolve Name [v, e] | A red dashed movement arrow to the new evolution |
A -> B (also -->, ->>, →) | A dependency. Add : label after the target for a label |
title Text | The title |
style and annotation lines are accepted but not drawn. # and // start comments.
What flowss checks. A dependency whose target is drawn at the same height or closer to the user than its source (the arrow and the positions contradict each other), dependencies naming unknown components, components declared twice, coordinates outside 0 to 1 (drawn at the edge and reported, never silently clamped), components in no dependency, evolve arrows that point backwards, and maps with no anchor. Diagram Intelligence (⇧⌘X) adds counts by evolution stage and highlights Genesis components that many others depend on.
Business model canvas
Alexander Osterwalder's Business Model Canvas and Ash Maurya's Lean Canvas from one nine-block syntax, with every note marked as validated or assumed and the money in the cost and revenue blocks added up.
Engine id bmc · Reference Business model canvas
title "Clinic booking app"
layout bmc
currency GBP
partners: "Practice management vendors" !, "Insurers" ?
activities: "App development" !, "Clinic onboarding"
resources: "Booking engine" !
value: "Book any clinic in under a minute" !
relationships: "Self-serve onboarding" ?
channels: "Clinic referrals" !, "Search" ?
segments: "Independent clinics, 2-20 staff" ?
costs: "Hosting 2k/mo" !, "Salaries 45k/mo" !
revenue: "Clinic plan 49/mo x 600" ?, "Per-booking fee 0.50"
Layout. layout bmc or layout lean chooses the grid. Without it the layout is inferred from the block names you used, and the readiness check notes that it was inferred. currency GBP (or a symbol such as currency £) labels the totals. title sets the heading.
The nine blocks. Both vocabularies are always accepted, so a canvas survives being reframed. Case, spaces, hyphens and underscores in the key are ignored.
| Position | Business Model Canvas | Lean Canvas | Other accepted keys |
|---|---|---|---|
| partners | Key partners | Problem | key partners, partnerships, kp, suppliers, problems, pains, existing alternatives |
| activities | Key activities | Solution | key activities, ka, solution, mvp |
| resources | Key resources | Key metrics | key resources, kr, assets, metrics, key metrics, kpis |
| relationships | Customer relationships | Unfair advantage | customer relationships, cr, unfair advantage, advantage, moat, defensibility |
| value | Value propositions | Unique value proposition | value proposition, vp, uvp, unique value proposition, high level concept |
| channels | Channels | Channels | ch, route to market |
| segments | Customer segments | Customer segments | customer segments, customers, cs, users, early adopters |
| costs | Cost structure | Cost structure | cost structure, expenses, spend |
| revenue | Revenue streams | Revenue streams | revenue streams, income, pricing |
Write notes after the colon, separated by commas, or open the block on its own line and list notes underneath as bullets:
problem:
- "Teams keep three diagram tools and trust none of them" !
- "Nobody owns the architecture picture" ?
Validation markers. A trailing ! (outside the quotes) marks a validated claim, a trailing ? an unvalidated assumption, and a note with neither is unmarked. "Will clinics pay for this?" keeps its question mark as text and stays unmarked; "Clinics will pay" ? is an assumption. Declaring a block with nothing after it (advantage:) records that you looked and found nothing.
Money. Figures in costs: and revenue: are normalised to a monthly amount and totalled:
| You write | Counted as |
|---|---|
4k/mo | 4,000 a month |
780k/yr | 65,000 a month |
2400/wk | 10,400 a month |
19/mo x 1200 | 22,800 a month (price × quantity) |
0.18/GB x 240k/mo | 43,200 a month (the quantity carries the period) |
1150/day x 84/mo | 96,600 a month (84 billable days a month) |
29/seat/mo | Not added: a unit price with no quantity, counted in an "unpriced" footnote |
What flowss checks. A misspelt block name such as partnrs: (a key the canvas does not know is not a header, so the whole line would otherwise become a note in the block above), blocks never declared, blocks declared empty, and a layout that was inferred rather than stated. The figure itself reports the split of validated, assumed and unmarked notes, the empty blocks and the monthly totals. Each block shows up to 14 notes of up to 180 characters.
Quadrant Matrix
2×2 matrices and quadrant charts: effort and impact, Eisenhower, BCG growth-share, likelihood and impact, Gartner-style magic quadrants, stakeholder power and interest, and SWOT plotted as points. The syntax is compatible with Mermaid's quadrantChart, drawn natively.
Engine id quadrant · Reference Quadrant Matrix
title: Effort vs impact
x-axis: Low effort --> High effort
y-axis: Low impact --> High impact
quadrant-1: Major projects
quadrant-2: Quick wins
quadrant-3: Fill-ins
quadrant-4: Thankless tasks
point: Self-serve onboarding: [0.25, 0.85]
point: Rebuild billing: [0.80, 0.75]
point: Rename settings page: [0.15, 0.20]
point: Migrate legacy reports: [0.85, 0.25] #ef4444
| Statement | Meaning |
|---|---|
title: Text | The title |
x-axis: Low --> High, y-axis: Low --> High | The two ends of each axis. ->, → and ... also work. A single label with no arrow names the whole axis instead |
quadrant-1: to quadrant-4: | Quadrant captions: 1 top right, 2 top left, 3 bottom left, 4 bottom right |
point: Label: [x, y] | A point at x and y from 0 to 1 (brackets optional). A trailing #hex colours it; otherwise it takes its quadrant's accent colour |
Every directive accepts key: value, key:value and key value. A # at the start of a line or # at the end of one starts a comment, as do // and Mermaid's %%. A bare quadrantChart header line is accepted, and Mermaid-style data rows without the point keyword (Campaign A: [0.3, 0.6]) are read too, so Mermaid quadrant charts paste in unchanged.
What flowss checks. Coordinates that are not numbers or are off the 0 to 1 scale (the point is left unplotted and named, never placed at an edge), colours that cannot be read, quadrant captions that contradict the axis labels, axis labels that were dropped, axes with only one end or with identical ends, directives stated twice, points exactly at the centre and points on top of each other. When none of the data reached the figure, it says so rather than showing an empty, finished-looking grid.
Argument map
Argument maps for strategy debates, policy, philosophy, law and critical thinking: a central claim with the reasons for and against it, and rebuttals to those reasons.
Engine id argmap · Reference Argument map
title "Should we move to a four-day week?"
claim C "We should move to a four-day week."
support S1 "Pilots kept output flat with less burnout." for C
object O1 "Customer support needs five-day cover." against C
support S2 "Staggered rotas keep five-day cover." for O1
| Statement | Meaning |
|---|---|
claim ID "Text" | The central claim at the root |
support ID "Text" for TARGET | A reason in favour of a claim or another argument, drawn green |
object ID "Text" against TARGET | An objection, drawn red |
title "Text" | The title |
Arrows point from each argument to whatever it supports or attacks, and rebuttals nest to any depth.
What flowss checks. An argument whose target was never declared (it and everything under it would otherwise vanish from the map), unread lines, and a line whose word contradicts its colour, such as object O1 "…" for C (red, but the wording says it agrees).
Planning and delivery
Gantt & critical path
Project schedules computed from durations, dependencies and a working calendar, never placed by hand. Every date in the document is treated as a claim to check against the computed schedule.
Engine id gantt · Reference Gantt & critical path
title "Platform launch"
start 2026-03-02
calendar mon-fri
holiday 2026-04-03 "Good Friday"
today 2026-04-15
deadline 2026-06-30 "Contract date"
resource alice "Alice Chen"
resource bob "Bob Ortiz"
section "Discovery"
task disc "Discovery workshops" 5d
task spec "Write the specification" 8d after disc
section "Build"
task api "Service API" 15d after spec assign alice
task ui "Web client" 12d after spec assign bob
task join "Integration" 6d after api, ui
milestone beta "Beta release" after join
Project statements
| Statement | Meaning |
|---|---|
title "Text" | The title |
start 2026-03-02 (also project start, starts on) | The project start date |
calendar mon-fri | The working week: mon-fri, mon-sat, sun-thu, mon-thu, tue-sat, all (also 7-day, continuous), or a list of days such as calendar mon tue wed thu |
holiday 2026-04-03 "Name" | A non-working day |
today 2026-04-15 | The status date, for progress and the today line. There is no clock: without this line no today marker is drawn |
deadline 2026-06-30 "Name" | A deadline the computed finish is checked against (up to 24 per document) |
near-critical 3 | The float, in days, below which a task counts as near-critical (default 2, up to 400) |
dateformat DD/MM/YYYY (also dateFormat, date format) | How dates are written: YYYY-MM-DD (default), DD/MM/YYYY, MM/DD/YYYY, DD-MM-YYYY or YYYY/MM/DD. It applies to the whole document wherever the line is written |
section "Name" (also group, phase) | A section heading for the tasks below |
resource id "Name" [capacity N] | A person or team. capacity (default 1) is how much it can carry at once, for example capacity 3 for a crew of three; over-allocation is measured against it |
view network or view bars | Draws the same schedule as an activity-on-node precedence network instead of bars (network, pert, precedence) or as bars (default) |
Task statements: task id "Label" <duration> [modifiers] and milestone id "Label" [modifiers].
| Modifier | Meaning |
|---|---|
Duration 5d | Five working days. 5cd or 5ed is five calendar days (for waiting periods such as curing or shipping); 2w is ten working days and 3cw twenty-one calendar days; 1mo is 20 working days and 1cmo 30 calendar days; a bare 5 is five working days. day, days, wk, week, weeks, month and months are accepted too. Fractions are rounded up |
after a, b (also depends on) | Finish-to-start dependencies on one or more tasks |
after ss:a, ff:a, sf:a | Start-to-start, finish-to-finish and start-to-finish dependencies |
after a +2d, after a-1d | Lag (wait) or lead (overlap) on a dependency |
assign alice or assign alice 50% (also assign alice@50%, and the words assigned, owner) | Assigns resources, optionally part-time |
start no-earlier-than 2026-04-01, start on …, finish no-later-than …, finish on … | Date constraints (also not-before, not-after, by, exactly) |
progress 40% (also done, complete) | Percentage complete |
baseline 2026-03-02 .. 2026-03-20 | The agreed dates, drawn for comparison. The end may be a duration instead |
note "Text" | A note on the task |
Dependencies can also be written on their own lines after the tasks: api -> test, spec ss:-> build, pour -> cure+3cd, a -> b, c.
Note: Declare eachresourceabove the tasks that assign it. Anassignnaming a resource that has not been declared yet is reported ("no resource is called … — declare it withresource …") and the assignment is not made.
Progress (progress 40%) is only checked against dates when the document has a today line; without one, the readiness check notes that progress could not be compared with anything.
What flowss computes. The forward and backward pass, the critical path, total and free float drawn as a whisker on every bar, and a ranking of which critical tasks to shorten to finish sooner and by how much. For the example above the figure reads "to finish sooner, shorten spec by up to 8 working days (the whole task)", followed by join and disc, and confirms that "the deadline of 2026-06-30 (Contract date) is met with 52 working days to spare". When no single task can move the finish date, it says "no single task can be shortened to move the finish date — the critical paths hold each other". A Resource load strip shows each resource's bookings under the bars.
What it flags. Dependency loops (no schedule exists), tasks with no duration, stated starts earlier than predecessors allow, deadlines missed, a resource on overlapping tasks beyond its capacity, tasks connected to nothing, milestones with a duration, near-critical tasks, dependencies naming tasks that do not exist, durations in days in a document that never stated a working week, dates pinned to non-working days, and progress reported on a task that has not started by the document's own today. Criticality is never declared by hand: a crit line is refused, and Mermaid gantt task lines are recognised and you are shown how to rewrite them. Mermaid's own header lines (gantt, axisFormat, tickInterval, weekday, todayMarker) are passed over quietly, and %% lines are treated as comments, so a pasted Mermaid chart gets as far as its task lines. Full details are in Flow-systems analysis in Studio.
PERT / CPM network
Project network diagrams with the forward and backward pass computed and the critical path highlighted. Simpler than Gantt: finish-to-start dependencies only, with no calendar, resources or deadlines.
Engine id pert · Reference PERT / CPM network
title "Phase 1 launch"
unit days
task A "Design" duration 5
task B "Build" duration 10 after A
task C "Docs" duration 4 after A
task D "Test" duration 3 after B
task E "Deploy" duration 1 after C, D
milestone M1 "Launch" after E
| Statement | Meaning |
|---|---|
title "Text" | The title |
unit days | What a duration counts: minutes, hours, days, weeks, months or years (singular or plural). Without it, numbers are printed with no unit rather than an assumed one |
task ID "Label" duration N after X, Y | A task, its duration and its predecessors. Decimals such as duration 2.5 are read. A task with no duration is drawn as 1 and reported |
milestone ID "Label" after X | A zero-duration milestone |
Every node shows its early start (ES), early finish (EF), late start (LS), late finish (LF) and slack. Zero-slack tasks are marked critical in amber, and the total duration is printed with the unit you named.
What flowss checks. Dependencies on undeclared tasks, dependency cycles, ids declared twice, missing or unreadable durations, a duration written with a unit suffix such as 5d (only the number is read; set the unit with unit), a duration given to a milestone (dropped and reported), clauses on a task line that could not be read, and directives stated twice. Diagram Intelligence (⇧⌘X) adds the bottleneck task, near-critical tasks and the maximum number of tasks in parallel.
Tip: Use Gantt when you need a real calendar, resources, deadlines or start-to-start and finish-to-finish links. Gantt can also draw its schedule as a network with view network.
Roadmap
Product, technology and portfolio roadmaps: lanes of work on a quarter, month, half-year, year or Now / Next / Later axis, with status, progress, milestones and dependencies. The bars are the easy part; what the engine adds is the check a slide-deck roadmap never makes, whether the plan is possible. Every dependency is measured, and one whose prerequisite is still running when its dependent is due to start is drawn as a red dashed arrow and named with the overlap in days.
Engine id roadmap · Reference Roadmap
title "Payments platform — 2027 roadmap"
axis quarters 2027-Q1 .. 2027-Q4
today 2027-05-12
milestone pci "PCI DSS 4.0 assessment" 2027-03-31 done
lane "Checkout"
item oneclick "One-click checkout" Q1 done
item wallets "Apple Pay and Google Pay" Q2 .. Q3 in progress 40% after oneclick
milestone "Wallets GA" 2027-09-30 after wallets
lane "Risk and fraud" color: rose
item sca "3-D Secure step-up" 2027-04 .. 2027-06 at risk owner: "Fraud squad" after pci
item "Chargeback automation" Q3 .. Q4 planned after sca
This roadmap reports "every dependency finishes before its dependent starts", names the at-risk item, and gives the longest dependency chain ("PCI DSS 4.0 assessment" → "3-D Secure step-up" → "Chargeback automation", 3 steps, ending 31 Dec 2027). Change oneclick to Q1 .. Q2 and the figure reports, with the line number, that "Apple Pay and Google Pay" starts 1 Apr 2027 while "One-click checkout", which it follows, runs until 30 Jun 2027: 91 days of overlap.
| Statement | Also accepted | Meaning |
|---|---|---|
title, subtitle, note | Free text, quoted or bare. Several note lines are kept in order | |
axis <scale> <range> | timeline, scale, period | The time axis. Scales are months, quarters, halves, years or buckets. The scale may be left out (axis 2027-Q1 .. 2027-Q4 is quarters), and so may the range (it is then fitted to the items). With no axis line the engine infers both and says so |
axis buckets Now (0–6 weeks), Next, Later | horizons Now, Next, Later | A horizon (bucket) axis. Separate the buckets with commas, semicolons, vertical bars or a spaced slash; axis buckets on its own gives Now, Next and Later. A bracketed caption after a bucket is drawn under its name |
today 2027-05-12 | as of, status date | The status date, read from the document and never from the clock. It draws the today line and turns on the overdue and status-against-date checks |
lane "Name" [color: teal] | theme, team, track, stream, workstream, swimlane, pillar, area, group | A horizontal lane. Colours: blue, teal, violet, rose, amber, emerald, sky, indigo, orange, slate, pink, cyan. Items written before any lane go into an unnamed lane |
item [id] "Title" <when> [status] [NN%] [after a, b] [owner: X] | feature, epic, initiative, project, deliverable, or a - bullet | A bar. The fields after the title may come in any order |
milestone [id] "Title" <when> [status] [after a, b] | release, launch, deadline, gate | A diamond. Written before the first lane it is global, drawn on the axis band with a guide line through every lane; inside a lane it sits in that lane |
Time. A point is a date (2027-05-12, 12 May 2027), a month (2027-05, May 2027, May), a quarter (2027-Q2, Q2 2027, Q2'27, Q2), a half (H2 2027, H2), a year (2027) or, on a bucket axis, a bucket name. A range joins two points with .., →, ->, to, an en dash or a spaced hyphen, and Q1-Q2 or Jan-Mar work too. A point covers its whole period, so Q1 .. Q2 runs from 1 January to 30 June. A point with no year takes the axis's year (or the year of today, or the first year written anywhere), and a range whose end is earlier than its start rolls into the next year, so Nov .. Feb crosses New Year. A milestone is a moment: given a period it sits at the end of the period ("by Q2"), and given a range it sits at the range's end and the engine says so.
Status. Four statuses, each drawn with a symbol as well as a colour so the figure survives greyscale printing:
| Status | Drawn as | Also accepted (examples) |
|---|---|---|
planned | Hollow circle, dashed outline | todo, proposed, not started, scheduled, committed |
in progress | Half-filled circle, blue | wip, doing, active, started, in flight, ongoing |
done | Tick, green | complete, completed, shipped, released, delivered, live |
at risk | Warning triangle, amber | blocked, delayed, slipping, late, on hold |
A bare 40% (or progress: 40%) fills that share of the bar. Dependencies are written after a, b (also needs, requires, depends on, blocked by, or the after: field form) and name prerequisites by id or by quoted title; items and milestones may depend on each other, up to 16 prerequisites each.
What flowss computes. Counts by status (the legend doubles as the counts) and by lane, the number of dependencies and how many are in conflict, the longest dependency chain, the items overdue as of the status date, and the column the status date falls in.
What flowss checks. Every finding names its line.
| Finding | Level |
|---|---|
| A dependency conflict: a prerequisite that has not finished when its dependent starts (on a bucket axis, a prerequisite in a later horizon). A milestone that follows an item is late when the item runs past the milestone's date; work after a milestone may start on the milestone's own day | Error |
| A dependency naming nothing on the roadmap, naming itself, or going round in a loop; an id used twice | Error |
With today: an item whose end has passed and is not done, a milestone whose date has passed and is not achieved; an item marked done or in progress that is not due to start yet | Warning |
| An item or milestone partly or wholly outside a declared axis (drawn clipped, or not drawn); an item with no time this notation can read (not drawn) | Warning |
| An unread line or word, an unknown status (with the nearest real status suggested), an unknown lane colour, a range written backwards, a short date that falls on the axis in two years, a lane declared twice, a milestone given a range, progress outside 0 to 100%, or done at less than 100% and planned at more than 0 | Warning |
An axis that was inferred, an empty lane, today on a horizon axis or outside the axis, and a prerequisite sharing a horizon with its dependent (horizons are deliberately coarse, so this is noted, not flagged) | Info |
| A size cap was reached | Gap |
User story map
Jeff Patton-style story maps: the activity backbone across the top, user tasks beneath it, and stories sliced into horizontal release bands, with the gaps in the first release computed.
Engine id storymap · Reference User story map
title "Peer-to-peer marketplace — MVP"
persona "Casual seller clearing out a spare room"
goal "List an item in three minutes and get paid"
release "R1 — Walking skeleton"
release "R2 — Trust and safety"
activity "Discover"
task "Search listings"
R1: "Keyword search" (3)
R2: "Filter by category" (5)
activity "Transact"
task "Pay"
R1: "Card checkout" (8)
later: "Stored wallet balance" (13)
| Statement | Also accepted | Meaning |
|---|---|---|
title "Text" | map | The heading |
persona "Text" | user, actor, role | Who the map is for |
goal "Text" | outcome, objective | What they are trying to achieve |
release "Name" | band, slice, version, increment | A horizontal band, top to bottom in the order declared |
activity "Name" | backbone, epic, stage, phase | A backbone card |
task "Name" | step, subactivity, journey | A column under the current activity |
R1: "Story" (3) | story R1 "Story" (3), card | A story in a band, with its estimate |
The band before the colon can be the release's full name, its leading code (R2:), its number (2:, release 2:, v2:) or any unambiguous prefix (Trust:). later, backlog, someday, future and icebox create a band that always sorts last. A band token that matches no release creates a band of that name rather than losing the card (and is reported), and a story written without a band lands in the first release. Estimates are written (3), [5], (8 pts), 13 points or 5sp, and (?) marks a story as deliberately unestimated. Quotes are optional, and leading -, * and • bullets are ignored.
What flowss computes. For each release: story count, estimated and unestimated stories, total and cumulative points, and which activities it touches and misses. For each activity: tasks, stories and points by band. It also finds the activities with no story in the first release (drawn as dashed gap markers), whether the first release is a true walking skeleton, the smallest release that spans the whole backbone and the heaviest release. It flags unread lines, cards in bands that were never declared and tasks written before any activity (they are kept, under an implicit "Backbone" activity).
Kanban board
Kanban boards for sprints, support queues and operational status, with work-in-progress limits.
Engine id kanban · Reference Kanban board
title "Sprint 47"
column "To do"
card "Design login screen" assignee "Eva" priority high tags ux, auth
card "Wire up SSO" assignee "Marco" priority medium
column "In progress" wip 2
card "Build API" assignee "Sam" priority urgent
column "Done"
card "Spec and RFC" assignee "Eva"
| Statement | Meaning |
|---|---|
column "Name" [wip N] | A column, optionally with a work-in-progress limit shown beside its card count |
card "Title" [assignee "Name"] [priority low/medium/high/urgent] [tags a, b] | A card in the column above it. Priority shows as a coloured stripe on the card's left edge, and the assignee's initials as a chip |
title "Text" | The title |
Note:tagstakes the rest of the line, so put it last, or quote the tag list (tags "ux, auth"). A priority word other thanlow,medium,highorurgent(for examplepriority critical) is read as no priority, so the card gets no stripe.
What flowss checks. A column holding more cards than its wip limit, cards written before any column, cards with an empty title, and a title declared twice. A line it could not read is listed with what it expected, and any cards written after it are named, because they are drawn in the column above.
Tip: To measure flow over time (work in progress, cycle time and throughput), use the Flow metrics (CFD) engine, described in Flow-systems analysis in Studio.
Timeline (history)
Historical and long-range timelines: eras as bands, events as labelled points, and parallel lanes on a shared axis. Built for years, decades and centuries rather than sprint days.
Engine id timeline · Reference Timeline (history)
title "Product history"
axis 2015 2026
era 2015 2018 "Bootstrapped" color amber
era 2018 2026 "Venture-backed" color blue
lane "Product"
event 2016 "First release"
event 2021 "Mobile app"
lane "Company"
event 2018 "Series A"
event 2024 "1,000 customers"
| Statement | Meaning |
|---|---|
axis START END | The span of years. Negative years are BCE, for example axis -3000 2000 |
era FROM TO "Label" [color NAME] | A shaded band. Colours: red, orange, amber, yellow, green, teal, cyan, blue, indigo, violet, purple, pink, slate, stone, grey, gray, black, white, or a hex value |
lane "Name" | Starts a new row of events |
event YEAR "Label" | An event in the current lane |
title "Text" | The title |
Years are whole numbers. Labels in dense periods are moved apart so they stay readable.
What flowss checks. A backwards or zero-length axis, a document with no axis line (the scale is then read off the data, and it says so), events and eras outside the axis, eras that end before they start or have no width, an era line with leftover text after the colour, colours it does not know, empty lanes, events written before any lane (they go into a lane the engine adds), duplicate events, empty labels, quote marks that ended up in a label, and an axis or title declared twice. Negative years are always printed as "N BCE", so a document meaning millions of years is noted, and an axis that crosses from BCE to CE gets a tick labelled 0, a year the calendar does not have.
Tip: Quote era labels. An unquoted label stops at the word color.
People and responsibility
Org chart
Organisational charts from an indented outline: one person or unit per line, with reporting lines given by indentation.
Engine id orgchart · Reference Org chart
title "Acme Engineering"
Jane Smith | CEO
Raj Patel | CTO | 4 direct reports
Ana Ruiz | VP Platform | team 24
Tom Ash | VP Product Engineering | team 31
Ada Okoro | CFO | London
- Each line is a name, then optionally a role and a short meta field, separated by vertical bars. The meta field shows as a small chip (team size, location, headcount).
- Two spaces of indentation put a person under the line above. Tabs count as one level, and odd numbers of spaces round down.
- Several lines with no indentation become several roots, laid out side by side (useful for holding structures or co-leads).
#and//comment lines and blank lines are ignored.
Cards are tinted by depth, connected with elbow lines, and a role that does not fit on one line wraps onto a second. Anything that still does not fit is shortened and listed in a notice band under the chart.
What flowss checks. A row with no name (it would be dropped, and anyone indented under it would move to the card above) and fields beyond the third on a row, which have nowhere to go.
RACI matrix
Responsibility-assignment matrices in RACI or RASCI form.
Engine id raci · Reference RACI matrix
title "Website relaunch"
roles: PM, Design, Eng, QA, Legal
Discovery | A, R, C, -, -
Wireframes | C, A/R, C, -, -
Implementation | A, C, R, R, -
Launch approval | A, I, I, I, R
roles:declares the columns, in order.- Each task row is the task name, a vertical bar, then one cell per role separated by commas.
- Codes:
RResponsible,AAccountable,SSupport (the RASCI variant),CConsulted,IInformed. They are case-insensitive, combinations such asA/Rwork, and-or an empty cell means no assignment. Full words (Responsible,accountable,approver,support,consulted,informed) are accepted too. - Missing cells are padded. Extra cells are dropped and reported in the notice band.
legend: offhides the legend strip.#and//comment lines are ignored.
The matrix is zebra-striped, with a colour-coded chip per code, a role header row and a legend of the codes actually used. Long task names wrap.
What flowss checks. Task rows with no roles: line (every assignment would be lost), cells beyond the number of roles, more than one Accountable on a task (an error, because a RACI matrix exists to name one), no Accountable on a task, no Responsible on a task, rows with no codes at all, and matrices beyond 30 roles or 400 tasks.
Customers and services
Service Blueprint
Lynn Shostack-style service blueprints: five lanes from what the customer sees to the systems that support it, divided by the line of interaction, the line of visibility and the line of internal interaction.
Engine id serviceblueprint · Reference Service Blueprint · Upstream docs https://en.wikipedia.org/wiki/Service_blueprint
title: Restaurant order
subtitle: Sit-down dining
evidence: Signage | Menu card | Plated food | Bill
customer: Arrives → Orders → Eats → Pays
frontstage: Greet and seat | Take order | Serve food | Present bill
backstage: Check stock | Cook order | Plate up | Settle till
support: POS | Inventory DB | Kitchen display | Accounting
| Key | Lane or meaning |
|---|---|
evidence: | Physical evidence: what the customer touches or sees |
customer: | The customer journey, followed by the line of interaction |
frontstage: | Visible employee actions, followed by the line of visibility |
backstage: | Invisible employee actions, followed by the line of internal interaction |
support: | Systems and partners that enable the lanes above |
title:, subtitle:, note: | Headings and notes |
Steps in a lane are separated by a vertical bar, → or ->. Lanes always appear in the canonical order, and a lane you leave out is drawn as a thin empty track so the columns stay aligned. Only lines starting with # are comments.
What flowss checks. Lines that are not key: value, keys that are not one of the eight (a misspelt fronstage: would otherwise leave an empty lane), a lane declared twice (only the second is drawn), lanes declared with no steps, lanes never declared, an empty customer journey (the dividing lines are drawn relative to it), lanes with different numbers of steps (the grid is aligned by position, so step 3 of one lane is not necessarily step 3 of another), step text that did not fit its cell, and a blueprint with so many columns that it had to be drawn wider than requested.
Journey map
Customer and user journey maps: a persona, a row of stages, the rows of notes a workshop puts under each stage, and an emotion curve across the middle. The curve and the headline numbers are computed from the scores you write, so the picture and its conclusions cannot drift apart.
Engine id journeymap · Reference Journey map
title "Switching broadband provider"
persona "Priya Shah"
role: Hybrid worker, parent of two
goal: Faster broadband with no gap in service
quote: "I just need it to work on Monday morning."
phase "Before purchase"
stage "Discover"
actions: Notices video calls dropping | Searches "fibre in my area"
touchpoints: Google search, Comparison site
emotion: -1 Uncertain
pain: Availability checker demands an email address first
opportunity: Postcode-only availability check
stage "Compare"
actions: Compares three providers
emotion: 0 Neutral
pain: Contract terms hidden behind a sales call
phase "During"
stage "Order"
actions: Orders online | Picks an install date
emotion: +1 Relieved
opportunity: Show the install slot before checkout
stage "Install"
actions: Waits in for the engineer
emotion: -2 Furious
pain: Engineer misses the slot
opportunity: Live engineer tracking
owner: Field operations
metric: First-visit success 82%
Document statements. title, subtitle (also scenario or scope), note, persona, phase and stage may be written with or without a colon. # starts a comment. Indentation is only for the reader.
| Statement | Meaning |
|---|---|
persona "Name" | Opens the persona card. The role: (also job, occupation, segment), age:, goal:, needs:, frustrations:, quote: (also says, motto) and context: (also bio, background, about) lines after it fill the card, up to the first phase or stage |
phase "Name" | Groups the stages after it under a coloured band (Before, During and After is the classic split). Optional |
stage "Name" | Opens a column. Every key: value line after it, up to the next stage, belongs to it |
column-width 240 | Widens every stage column, from 150 to 340 pixels |
Stage rows. Each row key has accepted aliases. A key may be repeated and its items add up. Items on one line are separated by a vertical bar or a semicolon; touchpoints and owners also split on commas, and thoughts split only on a vertical bar so a sentence can keep its semicolon. A line starting with - adds exactly one item to the row above it, word for word, which is how you write an item that contains a separator.
| Row | Also accepted |
|---|---|
goal | goals, wants, objective |
actions | action, do, does, doing, steps, activities |
touchpoints | touchpoint, channel, channels, touch points |
thoughts | thought, think, thinking, says, quote, questions |
emotion | mood, sentiment, score, feeling, feels |
pains | pain, pain points, friction, issues, problems |
opportunities | opportunity, ideas, fixes, improvements |
owners | owner, team |
metrics | metric, kpi, kpis, measures |
time | when, duration, timing |
Emotion scores. emotion: -1 Uncertain is a score from -2 (very negative) to +2 (very positive), decimals allowed, followed by an optional word for how it feels. A bare word also works: for example delighted or thrilled is +2, happy, relieved or confident is +1, neutral, ok or calm is 0, frustrated, anxious or confused is -1, and angry, furious or abandoned is -2.
What flowss computes. The header shows the persona card and four tiles: Moment of truth (the lowest-scored stage; ties are all named, and a flat curve has none), Peak (the highest-scored stage, when it is above the low point), Pain points (the total, and where most of them are) and Average emotion (with where the journey starts and ends). Each column shows its pain count, the moment-of-truth column is highlighted, and the emotion curve is a smooth line that never overshoots the scale, tinted above and below zero, with a face on every stage. A Journey insights panel states the sharpest drop between consecutive stages and every stage that carries a pain point with no opportunity against it.
What flowss checks. Every line it could not place is listed with its line number: unread lines, unknown row keys (with the nearest real key suggested, for example "did you mean pains:?"), a persona field written under a stage, a row written before the first stage, an emotion that is not a score, a score outside -2 to +2 (an error; it is drawn at the nearest end of the scale so the curve stays on the chart), a stage scored twice (the later score is drawn), a stage with no score (the curve is drawn dashed across it), duplicate stage names, empty stages, a map with no scores at all, and every cap that was reached.
Tip: Use a Journey map for what the customer experiences and feels; use the Service Blueprint for the front-office and back-office work that produces it.
Sales / conversion funnel
Trapezoidal funnel charts for sales, growth, recruitment and any multi-stage conversion.
Engine id funnel · Reference Sales / conversion funnel
title "Sales funnel"
stage "Visited site" value 10000
stage "Signed up" value 3200
stage "Activated" value 1900
stage "Subscribed" value 410
Each stage "Label" value N [color "#hex"] line is one stage, top to bottom. Every stage shows its value and its conversion from the previous stage, coloured green at 50% or more, amber from 20% to 50% and red below 20%, and the chart ends with the End-to-end conversion percentage. Labels that do not fit inside a narrow stage are moved out beside it.
What flowss checks. A stage larger than the one before it (a funnel that rises), and lines it could not read.
Decisions and risk
DMN
Decision Model and Notation 1.4: decision requirement diagrams and decision tables, with each table checked for rules that overlap and inputs no rule answers. DMN is the companion standard to BPMN: BPMN says when a decision is taken, DMN says what the decision is.
Engine id dmn · Reference DMN
title "Loan origination"
input Applicant "Applicant data"
decision Risk "Risk category"
bkm Scorecard "Affordability scorecard"
source Policy "Credit policy 2026"
Applicant -> Risk
Scorecard -> Risk
Policy -> Scorecard
decision Risk "Risk category" {
hit U
input Age number [18..120]
input Score number [0..850]
output Band enum { Low, Medium, High }
rule <30 | <600 -> High // young, thin file
rule <30 | >=600 -> Medium
rule >=30 | - -> Low
}
Decision requirement diagram
| Statement | Drawn as |
|---|---|
decision ID ["Label"] | A rectangle |
input ID ["Label"] (also inputdata, data) | Input data, a rounded stadium |
bkm ID ["Label"] (also knowledge, model) | A business knowledge model, corners cut |
source ID ["Label"] (also knowledgesource, authority) | A knowledge source, wavy bottom |
A -> B (also -->, =>, →) | A requirement. Its kind is worked out from the two ends: information (solid, filled head) into a decision, knowledge (dashed, open head) from a business knowledge model, authority (dashed, disc head) to or from a knowledge source. Any other pairing is reported as invalid |
Decision tables. Attach a table to a decision with decision ID "Label" { … }, or write table ID "Label" … end. Inside:
| Statement | Meaning |
|---|---|
hit U | The hit policy: U unique (the default, and the figure says when it was defaulted), A any, P priority, F first, C collect (with C+ sum, C< minimum, C> maximum or C# count), O output order, R rule order |
input <expression> [type] [allowed values] | An input column. Types: number, enum, boolean, text. Allowed values: [lo..hi] for numbers, { a, b, c } for labels |
output <name> [type] [allowed values] | An output column |
rule <tests> -> <outputs> | A rule. Cells are separated by vertical bars. Tests use FEEL-style unary tests: - (any), 18, <18, >=600, [18..65], (0..1), North, South, not(North), true. A // or # comment after the rule becomes its annotation |
What flowss checks. Every table's input space is partitioned and checked:
- Overlap: two rules that can both fire. Under unique (U) that is a contradiction; under any (A) it is one only when the outputs differ; under priority, first, collect, output order and rule order it is the intended design and is counted, not flagged.
- Gaps: regions of the input space no rule matches, reported as readable ranges such as
[18..29] | <600 | East. - A column with no declared domain cannot be proven complete, so it is reported as undecidable rather than assumed complete. Rules with the wrong number of cells, and cells using FEEL tests this engine does not implement, are excluded and named, and the table's verdict is marked incomplete.
Limits per document: 48 elements, 120 requirements, 8 tables, and per table 10 inputs, 6 outputs and 100 rules. The coverage analysis also stops, and says "coverage is UNPROVEN, not proven clean", when one input column splits into more than 40 distinct pieces or the combined input space passes 20,000 regions; past 4,000 uncovered regions the gap list is marked as a floor. A column with no declared domain gets an extra "any other value" piece, so it shows up as a gap rather than being assumed covered.
Decision tree
Decision trees for choices under uncertainty, rolled back to an expected value. Every chance node is replaced by the probability-weighted value of its outcomes and every decision by its best alternative, from the right-hand edge back to the root, so the optimal choice is computed rather than asserted. Use it for launch, invest, test-or-not and treatment decisions.
Engine id decisiontree · Reference Decision tree
title "Commercialise the X-200 sensor?"
subtitle "Five-year NPV"
currency $
unit k
risk-profile compare
decision "Commercialise?"
"Launch in-house" cost 1,200 -> chance "Market response"
"Strong" p 0.35 -> 5,200
"Moderate" p 0.45 -> 2,400
"Weak" p rest -> 300
"License to a partner" -> end "Royalty stream" 1,500
"Shelve" -> 0
This tree rolls back to "Best first choice: “Launch in-house”, EV $1,760k — $260k ahead of the next best, “License to a partner” ($1,500k)." The market-response node is worth $2,960k, less the $1,200k launch cost.
Indentation is structure. The first node line is the root. Every other node hangs from a branch, either inline after an arrow ("Launch" -> chance "Demand") or on its own line indented under the branch. A branch whose children are indented beneath it with no node line gets an unnamed node of the obvious kind: chance when its branches carry probabilities, decision when they do not. # and // start a comment outside quotes, and blank lines are ignored.
| Node | Drawn as | Also accepted |
|---|---|---|
decision ["Name"] | A square: a choice you control | |
chance ["Name"] | A circle: an uncertainty nobody controls | uncertainty |
end ["Name"] VALUE | A triangle: a terminal outcome and its payoff. A bare value after an arrow (-> 300) is a terminal too | terminal, payoff |
Branches are "Label" [p 0.35] [cost 1200] [gain 50] [-> TARGET]. The label may be quoted or bare, and a leading - bullet is ignored. Attributes are written key value, key=value or key: value, in any order. The arrow may be ->, => or →.
| Attribute | Meaning |
|---|---|
p (also prob, probability) | The probability of a chance outcome: 0.35, 35%, 1/3, or rest for whatever the other branches leave (one rest per node) |
cost | Paid on taking the branch |
gain | Received on taking the branch |
payoff or value | Ends the branch in a terminal with this value |
Values accept 1,200, 1_200, $1.2M, 450k, 2bn, (300) for a negative and a leading minus.
Directives, written at the root level before or after the tree:
| Directive | Meaning |
|---|---|
title, subtitle, note | Free text; up to four notes |
currency $ and unit k | How values are printed, for example $1,200k or 18.4 QALY |
objective max or objective min | Maximise payoffs (the default) or minimise costs. Under min, terminal values are costs, branch costs add to them and gain subtracts |
measure "EMV" | What node values are called (default EV) |
risk-tolerance 2500 | Exponential utility with this risk tolerance: certainty equivalents are rolled back beside the expected values, and decisions follow the certainty equivalent |
risk-profile on or risk-profile compare | Draws the outcome distribution of the optimal strategy, or the cumulative profiles of every first-choice alternative side by side. The default is off |
probabilities percent | Prints probabilities as 35% (the default is decimals) |
branches orthogonal | Square elbows instead of angled fans |
terminals natural | Terminals at their own depth rather than aligned in one payoff column |
decimals 2 | Fixed display precision (default automatic) |
What flowss computes. The expected value on every node; branch costs paid on the way through, so each terminal shows its gross payoff and its net after every cost on its path; the optimal alternative at every decision, with rejected alternatives struck through and faded, and ties reported; the probability of ending at each terminal when you follow the optimal strategy; and the risk profile: expected value, standard deviation, worst and best case and the chance of a loss (or, under min, of a cost above its expectation). In compare mode it draws each first-choice alternative's cumulative profile and names any alternative that stochastically dominates another. With risk-tolerance, it states the certainty equivalent, the risk premium and whether risk aversion changes the choice. A What the rollback shows panel states the result in words.
What flowss checks. Every finding carries its source line.
| Finding | Level |
|---|---|
| Probabilities under a chance node that do not sum to 1. Its value, and every value that depends on it, is printed as "—" rather than guessed | Error |
A chance outcome with no probability, or a probability outside 0 to 1 (p 35 is 3,500%) | Error |
| A branch that leads nowhere, or a decision or chance node with no branches | Error |
| A line that is not a directive, node or branch; a line whose indentation hangs it where nothing can hang; a value that cannot be read | Error |
| Probabilities within 0.002 of 1, normalised to 1 and said | Warning |
| A probability written on a decision branch; a decision with one alternative or a chance node with one outcome; two branches of one node with the same label | Warning |
| The best alternatives tie exactly, so the marked choice is arbitrary | Warning |
| A size cap was reached and part of the tree was not read | Gap |
Decision matrix
Weighted decision matrices and Pugh concept selection, with the weights normalised and checked, every total computed, the options ranked, and the question a steering group actually asks answered: how much would a weight have to move before the answer changed?
Engine id decisionmatrix · Reference Decision matrix
title "ERP platform selection"
scale 1-5
baseline "Stay on current ERP"
options "Tier-1 suite" | "Cloud mid-market" | "Open-source ERP" | "Stay on current ERP"
group "Capability" weight 60%
"Functional fit" weight 50 : 5 4 3 2
"Manufacturing planning" weight 30 : 5 4 3 2
"Reporting" weight 20 : 4 5 3 2
group "Commercial" weight 40%
"5-year cost" weight 70 unit "£k" lower must <= 1,500 : 1,450 980 620 400
"Vendor viability" weight 30 : 5 4 3 3
This matrix ranks "Cloud mid-market" first at 3.78 of 5 (75.6%), 0.02 ahead of "Tier-1 suite", and marks the result fragile: a cut of under one percentage point in the weight on "5-year cost" would make the two draw level.
Options are the columns. Write them on one line (options A | B | C, separated by vertical bars or commas), or one per line as option "Name" ["caption"]. You can also write an option with its scores in criterion order: option "Name" : 4 5 3.
Criteria are the rows: a quoted label (or criterion Label, or any bare label followed by a colon), its attributes, a colon, then one score per option in option order, separated by spaces or vertical bars.
| Attribute | Meaning |
|---|---|
weight 30, weight 30% or w=0.3 | The criterion's importance |
lower | Lower is better: scores are inverted; on a measured criterion the smallest value is best |
raw or unit "£k" | The cells are measurements, not scores (unit implies raw). They are rescaled onto the score scale, best value to the top and worst to the bottom |
range 200-800 | Fixed anchors for that rescaling (implies raw), so adding an option cannot re-score the others |
must >= 3 or must <= 1,500 | A must-have. An option that fails it is excluded from the ranking whatever its total. must V alone means at least V, or at most V on a lower criterion |
Groups. group "Commercial" weight 40% starts a group; the criteria below it belong to it. When groups carry weights, criterion weights are local to their group and the global weight is group × local (the two-level hierarchy used in tender evaluation). When groups carry no weight they are visual bands and criterion weights are global. Each group row shows every option's sub-score.
Pugh matrices. Write +, ++, S, - or -- instead of numbers (and D for the datum) and the matrix becomes a Pugh concept-selection matrix. Each concept is judged against the datum, named with baseline "Name" or written as a column of D: better (+1, ++ is +2), same (0) or worse (-1, -- is -2). flowss counts Σ+, ΣS and Σ−, the net score and, when criteria carry weights, the weighted net that ranks the concepts. method pugh forces this mode when you write -2 to +2 as numbers.
title "E-bike battery mount concepts"
options "Down-tube rail" | "Integrated frame" | "Rear rack" | "Seat-tube clamp"
baseline "Down-tube rail"
"Theft resistance" weight 3 : D + - S
"Weight balance" weight 2 : D ++ -- S
"Tool-free removal" weight 2 : D - + +
"Cost" weight 1 : D -- + S
Other directives: title, subtitle and up to four note lines; scale 1-5 (the default; scale 10 means 1 to 10, and 0-10 or 1-9 work too); method weighted or method pugh; decimals 2 (0 to 4); and sort rank, which orders the option columns by rank. With numeric scores and a baseline, every other option also gets a vs baseline row: the change in weighted score and how many criteria it beats or loses.
What flowss computes. Weights normalised to 100% (percentages that do not add up to 100 are rescaled, and it says so); each option's weighted total on the score scale and as a percentage of the maximum; the ranking (ties share a rank, excluded options are not ranked); the winner, badged RECOMMENDED, or PROVISIONAL while any error stands, or TIED FIRST when the top two tie (no recommendation is made on a tie); a bar chart of totals split into each criterion's contribution; options that are dominated (no better than another on any criterion); criteria on which every option scores the same; and the sensitivity of the result. The sensitivity names the smallest change to one weight (the others rescaled in proportion) that would let the runner-up draw level, and the smallest single score change that would. It rates the result tied, fragile (a weight move of under 5 percentage points flips it), moderate (under 15 points) or robust.
What flowss checks.
| Finding | Level |
|---|---|
| A line that is not a directive, option or criterion; a weight, score, scale, range or must-have that cannot be read | Error |
| No options or no criteria | Error |
| An option with no score on a criterion (it counts as nothing, so that total is a floor) | Error |
| More scores than options; one cell scored twice; a score outside the scale (clamped), or a datum cell that is not S | Error |
| Pugh symbols mixed with numeric scores | Error |
| Some criteria weighted and this one not (it counts as zero), or every weight zero | Error |
baseline names no option, or a Pugh matrix has no datum | Error |
| Percentage weights that do not sum to 100% (rescaled); a criterion with zero weight | Warning |
| Two options or two criteria with one name; only one option | Warning |
A measurement outside its stated range; the top two tied; every option failing a must-have | Warning |
| A size cap was reached | Gap |
Risk matrix
A risk register and its likelihood × impact heat map, computed from the register: scores, ratings, the sorted register, the movement from inherent to residual risk, the band profile and the appetite check. Use it for enterprise, project, cyber, safety and clinical risk registers.
Engine id riskmatrix · Reference Risk matrix
title "Enterprise risk register"
likelihood-levels: Rare, Unlikely, Possible, Likely, Almost certain
impact-levels: Insignificant, Minor, Moderate, Major, Severe
bands: Low 1-3, Medium 4-6, High 8-12, Critical 15-25
appetite: Medium
risk R1 "Ransomware encrypts the ERP and file shares"
category: Cyber
owner: CISO
likelihood: 4
impact: Severe
control "Immutable offline backups, restore-tested quarterly"
control "EDR on every endpoint"
residual: 2x5
action "Segment the plant network" due: 2027-06 owner: "Head of IT"
target: 1x5
trend: falling
risk R2 "Key supplier insolvency" 3x4 -> 2x3 owner: Procurement category: Supply chain
control "Second source qualified for top 10 parts"
This register reports "2 risks; residual exposure 16 against 32 inherent (−50%); 1 above the Medium appetite". R1 sits above appetite but has a treatment action, so it is not a finding.
Risks. risk [ID] TITLE [inline attributes] (also hazard) opens a risk. The id is optional (R1, CYB-03, 4.2: any first word that contains a digit); risks without one are numbered R1, R2 and so on. The title is quoted, or runs up to the first score or key:. Inline, 4x5 -> 2x4 -> 1x4 is inherent, then residual, then target. # and // start a comment outside quotes, except that a # directly followed by a hex colour is a colour.
| Under a risk | Meaning |
|---|---|
likelihood: 4 (also probability, L, P) | The inherent likelihood, as a level number or a level name |
impact: Severe (also consequence, severity, I, C, S) | The inherent impact |
score: 4x5 (also inherent) | Both at once; L4 I5 and Likely x Major also work |
residual: 2x4 (also current, net) | The position after existing controls. residual likelihood: 2 sets one half |
target: 1x4 | Where the planned actions should bring it |
owner, category, description | Free text |
control TEXT (also mitigation, safeguard) | An existing control. controls: followed by - item lines, or controls: a; b; c, lists several |
action TEXT [due: DATE] [owner: NAME] (also treatment, response, plan) | A planned treatment. actions: lists several the same way |
trend: rising, falling, stable or new | The direction of travel |
Scales. likelihood-levels: and impact-levels: name the levels from lowest to highest, 2 to 7 levels each, so a 4×4 or a 5×6 matrix is one line each. A level can carry a code and a descriptor, A=Catastrophic (hull loss); when codes are declared, cells and the register show the matrix index (such as 4B) instead of an L×I product. size 4x4 gives default level names. With neither, the matrix is the conventional 5×5.
Ratings. bands: Low 1-3, Medium 4-6, High 8-12, Critical 15-25 divides the L×I score into bands; you can also write one band NAME RANGE [colour] per line, or bands: followed by one band per line. Ranges read 1-3, 15+, >=15 or <=3. Colours are green, lime, yellow, amber, orange, red, crimson, teal, blue, purple, grey or a hex value. thresholds: 3, 6, 12 is a shorthand that gives upper bounds and names the bands for you. Every score the matrix can produce must fall in exactly one band.
Rating each cell directly. For matrices that are deliberately not L×I, such as aviation safety tolerability matrices, write matrix followed by one row per likelihood level (highest first, or labelled 5: …), rating each cell with a band name, its initials or its first letter:
likelihood-levels: Extremely improbable, Improbable, Remote, Occasional, Frequent
impact-levels: E=Negligible, D=Minor, C=Major, B=Hazardous, A=Catastrophic
bands:
Acceptable 1-4 green
Tolerable 5-12 amber
Intolerable 15-25 red
matrix
5: T T I I I
4: A T T I I
3: A A T T I
2: A A A T T
1: A A A A T
risk H1 "Runway incursion at night" likelihood: Remote impact: Hazardous owner: "Airside ops"
flowss checks that the matrix is monotonic: no cell may rate below a cell with a lower likelihood or impact.
Other directives: appetite: Medium (a band) or appetite: 6 (a score) flags residual risks rated above it; sort: residual, inherent, id or none orders the register (default residual); view: both, inherent or residual chooses what the heat map plots (default both); and title, subtitle and up to four note lines.
What flowss computes. Likelihood × impact for every position (inherent, residual and target) and the band it falls in, or the cell's rating when you declared a matrix; each risk's current position (residual where assessed, otherwise inherent); the register, sorted by current band, then current score, then impact, then inherent score; the change from inherent to residual, in points and per cent; the count of risks per band, inherent against residual; total exposure (the sum of L×I, inherent against current, and the reduction; product scoring only); and every risk above appetite. The heat map plots residual positions with arrows from the inherent ones and rings risks above appetite in red. Colour is never the only signal: every cell carries its band name and score as text.
What flowss checks. Every finding carries its line number.
| Finding | Level |
|---|---|
| Unread or misplaced lines; levels that cannot be read or are off the scale; a risk with no likelihood or impact; duplicate ids | Error |
A scale outside 2 to 7 levels (the default 5-level scale is used) or naming a level twice; a band declared twice, with no score range, or past the sixth; bands that leave a score uncovered ("No band covers score …") or claim one twice; a matrix with the wrong number of rows or cells, or a cell that names no band; an appetite that names no band | Error |
A non-monotonic matrix; an unterminated quote; something stated twice (the last one is used) | Warning |
| A residual position worse than the inherent one ("are the two positions swapped?"); a residual reduction no control explains; controls listed with no residual assessed; a target worse than the residual | Warning |
| A risk with no owner when other risks name one (when no risk names an owner, one note says so instead); a risk above appetite with no treatment action | Warning |
| A size cap was reached | Gap |
Tip: The Quadrant Matrix can plot risks on likelihood and impact as free points. Use the Risk matrix when you need ratings, bands, residual risk and appetite to be computed and checked.
Financial and KPI charts
These three charts are the business staples. Fuller chart coverage, including general-purpose charting with Plot, Vega-Lite and Plotly, is in Charts and data-visualisation engines.
Waterfall Chart
Waterfall (bridge) charts for revenue bridges, variance analysis and budget walks.
Engine id waterfall · Reference Waterfall Chart
title "Cash bridge (Q1)"
bar "Opening" 1000
delta "Sales" 500
delta "Refunds" -120
delta "Operating costs" -300
total "Closing"
| Statement | Drawn as |
|---|---|
bar "Label" N | An absolute anchor bar from zero, in blue |
delta "Label" N | A floating step: green for increases, red for decreases |
total "Label" | A computed running-total bar from zero. It takes no value |
title "Text" | The title |
Dashed connectors join the steps, and a value axis runs alongside. Totals are rounded to the most decimal places any value was written with.
What flowss checks. A value written after total (ignored and reported), a bar in the middle of a bridge that restarts it, a bridge that never closes with a total, and unread lines.
Bullet / KPI
Stephen Few's bullet graphs: a compact, ink-efficient replacement for gauges and speedometers on KPI dashboards.
Engine id bullet · Reference Bullet / KPI
title "Q1 KPIs"
metric "Revenue ($k)" value 320 target 350 max 400 ranges 200,300,400
metric "NPS" value 52 target 60 max 100 ranges 30,60,100
Each metric "Label" value N [target N] [max N] [ranges a,b,c] line is one bar. ranges are ascending qualitative band edges (poor, ok, good) drawn as grey bands; target is a tick; max sets the scale, and without it the last range (or the value) is used.
What flowss checks. A metric with no value (it would be drawn at zero), a value or target past the maximum, ranges that are not in ascending order, a missing max, and unread lines.
Marimekko / Mosaic
Marimekko (mosaic) charts for market structure and share × volume: each column's width is its weight, and its segments stack to 100%.
Engine id marimekko · Reference Marimekko / Mosaic
title "Revenue by region and product"
column "Americas" 45
"Cloud" 60
"Licence" 25
"Services" 15
column "EMEA" 35
"Cloud" 50
"Licence" 30
"Services" 20
column "APAC" 20
"Cloud" 70
"Services" 30
column "Name" weight starts a column; each following "Segment" value line adds a segment. Segments with the same label share a colour across columns, with a legend. Column widths are normalised to the full width, so weights can be money, headcount or percentages.
Each segment is labelled with its share of its column.
What flowss checks. Because both axes are normalised, a chart missing part of its market would otherwise look complete, so flowss reports: column weights written with % that do not sum to 100; weights without % that sum to between 90 and 110 but not exactly 100 (almost certainly percentages with a row missing); a column whose segments do not make a whole when other columns in the same chart do; empty columns; and unread lines. Weights in absolute units such as money or headcount are left alone.
Ideas and outlines
Markmap (Markdown)
Mind maps drawn from an ordinary Markdown outline: headings and bullets become branches.
Engine id markmap · Drawn in your browser · Reference Markmap (Markdown) · Upstream docs https://markmap.js.org/
# Launch plan
## Research
- Interviews
- Five customers
- Market sizing
## Build
- Beta
- Pricing page
- The level-one heading is the centre of the map. Level-two headings and nested bullets become branches.
- Inline formatting such as bold, italic, code and links works in labels.
- An angle-bracket placeholder such as
<topic>is kept as text rather than swallowed as markup. <!-- markmap: fold -->on a branch starts it folded.
The Mind map outliner appears on the tool rail while the Markmap engine is selected and edits the same document as an outline from the keyboard:
| Key | Does |
|---|---|
Enter | Adds a sibling below |
Tab | Makes the row a subtopic of the one above |
⇧Tab | Moves the row back out one level |
⌥↑ / ⌥↓ | Moves the row up or down |
↑ / ↓ | Moves between rows |
Backspace on an empty row | Removes the row |
Every keystroke rewrites the Markdown source, so undo works as usual. See Data, timeline, TikZ and the diagram tools.
What flowss checks. Branches that were dropped, unterminated comments, maths that fails to typeset, text that was dropped, indentation that does not actually nest, a missing central topic, markmap: directives that set nothing, branches folded shut in the first view, and unfilled placeholders.
Tip: To rearrange a mind map by hand, use Convert to another engine… and pick Weave mind map. The conversion is instant and needs no AI or AI points, and on the Weave canvas every node is a real mind-map node you can branch, fold and colour. Weave is included from the Starter plan up; the Free plan includes the Studio and Sketch. See Plans and what they include.
Choosing between similar engines
| You need | Choose | Rather than |
|---|---|---|
| A schedule on a real calendar, with resources, deadlines and the critical path | Gantt & critical path | Mermaid gantt, which draws bars it is given and computes nothing |
| A quick precedence network with no calendar | PERT / CPM network | Gantt |
| A quarter-by-quarter or Now / Next / Later plan with themes, status and dependencies | Roadmap | Gantt, which wants durations and computes dates |
| Release planning around a user journey | User story map | A flat backlog or a Kanban board |
| Current work status with WIP limits | Kanban board | A story map |
| Flow metrics over time | Flow metrics (CFD), in Process, operations and quality engines | Kanban board |
| A business model one-pager | Business model canvas | A Quadrant Matrix |
| Prioritising a list on two criteria | Quadrant Matrix | A Wardley map |
| Strategy about what to build, buy or outsource as things commoditise | Wardley Maps | A Quadrant Matrix |
| Who does what on each task | RACI matrix | An org chart |
| Reporting lines | Org chart | A RACI matrix |
| A customer's experience across front and back office | Service Blueprint | A swimlane |
| How a customer feels, stage by stage, and where it hurts most | Journey map | A Service Blueprint, or Mermaid journey, which scores tasks but computes no moment of truth |
| Business rules that must be complete and consistent | DMN | A flowchart of decisions |
| One choice under uncertainty, with probabilities and payoffs | Decision tree | A Decision matrix |
| Choosing between several options on many weighted criteria | Decision matrix | A Quadrant Matrix, which can only show two criteria |
| Early concept selection against a reference design | Decision matrix in Pugh mode | Scoring every concept from scratch |
| A risk register with ratings, residual risk and appetite | Risk matrix | A Quadrant Matrix with likelihood and impact axes |
| The causes, barriers and consequences around one hazard | Bowtie risk, in Process, operations and quality engines | A Risk matrix |
| Stage-by-stage drop-off | Sales / conversion funnel | A waterfall |
| How one total became another | Waterfall Chart | A funnel |
| Several KPIs against targets on one screen | Bullet / KPI | Gauges |
| History across centuries | Timeline (history) | Gantt |
| A brainstorm or outline | Markmap, or a Weave mind map | An org chart |
For processes that cross teams, see the Swimlane process engine and the BPMN studio, covered in Process, operations and quality engines. For the full decision guide, see Choosing an engine.
Tips
- Start from a template. Each engine here has ready-made templates, from Eisenhower matrices and lean canvases to launch plans and RACI kick-off matrices. Open the Templates tab in the engine library or see The template gallery.
- Let the engine do the arithmetic. Never type a total, a conversion rate, a critical flag or a float: write the facts and read the result off the figure.
- Mark your assumptions. In the Business model canvas, put
?after every guess and!after every validated fact. The split is shown on the canvas, which turns it into a test plan. - State the calendar. In Gantt, a
calendarline and your holidays turn "5d" into real dates; without them the readiness check notes that the working week was never stated. - Use
todayfor status reports. A Gantt or Roadmap document withtodaydraws the status line and checks reported progress against it, and stays reproducible because nothing depends on the real clock. - Give roadmap items ids.
item wallets "Apple Pay and Google Pay" …lets later lines writeafter walletsinstead of repeating the quoted title, and a renamed title then breaks nothing. - Keep one Accountable per row. The RACI check treats two Accountables on a task as an error.
- Declare domains in DMN.
number [18..120]orenum { … }on every input is what lets flowss prove a table complete. - Use
p restin decision trees. Give one outcome under each chance nodep restand the probabilities always sum to exactly 1, however the others are edited. - Read the sensitivity before the winner. In a Decision matrix, a fragile result means a small change to one weight would change the recommendation; agree the weights before you score.
- Use measurements, not invented scores. Give a Decision matrix criterion
unit "£k"(orraw) and type the real figures; flowss rescales them onto the score scale, andrangekeeps that rescaling stable when options are added. - Record controls with residual positions. In the Risk matrix, every reduction from inherent to residual needs a control that explains it, and every risk above appetite needs an
action. - Score every stage of a journey. A Journey map stage with no
emotion:breaks the curve (it is drawn dashed) and cannot be the moment of truth. - Convert a Markmap outline to Weave when you want to rearrange the map by hand.
- Ask the AI. Describe a plan, a canvas or an org structure in words and the flowss Studio Agent writes the source in the right engine for you (needs AI on your plan).
Limits and known constraints
| Engine | Limit |
|---|---|
| Gantt & critical path | 400 tasks; 1,600 dependencies; 60 sections; 80 resources; 400 holidays; 24 deadlines; durations up to 10,000 days; lags up to 3,650 days; whole days only (fractions are rounded up) |
| PERT / CPM network | Finish-to-start dependencies only; no calendar, resources or deadlines |
| Roadmap | 400 items and milestones; 30 lanes; 48 axis columns (four years of months); 16 prerequisites per item; 4,000 lines; text 240 characters |
| User story map | 10 releases; 24 activities; 80 tasks (16 per activity); 600 stories; 4,000 lines; labels 72 characters |
| Business model canvas | 3,000 lines; 14 notes per block; 180 characters per note |
| RACI matrix | 30 roles; 400 tasks |
| DMN | 48 elements; 120 requirements; 8 tables; 10 inputs, 6 outputs and 100 rules per table |
| Decision tree | 600 nodes; 40 levels deep; 6,000 lines; labels 160 characters; 4 notes |
| Decision matrix | 12 options; 40 criteria; 12 groups; 2,000 lines; labels 160 characters; 4 notes |
| Risk matrix | 150 risks; 12 controls and 8 actions per risk; 2 to 7 levels per axis; 6 bands; 4,000 lines; text 240 characters; ids 16 characters; 4 notes |
| Journey map | 12 stages; 8 items per row in each stage; 400 characters per item; 4,000 lines; columns 150 to 340 pixels wide |
| Wardley Maps | Coordinates from 0 to 1; values outside are drawn at the edge and reported |
| Timeline (history) | Whole years only |
| Kanban board | One WIP limit per column; cards have no dates or ids |
| Markmap | Drawn in your browser, so the render API cannot draw it |
Other constraints:
- Markmap is the only engine on this page drawn in your browser rather than inside flowss.
- Wardley
styleandannotationlines are accepted but not drawn. - Gantt does not accept hand-placed bars or a
critflag; dates in task lines are constraints to be checked, not positions. - The direct Diagram tools (Delete, Duplicate and so on) do not edit these engines. Use the Edit label popover on the canvas, Ask the flowss Studio Agent…, or edit the source.
Troubleshooting
| What you see | What it means | What to do |
|---|---|---|
| A Gantt figure with no schedule and a dependency-loop finding | The dependencies form a cycle, so no schedule exists | Remove or reverse one dependency in the loop named in the finding |
"this looks like a Mermaid gantt task line — write it as task <id> "<label>" <duration> after <id> and leave the dates to the engine" | A Mermaid Gantt line was pasted into the Gantt engine | Rewrite the line as shown |
| "criticality is computed here, never declared — …" | A crit, active or done line was written | Delete it; the critical path is computed |
"Mermaid's excludes — this engine uses calendar mon-fri for the working week and holiday <date> for single days" | A Mermaid excludes line was pasted | Use calendar and holiday |
| A Gantt finding says the working week was never stated | Durations in days with no calendar line | Add calendar mon-fri (or your working week) |
"no resource is called alice — declare it with resource alice "…"" | The task assigns a resource that is not declared above it | Move or add the resource line above the task |
| A red dashed roadmap arrow and "… starts …, but …, which it follows, runs until … — N days of overlap" | A Roadmap dependency conflict: the prerequisite is still running when the dependent starts | Move the dependent later, finish the prerequisite sooner, or remove the dependency if the work can genuinely overlap |
| "… has no time this notation can read …; it is not on the figure." | A roadmap item's time is missing or unreadable | Give it a quarter, month, date or range such as Q2 .. Q3, or one of the bucket names on a horizon axis |
| A Kanban column appears to contain cards it should not | A column line above them could not be read, so they joined the column before it | Fix the column line; write limits as wip 3, not limit 3 |
| A RACI figure shows only the placeholder "Add roles: and task rows …" | There is no roles: line, so every cell was dropped | Add roles: with the column names |
| A Quadrant point is missing | Its coordinates are not numbers or are outside 0 to 1 | Use values from 0 to 1, for example [0.8, 0.6] rather than [80, 60] |
| A Wardley dependency is not drawn | One end does not match a component name exactly | Check the spelling; names are matched case-insensitively, but every word must match |
| A Wardley map reports an inverted chain | A component depends on something drawn at the same height or higher | Move the dependency lower on the map, or reverse the arrow |
| A Service Blueprint lane is empty | The key is misspelt, or the lane was declared twice | Use evidence, customer, frontstage, backstage or support, once each |
| A DMN table says coverage is unproven | A column has no declared domain, a rule has the wrong number of cells, or a cell uses an unsupported test | Declare [lo..hi] or { … } domains, fix the rule, or simplify the test |
| An argument is missing from an argument map | Its for or against target was never declared | Declare the target, or correct the id |
| A Business model canvas note lands in an unexpected block | You used the other canvas's vocabulary, for example problem: on a business model canvas | This is intended: the two canvases share positions. Set layout lean to show the Lean names |
| A bullet metric sits at zero | Its value was not read | Write value 320 with a number |
| A decision tree shows "—" instead of an expected value | "the probabilities under … sum to …, not 1": a chance node's probabilities do not add up, so nothing that depends on it is stated | Correct the probabilities, or write p rest on one outcome |
"… leads nowhere. End it with -> VALUE, or indent the node it leads to beneath it." | A decision-tree branch has no terminal and no child node | Add -> 0 (or the payoff), or indent the next node under the branch |
| A Decision matrix winner is badged PROVISIONAL | An error stands, for example a missing score ("no score for … — it counts as nothing, so that total is a floor") | Fix every error in the findings; the badge becomes RECOMMENDED |
| A Decision matrix makes no recommendation | The top two options tie (TIED FIRST) | Add a discriminating criterion, or revisit the weights |
| An option is badged EXCLUDED | It fails a must criterion | Intended. Relax the must-have only if the requirement really is negotiable |
| "No band covers score … — … left unrated." | The Risk matrix bands leave gaps in the possible L×I scores | Extend the band ranges so every score from 1 to the maximum belongs to exactly one band, or use thresholds: |
| "… falls from … to … with no control listed — name the controls that earn the reduction." | A risk's residual position is lower than its inherent one but it lists no control | Add control lines, or correct the residual |
| "… sits above the … appetite … with no treatment action" | A residual risk is above appetite and has no action | Add an action with an owner and due date, or accept the risk explicitly |
| A Journey map stage is "scored …, outside the −2…+2 scale" | The emotion score is off the scale; it is drawn at the nearest end | Use a score from -2 to +2 |
"…: is not a journey-map row — did you mean …?" | A misspelt row key; the line is not drawn | Use the suggested key, or one of the keys in the Journey map table |
Related pages
- Choosing an engine
- The full engine catalogue
- Flow-systems analysis in Studio
- The Studio editor
- Starting from a template
- The template gallery
- Data, timeline, TikZ and the diagram tools
- The flowss Studio Agent: prompt and quick help
- Software and architecture engines
- Process, operations and quality engines
- Charts and data-visualisation engines
- Weave
- BPMN
- Use cases by role
- Exporting your work
- Plans and what they include
- AI points and limits
