Goal Decomposing
Break a single goal into a hierarchy of actionable subgoals.
Responsibility
Take ONE goal and decompose it into subgoals using derivation formulas. Creates multiple goal files with parent-child links.
Quick Start
- •Read parent goal from
strategy/goals/active/{goal-dir}/goal.md - •Determine decomposition pattern based on category
- •Apply derivation formulas to create subgoals
- •Write subgoal files as
{n}.{name}.mdin the parent goal directory - •Update parent
goal.mdwith child links
Decomposition Hierarchy
Level 1: Business Goal (leadership)
│ "Achieve $10M ARR"
│ Time horizon: Annual
│
▼
Level 2: System Goal (RevOps)
│ "Generate $40M pipeline"
│ Time horizon: Quarterly
│
▼
Level 3: Operational Goal (Team Leads)
│ "Book 400 qualified meetings"
│ Time horizon: Monthly
│
▼
Level 4: Tactical Goal (Individual)
"Complete 100 outreach touches/day"
Time horizon: Weekly/Daily
Decomposition Patterns
Revenue Goal Decomposition
Revenue Target ($X ARR)
│
├── Pipeline Target = Revenue / Win Rate
│ │
│ ├── Opportunities = Pipeline / Avg Deal Size
│ │
│ └── Meetings = Opportunities / Opp Rate
│ │
│ └── Outreach = Meetings / Meeting Rate
│
├── Expansion Target = Existing ARR × Expansion Rate
│ │
│ └── Expansion Meetings = Target / Avg Expansion Deal
│
└── Retention Target = 100% - Churn Rate
│
└── At-Risk Interventions = Churn Risk Accounts × Save Rate
Activity Goal Decomposition
Meeting Target (X meetings)
│
├── Outbound Meetings = Total × Outbound Ratio
│ │
│ └── Outbound Touches = Meetings / Meeting Rate
│
└── Inbound Meetings = Total × Inbound Ratio
│
└── MQL Target = Meetings / MQL-to-Meeting Rate
│
└── Traffic Target = MQLs / Conversion Rate
Content Goal Decomposition
Content Lead Target (X leads)
│
├── Blog Leads = Total × Blog Attribution %
│ │
│ └── Blog Posts = Leads / Leads-per-Post
│
├── Gated Content Leads = Total × Gated %
│ │
│ └── Ebooks/Guides = Leads / Leads-per-Asset
│
└── Traffic Target = Total / Conversion Rate
│
└── SEO Keywords = Traffic / Avg Traffic-per-Keyword
Derivation Formulas
Revenue Formulas
| From | To | Formula | Defaults |
|---|---|---|---|
| Revenue | Pipeline | revenue / win_rate | win_rate: 0.25 |
| Pipeline | Opportunities | pipeline / avg_deal | avg_deal: $50K |
| Opportunities | Meetings | opps / opp_rate | opp_rate: 0.30 |
| Meetings | Outreach | meetings / meeting_rate | meeting_rate: 0.02 |
| Revenue | Expansion | existing_arr × expansion_rate | expansion_rate: 0.25 |
| Revenue | New Logo | (target - existing × nrr) / arpu | nrr: 1.0 |
Activity Formulas
| From | To | Formula | Defaults |
|---|---|---|---|
| Meetings | MQLs | meetings / mql_meeting_rate | rate: 0.15 |
| MQLs | Traffic | mqls / conversion_rate | rate: 0.025 |
| Outreach | Emails | outreach × email_ratio | ratio: 0.60 |
| Outreach | Calls | outreach × call_ratio | ratio: 0.25 |
| Outreach | outreach × linkedin_ratio | ratio: 0.15 |
Efficiency Formulas
| From | To | Formula | Defaults |
|---|---|---|---|
| Win Rate | Stage Rates | win_rate^(1/stages) | stages: 4 |
| Cycle Time | Stage Times | cycle / stages | stages: 4 |
| CAC | Channel CAC | cac × channel_weight | by channel |
Process
Step 1: Read Parent Goal
Read: strategy/goals/active/{goal-dir}/goal.md
Extract:
- goal_id (matches directory name, e.g. ea-revenue-q1)
- category (determines pattern)
- target_value, target_unit
- period_start, period_end
- baseline_value
- assumptions
Step 2: Determine Decomposition Pattern
if category == "revenue":
if target > $1M:
pattern = full_revenue_cascade
else:
pattern = simple_revenue_cascade
if category == "activity":
pattern = activity_cascade
if category == "content":
pattern = content_cascade
if category == "efficiency":
pattern = efficiency_decomposition
if category == "retention":
pattern = retention_decomposition
Step 3: Apply Formulas
For each subgoal in pattern:
- •Calculate target using formula
- •Inherit period from parent (or subdivide)
- •Inherit constraints proportionally
- •Set parent_goal link
- •Generate goal_id
Step 4: Write Subgoal Files
Location: Numbered files inside the parent goal directory.
strategy/goals/active/{goal-dir}/{n}.{name}.md
- •
{n}— sequential number (1, 2, 3...) - •
{name}— short kebab-case metric name
Subgoal ID format: {goal-dir}/{n}.{name}
Examples:
- •
ea-revenue-q1/1.launch-readiness - •
ea-revenue-q1/2.feb-sales - •
distribution-q1/1.github-organic
Step 5: Update Parent
Add child_goals list to parent goal.md frontmatter using subgoal IDs:
child_goals: - ea-revenue-q1/1.launch-readiness - ea-revenue-q1/2.feb-sales - ea-revenue-q1/3.mar-sales
Output Structure
Directory Layout
Subgoals are numbered files inside the parent goal directory:
strategy/goals/active/{goal-dir}/
├── goal.md # Parent goal (created by sys-defining-goals)
├── 1.{name}.md # First subgoal
├── 2.{name}.md # Second subgoal
└── 3.{name}.md # Third subgoal
Subgoal File Format
---
goal_id: {goal-dir}/{n}.{name}
name: {descriptive name}
category: {inherited or derived}
target_value: {calculated}
target_unit: {inherited or derived}
target_direction: {inherited}
period_start: {inherited or subdivided}
period_end: {inherited or subdivided}
period_type: {inherited or derived}
baseline_value: {calculated or inherited}
baseline_source: derived_from_parent
baseline_date: {same as parent}
parent_goal: {goal-dir}
child_goals: []
thread: null
derivation_formula: {formula used}
derivation_assumptions: [{from parent + new}]
ownership_accountable: {derived from level}
ownership_contributors: []
constraints_budget: {proportional allocation}
constraints_headcount: {proportional allocation}
constraints_capacity: {inherited}
confidence_score: {parent × formula_confidence}
status: active
created: {today}
---
# {Subgoal Name}
## Target
{target_value} {unit} by {period_end}
## Derivation
**Parent Goal:** {goal-dir}/goal.md
**Formula:** {formula_description}
### Calculation
{parent_metric}: {parent_value} {rate_name}: {rate_value} Result: {parent_value} {operator} {rate_value} = {target_value}
## Current State
Baseline derived from parent goal derivation.
## Milestones
| Date | Target | Status |
|------|--------|--------|
| {date_1} | {value_1} | pending |
| {date_2} | {value_2} | pending |
## Dependencies
- **Requires:** {goal-dir}
- **Enables:** {child_goals if any}
## Constraints
Allocated from parent:
- **Budget:** {proportional_amount}
- **Headcount:** {proportional_count}
Recursive Decomposition
For deep hierarchies, apply decomposition recursively:
1. Decompose business goal → system goals 2. For each system goal with target > threshold: └── Decompose → operational goals 3. For each operational goal with target > threshold: └── Decompose → tactical goals 4. Stop when: └── Target small enough for single owner └── Period is weekly or shorter └── No further decomposition formula exists
Decomposition Thresholds
| Category | Level | Continue If |
|---|---|---|
| Revenue | System | target > $500K |
| Revenue | Operational | target > $100K |
| Activity | Operational | count > 100 |
| Activity | Tactical | count > 20/day |
| Content | Operational | pieces > 10 |
Constraint Allocation
When parent has constraints, distribute to children:
Budget Allocation
Method 1: Proportional to target child_budget = parent_budget × (child_target / total_child_targets) Method 2: By category weights outbound_weight: 0.40 inbound_weight: 0.35 content_weight: 0.25 Method 3: Fixed allocation Some subgoals may have explicit budget assignments
Headcount Allocation
If parent.headcount defined: - Outreach goals: AE/SDR count - Content goals: Writer count - Ops goals: Ops count Calculate capacity per person: touches_per_sdr = 100/day posts_per_writer = 4/month
Workflow
1. READ parent goal
└── Parse frontmatter and body
└── Extract target, category, period, constraints
2. DETERMINE decomposition pattern
└── Match category to pattern
└── Check thresholds for depth
3. CALCULATE subgoals
└── Apply formulas for each level
└── Validate against capacity constraints
4. WRITE subgoal files
└── For each subgoal:
└── Generate numbered filename: {n}.{name}.md
└── Set goal_id: {goal-dir}/{n}.{name}
└── Calculate target and milestones
└── Write to strategy/goals/active/{goal-dir}/
5. UPDATE parent goal.md
└── Add child_goals array to frontmatter
└── Use subgoal IDs: [{goal-dir}/{n}.{name}]
6. RETURN subgoal list
└── [{goal_id, target, relationship}]
Validation
Consistency Checks
1. Sum of child targets should derive parent target Example: If revenue needs $4M pipeline at 25% win rate, pipeline subgoal should be $4M (not arbitrary) 2. Time periods should align Children period ≤ parent period Quarterly parent → Monthly children OK Monthly parent → Quarterly children NOT OK 3. Constraints should not exceed parent sum(child_budgets) ≤ parent_budget
Achievability Checks
1. Capacity validation
If outreach target > team_capacity × days:
Flag constraint, adjust or note
2. Historical benchmark
If required rate > best_historical × 1.5:
Flag stretch, note risk
3. Dependency check
If child requires other goal not yet defined:
Note dependency gap
Integration
Upstream
- •
sys-defining-goals: Provides parent goal to decompose
Downstream
- •
sys-activating-goals: Creates threads for leaf goals - •
sys-tracking-goals: Monitors all goals in hierarchy
With RevOps
- •
rop-calibrator: Provides scoring models for conversion assumptions - •
rop-allocator: May trigger decomposition for resource planning
Boundaries
This skill provides:
- •Hierarchical decomposition of goals
- •Formula-based subgoal derivation
- •Parent-child linking
- •Constraint allocation
This skill does NOT:
- •Define the initial parent goal (use
sys-defining-goals) - •Create execution threads (use
sys-activating-goals) - •Track progress (use
sys-tracking-goals) - •Override parent constraints
Example
Input
Parent goal directory: strategy/goals/active/arr-q1/goal.md
- •goal_id:
arr-q1 - •Target: $1,000,000 ARR
- •Current: $650,000
- •Period: Q1 2026
- •Win rate assumption: 25%
Output
strategy/goals/active/arr-q1/ ├── goal.md # Parent (updated with child_goals) ├── 1.pipeline.md # Target: $1,400,000 (gap $350K / 0.25) ├── 2.opportunities.md # Target: 28 ($1.4M / $50K) ├── 3.meetings.md # Target: 93 (28 / 0.30) └── 4.outreach.md # Target: 4,650 touches (93 / 0.02)
Parent goal.md updated with:
child_goals: [arr-q1/1.pipeline, arr-q1/2.opportunities, arr-q1/3.meetings, arr-q1/4.outreach]
Each subgoal references parent_goal: arr-q1 in frontmatter.