learn-okr-with-phoebe / Manager session 4 of 10
Learn OKRs with Phoebe · Manager track · Session 4 of 10

The metric tree per function: a fair OKR for every team

One company, one North Star - but a dozen teams, each of which controls only a slice of it. This session builds the Cartwheel metric tree and hands every function its own Objective plus two or three Key Results on a lever it actually controls. Then it fixes the hardest problem in the whole course: the shared outcome that no single team owns. Grade the lever; watch the North Star together.

🟡 Manager track Managers: middle mgmt · team leads No code · templates + worked examples ~45 min
0-3 · Recap 3-20 · The tree + controllability 20-42 · Worked example: OKR per function 42-45 · Q&A
Part 0

From "one fair metric" to "a fair metric per team"

You can now write a good OKR (b2) and judge whether a metric is fair to grade on (b3). The problem is that a company does not have one metric - it has a tree. Cartwheel's revenue decomposes into Sessions × Conversion Rate × Average Order Value, and each branch splits again into levers that different teams own. Tonight you give every function an Objective and two to three Key Results on a lever it controls, with a note on why that lever is fair for that team. Then the attribution rule: the shared North Star is watched jointly, never dropped on one team's scorecard. The linchpin still holds - none of these scores feed pay.

Live - presented in session Self-study - read after class ★ Worked example (Cartwheel) Sources covered (cited)
★ What you walk out with today The Cartwheel metric tree with each branch tagged by its owning team, a per-function OKR table for Growth, Product, Engineering, Operations, Support, Merchandising, and Data, the controllability note that keeps each one fair, the DORA four for Engineering (and why lines-of-code is a trap), and the attribution rule that puts the shared North Star under joint ownership.
Part 1 · the tree

Decompose the North Star, then hand out the branches 7 min live

The e-commerce metric tree is the map. Revenue per visitor is the trunk; it factors into sessions, conversion, and order value; each factor breaks into levers a specific team can move. Fairness comes from handing each team the branch it controls - not the trunk.

North Star Revenue per visitor (shared) Sessions visits × traffic quality Conversion rate visitors → buyers Average order value basket size × mix owned by GROWTH CAC, ROAS, non-paid sessions owned by PRODUCT checkout completion, activation owned by MERCH AOV, category margin, sell-through Delivery + cost per order → OPERATIONS on-time delivery, inventory turns Service quality → SUPPORT / CX CSAT, first-contact resolution Each team owns its branch. The trunk (revenue per visitor) stays shared - it is watched, not graded on any one team.
🔍 Click to zoom - the Cartwheel metric tree, each branch tagged by its owning team
LiveControllability is the fairness test for a branch3 min▶

A branch is fair to grade a team on only if the team can actually move it. Two quick checks:

  • Does the team hold the lever? Growth owns spend and channel mix, so CAC and ROAS are fair. Growth does not own the checkout page, so grading Growth on site conversion rate is measuring someone else's work.
  • Is the lever mostly free of other teams' effects? The cleaner the ownership, the fairer the grade. Where two teams share a lever, either split it into sub-levers each can own, or move it up to the "watched together" line.
Real world

The conversion-rate blame game. Before the tree, Cartwheel graded Growth on conversion rate. Growth drove more traffic, conversion dipped (new visitors convert lower), and Growth "failed" for succeeding. The tree fixed it: Growth owns sessions and traffic quality; Product owns the conversion of that traffic. Same company, two fair grades instead of one unfair one.

Part 2 · engineering + the shared outcome

DORA for Engineering, joint ownership for the North Star 6 min live

Engineering is where bad metrics do the most damage. Counting lines of code rewards bloat, punishes deletion, and - now that AI generates code by the screenful - measures almost nothing. The DORA metrics measure the flow of value instead, and they are self-checking: speed is held honest by stability.

Speed Deploy frequency · lead time for changes held honest by Stability Change-failure rate · time to restore Plus one user-facing outcome: p75 page load time (does the product feel fast for real users?) Never: lines of code. It rewards bloat, punishes clean deletion, and AI writes it by the screenful. Goodhart in one metric: the moment it is a target, it stops measuring productivity. A team cannot game deploy frequency without change-failure rate exposing it. That pairing is the fairness.
🔍 Click to zoom - DORA is self-checking: speed held honest by stability
Self-studyThe attribution rule - watch the shared outcome, grade the lever2 min read▶

The North Star - revenue per visitor, or overall conversion - is moved by everyone at once. That is a feature, not a bug: it forces teams to pull together. But it makes the shared number impossible to attribute fairly, so the rule is firm:

  • Grade each team on its controllable lever. Product on checkout completion, Growth on CAC, Ops on on-time delivery. These are clean enough to be fair.
  • Watch the North Star jointly. Put revenue per visitor on a shared dashboard every team sees, discussed together in a cross-functional review. No one is graded on it alone; everyone is accountable to it together.

HBR's guidance is the same at the team level: set OKRs for teams, not to rank individuals. Shared outcomes belong to shared conversations, not to one person's scorecard.

Worked example 1 of 2

A fair OKR for every Cartwheel function ★ 14 min · everyone tries

The centrepiece of the whole track. For each function, give it an Objective, two or three Key Results on a lever it controls, and a one-line note on why that lever is fair for that team.

For each function, find its branch on the tree from Part 1 - the lever it actually holds.

Write an Objective that points at that branch, then 2-3 Key Results as measurable outcomes (from b2).

Add the controllability note: one line on why this team, and not another, should be graded on this.

The per-function OKR table
FunctionObjectiveKey Results (the lever)Controllability note
Growth / MarketingBring in efficient, high-intent trafficCAC ↓, ROAS ↑, non-paid sessions ↑Owns spend + channel mix; does NOT own site conversion
Product / UXTurn more visitors into buyersConversion rate ↑, checkout completion ↑, activation ↑Owns the on-site experience the visitor moves through
EngineeringShip value fast and safelyDeploy frequency, change-failure rate, p75 page loadDORA, self-checking; never lines of code
Operations / FulfilmentDeliver reliably at the right costOn-time delivery ↑, cost per order ↓, inventory turns ↑Owns the warehouse + carrier levers, not demand
Support / CXResolve issues well, first timeCSAT ↑, first-response time ↓, first-contact resolution ↑"Tickets closed" alone is gameable; pair with quality
MerchandisingGrow basket value and healthy marginAOV ↑, category margin ↑, sell-through ↑Owns assortment + pricing mix, not site traffic
Notice every Key Result is a measurable outcome, and every note names the lever the team holds. Data / Analytics gets its own row too: experiment velocity, a data-freshness SLA, and decisions-shipped - it owns the pipeline and the evidence, not the business result the evidence informs.
Worked example 2 of 2

Fix Engineering: swap lines-of-code for the DORA four ★ 8 min · do your own

Cartwheel's old engineering scorecard graded lines of code shipped per sprint. Replace it with a fair system and score both against the b3 checklist.

Name the bad metric and its failure: lines of code is an activity count, trivially gamed (verbose code, no deletion), and now inflated by AI code generation.

Replace it with the DORA four as a system: deploy frequency and lead time for speed, change-failure rate and time-to-restore for stability - plus p75 page load as the user-facing outcome.

Score the old and the new against the six-point fair-metric checklist from b3.

Old metric vs fair system, on the checklist
Check (from b3)Lines of codeDORA four + p75 load
Outcome not activity✗ pure activity✓ flow + stability outcomes
Controllable◐ but meaningless✓ team owns its pipeline
Hard to game✗ trivially inflated✓ speed checked by stability
Holistic✗ one number✓ speed + stability + user speed
Lines of code fails every gate. The DORA system passes because its metrics police each other - you cannot deploy faster by cutting corners without change-failure rate rising to tell on you.
Real world

Goodhart, twice over. The moment Cartwheel made lines of code a target, engineers wrote more verbose code and stopped deleting dead code - the metric went up while the codebase got worse. Then AI assistants arrived and any developer could generate thousands of lines in an afternoon, making the number meaningless as a measure of anything. DORA survives because it measures the outcome (value flowing safely to users), not the typing.

Homework

Try it yourself - this week ◐ 30-45 min total

Source material

Sources covered (cited)

Taught from the e-commerce measurement canon plus engineering and team-OKR sources. This session covers:

✓E-commerce metric canon - metric tree (Revenue = Sessions × CR × AOV, RPV), North StarParts 1-2 · decomposing the tree, per-function levers
✓DORA metrics (dora.dev) - deploy frequency, lead time, change-failure rate, time to restorePart 2 · fair engineering metrics, why lines-of-code fails (Goodhart + AI)
◐HBR, "Use OKRs to Set Goals for Teams, Not Individuals" (2020)Part 2 · attribution rule, shared outcome as joint ownership
Check yourself

Three questions before you go 🎯 ◐ 90 seconds

1 · Why is grading Growth / Marketing on site conversion rate unfair?

Controllability is the fairness test. Growth owns CAC, ROAS, and traffic quality. Conversion of that traffic is Product's lever. Grade each team on the branch it actually holds.

2 · What makes the DORA metrics a fair, self-checking system for Engineering?

Deploy frequency and lead time measure speed; change-failure rate and time-to-restore measure stability. You cannot rush deploys without failure rate rising to expose it. Lines of code, by contrast, rewards bloat and is inflated by AI code generation.

3 · How should the shared North Star (revenue per visitor) be handled?

The North Star is moved by everyone, so it cannot be attributed to one team fairly. Grade each team on its lever; watch the shared outcome together in a cross-functional review. Shared outcomes belong to shared conversations.

Manager session 4 cheat sheet · pin this

The treeRevenue per visitor = Sessions × Conversion × AOV. Each factor splits into owned levers.
Grade the levergive each team an OKR on a branch it controls, not on the shared trunk.
GrowthCAC, ROAS, non-paid sessions. Owns spend + channel, not site conversion.
Productconversion rate, checkout completion, activation. Owns the on-site experience.
EngineeringDORA four + p75 load. Never lines of code (Goodhart + AI make it meaningless).
Ops / CX / Merch / Dataon-time delivery · CSAT + FCR (not tickets closed) · AOV + margin · experiment velocity.
Attribution rulewatch the North Star jointly; grade nobody on it alone. Team OKRs, not rankings.
Still decouplednone of these lever scores feed pay. Steering and learning only.
Next sessionb5 - monitoring cadence + dashboards: 1:1s, RAG, target + trend + context.