diff --git a/product-team/product-strategist/SKILL.md b/product-team/product-strategist/SKILL.md
index b441fcf..f597ed6 100644
--- a/product-team/product-strategist/SKILL.md
+++ b/product-team/product-strategist/SKILL.md
@@ -7,20 +7,370 @@ description: Strategic product leadership toolkit for Head of Product including
Strategic toolkit for Head of Product to drive vision, alignment, and organizational excellence.
+---
+
+## Table of Contents
+
+- [Quick Start](#quick-start)
+- [Core Capabilities](#core-capabilities)
+- [Workflow: Strategic Planning Session](#workflow-strategic-planning-session)
+- [OKR Cascade Generator](#okr-cascade-generator)
+ - [Usage](#usage)
+ - [Configuration Options](#configuration-options)
+ - [Input/Output Examples](#inputoutput-examples)
+- [Reference Documents](#reference-documents)
+
+---
+
+## Quick Start
+
+### Generate OKRs for Your Team
+
+```bash
+# Growth strategy with default teams
+python scripts/okr_cascade_generator.py growth
+
+# Retention strategy with custom teams
+python scripts/okr_cascade_generator.py retention --teams "Engineering,Design,Data"
+
+# Revenue strategy with 40% product contribution
+python scripts/okr_cascade_generator.py revenue --contribution 0.4
+
+# Export as JSON for integration
+python scripts/okr_cascade_generator.py growth --json > okrs.json
+```
+
+---
+
## Core Capabilities
-- OKR cascade generation and alignment
-- Market and competitive analysis
-- Product vision and strategy frameworks
-- Team scaling and organizational design
-- Metrics and KPI definition
-## Key Scripts
+| Capability | Description | Tool |
+|------------|-------------|------|
+| **OKR Cascade** | Generate aligned OKRs from company to team level | `okr_cascade_generator.py` |
+| **Alignment Scoring** | Measure vertical and horizontal alignment | Built into generator |
+| **Strategy Templates** | 5 pre-built strategy types | Growth, Retention, Revenue, Innovation, Operational |
+| **Team Configuration** | Customize for your org structure | `--teams` flag |
+
+---
+
+## Workflow: Strategic Planning Session
+
+A step-by-step guide for running a quarterly strategic planning session.
+
+### Step 1: Define Strategic Focus
+
+Choose the primary strategy type based on company priorities:
+
+| Strategy | When to Use |
+|----------|-------------|
+| **Growth** | Scaling user base, market expansion |
+| **Retention** | Reducing churn, improving LTV |
+| **Revenue** | Increasing ARPU, new monetization |
+| **Innovation** | Market differentiation, new capabilities |
+| **Operational** | Improving efficiency, scaling operations |
+
+See `references/strategy_types.md` for detailed guidance on each strategy.
+
+### Step 2: Gather Input Metrics
+
+Collect current state metrics to inform OKR targets:
+
+```bash
+# Example metrics JSON
+{
+ "current": 100000, # Current MAU
+ "target": 150000, # Target MAU
+ "current_nps": 40, # Current NPS
+ "target_nps": 60 # Target NPS
+}
+```
+
+### Step 3: Configure Team Structure
+
+Define the teams that will receive cascaded OKRs:
+
+```bash
+# Default teams
+python scripts/okr_cascade_generator.py growth
+
+# Custom teams for your organization
+python scripts/okr_cascade_generator.py growth --teams "Core,Platform,Mobile,AI"
+```
+
+### Step 4: Generate OKR Cascade
+
+Run the generator to create aligned OKRs:
+
+```bash
+python scripts/okr_cascade_generator.py growth --contribution 0.3
+```
+
+### Step 5: Review Alignment Scores
+
+Check the alignment scores in the output:
+
+| Score | Target | Action |
+|-------|--------|--------|
+| Vertical Alignment | >90% | Ensure all objectives link to parent |
+| Horizontal Alignment | >75% | Check for team coordination |
+| Coverage | >80% | Validate all company OKRs are addressed |
+| Balance | >80% | Redistribute if one team is overloaded |
+| **Overall** | **>80%** | Good alignment; <60% needs restructuring |
+
+### Step 6: Refine and Validate
+
+Before finalizing:
+
+- [ ] Review generated objectives with stakeholders
+- [ ] Adjust team assignments based on capacity
+- [ ] Validate contribution percentages are realistic
+- [ ] Ensure no conflicting objectives across teams
+- [ ] Set up tracking cadence (bi-weekly check-ins)
+
+### Step 7: Export and Track
+
+Export OKRs for your tracking system:
+
+```bash
+# JSON for tools like Lattice, Ally, Workboard
+python scripts/okr_cascade_generator.py growth --json > q1_okrs.json
+```
+
+---
+
+## OKR Cascade Generator
-### okr_cascade_generator.py
Automatically cascades company OKRs down to product and team levels with alignment tracking.
-**Usage**: `python scripts/okr_cascade_generator.py [strategy]`
-- Strategies: growth, retention, revenue, innovation, operational
-- Generates company ā product ā team OKR cascade
-- Calculates alignment scores
-- Tracks contribution percentages
+### Usage
+
+```bash
+python scripts/okr_cascade_generator.py [strategy] [options]
+```
+
+**Strategies:**
+- `growth` - User acquisition and market expansion
+- `retention` - Customer value and churn reduction
+- `revenue` - Revenue growth and monetization
+- `innovation` - Product differentiation and leadership
+- `operational` - Efficiency and organizational excellence
+
+### Configuration Options
+
+| Option | Description | Default |
+|--------|-------------|---------|
+| `--teams`, `-t` | Comma-separated team names | Growth,Platform,Mobile,Data |
+| `--contribution`, `-c` | Product contribution to company OKRs (0-1) | 0.3 (30%) |
+| `--json`, `-j` | Output as JSON instead of dashboard | False |
+| `--metrics`, `-m` | Metrics as JSON string | Sample metrics |
+
+**Examples:**
+
+```bash
+# Custom teams
+python scripts/okr_cascade_generator.py retention \
+ --teams "Engineering,Design,Data,Growth"
+
+# Higher product contribution
+python scripts/okr_cascade_generator.py revenue --contribution 0.4
+
+# Full customization
+python scripts/okr_cascade_generator.py innovation \
+ --teams "Core,Platform,ML" \
+ --contribution 0.5 \
+ --json
+```
+
+### Input/Output Examples
+
+#### Example 1: Growth Strategy (Dashboard Output)
+
+**Command:**
+```bash
+python scripts/okr_cascade_generator.py growth
+```
+
+**Output:**
+```
+============================================================
+OKR CASCADE DASHBOARD
+Quarter: Q1 2025
+Strategy: GROWTH
+Teams: Growth, Platform, Mobile, Data
+Product Contribution: 30%
+============================================================
+
+š¢ COMPANY OKRS
+
+š CO-1: Accelerate user acquisition and market expansion
+ āā CO-1-KR1: Increase MAU from 100000 to 150000
+ āā CO-1-KR2: Achieve 150000% MoM growth rate
+ āā CO-1-KR3: Expand to 150000 new markets
+
+š CO-2: Achieve product-market fit in new segments
+ āā CO-2-KR1: Reduce CAC by 150000%
+ āā CO-2-KR2: Improve activation rate to 150000%
+ āā CO-2-KR3: Increase MAU from 100000 to 150000
+
+š CO-3: Build sustainable growth engine
+ āā CO-3-KR1: Achieve 150000% MoM growth rate
+ āā CO-3-KR2: Expand to 150000 new markets
+ āā CO-3-KR3: Reduce CAC by 150000%
+
+š PRODUCT OKRS
+
+š PO-1: Build viral product features and market expansion
+ ā³ Supports: CO-1
+ āā PO-1-KR1: Increase product MAU from 100000 to 45000.0
+ āā PO-1-KR2: Achieve 45000.0% feature adoption rate
+
+š PO-2: Validate product hypotheses in new segments
+ ā³ Supports: CO-2
+ āā PO-2-KR1: Reduce product onboarding efficiency by 45000.0%
+ āā PO-2-KR2: Improve activation rate to 45000.0%
+
+š PO-3: Create product-led growth loops engine
+ ā³ Supports: CO-3
+ āā PO-3-KR1: Achieve 45000.0% feature adoption rate
+ āā PO-3-KR2: Expand to 45000.0 new markets
+
+š„ TEAM OKRS
+
+Growth Team:
+ š GRO-1: Build viral product features through acquisition and activation
+ āā GRO-1-KR1: [Growth] Increase product MAU from 100000 to 11250.0
+ āā GRO-1-KR2: [Growth] Achieve 11250.0% feature adoption rate
+
+Platform Team:
+ š PLA-1: Build viral product features through infrastructure and reliability
+ āā PLA-1-KR1: [Platform] Increase product MAU from 100000 to 11250.0
+ āā PLA-1-KR2: [Platform] Achieve 11250.0% feature adoption rate
+
+
+š ALIGNMENT MATRIX
+
+Company ā Product ā Teams
+----------------------------------------
+
+CO-1
+ āā PO-1
+ āā GRO-1 (Growth)
+ āā PLA-1 (Platform)
+
+CO-2
+ āā PO-2
+
+CO-3
+ āā PO-3
+
+
+šÆ ALIGNMENT SCORES
+----------------------------------------
+ā Vertical Alignment: 100.0%
+! Horizontal Alignment: 75.0%
+ā Coverage: 100.0%
+ā Balance: 97.5%
+ā Overall: 94.0%
+
+ā
Overall alignment is GOOD (ā„80%)
+```
+
+#### Example 2: JSON Output
+
+**Command:**
+```bash
+python scripts/okr_cascade_generator.py retention --json
+```
+
+**Output (truncated):**
+```json
+{
+ "quarter": "Q1 2025",
+ "strategy": "retention",
+ "company": {
+ "level": "Company",
+ "objectives": [
+ {
+ "id": "CO-1",
+ "title": "Create lasting customer value and loyalty",
+ "owner": "CEO",
+ "key_results": [
+ {
+ "id": "CO-1-KR1",
+ "title": "Improve retention from 100000% to 150000%",
+ "current": 100000,
+ "target": 150000
+ }
+ ]
+ }
+ ]
+ },
+ "product": {
+ "level": "Product",
+ "contribution": 0.3,
+ "objectives": [...]
+ },
+ "teams": [...],
+ "alignment_scores": {
+ "vertical_alignment": 100.0,
+ "horizontal_alignment": 75.0,
+ "coverage": 100.0,
+ "balance": 97.5,
+ "overall": 94.0
+ },
+ "config": {
+ "teams": ["Growth", "Platform", "Mobile", "Data"],
+ "product_contribution": 0.3
+ }
+}
+```
+
+See `references/examples/sample_growth_okrs.json` for a complete example.
+
+---
+
+## Reference Documents
+
+| Document | Description |
+|----------|-------------|
+| `references/okr_framework.md` | OKR methodology, writing guidelines, alignment scoring |
+| `references/strategy_types.md` | Detailed breakdown of all 5 strategy types with examples |
+| `references/examples/sample_growth_okrs.json` | Complete sample output for growth strategy |
+
+---
+
+## Best Practices
+
+### OKR Cascade
+
+- Limit to 3-5 objectives per level
+- Each objective should have 3-5 key results
+- Key results must be measurable with current and target values
+- Validate parent-child relationships before finalizing
+
+### Alignment Scoring
+
+- Target >80% overall alignment
+- Investigate any score below 60%
+- Balance scores ensure no team is overloaded
+- Horizontal alignment prevents conflicting goals
+
+### Team Configuration
+
+- Configure teams to match your actual org structure
+- Adjust contribution percentages based on team size
+- Platform/Infrastructure teams often support all objectives
+- Specialized teams (ML, Data) may only support relevant objectives
+
+---
+
+## Quick Reference
+
+```bash
+# Common commands
+python scripts/okr_cascade_generator.py growth # Default growth
+python scripts/okr_cascade_generator.py retention # Retention focus
+python scripts/okr_cascade_generator.py revenue -c 0.4 # 40% contribution
+python scripts/okr_cascade_generator.py growth --json # JSON export
+python scripts/okr_cascade_generator.py growth -t "A,B,C" # Custom teams
+```
diff --git a/product-team/product-strategist/references/examples/sample_growth_okrs.json b/product-team/product-strategist/references/examples/sample_growth_okrs.json
new file mode 100644
index 0000000..126adee
--- /dev/null
+++ b/product-team/product-strategist/references/examples/sample_growth_okrs.json
@@ -0,0 +1,366 @@
+{
+ "metadata": {
+ "strategy": "growth",
+ "quarter": "Q1 2025",
+ "generated_at": "2025-01-15T10:30:00Z",
+ "teams": ["Growth", "Platform", "Mobile", "Data"],
+ "product_contribution": 0.3
+ },
+ "company": {
+ "level": "Company",
+ "quarter": "Q1 2025",
+ "strategy": "growth",
+ "objectives": [
+ {
+ "id": "CO-1",
+ "title": "Accelerate user acquisition and market expansion",
+ "owner": "CEO",
+ "status": "active",
+ "key_results": [
+ {
+ "id": "CO-1-KR1",
+ "title": "Increase MAU from 100,000 to 150,000",
+ "current": 100000,
+ "target": 150000,
+ "unit": "users",
+ "status": "in_progress",
+ "progress": 0.2
+ },
+ {
+ "id": "CO-1-KR2",
+ "title": "Achieve 15% MoM growth rate",
+ "current": 8,
+ "target": 15,
+ "unit": "%",
+ "status": "in_progress",
+ "progress": 0.53
+ },
+ {
+ "id": "CO-1-KR3",
+ "title": "Expand to 3 new markets",
+ "current": 0,
+ "target": 3,
+ "unit": "markets",
+ "status": "not_started",
+ "progress": 0
+ }
+ ]
+ },
+ {
+ "id": "CO-2",
+ "title": "Achieve product-market fit in enterprise segment",
+ "owner": "CEO",
+ "status": "active",
+ "key_results": [
+ {
+ "id": "CO-2-KR1",
+ "title": "Reduce CAC by 25%",
+ "current": 150,
+ "target": 112.5,
+ "unit": "$",
+ "status": "in_progress",
+ "progress": 0.4
+ },
+ {
+ "id": "CO-2-KR2",
+ "title": "Improve activation rate to 60%",
+ "current": 42,
+ "target": 60,
+ "unit": "%",
+ "status": "in_progress",
+ "progress": 0.3
+ }
+ ]
+ },
+ {
+ "id": "CO-3",
+ "title": "Build sustainable growth engine",
+ "owner": "CEO",
+ "status": "active",
+ "key_results": [
+ {
+ "id": "CO-3-KR1",
+ "title": "Increase viral coefficient to 1.2",
+ "current": 0.8,
+ "target": 1.2,
+ "unit": "coefficient",
+ "status": "not_started",
+ "progress": 0
+ },
+ {
+ "id": "CO-3-KR2",
+ "title": "Grow organic acquisition to 40% of total",
+ "current": 25,
+ "target": 40,
+ "unit": "%",
+ "status": "in_progress",
+ "progress": 0.2
+ }
+ ]
+ }
+ ]
+ },
+ "product": {
+ "level": "Product",
+ "quarter": "Q1 2025",
+ "parent": "Company",
+ "objectives": [
+ {
+ "id": "PO-1",
+ "title": "Build viral product features to drive acquisition",
+ "parent_objective": "CO-1",
+ "owner": "Head of Product",
+ "status": "active",
+ "key_results": [
+ {
+ "id": "PO-1-KR1",
+ "title": "Increase product MAU from 100,000 to 115,000 (30% contribution)",
+ "contributes_to": "CO-1-KR1",
+ "current": 100000,
+ "target": 115000,
+ "unit": "users",
+ "status": "in_progress"
+ },
+ {
+ "id": "PO-1-KR2",
+ "title": "Achieve 12% feature adoption rate for sharing features",
+ "contributes_to": "CO-1-KR2",
+ "current": 5,
+ "target": 12,
+ "unit": "%",
+ "status": "in_progress"
+ }
+ ]
+ },
+ {
+ "id": "PO-2",
+ "title": "Validate product hypotheses for enterprise segment",
+ "parent_objective": "CO-2",
+ "owner": "Head of Product",
+ "status": "active",
+ "key_results": [
+ {
+ "id": "PO-2-KR1",
+ "title": "Improve product onboarding efficiency by 30%",
+ "contributes_to": "CO-2-KR1",
+ "current": 0,
+ "target": 30,
+ "unit": "%",
+ "status": "not_started"
+ },
+ {
+ "id": "PO-2-KR2",
+ "title": "Increase product activation rate to 55%",
+ "contributes_to": "CO-2-KR2",
+ "current": 42,
+ "target": 55,
+ "unit": "%",
+ "status": "in_progress"
+ }
+ ]
+ },
+ {
+ "id": "PO-3",
+ "title": "Create product-led growth loops",
+ "parent_objective": "CO-3",
+ "owner": "Head of Product",
+ "status": "active",
+ "key_results": [
+ {
+ "id": "PO-3-KR1",
+ "title": "Launch referral program with 0.3 viral coefficient contribution",
+ "contributes_to": "CO-3-KR1",
+ "current": 0,
+ "target": 0.3,
+ "unit": "coefficient",
+ "status": "not_started"
+ },
+ {
+ "id": "PO-3-KR2",
+ "title": "Increase product-driven organic signups to 35%",
+ "contributes_to": "CO-3-KR2",
+ "current": 20,
+ "target": 35,
+ "unit": "%",
+ "status": "in_progress"
+ }
+ ]
+ }
+ ]
+ },
+ "teams": [
+ {
+ "level": "Team",
+ "team": "Growth",
+ "quarter": "Q1 2025",
+ "parent": "Product",
+ "objectives": [
+ {
+ "id": "GRO-1",
+ "title": "Build viral product features through acquisition and activation",
+ "parent_objective": "PO-1",
+ "owner": "Growth PM",
+ "status": "active",
+ "key_results": [
+ {
+ "id": "GRO-1-KR1",
+ "title": "[Growth] Increase product MAU contribution by 5,000 users",
+ "contributes_to": "PO-1-KR1",
+ "current": 0,
+ "target": 5000,
+ "unit": "users",
+ "status": "in_progress"
+ },
+ {
+ "id": "GRO-1-KR2",
+ "title": "[Growth] Launch 3 viral feature experiments",
+ "contributes_to": "PO-1-KR2",
+ "current": 0,
+ "target": 3,
+ "unit": "experiments",
+ "status": "not_started"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "level": "Team",
+ "team": "Platform",
+ "quarter": "Q1 2025",
+ "parent": "Product",
+ "objectives": [
+ {
+ "id": "PLA-1",
+ "title": "Support growth through infrastructure and reliability",
+ "parent_objective": "PO-1",
+ "owner": "Platform PM",
+ "status": "active",
+ "key_results": [
+ {
+ "id": "PLA-1-KR1",
+ "title": "[Platform] Scale infrastructure to support 200K MAU",
+ "contributes_to": "PO-1-KR1",
+ "current": 100000,
+ "target": 200000,
+ "unit": "users",
+ "status": "in_progress"
+ },
+ {
+ "id": "PLA-1-KR2",
+ "title": "[Platform] Maintain 99.9% uptime during growth",
+ "contributes_to": "PO-1-KR2",
+ "current": 99.5,
+ "target": 99.9,
+ "unit": "%",
+ "status": "in_progress"
+ }
+ ]
+ },
+ {
+ "id": "PLA-2",
+ "title": "Improve onboarding infrastructure efficiency",
+ "parent_objective": "PO-2",
+ "owner": "Platform PM",
+ "status": "active",
+ "key_results": [
+ {
+ "id": "PLA-2-KR1",
+ "title": "[Platform] Reduce onboarding API latency by 40%",
+ "contributes_to": "PO-2-KR1",
+ "current": 0,
+ "target": 40,
+ "unit": "%",
+ "status": "not_started"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "level": "Team",
+ "team": "Mobile",
+ "quarter": "Q1 2025",
+ "parent": "Product",
+ "objectives": [
+ {
+ "id": "MOB-1",
+ "title": "Build viral features through mobile experience",
+ "parent_objective": "PO-1",
+ "owner": "Mobile PM",
+ "status": "active",
+ "key_results": [
+ {
+ "id": "MOB-1-KR1",
+ "title": "[Mobile] Increase mobile MAU by 3,000 users",
+ "contributes_to": "PO-1-KR1",
+ "current": 0,
+ "target": 3000,
+ "unit": "users",
+ "status": "not_started"
+ },
+ {
+ "id": "MOB-1-KR2",
+ "title": "[Mobile] Launch native share feature with 15% adoption",
+ "contributes_to": "PO-1-KR2",
+ "current": 0,
+ "target": 15,
+ "unit": "%",
+ "status": "not_started"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "level": "Team",
+ "team": "Data",
+ "quarter": "Q1 2025",
+ "parent": "Product",
+ "objectives": [
+ {
+ "id": "DAT-1",
+ "title": "Enable growth through analytics and insights",
+ "parent_objective": "PO-1",
+ "owner": "Data PM",
+ "status": "active",
+ "key_results": [
+ {
+ "id": "DAT-1-KR1",
+ "title": "[Data] Build growth dashboard tracking all acquisition metrics",
+ "contributes_to": "PO-1-KR1",
+ "current": 0,
+ "target": 1,
+ "unit": "dashboard",
+ "status": "not_started"
+ },
+ {
+ "id": "DAT-1-KR2",
+ "title": "[Data] Implement experimentation platform for A/B testing",
+ "contributes_to": "PO-1-KR2",
+ "current": 0,
+ "target": 1,
+ "unit": "platform",
+ "status": "not_started"
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "alignment_scores": {
+ "vertical_alignment": 100.0,
+ "horizontal_alignment": 75.0,
+ "coverage": 100.0,
+ "balance": 85.0,
+ "overall": 92.0
+ },
+ "summary": {
+ "total_objectives": 11,
+ "total_key_results": 22,
+ "company_objectives": 3,
+ "product_objectives": 3,
+ "team_objectives": 5,
+ "teams_involved": 4
+ }
+}
diff --git a/product-team/product-strategist/references/okr_framework.md b/product-team/product-strategist/references/okr_framework.md
new file mode 100644
index 0000000..8bf1bc3
--- /dev/null
+++ b/product-team/product-strategist/references/okr_framework.md
@@ -0,0 +1,328 @@
+# OKR Cascade Framework
+
+A practical guide to Objectives and Key Results (OKRs) and how to cascade them across organizational levels.
+
+---
+
+## Table of Contents
+
+- [What Are OKRs](#what-are-okrs)
+- [The Cascade Model](#the-cascade-model)
+- [Writing Effective Objectives](#writing-effective-objectives)
+- [Defining Key Results](#defining-key-results)
+- [Alignment Scoring](#alignment-scoring)
+- [Common Pitfalls](#common-pitfalls)
+- [OKR Cadence](#okr-cadence)
+
+---
+
+## What Are OKRs
+
+**Objectives and Key Results (OKRs)** are a goal-setting framework that connects organizational strategy to measurable outcomes.
+
+### Components
+
+| Component | Definition | Characteristics |
+|-----------|------------|-----------------|
+| **Objective** | What you want to achieve | Qualitative, inspirational, time-bound |
+| **Key Result** | How you measure progress | Quantitative, specific, measurable |
+
+### OKR Formula
+
+```
+Objective: [Inspirational goal statement]
+āāā KR1: [Metric] from [current] to [target] by [date]
+āāā KR2: [Metric] from [current] to [target] by [date]
+āāā KR3: [Metric] from [current] to [target] by [date]
+```
+
+### Example
+
+```
+Objective: Become the go-to solution for enterprise customers
+
+KR1: Increase enterprise ARR from $5M to $8M
+KR2: Improve enterprise NPS from 35 to 50
+KR3: Reduce enterprise onboarding time from 30 days to 14 days
+```
+
+---
+
+## The Cascade Model
+
+OKRs cascade from company strategy down to individual teams, ensuring alignment at every level.
+
+### Cascade Structure
+
+```
+āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
+ā COMPANY LEVEL ā
+ā Strategic objectives set by leadership ā
+ā Owned by: CEO, Executive Team ā
+āāāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāāāāāāā
+ ā
+ ā¼
+āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
+ā PRODUCT LEVEL ā
+ā How product org contributes to company ā
+ā Owned by: Head of Product, CPO ā
+āāāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāāāāāāā
+ ā
+ ā¼
+āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
+ā TEAM LEVEL ā
+ā Specific initiatives and deliverables ā
+ā Owned by: Product Managers, Tech Leads ā
+āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
+```
+
+### Contribution Model
+
+Each level contributes a percentage to the level above:
+
+| Level | Typical Contribution | Range |
+|-------|---------------------|-------|
+| Product ā Company | 30% | 20-50% |
+| Team ā Product | 25% per team | 15-35% |
+
+**Note:** Contribution percentages should be calibrated based on:
+- Number of teams
+- Relative team size
+- Strategic importance of initiatives
+
+### Alignment Types
+
+| Alignment | Description | Goal |
+|-----------|-------------|------|
+| **Vertical** | Each level supports the level above | >90% of objectives linked |
+| **Horizontal** | Teams coordinate on shared objectives | No conflicting goals |
+| **Temporal** | Quarterly OKRs support annual goals | Clear progression |
+
+---
+
+## Writing Effective Objectives
+
+### The 3 Cs of Objectives
+
+| Criterion | Description | Example |
+|-----------|-------------|---------|
+| **Clear** | Unambiguous intent | "Improve customer onboarding" not "Make things better" |
+| **Compelling** | Inspires action | "Delight enterprise customers" not "Serve enterprise" |
+| **Challenging** | Stretches capabilities | Achievable but requires effort |
+
+### Objective Templates by Strategy
+
+**Growth Strategy:**
+```
+- Accelerate user acquisition in [segment]
+- Expand market presence in [region/vertical]
+- Build sustainable acquisition channels
+```
+
+**Retention Strategy:**
+```
+- Create lasting value for [user segment]
+- Improve product experience for [use case]
+- Maximize customer lifetime value
+```
+
+**Revenue Strategy:**
+```
+- Drive revenue growth through [mechanism]
+- Optimize monetization for [segment]
+- Expand revenue per customer
+```
+
+**Innovation Strategy:**
+```
+- Pioneer [capability] in the market
+- Establish leadership through [innovation area]
+- Build competitive differentiation
+```
+
+**Operational Strategy:**
+```
+- Improve delivery efficiency by [mechanism]
+- Scale operations to support [target]
+- Reduce operational friction in [area]
+```
+
+### Objective Anti-Patterns
+
+| Anti-Pattern | Problem | Better Alternative |
+|--------------|---------|-------------------|
+| "Increase revenue" | Too vague | "Grow enterprise ARR to $10M" |
+| "Be the best" | Not measurable | "Achieve #1 NPS in category" |
+| "Fix bugs" | Too tactical | "Improve platform reliability" |
+| "Launch feature X" | Output, not outcome | "Improve [metric] through [capability]" |
+
+---
+
+## Defining Key Results
+
+### Key Result Anatomy
+
+```
+[Verb] [metric] from [current baseline] to [target] by [deadline]
+```
+
+### Key Result Types
+
+| Type | Characteristics | When to Use |
+|------|-----------------|-------------|
+| **Metric-based** | Track a number | Most common, highly measurable |
+| **Milestone-based** | Track completion | For binary deliverables |
+| **Health-based** | Track stability | For maintenance objectives |
+
+### Metric Categories
+
+| Category | Examples |
+|----------|----------|
+| **Acquisition** | Signups, trials started, leads generated |
+| **Activation** | Onboarding completion, first value moment |
+| **Retention** | D7/D30 retention, churn rate, repeat usage |
+| **Revenue** | ARR, ARPU, conversion rate, LTV |
+| **Engagement** | DAU/MAU, session duration, actions per session |
+| **Satisfaction** | NPS, CSAT, support tickets |
+| **Efficiency** | Cycle time, automation rate, cost per unit |
+
+### Key Result Scoring
+
+| Score | Status | Description |
+|-------|--------|-------------|
+| 0.0-0.3 | Red | Significant gap, needs intervention |
+| 0.4-0.6 | Yellow | Partial progress, on watch |
+| 0.7-0.9 | Green | Strong progress, on track |
+| 1.0 | Complete | Target achieved |
+
+**Note:** Hitting 0.7 is considered success for stretch goals. Consistently hitting 1.0 suggests targets aren't ambitious enough.
+
+---
+
+## Alignment Scoring
+
+The OKR cascade generator calculates alignment scores across four dimensions:
+
+### Scoring Dimensions
+
+| Dimension | Weight | What It Measures |
+|-----------|--------|------------------|
+| **Vertical Alignment** | 40% | % of objectives with parent links |
+| **Horizontal Alignment** | 20% | Cross-team coordination on shared goals |
+| **Coverage** | 20% | % of company KRs addressed by product |
+| **Balance** | 20% | Even distribution of work across teams |
+
+### Alignment Score Interpretation
+
+| Score | Grade | Interpretation |
+|-------|-------|----------------|
+| 90-100% | A | Excellent alignment, well-cascaded |
+| 80-89% | B | Good alignment, minor gaps |
+| 70-79% | C | Adequate, needs attention |
+| 60-69% | D | Poor alignment, significant gaps |
+| <60% | F | Misaligned, requires restructuring |
+
+### Target Benchmarks
+
+| Metric | Target | Red Flag |
+|--------|--------|----------|
+| Vertical alignment | >90% | <70% |
+| Horizontal alignment | >75% | <50% |
+| Coverage | >80% | <60% |
+| Balance | >80% | <60% |
+| Overall | >80% | <65% |
+
+---
+
+## Common Pitfalls
+
+### OKR Anti-Patterns
+
+| Pitfall | Symptom | Fix |
+|---------|---------|-----|
+| **Too many OKRs** | 10+ objectives per level | Limit to 3-5 objectives |
+| **Sandbagging** | Always hit 100% | Set stretch targets (0.7 = success) |
+| **Task lists** | KRs are tasks, not outcomes | Focus on measurable impact |
+| **Set and forget** | No mid-quarter reviews | Check-ins every 2 weeks |
+| **Cascade disconnect** | Team OKRs don't link up | Validate parent relationships |
+| **Metric gaming** | Optimizing for KR, not intent | Balance with health metrics |
+
+### Warning Signs
+
+- All teams have identical objectives (lack of specialization)
+- No team owns a critical company objective (gap in coverage)
+- One team owns everything (unrealistic load)
+- Objectives change weekly (lack of commitment)
+- KRs are activities, not outcomes (wrong focus)
+
+---
+
+## OKR Cadence
+
+### Quarterly Rhythm
+
+| Week | Activity |
+|------|----------|
+| **Week -2** | Leadership sets company OKRs draft |
+| **Week -1** | Product and team OKR drafting |
+| **Week 0** | OKR finalization and alignment review |
+| **Week 2** | First check-in, adjust if needed |
+| **Week 6** | Mid-quarter review |
+| **Week 10** | Pre-quarter reflection |
+| **Week 12** | Quarter close, scoring, learnings |
+
+### Check-in Format
+
+```
+Weekly/Bi-weekly Status Update:
+
+1. Confidence level: [Red/Yellow/Green]
+2. Progress since last check-in: [specific updates]
+3. Blockers: [what's in the way]
+4. Asks: [what help is needed]
+5. Forecast: [expected end-of-quarter score]
+```
+
+### Annual Alignment
+
+Quarterly OKRs should ladder up to annual goals:
+
+```
+Annual Goal: Become a $100M ARR business
+
+Q1: Build enterprise sales motion (ARR: $25M ā $32M)
+Q2: Expand into APAC region (ARR: $32M ā $45M)
+Q3: Launch self-serve enterprise tier (ARR: $45M ā $65M)
+Q4: Scale and optimize (ARR: $65M ā $100M)
+```
+
+---
+
+## Quick Reference
+
+### OKR Checklist
+
+**Before finalizing OKRs:**
+- [ ] 3-5 objectives per level (not more)
+- [ ] 3-5 key results per objective
+- [ ] Each KR has a current baseline and target
+- [ ] Vertical alignment validated (parent links)
+- [ ] No conflicting objectives across teams
+- [ ] Owners assigned to every objective
+- [ ] Check-in cadence defined
+
+**During the quarter:**
+- [ ] Bi-weekly progress updates
+- [ ] Mid-quarter formal review
+- [ ] Adjust forecasts based on learnings
+- [ ] Escalate blockers early
+
+**End of quarter:**
+- [ ] Score all key results (0.0-1.0)
+- [ ] Document learnings
+- [ ] Celebrate wins
+- [ ] Carry forward or close incomplete items
+
+---
+
+*See also: `strategy_types.md` for strategy-specific OKR templates*
diff --git a/product-team/product-strategist/references/strategy_types.md b/product-team/product-strategist/references/strategy_types.md
new file mode 100644
index 0000000..4f39e96
--- /dev/null
+++ b/product-team/product-strategist/references/strategy_types.md
@@ -0,0 +1,320 @@
+# Strategy Types for OKR Generation
+
+Comprehensive breakdown of the five core strategy types with objectives, key results, and when to use each.
+
+---
+
+## Table of Contents
+
+- [Strategy Selection Guide](#strategy-selection-guide)
+- [Growth Strategy](#growth-strategy)
+- [Retention Strategy](#retention-strategy)
+- [Revenue Strategy](#revenue-strategy)
+- [Innovation Strategy](#innovation-strategy)
+- [Operational Strategy](#operational-strategy)
+- [Multi-Strategy Combinations](#multi-strategy-combinations)
+
+---
+
+## Strategy Selection Guide
+
+### Decision Matrix
+
+| If your priority is... | Primary Strategy | Secondary Strategy |
+|------------------------|------------------|-------------------|
+| Scaling user base | Growth | Retention |
+| Reducing churn | Retention | Revenue |
+| Increasing ARPU | Revenue | Retention |
+| Market differentiation | Innovation | Growth |
+| Improving efficiency | Operational | Revenue |
+| New market entry | Growth | Innovation |
+
+### Strategy by Company Stage
+
+| Stage | Typical Priority | Rationale |
+|-------|------------------|-----------|
+| **Pre-PMF** | Innovation | Finding product-market fit |
+| **Early Growth** | Growth | Scaling acquisition |
+| **Growth** | Growth + Retention | Balancing acquisition with value |
+| **Scale** | Revenue + Retention | Optimizing unit economics |
+| **Mature** | Operational + Revenue | Efficiency and margins |
+
+---
+
+## Growth Strategy
+
+**Focus:** Accelerating user acquisition and market expansion
+
+### When to Use
+
+- User growth is primary company objective
+- Product-market fit is validated
+- Acquisition channels are scaling
+- Ready to invest in growth loops
+
+### Company-Level Objectives
+
+| Objective | Key Results Template |
+|-----------|---------------------|
+| Accelerate user acquisition and market expansion | - Increase MAU from X to Y
- Achieve Z% MoM growth rate
- Expand to N new markets |
+| Achieve product-market fit in new segments | - Reach X users in [segment]
- Achieve Y% activation rate
- Validate Z use cases |
+| Build sustainable growth engine | - Reduce CAC by X%
- Improve viral coefficient to Y
- Increase organic share to Z% |
+
+### Product-Level Cascade
+
+| Product Objective | Supports | Key Results |
+|-------------------|----------|-------------|
+| Build viral product features | User acquisition | - Launch referral program (target: X referrals/user)
- Increase shareability by Y% |
+| Optimize onboarding experience | Activation | - Improve activation rate from X% to Y%
- Reduce time-to-value by Z% |
+| Create product-led growth loops | Sustainable growth | - Increase product-qualified leads by X%
- Improve trial-to-paid by Y% |
+
+### Team-Level Examples
+
+| Team | Focus Area | Sample KRs |
+|------|------------|------------|
+| Growth Team | Acquisition & activation | - Improve signup conversion by X%
- Launch Y experiments/week |
+| Platform Team | Scale & reliability | - Support X concurrent users
- Maintain Y% uptime |
+| Mobile Team | Mobile acquisition | - Increase mobile signups by X%
- Improve mobile activation by Y% |
+
+### Key Metrics to Track
+
+- Monthly Active Users (MAU)
+- Growth rate (MoM, YoY)
+- Customer Acquisition Cost (CAC)
+- Activation rate
+- Viral coefficient
+- Channel efficiency
+
+---
+
+## Retention Strategy
+
+**Focus:** Creating lasting customer value and reducing churn
+
+### When to Use
+
+- Churn is above industry benchmark
+- LTV/CAC needs improvement
+- Product stickiness is low
+- Expansion revenue is a priority
+
+### Company-Level Objectives
+
+| Objective | Key Results Template |
+|-----------|---------------------|
+| Create lasting customer value and loyalty | - Improve retention from X% to Y%
- Increase NPS from X to Y
- Reduce churn to below Z% |
+| Deliver a superior user experience | - Achieve X% product stickiness
- Improve satisfaction to Y/10
- Reduce support tickets by Z% |
+| Maximize customer lifetime value | - Increase LTV by X%
- Improve LTV/CAC ratio to Y
- Grow expansion revenue by Z% |
+
+### Product-Level Cascade
+
+| Product Objective | Supports | Key Results |
+|-------------------|----------|-------------|
+| Design sticky user experiences | Customer retention | - Increase DAU/MAU ratio from X to Y
- Improve weekly return rate by Z% |
+| Build habit-forming features | Product stickiness | - Achieve X% feature adoption
- Increase sessions/user by Y |
+| Create expansion opportunities | Lifetime value | - Launch N upsell touchpoints
- Improve upgrade rate by X% |
+
+### Team-Level Examples
+
+| Team | Focus Area | Sample KRs |
+|------|------------|------------|
+| Growth Team | Retention loops | - Improve D7 retention by X%
- Reduce first-week churn by Y% |
+| Data Team | Churn prediction | - Build churn model (accuracy >X%)
- Identify Y at-risk signals |
+| Platform Team | Reliability | - Reduce error rates by X%
- Improve load times by Y% |
+
+### Key Metrics to Track
+
+- Retention rates (D1, D7, D30, D90)
+- Churn rate
+- Net Promoter Score (NPS)
+- Customer Satisfaction (CSAT)
+- Feature stickiness
+- Session frequency
+
+---
+
+## Revenue Strategy
+
+**Focus:** Driving sustainable revenue growth and monetization
+
+### When to Use
+
+- Company is focused on profitability
+- Monetization needs optimization
+- Pricing strategy is being revised
+- Expansion revenue is priority
+
+### Company-Level Objectives
+
+| Objective | Key Results Template |
+|-----------|---------------------|
+| Drive sustainable revenue growth | - Grow ARR from $X to $Y
- Achieve Z% revenue growth rate
- Maintain X% gross margin |
+| Optimize monetization strategy | - Increase ARPU by X%
- Improve pricing efficiency by Y%
- Launch Z new pricing tiers |
+| Expand revenue per customer | - Grow expansion revenue by X%
- Reduce revenue churn to Y%
- Increase upsell rate by Z% |
+
+### Product-Level Cascade
+
+| Product Objective | Supports | Key Results |
+|-------------------|----------|-------------|
+| Optimize product monetization | Revenue growth | - Improve conversion to paid by X%
- Reduce free tier abuse by Y% |
+| Build premium features | ARPU growth | - Launch N premium features
- Achieve X% premium adoption |
+| Create value-based pricing alignment | Pricing efficiency | - Implement usage-based pricing
- Improve price-to-value ratio by X% |
+
+### Team-Level Examples
+
+| Team | Focus Area | Sample KRs |
+|------|------------|------------|
+| Growth Team | Conversion | - Improve trial-to-paid by X%
- Reduce time-to-upgrade by Y days |
+| Platform Team | Usage metering | - Implement accurate usage tracking
- Support X billing scenarios |
+| Data Team | Revenue analytics | - Build revenue forecasting model
- Identify Y expansion signals |
+
+### Key Metrics to Track
+
+- Annual Recurring Revenue (ARR)
+- Average Revenue Per User (ARPU)
+- Gross margin
+- Revenue churn (net and gross)
+- Expansion revenue
+- LTV/CAC ratio
+
+---
+
+## Innovation Strategy
+
+**Focus:** Building competitive advantage through product innovation
+
+### When to Use
+
+- Market is commoditizing
+- Competitors are catching up
+- New technology opportunity exists
+- Company needs differentiation
+
+### Company-Level Objectives
+
+| Objective | Key Results Template |
+|-----------|---------------------|
+| Lead the market through product innovation | - Launch X breakthrough features
- Achieve Y% revenue from new products
- File Z patents/IP |
+| Establish market leadership in [area] | - Become #1 in category for X
- Win Y analyst recognitions
- Achieve Z% awareness |
+| Build sustainable competitive moat | - Reduce feature parity gap by X%
- Create Y unique capabilities
- Build Z switching barriers |
+
+### Product-Level Cascade
+
+| Product Objective | Supports | Key Results |
+|-------------------|----------|-------------|
+| Ship innovative features faster | Breakthrough innovation | - Reduce time-to-market by X%
- Launch Y experiments/quarter |
+| Build unique technical capabilities | Competitive moat | - Develop X proprietary algorithms
- Achieve Y performance advantage |
+| Create platform extensibility | Ecosystem advantage | - Launch N API endpoints
- Enable X third-party integrations |
+
+### Team-Level Examples
+
+| Team | Focus Area | Sample KRs |
+|------|------------|------------|
+| Platform Team | Core technology | - Build X new infrastructure capabilities
- Improve performance by Y% |
+| Data Team | ML/AI innovation | - Deploy X ML models
- Improve prediction accuracy by Y% |
+| Mobile Team | Mobile innovation | - Launch X mobile-first features
- Achieve Y% mobile parity |
+
+### Key Metrics to Track
+
+- Time-to-market
+- Revenue from new products
+- Feature uniqueness score
+- Patent/IP filings
+- Technology differentiation
+- Innovation velocity
+
+---
+
+## Operational Strategy
+
+**Focus:** Improving efficiency and organizational excellence
+
+### When to Use
+
+- Scaling challenges are emerging
+- Operational costs are high
+- Team productivity needs improvement
+- Quality issues are increasing
+
+### Company-Level Objectives
+
+| Objective | Key Results Template |
+|-----------|---------------------|
+| Improve organizational efficiency | - Improve velocity by X%
- Reduce cycle time to Y days
- Achieve Z% automation |
+| Scale operations sustainably | - Support X users per engineer
- Reduce cost per transaction by Y%
- Improve operational leverage by Z% |
+| Achieve operational excellence | - Reduce incidents by X%
- Improve team NPS to Y
- Achieve Z% on-time delivery |
+
+### Product-Level Cascade
+
+| Product Objective | Supports | Key Results |
+|-------------------|----------|-------------|
+| Improve product delivery efficiency | Velocity | - Reduce PR cycle time by X%
- Increase deployment frequency by Y% |
+| Reduce operational toil | Automation | - Automate X% of manual processes
- Reduce on-call burden by Y% |
+| Improve product quality | Excellence | - Reduce bugs by X%
- Improve test coverage to Y% |
+
+### Team-Level Examples
+
+| Team | Focus Area | Sample KRs |
+|------|------------|------------|
+| Platform Team | Infrastructure efficiency | - Reduce infrastructure costs by X%
- Improve deployment reliability to Y% |
+| Data Team | Data operations | - Improve data pipeline reliability to X%
- Reduce data latency by Y% |
+| All Teams | Process improvement | - Reduce meeting overhead by X%
- Improve sprint predictability to Y% |
+
+### Key Metrics to Track
+
+- Velocity (story points, throughput)
+- Cycle time
+- Deployment frequency
+- Change failure rate
+- Incident count and MTTR
+- Team satisfaction (eNPS)
+
+---
+
+## Multi-Strategy Combinations
+
+### Common Pairings
+
+| Primary | Secondary | Balanced Objectives |
+|---------|-----------|---------------------|
+| Growth + Retention | 60/40 | Grow while keeping users |
+| Revenue + Retention | 50/50 | Monetize without churning |
+| Innovation + Growth | 40/60 | Differentiate to acquire |
+| Operational + Revenue | 50/50 | Efficiency for margins |
+
+### Balanced OKR Set Example
+
+**Mixed Growth + Retention Strategy:**
+
+```
+Company Objective 1: Accelerate user growth (Growth)
+āāā KR1: Increase MAU from 100K to 200K
+āāā KR2: Achieve 15% MoM growth rate
+āāā KR3: Reduce CAC by 20%
+
+Company Objective 2: Improve user retention (Retention)
+āāā KR1: Improve D30 retention from 20% to 35%
+āāā KR2: Increase NPS from 40 to 55
+āāā KR3: Reduce churn to below 5%
+
+Company Objective 3: Improve delivery efficiency (Operational)
+āāā KR1: Reduce cycle time by 30%
+āāā KR2: Achieve 95% on-time delivery
+āāā KR3: Improve team eNPS to 50
+```
+
+---
+
+## Strategy Selection Checklist
+
+Before choosing a strategy:
+
+- [ ] What is the company's #1 priority this quarter?
+- [ ] What metrics is leadership being evaluated on?
+- [ ] Where are the biggest gaps vs. competitors?
+- [ ] What does customer feedback emphasize?
+- [ ] What can we realistically move in 90 days?
+
+---
+
+*See also: `okr_framework.md` for OKR writing best practices*
diff --git a/product-team/product-strategist/scripts/okr_cascade_generator.py b/product-team/product-strategist/scripts/okr_cascade_generator.py
index 40198e5..ef644f6 100644
--- a/product-team/product-strategist/scripts/okr_cascade_generator.py
+++ b/product-team/product-strategist/scripts/okr_cascade_generator.py
@@ -1,17 +1,40 @@
#!/usr/bin/env python3
"""
OKR Cascade Generator
-Creates aligned OKRs from company strategy down to team level
+Creates aligned OKRs from company strategy down to team level.
+
+Features:
+- Generates company ā product ā team OKR cascade
+- Configurable team structure and contribution percentages
+- Alignment scoring across vertical and horizontal dimensions
+- Multiple output formats (dashboard, JSON)
+
+Usage:
+ python okr_cascade_generator.py growth
+ python okr_cascade_generator.py retention --teams "Engineering,Design,Data"
+ python okr_cascade_generator.py revenue --contribution 0.4 --json
"""
import json
+import argparse
from typing import Dict, List
-from datetime import datetime, timedelta
+from datetime import datetime
+
class OKRGenerator:
"""Generate and cascade OKRs across the organization"""
-
- def __init__(self):
+
+ def __init__(self, teams: List[str] = None, product_contribution: float = 0.3):
+ """
+ Initialize OKR generator.
+
+ Args:
+ teams: List of team names (default: Growth, Platform, Mobile, Data)
+ product_contribution: Fraction of company KRs that product owns (default: 0.3)
+ """
+ self.teams = teams or ['Growth', 'Platform', 'Mobile', 'Data']
+ self.product_contribution = product_contribution
+
self.okr_templates = {
'growth': {
'objectives': [
@@ -30,7 +53,7 @@ class OKRGenerator:
'retention': {
'objectives': [
'Create lasting customer value and loyalty',
- 'Build best-in-class user experience',
+ 'Deliver a superior user experience',
'Maximize customer lifetime value'
],
'key_results': [
@@ -57,9 +80,9 @@ class OKRGenerator:
},
'innovation': {
'objectives': [
- 'Pioneer next-generation product capabilities',
- 'Establish market leadership through innovation',
- 'Build competitive moat'
+ 'Lead the market through product innovation',
+ 'Establish leadership in key capability areas',
+ 'Build sustainable competitive differentiation'
],
'key_results': [
'Launch {target} breakthrough features',
@@ -71,36 +94,46 @@ class OKRGenerator:
},
'operational': {
'objectives': [
- 'Build world-class product organization',
+ 'Improve organizational efficiency',
'Achieve operational excellence',
- 'Scale efficiently'
+ 'Scale operations sustainably'
],
'key_results': [
'Improve velocity by {target}%',
'Reduce cycle time to {target} days',
'Achieve {target}% automation',
- 'Improve team NPS to {target}',
+ 'Improve team satisfaction to {target}',
'Reduce incidents by {target}%'
]
}
}
-
+
+ # Team focus areas for objective relevance matching
+ self.team_relevance = {
+ 'Growth': ['acquisition', 'growth', 'activation', 'viral', 'onboarding', 'conversion'],
+ 'Platform': ['infrastructure', 'reliability', 'scale', 'performance', 'efficiency', 'automation'],
+ 'Mobile': ['mobile', 'app', 'ios', 'android', 'native'],
+ 'Data': ['analytics', 'metrics', 'insights', 'data', 'measurement', 'experimentation'],
+ 'Engineering': ['delivery', 'velocity', 'quality', 'automation', 'infrastructure'],
+ 'Design': ['experience', 'usability', 'interface', 'user', 'accessibility'],
+ 'Product': ['features', 'roadmap', 'prioritization', 'strategy'],
+ }
+
def generate_company_okrs(self, strategy: str, metrics: Dict) -> Dict:
"""Generate company-level OKRs based on strategy"""
-
+
if strategy not in self.okr_templates:
- strategy = 'growth' # Default
-
+ strategy = 'growth'
+
template = self.okr_templates[strategy]
-
+
company_okrs = {
'level': 'Company',
'quarter': self._get_current_quarter(),
'strategy': strategy,
'objectives': []
}
-
- # Generate 3 objectives
+
for i in range(min(3, len(template['objectives']))):
obj = {
'id': f'CO-{i+1}',
@@ -109,8 +142,7 @@ class OKRGenerator:
'owner': 'CEO',
'status': 'draft'
}
-
- # Add 3-5 key results per objective
+
for j in range(3):
if j < len(template['key_results']):
kr_template = template['key_results'][j]
@@ -123,22 +155,22 @@ class OKRGenerator:
'status': 'not_started'
}
obj['key_results'].append(kr)
-
+
company_okrs['objectives'].append(obj)
-
+
return company_okrs
-
+
def cascade_to_product(self, company_okrs: Dict) -> Dict:
"""Cascade company OKRs to product organization"""
-
+
product_okrs = {
'level': 'Product',
'quarter': company_okrs['quarter'],
'parent': 'Company',
+ 'contribution': self.product_contribution,
'objectives': []
}
-
- # Map company objectives to product objectives
+
for company_obj in company_okrs['objectives']:
product_obj = {
'id': f'PO-{company_obj["id"].split("-")[1]}',
@@ -148,40 +180,40 @@ class OKRGenerator:
'owner': 'Head of Product',
'status': 'draft'
}
-
- # Generate product-specific key results
+
for kr in company_obj['key_results']:
product_kr = {
'id': f'PO-{product_obj["id"].split("-")[1]}-KR{kr["id"].split("KR")[1]}',
'title': self._translate_kr_to_product(kr['title']),
'contributes_to': kr['id'],
'current': kr['current'],
- 'target': kr['target'] * 0.3, # Product typically contributes 30%
+ 'target': kr['target'] * self.product_contribution,
'unit': kr['unit'],
+ 'contribution_pct': self.product_contribution * 100,
'status': 'not_started'
}
product_obj['key_results'].append(product_kr)
-
+
product_okrs['objectives'].append(product_obj)
-
+
return product_okrs
-
+
def cascade_to_teams(self, product_okrs: Dict) -> List[Dict]:
"""Cascade product OKRs to individual teams"""
-
- teams = ['Growth', 'Platform', 'Mobile', 'Data']
+
team_okrs = []
-
- for team in teams:
+ team_contribution = 1.0 / len(self.teams) if self.teams else 0.25
+
+ for team in self.teams:
team_okr = {
'level': 'Team',
'team': team,
'quarter': product_okrs['quarter'],
'parent': 'Product',
+ 'contribution': team_contribution,
'objectives': []
}
-
- # Each team takes relevant objectives
+
for product_obj in product_okrs['objectives']:
if self._is_relevant_for_team(product_obj['title'], team):
team_obj = {
@@ -192,35 +224,37 @@ class OKRGenerator:
'owner': f'{team} PM',
'status': 'draft'
}
-
- # Add team-specific key results
- for kr in product_obj['key_results'][:2]: # Each team takes 2 KRs
+
+ for kr in product_obj['key_results'][:2]:
team_kr = {
'id': f'{team[:3].upper()}-{team_obj["id"].split("-")[1]}-KR{kr["id"].split("KR")[1]}',
'title': self._translate_kr_to_team(kr['title'], team),
'contributes_to': kr['id'],
'current': kr['current'],
- 'target': kr['target'] / len(teams),
+ 'target': kr['target'] * team_contribution,
'unit': kr['unit'],
'status': 'not_started'
}
team_obj['key_results'].append(team_kr)
-
+
team_okr['objectives'].append(team_obj)
-
+
if team_okr['objectives']:
team_okrs.append(team_okr)
-
+
return team_okrs
-
+
def generate_okr_dashboard(self, all_okrs: Dict) -> str:
"""Generate OKR dashboard view"""
-
+
dashboard = ["=" * 60]
dashboard.append("OKR CASCADE DASHBOARD")
dashboard.append(f"Quarter: {all_okrs.get('quarter', 'Q1 2025')}")
+ dashboard.append(f"Strategy: {all_okrs.get('strategy', 'growth').upper()}")
+ dashboard.append(f"Teams: {', '.join(self.teams)}")
+ dashboard.append(f"Product Contribution: {self.product_contribution * 100:.0f}%")
dashboard.append("=" * 60)
-
+
# Company OKRs
if 'company' in all_okrs:
dashboard.append("\nš¢ COMPANY OKRS\n")
@@ -228,7 +262,7 @@ class OKRGenerator:
dashboard.append(f"š {obj['id']}: {obj['title']}")
for kr in obj['key_results']:
dashboard.append(f" āā {kr['id']}: {kr['title']}")
-
+
# Product OKRs
if 'product' in all_okrs:
dashboard.append("\nš PRODUCT OKRS\n")
@@ -237,7 +271,7 @@ class OKRGenerator:
dashboard.append(f" ā³ Supports: {obj.get('parent_objective', 'N/A')}")
for kr in obj['key_results']:
dashboard.append(f" āā {kr['id']}: {kr['title']}")
-
+
# Team OKRs
if 'teams' in all_okrs:
dashboard.append("\nš„ TEAM OKRS\n")
@@ -247,12 +281,12 @@ class OKRGenerator:
dashboard.append(f" š {obj['id']}: {obj['title']}")
for kr in obj['key_results']:
dashboard.append(f" āā {kr['id']}: {kr['title']}")
-
+
# Alignment Matrix
dashboard.append("\n\nš ALIGNMENT MATRIX\n")
dashboard.append("Company ā Product ā Teams")
dashboard.append("-" * 40)
-
+
if 'company' in all_okrs and 'product' in all_okrs:
for c_obj in all_okrs['company']['objectives']:
dashboard.append(f"\n{c_obj['id']}")
@@ -264,12 +298,12 @@ class OKRGenerator:
for t_obj in team_okr['objectives']:
if t_obj.get('parent_objective') == p_obj['id']:
dashboard.append(f" āā {t_obj['id']} ({team_okr['team']})")
-
+
return "\n".join(dashboard)
-
+
def calculate_alignment_score(self, all_okrs: Dict) -> Dict:
"""Calculate alignment score across OKR cascade"""
-
+
scores = {
'vertical_alignment': 0,
'horizontal_alignment': 0,
@@ -277,27 +311,27 @@ class OKRGenerator:
'balance': 0,
'overall': 0
}
-
+
# Vertical alignment: How well each level supports the above
total_objectives = 0
aligned_objectives = 0
-
+
if 'product' in all_okrs:
for obj in all_okrs['product']['objectives']:
total_objectives += 1
if 'parent_objective' in obj:
aligned_objectives += 1
-
+
if 'teams' in all_okrs:
for team in all_okrs['teams']:
for obj in team['objectives']:
total_objectives += 1
if 'parent_objective' in obj:
aligned_objectives += 1
-
+
if total_objectives > 0:
scores['vertical_alignment'] = round((aligned_objectives / total_objectives) * 100, 1)
-
+
# Horizontal alignment: How well teams coordinate
if 'teams' in all_okrs and len(all_okrs['teams']) > 1:
shared_objectives = set()
@@ -306,16 +340,16 @@ class OKRGenerator:
parent = obj.get('parent_objective')
if parent:
shared_objectives.add(parent)
-
+
scores['horizontal_alignment'] = min(100, len(shared_objectives) * 25)
-
+
# Coverage: How much of company OKRs are covered
if 'company' in all_okrs and 'product' in all_okrs:
company_krs = sum(len(obj['key_results']) for obj in all_okrs['company']['objectives'])
covered_krs = sum(len(obj['key_results']) for obj in all_okrs['product']['objectives'])
if company_krs > 0:
scores['coverage'] = round((covered_krs / company_krs) * 100, 1)
-
+
# Balance: Distribution across teams
if 'teams' in all_okrs:
objectives_per_team = [len(team['objectives']) for team in all_okrs['teams']]
@@ -323,7 +357,7 @@ class OKRGenerator:
avg_objectives = sum(objectives_per_team) / len(objectives_per_team)
variance = sum((x - avg_objectives) ** 2 for x in objectives_per_team) / len(objectives_per_team)
scores['balance'] = round(max(0, 100 - variance * 10), 1)
-
+
# Overall score
scores['overall'] = round(sum([
scores['vertical_alignment'] * 0.4,
@@ -331,22 +365,22 @@ class OKRGenerator:
scores['coverage'] * 0.2,
scores['balance'] * 0.2
]), 1)
-
+
return scores
-
+
def _get_current_quarter(self) -> str:
"""Get current quarter"""
now = datetime.now()
quarter = (now.month - 1) // 3 + 1
return f"Q{quarter} {now.year}"
-
+
def _fill_metrics(self, template: str, metrics: Dict) -> str:
"""Fill template with actual metrics"""
result = template
for key, value in metrics.items():
result = result.replace(f'{{{key}}}', str(value))
return result
-
+
def _extract_unit(self, kr_template: str) -> str:
"""Extract measurement unit from KR template"""
if '%' in kr_template:
@@ -358,7 +392,7 @@ class OKRGenerator:
elif 'score' in kr_template.lower():
return 'points'
return 'count'
-
+
def _translate_to_product(self, company_objective: str) -> str:
"""Translate company objective to product objective"""
translations = {
@@ -367,15 +401,15 @@ class OKRGenerator:
'Build sustainable growth': 'Create product-led growth loops',
'Create lasting customer value': 'Design sticky user experiences',
'Drive sustainable revenue': 'Optimize product monetization',
- 'Pioneer next-generation': 'Ship innovative features',
- 'Build world-class': 'Elevate product excellence'
+ 'Lead the market through': 'Ship innovative features to',
+ 'Improve organizational': 'Improve product delivery'
}
-
+
for key, value in translations.items():
if key in company_objective:
return company_objective.replace(key, value)
return f"Product: {company_objective}"
-
+
def _translate_kr_to_product(self, kr: str) -> str:
"""Translate KR to product context"""
product_terms = {
@@ -387,92 +421,172 @@ class OKRGenerator:
'ARR': 'product-driven revenue',
'churn': 'product churn'
}
-
+
result = kr
for term, replacement in product_terms.items():
if term in result:
result = result.replace(term, replacement)
break
return result
-
+
def _translate_to_team(self, objective: str, team: str) -> str:
"""Translate objective to team context"""
team_focus = {
'Growth': 'acquisition and activation',
'Platform': 'infrastructure and reliability',
'Mobile': 'mobile experience',
- 'Data': 'analytics and insights'
+ 'Data': 'analytics and insights',
+ 'Engineering': 'technical delivery',
+ 'Design': 'user experience',
+ 'Product': 'product strategy'
}
-
+
focus = team_focus.get(team, 'delivery')
return f"{objective} through {focus}"
-
+
def _translate_kr_to_team(self, kr: str, team: str) -> str:
"""Translate KR to team context"""
return f"[{team}] {kr}"
-
+
def _is_relevant_for_team(self, objective: str, team: str) -> bool:
"""Check if objective is relevant for team"""
- relevance = {
- 'Growth': ['acquisition', 'growth', 'activation', 'viral'],
- 'Platform': ['infrastructure', 'reliability', 'scale', 'performance'],
- 'Mobile': ['mobile', 'app', 'ios', 'android'],
- 'Data': ['analytics', 'metrics', 'insights', 'data']
- }
-
- keywords = relevance.get(team, [])
+ keywords = self.team_relevance.get(team, [])
objective_lower = objective.lower()
- return any(keyword in objective_lower for keyword in keywords) or team == 'Platform'
+
+ # Platform is always relevant (infrastructure supports everything)
+ if team == 'Platform':
+ return True
+
+ return any(keyword in objective_lower for keyword in keywords)
+
+
+def parse_teams(teams_str: str) -> List[str]:
+ """Parse comma-separated team string into list"""
+ if not teams_str:
+ return None
+ return [t.strip() for t in teams_str.split(',') if t.strip()]
+
def main():
- import sys
-
- # Sample metrics
- metrics = {
- 'current': 100000,
- 'target': 150000,
- 'current_revenue': 10,
- 'target_revenue': 15,
- 'current_nps': 40,
- 'target_nps': 60
- }
-
- # Get strategy from command line or default
- strategy = sys.argv[1] if len(sys.argv) > 1 else 'growth'
-
+ parser = argparse.ArgumentParser(
+ description='Generate OKR cascade from company strategy to team level',
+ formatter_class=argparse.RawDescriptionHelpFormatter,
+ epilog="""
+Examples:
+ # Generate growth strategy OKRs with default teams
+ python okr_cascade_generator.py growth
+
+ # Custom teams
+ python okr_cascade_generator.py retention --teams "Engineering,Design,Data,Growth"
+
+ # Custom product contribution percentage
+ python okr_cascade_generator.py revenue --contribution 0.4
+
+ # JSON output
+ python okr_cascade_generator.py innovation --json
+
+ # All options combined
+ python okr_cascade_generator.py operational --teams "Core,Platform" --contribution 0.5 --json
+ """
+ )
+
+ parser.add_argument(
+ 'strategy',
+ nargs='?',
+ choices=['growth', 'retention', 'revenue', 'innovation', 'operational'],
+ default='growth',
+ help='Strategy type (default: growth)'
+ )
+
+ parser.add_argument(
+ '--teams', '-t',
+ type=str,
+ help='Comma-separated list of team names (default: Growth,Platform,Mobile,Data)'
+ )
+
+ parser.add_argument(
+ '--contribution', '-c',
+ type=float,
+ default=0.3,
+ help='Product contribution to company OKRs as decimal (default: 0.3 = 30%%)'
+ )
+
+ parser.add_argument(
+ '--json', '-j',
+ action='store_true',
+ help='Output as JSON instead of dashboard'
+ )
+
+ parser.add_argument(
+ '--metrics', '-m',
+ type=str,
+ help='Metrics as JSON string (default: sample metrics)'
+ )
+
+ args = parser.parse_args()
+
+ # Parse teams
+ teams = parse_teams(args.teams)
+
+ # Parse metrics
+ if args.metrics:
+ metrics = json.loads(args.metrics)
+ else:
+ metrics = {
+ 'current': 100000,
+ 'target': 150000,
+ 'current_revenue': 10,
+ 'target_revenue': 15,
+ 'current_nps': 40,
+ 'target_nps': 60
+ }
+
+ # Validate contribution
+ if not 0 < args.contribution <= 1:
+ print("Error: Contribution must be between 0 and 1")
+ return 1
+
# Generate OKRs
- generator = OKRGenerator()
-
- # Generate company OKRs
- company_okrs = generator.generate_company_okrs(strategy, metrics)
-
- # Cascade to product
+ generator = OKRGenerator(teams=teams, product_contribution=args.contribution)
+
+ company_okrs = generator.generate_company_okrs(args.strategy, metrics)
product_okrs = generator.cascade_to_product(company_okrs)
-
- # Cascade to teams
team_okrs = generator.cascade_to_teams(product_okrs)
-
- # Combine all OKRs
+
all_okrs = {
+ 'quarter': company_okrs['quarter'],
+ 'strategy': args.strategy,
'company': company_okrs,
'product': product_okrs,
'teams': team_okrs
}
-
- # Generate dashboard
- dashboard = generator.generate_okr_dashboard(all_okrs)
- print(dashboard)
-
- # Calculate alignment
+
alignment = generator.calculate_alignment_score(all_okrs)
- print("\n\nšÆ ALIGNMENT SCORES\n" + "-" * 40)
- for metric, score in alignment.items():
- print(f"{metric.replace('_', ' ').title()}: {score}%")
-
- # Export as JSON if requested
- if len(sys.argv) > 2 and sys.argv[2] == 'json':
- print("\n\nJSON Output:")
+
+ if args.json:
+ all_okrs['alignment_scores'] = alignment
+ all_okrs['config'] = {
+ 'teams': generator.teams,
+ 'product_contribution': generator.product_contribution
+ }
print(json.dumps(all_okrs, indent=2))
+ else:
+ dashboard = generator.generate_okr_dashboard(all_okrs)
+ print(dashboard)
+
+ print("\n\nšÆ ALIGNMENT SCORES")
+ print("-" * 40)
+ for metric, score in alignment.items():
+ status = "ā" if score >= 80 else "!" if score >= 60 else "ā"
+ print(f"{status} {metric.replace('_', ' ').title()}: {score}%")
+
+ if alignment['overall'] >= 80:
+ print("\nā
Overall alignment is GOOD (ā„80%)")
+ elif alignment['overall'] >= 60:
+ print("\nā ļø Overall alignment NEEDS ATTENTION (60-80%)")
+ else:
+ print("\nā Overall alignment is POOR (<60%)")
+
if __name__ == "__main__":
main()