# OKR & KPI Tree Decomposer

Decompose an Objective into a weighted Department → Team → Personal tree with automatic progress roll-up. HTML tree + Markdown + CSV output.

> Canonical page: https://elysiatools.com/en/tools/okr-tree-decomposer

- **Category:** Utilities

- **Keywords:** okr, kpi, objective key results, tree decomposition, weighted progress, goal tracking, roll-up

## Overview

Turn a single company Objective into a weighted tree of Department → Team → Personal KRs/KPIs — with progress that rolls up automatically.

**How to define the tree.** Use indented text (spaces or tabs). The first non-indented line is the Objective; each deeper indent level is a child node. On each line you can put, separated by `|`:

```
Grow ARR to $10M | target: 10000000 | current: 6200000 | unit: USD
  Sales dept | weight: 60
    Enterprise team | target: 50 | current: 32 | unit: accounts
      AE: Alice | target: 20 | current: 14
      AE: Bob | target: 30 | current: 18
  Marketing | weight: 40 | target: 5000 | current: 3100 | unit: leads
```

**Fields per node** (all optional except where noted):
- **name** (required, first field)
- `weight` — relative weight among siblings (default: equal split). Used to compute the parent's roll-up.
- `target` — the goal value (numeric).
- `current` — the current value (numeric).
- `unit` — free-text unit (USD, %, accounts, leads…) shown for readability.

**How progress rolls up.** Each leaf node's progress = `current / target` (0–100%). A parent's progress = the **weight-weighted average** of its children's progress. Weights within a level are normalized to sum to 100% if they don't already. So the root Objective always shows the live, rolled-up completion percentage.

**What you get.**
- An **interactive HTML tree** — expand/collapse, color-coded progress bars (red < 50%, amber 50–80%, green ≥ 80%).
- A **Markdown** version of the same tree (with progress % per node) you can paste into Notion, Confluence, or a README.
- A **CSV** export (one row per node with all fields) for spreadsheet import.

**Tips.**
- Weights are relative *within a sibling group*. If Sales=60 and Marketing=40, those are the split of the Objective.
- Leave `target`/`current` empty on a pure grouping node (like "Sales dept") — its progress comes from its children.
- The rolled-up % is only as honest as the leaf data. Make sure every leaf has a target and a current value.

## Inputs

- **Tree definition (indented text)** (textarea): Grow ARR to $10M | target: 10000000 | current: 6200000 | unit: USD Sales | weight: 60 Enterprise | target: 50 | current: 32 | unit: accounts Alice | target: 20 | current: 14 Bob | target: 30 | current: 18 Marketing | weight: 40 | target: 5000 | current: 3100 | unit: leads
- **Output format** (select)

## When to use

- When you need to map out a company-wide Objective into nested Key Results (KRs) or KPIs across multiple organizational levels.
- When you want to calculate the overall progress of a parent goal based on weighted contributions from different teams or individuals.
- When you need to generate a shareable, color-coded visual tree or a Markdown list of your OKRs for documentation in Notion or Confluence.

## How it works

- Input your objective and key results as an indented text list, using spaces or tabs to define the hierarchy levels.
- Specify optional parameters for each node using the pipe (|) separator, such as weight, target, current, and unit.
- Choose your desired output format, including an interactive HTML tree, a Markdown list, or a CSV file.
- The tool automatically normalizes weights, calculates leaf progress, rolls up weighted averages to parent nodes, and renders the structured output.

## Use cases

- Decomposing annual company revenue targets into weighted quarterly department and team sales quotas.
- Tracking customer satisfaction (CSAT) goals by rolling up support tier metrics and product bug fix rates.
- Generating structured Markdown OKR trees to embed directly into team wikis, Notion pages, or project READMEs.

## Frequently asked questions

### How does the progress roll-up calculation work?

Leaf node progress is calculated as current divided by target. Parent node progress is the weight-weighted average of its children's progress.

### What happens if I do not specify weights for sibling nodes?

Sibling nodes without specified weights default to an equal split, meaning they contribute equally to their parent node's progress.

### Can I leave target and current values blank for grouping nodes?

Yes. You can leave target and current empty on pure grouping nodes like departments; their progress will be automatically calculated from their children.

### What output formats are supported by the decomposer?

The tool supports interactive HTML trees with color-coded progress bars, Markdown lists, and CSV exports for spreadsheet software.

### How do I define the hierarchy levels in the input?

Use indentation (spaces or tabs) to define parent-child relationships. The first non-indented line is the root objective, and each deeper indent level represents a child node.

## Related tools

- [Messy Text to Structured Data Workbench](https://elysiatools.com/en/tools/messy-text-to-structured-data-workbench): Infer tables from pasted text, mixed delimiters, key-value lines, or HTML and export CSV, JSON, and Markdown.
- [Data URI Generator](https://elysiatools.com/en/tools/data-uri-generator): Convert files into Data URIs (Base64 or percent-encoded) for inlining images, fonts, and assets directly into HTML, CSS, or Markdown
- [Markdown to HTML Converter](https://elysiatools.com/en/tools/markdown-to-html): Convert Markdown text to HTML with customizable formatting options using Showdown
- [Markdown Table to CSV JSON with Type Inferred Schema](https://elysiatools.com/en/tools/markdown-table-to-csv-json-schema): Convert a Markdown pipe table to CSV, JSON rows or an inferred JSON Schema with alignment and null diagnostics
- [Text File to PDF Converter - 文本文件转PDF转换器](https://elysiatools.com/en/tools/text-file-to-pdf-converter): Convert text files (.txt, .md, .csv, etc.) to PDF documents with customizable formatting and encoding support
- [JSONata Query & Transform Studio](https://elysiatools.com/en/tools/jsonata-query-transform-studio): Preview JSONata-style queries and transformations, compare results across sample payloads, and export the transformed output as JSON, CSV, YAML, or Markdown
- [PDF Header/Footer Snippets](https://elysiatools.com/en/tools/pdf-header-footer-snippets): Convert HTML to PDF with reusable logo, title, and date snippets
- [Markdown Previewer](https://elysiatools.com/en/tools/markdown-preview): Convert Markdown to HTML with syntax highlighting and customizable themes

## Samples

- [PDF Samples](https://elysiatools.com/en/samples/pdf-samples): Generated PDF samples from tools dated 2026-02-01 to 2026-02-10
- [Test Pyramid Examples - Testing Strategy Guide](https://elysiatools.com/en/samples/test-pyramid-examples): Comprehensive test pyramid implementation examples including unit tests, integration tests, E2E tests, test organization, and strategic testing patterns for balanced software quality assurance
- [Markdown Samples](https://elysiatools.com/en/samples/markdown-samples): Markdown format examples from simple to complex document structures
- [Markdown Viewer Samples](https://elysiatools.com/en/samples/markdown-viewer-samples): Sample Markdown files for README preview, documentation rendering, and rich-text markup tests
