# Usage Trend Narration

> Turn raw usage numbers (WAU, MAU, feature adoption, retention) into an honest, confidence-qualified narrative — the "why" behind the number, not just the number itself. Use whenever a weekly or monthly usage report needs to go from a chart into a written update, or whenever someone asks "why did this metric move."

- Skill: `saurabhships/usage-trend-narration` (Agent Skill)
- Install (CLI): `npx skillmds@latest add saurabhships/usage-trend-narration`
- Raw SKILL.md: https://api.skillmd.com/api/skills/saurabhships/usage-trend-narration/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: saurabhships (https://skillmd.com/u/saurabhships)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/saurabhships/usage-trend-narration

---


# Usage Trend Narration

## Why this exists

A number without a story is not useful, but a story without discipline is worse — it's how "usage dropped 8%" quietly turns into a confident, wrong explanation that then drives a bad decision. Two failure modes show up constantly:

1. **Narrating the aggregate** — reporting one top-line number when the real story is that one segment moved sharply and the rest were flat, which the aggregate hides.
2. **Correlation dressed as causation** — "usage dropped after the pricing change, so the pricing change caused it" without checking for other things that happened in the same window (a competing launch, a holiday, an outage, a marketing push that ended).

This skill is a discipline for avoiding both, so the narrative earns the trust the chart alone can't.

## Process

### 1. Establish the baseline and cadence before looking at the delta

Know what "normal" week-over-week or month-over-month variance looks like for this specific metric before deciding a move is notable. A metric that normally swings ±5% needs a bigger move to be a story than one that's usually flat. Also check for known seasonality (day-of-week effects, end-of-quarter spikes, holiday dips) before treating a cyclical pattern as a trend.

### 2. Segment before you narrate

Break the aggregate down by at least one dimension — plan tier, cohort age, platform, geography, feature — before writing anything. Specifically check: is this move happening broadly, or is it one segment moving a lot while the rest are flat? These require completely different narratives and different actions, and the aggregate number alone cannot tell you which one you're looking at.

### 3. Look for confounders before claiming a driver

Build a quick timeline of what else happened in the window: releases, experiments, pricing/packaging changes, outages, marketing campaigns starting or ending, competitor moves, seasonal events. Check the metric move against this timeline before naming a driver. If two candidate events line up with the same window, say so explicitly rather than picking the more convenient one.

### 4. Assign a confidence level to the explanation, not just the number

Every driver you name gets one of:
- **High confidence** — a controlled experiment or a clear, isolated causal mechanism (e.g., an A/B test showed the effect directly)
- **Medium confidence** — timing lines up and there's a plausible mechanism, but no controlled comparison
- **Low confidence** — timing loosely lines up, multiple candidate explanations exist, or the segment data is too thin to be sure

State the confidence in the write-up itself. "Likely driven by X (medium confidence)" is a materially different claim than "driven by X," and readers should be able to tell which one they're getting.

### 5. Write the narrative

Lead with the number, then the qualified explanation, then what you're going to do about it (or explicitly: nothing, this is within normal variance).

```
## Usage trend — [metric] — [period]
**Headline:** [X]% [WoW/MoM] — [up/down] from [baseline]
**Segment view:** [which segment(s) moved, which stayed flat]
**Likely driver:** [driver] — confidence: [high/medium/low]
**Confounders checked:** [what else happened in this window, ruled in or out]
**Action / watch item:** [what happens next — investigate further, monitor, or no action needed]
```

### 6. Track what stays unexplained

Keep a running note of moves that got a "low confidence" or no explanation at all. A single unexplained blip is noise. A pattern of recurring unexplained variance in the same metric is itself a signal — usually that your segmentation is too coarse, or that there's a data quality issue worth investigating before trusting the metric further.

## Anti-patterns to avoid

- Don't report a percentage change without the segment breakdown that produced it — "usage up 12%" driven entirely by one enterprise account onboarding is a different story than broad-based growth, and the headline number alone can't distinguish them.
- Don't state a driver without a confidence level — an unqualified causal claim is a bigger commitment than most trend reports can actually back up.
- Don't cherry-pick the comparison window to make a preferred story fit (e.g., comparing to last week when this week is unusually low, but to last month when this week is unusually high).
- Don't let "no major releases shipped" stand in as an active check — actually walk the timeline; the absence of a launch doesn't rule out marketing, seasonality, or external competitive activity.

## Example (illustrative numbers, placeholder product)

**Input:** Weekly active users dropped 9% week-over-week for a project-management tool.

**Output:**

```
## Usage trend — Weekly Active Users — Week of 2026-08-24
**Headline:** -9% WoW (baseline weekly variance is typically ±4%, so this is outside normal range)
**Segment view:** Drop is concentrated in the free-tier cohort (-16% WoW); paid tiers flat (-1% WoW)
**Likely driver:** A rate-limit change shipped to the free tier on 2026-08-20 reduced daily usable actions — confidence: medium (timing lines up, no A/B test isolates the effect, but support tickets referencing the new limit rose in the same window)
**Confounders checked:** No competitor launch found in this window; not a seasonal week (no holidays, no known cyclical dip pattern for this metric)
**Action / watch item:** Monitor free-tier WAU for one more week to see if it stabilizes at a new lower baseline (adjustment period) or continues declining (sign of a bigger problem); flag to the team that shipped the rate limit change.
```

Note the paid-tier segment being flat is what rules out a platform-wide issue and points the investigation at the free-tier change specifically — that distinction only shows up because of the segmentation step, not the headline number.

