From 6e1503d31bfb32494b9483ef6b4630e088af8f94 Mon Sep 17 00:00:00 2001 From: Jarvis Jr Hermes Date: Fri, 2 Oct 2026 17:19:08 +0000 Subject: [PATCH] docs: add seven shared Product and Technology squads --- .../organization-structure.architecture.json | 194 +++++++++++++++++- docs/organization/structure.mdx | 16 ++ scripts/portal.test.mjs | 10 + scripts/verify.mjs | 1 + 4 files changed, 216 insertions(+), 5 deletions(-) diff --git a/diagrams/organization-structure.architecture.json b/diagrams/organization-structure.architecture.json index c585e21..0dab5b9 100644 --- a/diagrams/organization-structure.architecture.json +++ b/diagrams/organization-structure.architecture.json @@ -23,7 +23,7 @@ "label": "Management", "sublabel": "CEO / COO", "pos": [ - 660, + 680, 40 ], "size": [ @@ -37,7 +37,7 @@ "label": "Product", "sublabel": "Experience and product outcomes", "pos": [ - 40, + 600, 280 ], "size": [ @@ -51,7 +51,7 @@ "label": "Technology", "sublabel": "Engineering and platform", "pos": [ - 320, + 880, 280 ], "size": [ @@ -65,7 +65,7 @@ "label": "Operations", "sublabel": "Service, resolution and trust", "pos": [ - 600, + 40, 280 ], "size": [ @@ -79,7 +79,7 @@ "label": "Marketing", "sublabel": "Brand and customer growth", "pos": [ - 880, + 320, 280 ], "size": [ @@ -114,6 +114,118 @@ 240, 80 ] + }, + { + "id": "shared-delivery", + "type": "frontend", + "label": "Product & Technology Squads", + "sublabel": "Up to seven cross-functional squads", + "pos": [ + 660, + 520 + ], + "size": [ + 360, + 80 + ] + }, + { + "id": "squad-discovery", + "type": "frontend", + "label": "Discovery & Categories", + "sublabel": "Browse, search and conversion", + "pos": [ + 40, + 760 + ], + "size": [ + 200, + 80 + ] + }, + { + "id": "squad-orders", + "type": "frontend", + "label": "Orders & Delivery", + "sublabel": "Purchase and post-purchase", + "pos": [ + 280, + 760 + ], + "size": [ + 200, + 80 + ] + }, + { + "id": "squad-seller", + "type": "frontend", + "label": "Seller Platform", + "sublabel": "Seller tools and integrations", + "pos": [ + 520, + 760 + ], + "size": [ + 200, + 80 + ] + }, + { + "id": "squad-payments", + "type": "frontend", + "label": "Payments & Wallet", + "sublabel": "Checkout, balances and payouts", + "pos": [ + 760, + 760 + ], + "size": [ + 200, + 80 + ] + }, + { + "id": "squad-trust", + "type": "frontend", + "label": "Trust & Safety", + "sublabel": "Risk and resolution tooling", + "pos": [ + 1000, + 760 + ], + "size": [ + 200, + 80 + ] + }, + { + "id": "squad-data", + "type": "frontend", + "label": "Data & Intelligence", + "sublabel": "Ranking, analytics and ML", + "pos": [ + 1240, + 760 + ], + "size": [ + 200, + 80 + ] + }, + { + "id": "squad-platform", + "type": "frontend", + "label": "Platform & AI", + "sublabel": "Reliability and engineering AI", + "pos": [ + 1480, + 760 + ], + "size": [ + 200, + 80 + ] } ], "connections": [ @@ -158,9 +270,81 @@ "to": "people", "label": "Coordinates", "variant": "default" + }, + { + "id": "product-squads", + "from": "product", + "to": "shared-delivery", + "label": "Shared delivery", + "variant": "default" + }, + { + "id": "technology-squads", + "from": "technology", + "to": "shared-delivery", + "label": "Shared delivery", + "variant": "default" + }, + { + "id": "delivery-discovery", + "from": "shared-delivery", + "to": "squad-discovery", + "label": "Squad", + "variant": "default" + }, + { + "id": "delivery-orders", + "from": "shared-delivery", + "to": "squad-orders", + "label": "Squad", + "variant": "default" + }, + { + "id": "delivery-seller", + "from": "shared-delivery", + "to": "squad-seller", + "label": "Squad", + "variant": "default" + }, + { + "id": "delivery-payments", + "from": "shared-delivery", + "to": "squad-payments", + "label": "Squad", + "variant": "default" + }, + { + "id": "delivery-trust", + "from": "shared-delivery", + "to": "squad-trust", + "label": "Squad", + "variant": "default" + }, + { + "id": "delivery-data", + "from": "shared-delivery", + "to": "squad-data", + "label": "Squad", + "variant": "default" + }, + { + "id": "delivery-platform", + "from": "shared-delivery", + "to": "squad-platform", + "label": "Squad", + "variant": "default" } ], "cards": [ + { + "dot": "cyan", + "title": "Shared delivery squads", + "items": [ + "Product owns priorities and outcomes; Technology owns engineering capability.", + "Each squad combines product ownership, engineering, design, QA and data skills.", + "Functional teams support squads; they are not extra delivery squads." + ] + }, { "dot": "cyan", "title": "Product", diff --git a/docs/organization/structure.mdx b/docs/organization/structure.mdx index aa5f93c..43206ff 100644 --- a/docs/organization/structure.mdx +++ b/docs/organization/structure.mdx @@ -22,6 +22,22 @@ Functional leaders translate company priorities into departmental plans. Team le **Management coordinates the six departments.** Each department has a clear business responsibility and a set of teams that deliver it. +## Product & Technology squads + +Product and Technology share a delivery structure of **up to seven cross-functional squads**. Product sets priorities and business outcomes; Technology provides engineering leadership, technical standards and delivery capability. + +| Squad | Scope | +| --- | --- | +| **Discovery & Categories** | Browsing, search, category journeys and marketplace conversion. | +| **Orders & Delivery** | Purchase and post-purchase experience, order tracking, delivery and customer feedback. | +| **Seller Platform** | Seller Portal, onboarding, integrations and seller-facing tools. | +| **Payments & Wallet** | Checkout, balances, withdrawals and payout integrations, working with Finance. | +| **Trust & Safety** | Risk controls, dispute tooling and safety workflows, working with Operations. | +| **Data & Intelligence** | Analytics, experimentation, offer ranking, recommendations and marketplace ML. | +| **Platform & AI** | Shared platform, reliability, delivery infrastructure and engineering AI tools. | + +Each squad brings together product ownership, engineering, design, quality and data expertise according to its scope. Departmental teams and specialist functions below support these squads; they are not additional delivery squads. Operations retains ownership of customer cases and risk decisions, while Finance retains ownership of financial controls. + ## Departments and teams ### Product diff --git a/scripts/portal.test.mjs b/scripts/portal.test.mjs index 2e0c87c..63069cf 100644 --- a/scripts/portal.test.mjs +++ b/scripts/portal.test.mjs @@ -59,6 +59,16 @@ test('Archify is pinned, licensed and rebuilt, not a remote embed', () => { assert(!wrapper.includes('target="_blank"')); assert(wrapper.includes('Close full-screen diagram')); }); +test('Product and Technology share seven delivery squads', () => { + const spec = JSON.parse(read('diagrams/organization-structure.architecture.json')); + const squads = spec.components.filter(n => n.id.startsWith('squad-')); + assert.equal(squads.length, 7); + for (const dept of ['product','technology']) assert(spec.connections.some(e => e.from === dept && e.to === 'shared-delivery')); + for (const squad of squads) { + assert(spec.connections.some(e => e.from === 'shared-delivery' && e.to === squad.id)); + assert(read('docs/organization/structure.mdx').includes(squad.label)); + } +}); 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')); diff --git a/scripts/verify.mjs b/scripts/verify.mjs index 5b81a57..9872dca 100644 --- a/scripts/verify.mjs +++ b/scripts/verify.mjs @@ -24,6 +24,7 @@ if (process.argv.includes('--build')) { assert(diagram.includes('Coordinates') && diagram.includes('node-technology')); assert(!/A: placement|E: careers|J: advertised/.test(diagram)); assert(!diagram.includes('Example leadership')); + for (const id of ['discovery','orders','seller','payments','trust','data','platform']) assert(diagram.includes(`node-squad-${id}`)); const reporting = read('build/diagrams/organization-reporting/index.html'); assert(reporting.includes('AI Architect') && reporting.includes('Leads')); assert(!/A: assumed|J: direct/.test(reporting));