From 01e2b4df392144bb47b780d166d14732944c8063 Mon Sep 17 00:00:00 2001 From: Jarvis Jr Hermes Date: Sun, 4 Oct 2026 08:50:28 +0000 Subject: [PATCH] docs: align departments and add departmental squads --- .../organization-structure.architecture.json | 140 ++++++++++++++---- docs/organization/structure.mdx | 18 ++- scripts/portal.test.mjs | 21 +++ 3 files changed, 146 insertions(+), 33 deletions(-) diff --git a/diagrams/organization-structure.architecture.json b/diagrams/organization-structure.architecture.json index 983100c..95494ae 100644 --- a/diagrams/organization-structure.architecture.json +++ b/diagrams/organization-structure.architecture.json @@ -23,7 +23,7 @@ "label": "Management", "sublabel": "CEO / COO", "pos": [ - 490, + 820, 40 ], "size": [ @@ -41,7 +41,7 @@ 280 ], "size": [ - 240, + 280, 80 ] }, @@ -51,11 +51,11 @@ "label": "Technology", "sublabel": "Engineering and platform", "pos": [ - 720, + 360, 280 ], "size": [ - 240, + 280, 80 ] }, @@ -65,11 +65,11 @@ "label": "Operations", "sublabel": "Service, resolution and trust", "pos": [ - 40, - 1450 + 680, + 280 ], "size": [ - 240, + 280, 80 ] }, @@ -79,11 +79,11 @@ "label": "Marketing", "sublabel": "Brand and customer growth", "pos": [ - 370, - 1450 + 1000, + 280 ], "size": [ - 240, + 280, 80 ] }, @@ -93,11 +93,11 @@ "label": "Finance & Accounting", "sublabel": "Financial performance and controls", "pos": [ - 700, - 1450 + 1320, + 280 ], "size": [ - 240, + 280, 80 ] }, @@ -107,11 +107,11 @@ "label": "HR & Administration", "sublabel": "People and workplace", "pos": [ - 1030, - 1450 + 1640, + 280 ], "size": [ - 240, + 280, 80 ] }, @@ -122,7 +122,7 @@ "sublabel": "Strategy, priorities and outcomes", "pos": [ 40, - 520 + 480 ], "size": [ 280, @@ -136,7 +136,7 @@ "sublabel": "Research and experience design", "pos": [ 40, - 680 + 620 ], "size": [ 280, @@ -149,8 +149,8 @@ "label": "Product Engineering", "sublabel": "Marketplace software delivery", "pos": [ - 720, - 520 + 360, + 480 ], "size": [ 280, @@ -163,8 +163,8 @@ "label": "Platform & IT", "sublabel": "Reliability and internal systems", "pos": [ - 720, - 680 + 360, + 620 ], "size": [ 280, @@ -177,8 +177,8 @@ "label": "Architecture & Security", "sublabel": "Technical standards and protection", "pos": [ - 720, - 840 + 360, + 760 ], "size": [ 280, @@ -191,8 +191,8 @@ "label": "Quality Engineering", "sublabel": "Testing and release quality", "pos": [ - 720, - 1000 + 360, + 900 ], "size": [ 280, @@ -205,8 +205,64 @@ "label": "Data & AI", "sublabel": "Analytics, ML and AI enablement", "pos": [ - 720, - 1160 + 360, + 1040 + ], + "size": [ + 280, + 80 + ] + }, + { + "id": "operations-team-1", + "type": "frontend", + "label": "Operations Squad", + "sublabel": "Service, resolution, risk and quality", + "pos": [ + 680, + 480 + ], + "size": [ + 280, + 80 + ] + }, + { + "id": "marketing-team-1", + "type": "frontend", + "label": "Marketing Squad", + "sublabel": "Brand, acquisition and retention", + "pos": [ + 1000, + 480 + ], + "size": [ + 280, + 80 + ] + }, + { + "id": "finance-team-1", + "type": "frontend", + "label": "Finance & Accounting Squad", + "sublabel": "Planning, controls and payments", + "pos": [ + 1320, + 480 + ], + "size": [ + 280, + 80 + ] + }, + { + "id": "people-team-1", + "type": "frontend", + "label": "People & Administration Squad", + "sublabel": "Talent, people and workplace", + "pos": [ + 1640, + 480 ], "size": [ 280, @@ -292,6 +348,30 @@ "from": "technology", "to": "technology-team-5", "variant": "default" + }, + { + "id": "operations-1", + "from": "operations", + "to": "operations-team-1", + "variant": "default" + }, + { + "id": "marketing-1", + "from": "marketing", + "to": "marketing-team-1", + "variant": "default" + }, + { + "id": "finance-1", + "from": "finance", + "to": "finance-team-1", + "variant": "default" + }, + { + "id": "people-1", + "from": "people", + "to": "people-team-1", + "variant": "default" } ], "cards": [ @@ -318,6 +398,7 @@ "dot": "cyan", "title": "Operations", "items": [ + "Operations Squad", "Customer Support; Trust & Resolution", "Risk & Fraud", "Operational Quality" @@ -327,6 +408,7 @@ "dot": "amber", "title": "Marketing", "items": [ + "Marketing Squad", "Brand & Community; Creative; SEO", "PPC & Affiliate; Influencer", "CRM" @@ -336,6 +418,7 @@ "dot": "cyan", "title": "Finance & Accounting", "items": [ + "Finance & Accounting Squad", "Financial Planning & Analysis", "Accounting, Tax & Controls", "Treasury & Payment Operations" @@ -345,6 +428,7 @@ "dot": "amber", "title": "HR & Administration", "items": [ + "People & Administration Squad", "Talent Acquisition", "People Operations", "Office & Administration" diff --git a/docs/organization/structure.mdx b/docs/organization/structure.mdx index cd12118..a30031d 100644 --- a/docs/organization/structure.mdx +++ b/docs/organization/structure.mdx @@ -24,7 +24,7 @@ Functional leaders translate company priorities into departmental plans. Team le ## Departments and teams -Product has **two teams** and Technology has **five teams**. Each team belongs to one department, with its own leadership and responsibilities. The departments collaborate on delivery without sharing team ownership. +Product has **two teams** and Technology has **five teams**. Operations, Marketing, Finance & Accounting, and HR & Administration each have **one squad** covering their departmental workstreams. Each team belongs to one department, with its own leadership and responsibilities. The departments collaborate on delivery without sharing team ownership. ### Product @@ -55,7 +55,9 @@ The CTO owns technology direction. The Head of Engineering leads engineering del **Purpose:** keep marketplace trading dependable and resolve customer issues fairly and efficiently. -| Team | Responsibilities | +**Operations Squad** delivers the department’s responsibilities across the following workstreams. + +| Workstream | Responsibilities | | --- | --- | | Customer Support | Buyer and seller assistance, knowledge management, self-service and support workflow automation. | | Trust & Resolution | Disputes, appeals, refunds, warranties, chargebacks and complex customer cases. | @@ -68,7 +70,9 @@ The COO coordinates Operations. Team leads manage specialists and daily service **Purpose:** attract and retain customers, build the Eldorado brand and grow marketplace demand. -| Team / workstream | Responsibilities | +**Marketing Squad** delivers the department’s responsibilities across the following workstreams. + +| Workstream | Responsibilities | | --- | --- | | Brand & Community | Brand positioning, campaigns, organic social, community and brand partnerships. | | Creative | Campaign concepts, visual assets and performance creative. | @@ -83,7 +87,9 @@ The CMO coordinates Marketing. The Brand Team Lead owns Brand & Community, with **Purpose:** maintain financial control, support business decisions and keep marketplace money flows dependable. -| Team / function | Responsibilities | +**Finance & Accounting Squad** delivers the department’s responsibilities across the following workstreams. + +| Workstream | Responsibilities | | --- | --- | | Financial Planning & Analysis | Budgets, forecasts, profitability, management reporting and investment analysis. | | Accounting, Tax & Controls | Accounting, financial reporting, tax, audit coordination and internal controls. | @@ -95,7 +101,9 @@ The CFO coordinates Finance & Accounting and works with executive leadership on **Purpose:** help teams attract, develop and retain people and provide an effective working environment. -| Team | Responsibilities | +**People & Administration Squad** delivers the department’s responsibilities across the following workstreams. + +| Workstream | Responsibilities | | --- | --- | | Talent Acquisition | Recruitment, candidate experience, hiring coordination and workforce demand support. | | People Operations | Employee onboarding, development, performance processes, policies and employee experience. | diff --git a/scripts/portal.test.mjs b/scripts/portal.test.mjs index b676c15..268807d 100644 --- a/scripts/portal.test.mjs +++ b/scripts/portal.test.mjs @@ -77,6 +77,27 @@ test('Product owns two teams and Technology owns five separate teams', () => { } } }); +test('departments share one row and each has delivery teams below it', () => { + const spec = JSON.parse(read('diagrams/organization-structure.architecture.json')); + const page = read('docs/organization/structure.mdx'); + const departments = ['product', 'technology', 'operations', 'marketing', 'finance', 'people']; + const nodes = new Map(spec.components.map(n => [n.id, n])); + assert.equal(new Set(departments.map(id => nodes.get(id).pos[1])).size, 1); + for (const [i, id] of departments.entries()) { + const department = nodes.get(id); + const teams = spec.connections.filter(e => e.from === id).map(e => nodes.get(e.to)); + assert.equal(teams.length, i === 0 ? 2 : i === 1 ? 5 : 1); + for (const team of teams) { + assert(team.pos[1] > department.pos[1] + department.size[1]); + assert.equal(team.pos[0], department.pos[0]); + assert.deepEqual(spec.connections.filter(e => e.to === team.id).map(e => e.from), [id]); + assert(page.includes(team.label)); + } + } + for (const [i, a] of spec.components.entries()) for (const b of spec.components.slice(i + 1)) { + assert(!(a.pos[0] < b.pos[0] + b.size[0] && a.pos[0] + a.size[0] > b.pos[0] && a.pos[1] < b.pos[1] + b.size[1] && a.pos[1] + a.size[1] > b.pos[1]), `${a.id} overlaps ${b.id}`); + } +}); test('organization page presents an operating model, not research notes', () => { const page = read('docs/organization/structure.mdx'); assert(page.includes('operating model') && page.includes('## Departments and teams')); -- 2.54.0