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 %}