When you have parent OKRs with contributing children, calculating accurate progress isn't as simple as just averaging percentages. Should you sum revenue from different customer tiers, or average progress across strategic initiatives? Should a hiring goal aggregate headcount across departments, or does it need manual updates?
Rhythms uses AI to analyze the semantic meaning of your parent and child goals, automatically determining the right calculation method. This intelligent rollup ensures your parent progress accurately reflects reality—whether that means summing contributions, averaging efforts, or recognizing when automatic calculation isn't appropriate.
For an overview of how progress and status rollup work together, see Understanding OKR Automatic Rollup.
How this helps:
Semantic understanding: Rhythms knows when to sum vs. average based on what your goals actually mean
Automatic accuracy: Parent progress updates instantly with the right calculation method
No configuration needed: AI determines the appropriate approach from your goal titles and metrics
Handles complexity: Works across multiple hierarchy levels and metric types
Transparent reasoning: See exactly how and why progress was calculated
When AI Rollup is Used
Rhythms uses AI rollup differently depending on your goal's tracking method:
Metric-Based Goals (Always AI-Powered) Goals tracking specific metrics—revenue, headcount, feature counts—always use AI rollup. This ensures accurate aggregation across different metric types and cannot be disabled.
Progress-Based Goals (Optional AI) Goals tracking 0-100% completion respect your organization's AI rollup settings. If disabled, they fall back to simple averaging.
What's the difference between progress-based and metric-based tracking?
Rhythms offers two ways to track progress:
Progress-based tracking (0-100%): Track overall completion as a percentage. Used by default for Objectives and Initiatives. Progress updates manually during check-ins, or automatically for parent Objectives based on child Key Results (when using automatic rollup).
Metric-based tracking (specific numbers): Track actual values and let Rhythms calculate progress. Used by default for Key Results. Progress updates by entering current values during check-ins or automatically through auto-updates from connected tools.
You can switch between methods anytime on the OKR detail page by clicking "Change to metric-based" or "Change to progress-based."
How Intelligent Rollup Works
Rhythms analyzes your parent and child goals to determine the appropriate calculation method. For metric-based goals, this analysis always runs to ensure accurate aggregation. For progress-based goals, the analysis runs only if AI rollup is enabled in your organization settings. When the analysis runs, the system identifies two primary patterns:
Aggregation (Summing): When children represent parts of a whole that combine to form the parent
Example: Revenue from Enterprise + Professional + Basic tiers = Total revenue
Formula: Sum all child values, compare to parent target
Averaging: When children represent separate efforts working toward the parent
Example: Multiple strategic initiatives each contributing to one outcome
Formula: Average child progress (equally weighted or custom weighted)
This happens automatically every time contributing children update—no manual configuration required.
When Rhythms Sums Progress (Aggregation)
Aggregation is used when your parent goal has a numeric target and children represent portions that add up to that target.
Common Aggregation Patterns
Revenue Goals:
Parent: "Achieve $2M ARR from SaaS subscriptions"
Children represent revenue from different tiers or segments
Children sum to calculate parent progress
Hiring Goals:
Parent: "Hire 50 new employees"
Children represent hiring across different departments
Headcount additions sum across teams
Feature/Deliverable Goals:
Parent: "Ship 20 features this quarter"
Children represent features from different product areas
Feature counts sum across workstreams
Customer Acquisition:
Parent: "Acquire 1,000 new customers"
Children represent acquisition from different channels
Customer counts sum across sources
Example: Revenue Aggregation
Parent Goal: Achieve $2M ARR from SaaS subscriptions
Contributing Children:
Child Key Result | Target | Actual | Progress |
Generate $1.2M from Enterprise tier | $1.2M | $1M | 83.3% |
Generate $500K from Professional tier | $500K | $300K | 60% |
Generate $300K from Basic tier | $300K | $150K | 50% |
How Rhythms Calculates:
❌ Wrong approach (averaging): (83.3% + 60% + 50%) / 3 = 64.4%
✅ Right approach (aggregation): $1M + $300K + $150K = $1.45M
Parent progress: $1.45M / $2M = 72.5%
Why aggregation? Rhythms detects:
Parent has "$2M" target pattern
All children use currency units (compatible)
Children represent revenue PARTS of the whole
Decision: Sum the actual values
This gives you accurate progress—you're 72.5% to your $2M goal, not 64.4%.
How Rhythms Detects Aggregation
The AI analyzes:
1. Parent title patterns:
"Hire [N]", "Achieve $[N]", "Ship [N]", "Close [N]", "Acquire [N]"
Numeric targets with specific units
2. Metric compatibility:
Do all children use the same unit type? (currency, headcount, counts)
Can values be meaningfully summed?
3. Semantic relationships:
Do children represent PARTS that combine into the parent?
Example: Enterprise + Professional + Basic = Total SaaS revenue ✓
4. Target alignment:
Do child targets sum to approximately the parent target?
Example: $1.2M + $500K + $300K = $2M ✓
When these patterns align, Rhythms uses aggregation automatically.
When Rhythms Averages Progress
Averaging is used when children represent separate efforts working toward a common outcome, rather than portions that sum to a target.
Common Averaging Patterns
Strategic Initiatives:
Parent: "Complete Q4 strategic priorities"
Children: Enterprise expansion, Product quality, Operational efficiency
Each initiative progresses independently toward the parent outcome
Quality Improvements:
Parent: "Improve overall product quality"
Children: Test coverage, Bug reduction, User satisfaction
Different metrics that don't sum, but collectively indicate quality
Cross-Functional Goals:
Parent: "Successfully launch new product line"
Children: Marketing campaign, Sales enablement, Product readiness
Separate workstreams that must all succeed
Default Behavior: Equal Weight Averaging
By default, all contributing children have equal impact on parent progress. This means if you have three Key Results at 80%, 60%, and 40% progress, your parent Objective shows 60% progress—the simple average.
The calculation:
Parent Progress = (Child 1 + Child 2 + Child 3) / Number of Contributing Children
Example: (80% + 60% + 40%) / 3 = 60%
This equal weight model works well for most teams because:
It's simple and predictable
Each deliverable matters equally by default
No configuration needed
Easy to explain to stakeholders
When equal weights work best:
All children have similar strategic importance
You want a straightforward calculation
The team is just getting started with OKRs
Advanced: Custom Weight Averaging
⚠️ Availability: This feature must be enabled by your organization admin. If you don't see weight controls in your goal views, your organization uses the default equal weight averaging. If you need weight controls, ask your admin to request this feature be enabled by the Rhythms Support team.
What Are Custom Weights?
Custom weights allow you to assign different importance levels (0-100%) to each contributing child, rather than treating all children equally. This lets you model strategic priorities where some work matters more than others.
Use cases:
Prioritize strategically critical initiatives over supporting work
Reflect revenue/impact differences (Enterprise deals vs. SMB deals)
Model complex portfolio prioritization
Give major deliverables more weight than minor ones
Set lead indicators to 0% weight while keeping them visible
How Custom Weights Work
Without custom weights (equal averaging):
3 Key Results at [80%, 60%, 40%] progress
Parent = (80 + 60 + 40) / 3 = 60%
With custom weights:
3 Key Results with weights [50%, 30%, 20%] at [80%, 60%, 40%] progress
Parent = (80% × 50%) + (60% × 30%) + (40% × 20%)
Parent = 40% + 18% + 8% = 66%
Key principle: Higher weight = greater impact on parent progress.
Setting Custom Weights
Prerequisites:
Your organization has custom weights enabled
You have edit access to the parent OKR
You can view all contributing children
Steps:
Open the parent OKR
Find the "Contributing Items" section
Click the weight icon next to each child
Enter a custom weight percentage (0-100%)
Save your changes
What happens:
Weights are automatically normalized to 100%
Parent progress recalculates immediately
Weight values display in the contribution list
Custom Weight Examples
Example 1: Strategic Prioritization
Parent: Complete Q4 Strategic Priorities
Child Initiative | Progress | Weight | Contribution |
Enterprise expansion | 80% | 50% | 40% |
Product quality improvements | 60% | 30% | 18% |
Operational efficiency | 40% | 20% | 8% |
Parent progress: 40% + 18% + 8% = 66%
Equal weights would show 60%, but the weighted calculation reflects that Enterprise expansion (the most important work) is actually doing well at 80%.
Example 2: Lead Indicators at 0% Weight
Parent: Close 10 Enterprise Deals
Child Key Result | Progress | Weight |
10 Closed Deals (lag indicator) | 30% | 100% |
50 Qualified Opportunities (lead) | 80% | 0% |
100 Discovery Calls (lead) | 90% | 0% |
Parent progress: 30% (from closed deals only)
Lead indicators remain visible for early warning signals but don't inflate progress with predictive metrics. See "Lead vs. Lag Indicators" section below for why this matters.
Weight Normalization
Rhythms automatically normalizes weights to percentages, so you can think in ratios:
Input:
Child A: Weight 3
Child B: Weight 2
Child C: Weight 1
Normalized (automatic):
Child A: 50% (3/6)
Child B: 33.3% (2/6)
Child C: 16.7% (1/6)
You can enter weights as absolute numbers or percentages—both work the same way.
Best Practices for Custom Weights
DO:
✅ Start with equal weights; only customize when there's clear strategic rationale
✅ Document why weights differ in goal descriptions or check-in notes
✅ Review weights quarterly as priorities shift
✅ Use 0% weight for lead indicators and experimental work
✅ Keep weights stable during execution to avoid gaming
DON'T:
❌ Change weights mid-period to make progress look better
❌ Use weights to hide underperforming initiatives (address root causes)
❌ Make every child a different weight without clear reasoning
❌ Set weights based on current progress (that's gaming)
❌ Forget that 0% weight items still show in reports
Custom Weights Permissions
Who can edit weights:
Your organization must have custom weights enabled (admin setting)
You must have edit access to the parent goal
You must be able to view all contributing children
The goal cannot be closed or postponed
Visibility:
Weight values are visible to anyone who can view the parent
Limited-visibility children show as "[Limited Access Goal]" with their weight
Weight controls are hidden from users without edit permissions
Controlling Which Children Contribute
Not every aligned child needs to contribute to parent progress. You control which children affect the parent's calculated progress.
To enable or disable contribution:
Open the child OKR
Find the "Aligned To" section
Toggle "Contribute to this parent's progress" ON or OFF
Save your changes
When to enable contribution:
Child's progress directly reflects parent achievement
Child's completion is required for parent success
Delays would genuinely threaten parent progress
When to disable contribution:
Lead indicators: Predictive metrics that don't represent actual results
Experimental work: Projects with uncertain impact
Supporting context: Items aligned for visibility but not core to success
Early planning: Work that hasn't started yet
Postponed OKRs: Automatically disabled when status is set to Postponed
Children with contribution disabled remain visible in the alignment hierarchy, they just don't affect parent progress or status.
Lead vs. Lag Indicators
Understanding lead vs. lag indicators is critical for configuring contribution correctly:
Lag indicators (results) - Enable contribution ✅
Measure outcomes that already happened
Example: "Close 10 deals" measures actual closed revenue
These represent real progress toward the parent
Lead indicators (predictive) - Disable contribution ❌
Measure activities that predict future outcomes
Example: "50 qualified opportunities" predicts future closes
These don't represent actual progress yet
💡 Organizational Best Practice: Disabling contribution for lead indicators is a recommended approach based on OKR methodology, not a system-enforced rule. The system treats all metrics equally—it's up to you to configure settings that reflect your measurement strategy.
Why this matters: If lead indicators contribute, your parent might show 80% progress based on pipeline while actual results are at 20%. This creates false confidence and masks real problems.
Recommended pattern: Align lead indicators to the parent for visibility and early warnings, but set contribution weight to 0% (or disable contribution) so only actual results drive parent progress.
When Rollup Can't Calculate (Manual Mode Required)
Sometimes Rhythms detects that automatic rollup isn't appropriate—typically when the parent measures an outcome but children measure activities that influence it.
Example: Headcount Goal
Parent: Grow team to 200 employees (requires actual headcount number)
Children:
Launch employer branding campaign (% progress)
Reduce time-to-hire to 3 weeks (time metric)
Partner with 5 job boards (count)
Why no rollup:
Parent needs the ACTUAL employee count
Children track activities and improvements, not headcount itself
These activities influence hiring but can't mathematically calculate headcount
What happens: Rhythms recognizes the incompatibility and doesn't calculate parent progress automatically. You need to update the parent manually with actual headcount in check-ins.
Other no-rollup scenarios:
Parent is qualitative ("Improve team culture") with quantitative children
Parent measures external outcome (market share) children can influence but not calculate
Parent and children use fundamentally incompatible metrics
In these cases, switch the parent to Manual mode and update progress through check-ins based on your judgment and actual data.
Frequently Asked Questions
How does Rhythms know whether to sum or average?
Rhythms analyzes your goal titles, metric types, and semantic relationships to determine the appropriate calculation. For example, if your parent is "Achieve $2M revenue" with children for different customer tiers, Rhythms detects this should be summed. If your parent is "Complete strategic initiatives" with separate workstreams, it uses averaging. This happens automatically.
Can I see why Rhythms chose a specific calculation method?
Yes. Click on the parent's progress value to see the "Contributing Items" section, which shows how each child contributes and which calculation method is being used.
What if Rhythms gets the calculation wrong?
If automatic rollup doesn't accurately reflect your goal's reality, you can switch the parent to Manual mode. This gives you full control to update progress based on your judgment. Click the progress value and select "Update manually" from the dropdown.
Do all children contribute equally by default?
For averaging calculations, yes. When contribution is enabled, all children have equal impact unless your organization has custom weights enabled and you've configured specific weights. For aggregation calculations, Rhythms sums the actual values regardless of weights.
What happens when I postpone a contributing child?
When you set a child to Postponed status, Rhythms automatically sets its contribution weight to 0 and excludes it from parent progress calculation. This prevents paused work from creating false progress signals or making the parent appear ahead/behind based on inactive work. When you reactivate the child by changing status back to an active state (On Track, Behind, At Risk), it resumes contributing to the parent.
Should lead indicators contribute to my parent?
No. Lead indicators predict future performance but aren't actual results. Disable contribution (or set weight to 0%) so they don't inflate parent progress. Align them for visibility and early warnings only.
Can I adjust contribution weights?
Only if your organization has custom weights enabled. If enabled, click the weight icon next to one of the aligned children and enter custom percentages.
Does 0% weight hide the child from reports?
No. 0% weight items remain visible in alignment views, reports, and dashboards. They just don't affect parent progress or status.
What happens if I delete a contributing child?
For averaging calculations, remaining weights are automatically renormalized. For aggregation calculations, the sum adjusts to reflect the removed contribution.
Can Rhythms aggregate across different metric types?
Only if they're compatible. For example, revenue in USD from different sources can be summed. But you can't sum revenue with headcount—Rhythms will recognize this and either use averaging (if progress percentages make sense) or indicate manual mode is needed.
Related Articles
Understanding rollup concepts: See Understanding OKR Automatic Rollup for how progress and status rollup work together and when to use automatic vs. manual modes.
Understanding status calculation: See Automatic Status Rollup for Parent OKRs for how status is computed and when to override with strategic judgment.
Tracking progress: See Effective Check-ins to Track OKR Progress in Rhythms for how to conduct check-ins and update OKR progress.
