Organizational Structure
This page provides an overview of FlowFuse's organizational structure and reporting relationships.
Organization Chart
graph TD
Board[Board of Directors]
{% for member in team | dictsortBy(false, 'order') %}
{% set nodeId = member.name | replace(" ", "") | replace("'", "") | replace("-", "") %}
{% if not member.reports_to %}
{{ nodeId }}[{{ member.name }}<br/>{{ member.title }}]
Board --> {{ nodeId }}
{% endif %}
{% endfor %}
{% for member in team | dictsortBy(false, 'order') %}
{% if member.reports_to %}
{% set nodeId = member.name | replace(" ", "") | replace("'", "") | replace("-", "") %}
{% set managerId = member.reports_to | replace(" ", "") | replace("'", "") | replace("-", "") %}
{{ nodeId }}[{{ member.name }}<br/>{{ member.title }}]
{{ managerId }} --> {{ nodeId }}
{% endif %}
{% endfor %}
classDef executive fill:#EFF6FF,stroke:#60A5FA,stroke-width:2px,rx:6,ry:6
classDef head fill:#EEF2FF,stroke:#818CF8,stroke-width:2px,rx:6,ry:6
classDef employee fill:#F3F4F6,stroke:#9CA3AF,stroke-width:1px,rx:6,ry:6
classDef board fill:#FFEFEA,stroke:#FA9170,stroke-width:2px,rx:6,ry:6
class Board board
{% for member in team | dictsortBy(false, 'order') %}{% set nodeId = member.name | replace(" ", "") | replace("'", "") | replace("-", "") %}{% if not member.reports_to %} class {{ nodeId }} executive
{% elif member.title == "CTO" or member.title == "Engineering Manager" or member.title == "VP of Sales" or member.title == "Product Marketing Manager" or member.title == "Director of Product" %} class {{ nodeId }} head
{% else %} class {{ nodeId }} employee
{% endif %}{% endfor %}
Reporting Structure
The organizational structure is automatically generated from team member data files located in src/_data/team/. Each team member's JSON file includes a reports_to field that indicates their direct manager.
Executive Leadership
The CEO reports to the Board of Directors.
{% set ceo = null %}{% for member in team | dictsortBy(false, 'order') %}{% if not member.reports_to %}{% set ceo = member %}{% endif %}{% endfor %} {% set directReports = %}{% for member in team | dictsortBy(false, 'order') %}{% if member.reports_to == ceo.name %}{% set directReports = (directReports.push(member), directReports) %}{% endif %}{% endfor %} Direct reports to (): {% for member in team | dictsortBy(false, 'order') %}{% if member.reports_to == ceo.name %}
- (){% endif %}{% endfor %}
{% for manager in team | dictsortBy(false, 'order') %}{% set hasReports = false %}{% for member in team %}{% if member.reports_to == manager.name %}{% set hasReports = true %}{% endif %}{% endfor %}{% if hasReports and manager.reports_to %}
's Team
() has the following direct reports: {% for member in team | dictsortBy(false, 'order') %}{% if member.reports_to == manager.name %}
- - {% endif %}{% endfor %} {% endif %}{% endfor %}