Compare commits

..
Author SHA1 Message Date
jarvis-at-skic ecc234234e docs: separate two Product and five Technology teams
Build and publish Eldorado documentation / build (pull_request) Successful in 32s
2026-10-03 06:41:10 +00:00
jarvis-at-skic 59b4075113 Merge pull request 'docs: shared Product and Technology squads' (#8) from docs/product-technology-squads into main
Build and publish Eldorado documentation / build (push) Successful in 30s
2026-10-02 10:19:50 -07:00
5 changed files with 117 additions and 173 deletions

No files matched your search

@@ -77,7 +77,7 @@
"id": "engineers", "id": "engineers",
"type": "frontend", "type": "frontend",
"label": "Software engineers", "label": "Software engineers",
"sublabel": "Product Engineering teams", "sublabel": "Product Engineering team",
"pos": [ "pos": [
1480, 1480,
40 40
@@ -220,10 +220,10 @@
}, },
{ {
"dot": "amber", "dot": "amber",
"title": "Cross-functional execution", "title": "Interdepartmental collaboration",
"items": [ "items": [
"Product Owners, Designers and Tech Leads align on product outcomes.", "Product Owners, Designers and Tech Leads align on product outcomes.",
"AI Enablement works across engineering teams." "Data & AI enables AI adoption across Technology."
] ]
} }
] ]
+78 -127
View File
@@ -23,7 +23,7 @@
"label": "Management", "label": "Management",
"sublabel": "CEO / COO", "sublabel": "CEO / COO",
"pos": [ "pos": [
680, 490,
40 40
], ],
"size": [ "size": [
@@ -37,7 +37,7 @@
"label": "Product", "label": "Product",
"sublabel": "Experience and product outcomes", "sublabel": "Experience and product outcomes",
"pos": [ "pos": [
600, 40,
280 280
], ],
"size": [ "size": [
@@ -51,7 +51,7 @@
"label": "Technology", "label": "Technology",
"sublabel": "Engineering and platform", "sublabel": "Engineering and platform",
"pos": [ "pos": [
880, 720,
280 280
], ],
"size": [ "size": [
@@ -66,7 +66,7 @@
"sublabel": "Service, resolution and trust", "sublabel": "Service, resolution and trust",
"pos": [ "pos": [
40, 40,
280 1450
], ],
"size": [ "size": [
240, 240,
@@ -79,8 +79,8 @@
"label": "Marketing", "label": "Marketing",
"sublabel": "Brand and customer growth", "sublabel": "Brand and customer growth",
"pos": [ "pos": [
320, 370,
280 1450
], ],
"size": [ "size": [
240, 240,
@@ -93,8 +93,8 @@
"label": "Finance & Accounting", "label": "Finance & Accounting",
"sublabel": "Financial performance and controls", "sublabel": "Financial performance and controls",
"pos": [ "pos": [
1160, 700,
280 1450
], ],
"size": [ "size": [
240, 240,
@@ -107,8 +107,8 @@
"label": "HR & Administration", "label": "HR & Administration",
"sublabel": "People and workplace", "sublabel": "People and workplace",
"pos": [ "pos": [
1440, 1030,
280 1450
], ],
"size": [ "size": [
240, 240,
@@ -116,114 +116,100 @@
] ]
}, },
{ {
"id": "shared-delivery", "id": "product-team-1",
"type": "frontend", "type": "frontend",
"label": "Product & Technology Squads", "label": "Product Management",
"sublabel": "Up to seven cross-functional squads", "sublabel": "Strategy, priorities and outcomes",
"pos": [ "pos": [
660, 40,
520 520
], ],
"size": [ "size": [
360, 280,
80 80
] ]
}, },
{ {
"id": "squad-discovery", "id": "product-team-2",
"type": "frontend", "type": "frontend",
"label": "Discovery & Categories", "label": "Product Design",
"sublabel": "Browse, search and conversion", "sublabel": "Research and experience design",
"pos": [ "pos": [
40, 40,
760 680
], ],
"size": [ "size": [
200,
80
]
},
{
"id": "squad-orders",
"type": "frontend",
"label": "Orders & Delivery",
"sublabel": "Purchase and post-purchase",
"pos": [
280, 280,
760
],
"size": [
200,
80 80
] ]
}, },
{ {
"id": "squad-seller", "id": "technology-team-1",
"type": "frontend", "type": "frontend",
"label": "Seller Platform", "label": "Product Engineering",
"sublabel": "Seller tools and integrations", "sublabel": "Marketplace software delivery",
"pos": [ "pos": [
520, 720,
760 520
], ],
"size": [ "size": [
200, 280,
80 80
] ]
}, },
{ {
"id": "squad-payments", "id": "technology-team-2",
"type": "frontend", "type": "frontend",
"label": "Payments & Wallet", "label": "Platform & IT",
"sublabel": "Checkout, balances and payouts", "sublabel": "Reliability and internal systems",
"pos": [ "pos": [
760, 720,
760 680
], ],
"size": [ "size": [
200, 280,
80 80
] ]
}, },
{ {
"id": "squad-trust", "id": "technology-team-3",
"type": "frontend", "type": "frontend",
"label": "Trust & Safety", "label": "Architecture & Security",
"sublabel": "Risk and resolution tooling", "sublabel": "Technical standards and protection",
"pos": [ "pos": [
1000, 720,
760 840
], ],
"size": [ "size": [
200, 280,
80 80
] ]
}, },
{ {
"id": "squad-data", "id": "technology-team-4",
"type": "frontend", "type": "frontend",
"label": "Data & Intelligence", "label": "Quality Engineering",
"sublabel": "Ranking, analytics and ML", "sublabel": "Testing and release quality",
"pos": [ "pos": [
1240, 720,
760 1000
], ],
"size": [ "size": [
200, 280,
80 80
] ]
}, },
{ {
"id": "squad-platform", "id": "technology-team-5",
"type": "frontend", "type": "frontend",
"label": "Platform & AI", "label": "Data & AI",
"sublabel": "Reliability and engineering AI", "sublabel": "Analytics, ML and AI enablement",
"pos": [ "pos": [
1480, 720,
760 1160
], ],
"size": [ "size": [
200, 280,
80 80
] ]
} }
@@ -233,134 +219,99 @@
"id": "management-product", "id": "management-product",
"from": "management", "from": "management",
"to": "product", "to": "product",
"label": "Coordinates",
"variant": "default" "variant": "default"
}, },
{ {
"id": "management-technology", "id": "management-technology",
"from": "management", "from": "management",
"to": "technology", "to": "technology",
"label": "Coordinates",
"variant": "default" "variant": "default"
}, },
{ {
"id": "management-operations", "id": "management-operations",
"from": "management", "from": "management",
"to": "operations", "to": "operations",
"label": "Coordinates",
"variant": "default" "variant": "default"
}, },
{ {
"id": "management-marketing", "id": "management-marketing",
"from": "management", "from": "management",
"to": "marketing", "to": "marketing",
"label": "Coordinates",
"variant": "default" "variant": "default"
}, },
{ {
"id": "management-finance", "id": "management-finance",
"from": "management", "from": "management",
"to": "finance", "to": "finance",
"label": "Coordinates",
"variant": "default" "variant": "default"
}, },
{ {
"id": "management-people", "id": "management-people",
"from": "management", "from": "management",
"to": "people", "to": "people",
"label": "Coordinates",
"variant": "default" "variant": "default"
}, },
{ {
"id": "product-squads", "id": "product-1",
"from": "product", "from": "product",
"to": "shared-delivery", "to": "product-team-1",
"label": "Shared delivery",
"variant": "default" "variant": "default"
}, },
{ {
"id": "technology-squads", "id": "product-2",
"from": "product",
"to": "product-team-2",
"variant": "default"
},
{
"id": "technology-1",
"from": "technology", "from": "technology",
"to": "shared-delivery", "to": "technology-team-1",
"label": "Shared delivery",
"variant": "default" "variant": "default"
}, },
{ {
"id": "delivery-discovery", "id": "technology-2",
"from": "shared-delivery", "from": "technology",
"to": "squad-discovery", "to": "technology-team-2",
"label": "Squad",
"variant": "default" "variant": "default"
}, },
{ {
"id": "delivery-orders", "id": "technology-3",
"from": "shared-delivery", "from": "technology",
"to": "squad-orders", "to": "technology-team-3",
"label": "Squad",
"variant": "default" "variant": "default"
}, },
{ {
"id": "delivery-seller", "id": "technology-4",
"from": "shared-delivery", "from": "technology",
"to": "squad-seller", "to": "technology-team-4",
"label": "Squad",
"variant": "default" "variant": "default"
}, },
{ {
"id": "delivery-payments", "id": "technology-5",
"from": "shared-delivery", "from": "technology",
"to": "squad-payments", "to": "technology-team-5",
"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" "variant": "default"
} }
], ],
"cards": [ "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", "dot": "cyan",
"title": "Product", "title": "Product",
"items": [ "items": [
"Orders; Categories", "Product Management",
"Sellers & Operations", "Product Design"
"Data & Intelligence; Product Design"
] ]
}, },
{ {
"dot": "amber", "dot": "amber",
"title": "Technology", "title": "Technology",
"items": [ "items": [
"Product Engineering; Quality Engineering", "Product Engineering",
"Platform & Reliability; Architecture & Security", "Platform & IT",
"AI Enablement; Internal IT" "Architecture & Security",
"Quality Engineering",
"Data & AI"
] ]
}, },
{ {
+16 -34
View File
@@ -22,52 +22,34 @@ 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. **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 ## 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 ### Product
**Purpose:** improve the buyer and seller experience and turn marketplace opportunities into valuable product capabilities. **Purpose:** improve the buyer and seller experience and turn marketplace opportunities into valuable product capabilities.
| Team | Responsibilities | | Team | Responsibilities |
| --- | --- | | --- | --- |
| Orders | Purchase and post-purchase journeys, order status, delivery experience, dispute flows, feedback and loyalty. | | Product Management | Product strategy, roadmaps, priorities and outcome measurement across discovery, categories, orders, seller tools, payments and operational workflows. |
| Categories | Category experiences, including Boosting and Currency, discovery, conversion and category-specific user journeys. | | Product Design | User research, interaction design, design consistency and accessible buyer and seller experiences. |
| Sellers & Operations | Seller Portal, seller integrations, onboarding and verification, balances and withdrawals, invoicing and operational tooling. |
| Data & Intelligence | Product analytics, experimentation, offer ranking, recommendations and decision support. |
| Product Design | User research, interaction design, design consistency and accessible buyer and seller experiences across product teams. |
Product Owners, Designers and Tech Leads work together on each product area. Product owns priorities and outcomes; Technology owns engineering execution and technical quality. Product Management owns what to improve and why. Product Design shapes the experience. Both work with Technology teams while remaining within Product.
### Technology ### Technology
**Purpose:** build and operate a secure, reliable marketplace and improve the effectiveness of engineering. **Purpose:** build and operate a secure, reliable marketplace and improve the effectiveness of engineering.
| Team / function | Responsibilities | | Team | Responsibilities |
| --- | --- | | --- | --- |
| Product Engineering | Develop and maintain marketplace capabilities in cross-functional product teams. | | Product Engineering | Build and maintain marketplace capabilities, including search, orders, seller tools, checkout, wallet and operational tooling. |
| Platform & Reliability | Shared platform services, delivery infrastructure, observability, availability and performance. | | Platform & IT | Platform services, delivery infrastructure, observability, reliability, performance, internal systems, employee devices and identity administration. |
| Architecture & Security | Technical standards, system design, infrastructure security and secure engineering practices. | | Architecture & Security | Technical standards, system design, security architecture and secure engineering practices. |
| Quality Engineering | Test strategy, automation, release quality and defect prevention. | | Quality Engineering | Test strategy, automation, release quality and defect prevention. |
| AI Enablement | AI-assisted engineering workflows, developer tools, adoption, standards and safe use of AI. | | Data & AI | Analytics, experimentation, ranking, recommendations, marketplace ML and safe AI-assisted engineering workflows. |
| Internal IT | Identity and access, employee devices, internal systems, software administration and joiner–mover–leaver processes. |
The CTO owns technology direction. The Head of Engineering leads engineering delivery through Group Engineering Managers and Engineering Managers. The AI Architect coordinates AI enablement across engineering, working with Architecture & Security and team leaders. The CTO owns technology direction. The Head of Engineering leads engineering delivery through Group Engineering Managers and Engineering Managers. The AI Architect coordinates AI enablement within Data & AI, working with Architecture & Security and the other Technology teams. These are leadership roles within the five-team structure, not additional teams.
### Operations ### Operations
@@ -119,7 +101,7 @@ The CFO coordinates Finance & Accounting and works with executive leadership on
| People Operations | Employee onboarding, development, performance processes, policies and employee experience. | | People Operations | Employee onboarding, development, performance processes, policies and employee experience. |
| Office & Administration | Workplace services, office operations and administrative coordination. | | Office & Administration | Workplace services, office operations and administrative coordination. |
HR partners with department leaders on team capacity and development. People Operations works with Internal IT on employee onboarding, role changes and offboarding. HR partners with department leaders on team capacity and development. People Operations works with Platform & IT on employee onboarding, role changes and offboarding.
## Leadership and delivery structure ## Leadership and delivery structure
@@ -127,21 +109,21 @@ HR partners with department leaders on team capacity and development. People Ope
The diagram shows management responsibility from leader to role or team: The diagram shows management responsibility from leader to role or team:
- **CTO → Head of Engineering → Group Engineering Managers → Engineering Managers → Product Engineering teams.** - **CTO → Head of Engineering → Group Engineering Managers → Engineering Managers → the Product Engineering team.**
- **CTO → AI Architect**, coordinating engineering AI enablement. - **CTO → AI Architect**, coordinating engineering AI enablement.
- **COO → Operational Quality**, providing independent quality oversight. - **COO → Operational Quality**, providing independent quality oversight.
- **CMO → Brand Team Lead**, leading Brand & Community. - **CMO → Brand Team Lead**, leading Brand & Community.
Product teams combine product ownership, design, engineering, quality and data expertise. Functional management develops people and professional standards; cross-functional teams deliver business outcomes. Product and Technology retain separate team ownership and reporting lines. Their teams coordinate priorities, design, engineering, quality and data work to deliver business outcomes.
## How the departments work together ## How the departments work together
| Business outcome | Collaboration | | Business outcome | Collaboration |
| --- | --- | | --- | --- |
| Better buyer experience | Product defines improvements; Technology delivers them; Operations brings customer feedback; Data measures the result. | | Better buyer experience | Product defines improvements; Technology delivers them; Operations brings customer feedback; Data & AI measures the result. |
| Stronger seller experience | Product and Technology develop seller tools; Operations supports sellers; Finance manages financial processes. | | Stronger seller experience | Product and Technology develop seller tools; Operations supports sellers; Finance manages financial processes. |
| Safe and trustworthy trading | Risk & Fraud, Trust & Resolution, Architecture & Security, and Finance coordinate controls and incident responses. | | Safe and trustworthy trading | Risk & Fraud, Trust & Resolution, Architecture & Security, and Finance coordinate controls and incident responses. |
| Sustainable growth | Marketing develops demand; Product improves conversion and retention; Finance measures profitability. | | Sustainable growth | Marketing develops demand; Product improves conversion and retention; Finance measures profitability. |
| AI-powered execution | AI Enablement supports engineering; Data & Intelligence develops marketplace intelligence; Operations improves service and quality workflows. | | AI-powered execution | Data & AI supports engineering and develops marketplace intelligence; Operations improves service and quality workflows. |
Department leaders remain accountable for outcomes, controls and service quality as AI becomes part of everyday work. Department leaders remain accountable for outcomes, controls and service quality as AI becomes part of everyday work.
+15 -7
View File
@@ -59,14 +59,22 @@ test('Archify is pinned, licensed and rebuilt, not a remote embed', () => {
assert(!wrapper.includes('target="_blank"')); assert(!wrapper.includes('target="_blank"'));
assert(wrapper.includes('Close full-screen diagram')); assert(wrapper.includes('Close full-screen diagram'));
}); });
test('Product and Technology share seven delivery squads', () => { test('Product owns two teams and Technology owns five separate teams', () => {
const spec = JSON.parse(read('diagrams/organization-structure.architecture.json')); const spec = JSON.parse(read('diagrams/organization-structure.architecture.json'));
const squads = spec.components.filter(n => n.id.startsWith('squad-')); const page = read('docs/organization/structure.mdx');
assert.equal(squads.length, 7); assert(!/shared-delivery|squad-/i.test(JSON.stringify(spec)));
for (const dept of ['product','technology']) assert(spec.connections.some(e => e.from === dept && e.to === 'shared-delivery')); assert(!/shared squads|share a delivery structure|cross-functional teams/i.test(page));
for (const squad of squads) { for (const [dept, count, heading, next] of [['product',2,'Product','Technology'],['technology',5,'Technology','Operations']]) {
assert(spec.connections.some(e => e.from === 'shared-delivery' && e.to === squad.id)); const teams = spec.components.filter(n => n.id.startsWith(`${dept}-team-`));
assert(read('docs/organization/structure.mdx').includes(squad.label)); assert.equal(teams.length, count);
const section = page.split(`### ${heading}\n`)[1].split(`### ${next}\n`)[0];
const rows = section.split('\n').filter(l => l.startsWith('| ')).slice(2);
assert.equal(rows.length, count);
for (const team of teams) {
const parents = spec.connections.filter(e => e.to === team.id);
assert.deepEqual(parents.map(e => e.from), [dept]);
assert(rows.some(row => row.startsWith(`| ${team.label} |`)));
}
} }
}); });
test('organization page presents an operating model, not research notes', () => { test('organization page presents an operating model, not research notes', () => {
+5 -2
View File
@@ -21,10 +21,13 @@ if (process.argv.includes('--build')) {
} }
assert(!readdirSync('build/diagrams', {recursive: true}).some(f => f.endsWith('.delivery.json')), 'Private build receipts must not be published'); assert(!readdirSync('build/diagrams', {recursive: true}).some(f => f.endsWith('.delivery.json')), 'Private build receipts must not be published');
const diagram = read('build/diagrams/organization-structure/index.html'); const diagram = read('build/diagrams/organization-structure/index.html');
assert(diagram.includes('Coordinates') && diagram.includes('node-technology')); assert(diagram.includes('node-product-team-2') && diagram.includes('node-technology-team-5'));
assert(!diagram.includes('shared-delivery'));
assert(!/A: placement|E: careers|J: advertised/.test(diagram)); assert(!/A: placement|E: careers|J: advertised/.test(diagram));
assert(!diagram.includes('Example leadership')); assert(!diagram.includes('Example leadership'));
for (const id of ['discovery','orders','seller','payments','trust','data','platform']) assert(diagram.includes(`node-squad-${id}`)); for (const [dept, count] of [['product', 2], ['technology', 5]]) {
for (let i = 1; i <= count; i++) assert(diagram.includes(`node-${dept}-team-${i}`));
}
const reporting = read('build/diagrams/organization-reporting/index.html'); const reporting = read('build/diagrams/organization-reporting/index.html');
assert(reporting.includes('AI Architect') && reporting.includes('Leads')); assert(reporting.includes('AI Architect') && reporting.includes('Leads'));
assert(!/A: assumed|J: direct/.test(reporting)); assert(!/A: assumed|J: direct/.test(reporting));