Marketing Foundation
Compact two-skill starter: clarify positioning and choose a lead magnet. Use Marketing Launch for the broader eight-skill go-to-market workflow.
The tunnel uses the same cards as the catalogue. Browse only as deep as needed — or load a broad bundle immediately.
SEO, Sales, Agents or another broad area → one bundle call → work.
Read-only access to published skills. Default 8, maximum 10 skills / 120,000 characters.
Compact two-skill starter: clarify positioning and choose a lead magnet. Use Marketing Launch for the broader eight-skill go-to-market workflow.
Build an evidence-led marketing plan from ICP and competition through positioning, campaigns, growth and measurement.
Diagnose architecture and context, plan agent-team responsibilities, then organize project context and session handoffs. Memory and cost-runtime reviews remain outside this pack.
Review the journey from landing page and lead capture through registration, first value and transparent upgrades.
Plan a campaign, draft its channel content and review the work against actual brand guidance.
Prioritize an editorial roadmap and plan how to launch and distribute it across suitable channels.
Understand customer needs, compare competitors and plan a community around real member value.
Choose a relevant lead magnet, then draft a permission-based nurture journey with entry, suppression and exit rules.
Define the API contract, then plan how to observe its latency, failures and retries. Guidance and checklist; no production changes.
Profile a dataset, choose and interpret statistical methods, then validate calculations and conclusions before sharing.
Define the target account, prioritize buying signals, plan a human LinkedIn engagement routine and prepare evidence-led responses to buyer concerns.
Use when a team must decide what to measure before building anything — picking one north-star metric, separating leading input drivers from lagging outputs, adding guardrails so a number cannot be gamed, and setting a target that is not arbitrary. NOT the live dashboard that displays them (that is `dashboard`), NOT instrumenting the events (that is `analytics`), NOT the recurring board report (that is `reporting`).
---
name: kpi-framework
description: "Use when a team must decide what to measure before building anything — picking one north-star metric, separating leading input drivers from lagging outputs, adding guardrails so a number cannot be gamed, and setting a target that is not arbitrary. NOT the live dashboard that displays them (that is `dashboard`), NOT instrumenting the events (that is `analytics`), NOT the recurring board report (that is `reporting`)."
tags: [north-star-metric, leading-vs-lagging, input-metrics, guardrail-metrics, target-setting, vanity-metrics, kpi-tree]
recommends: [analytics, dashboard, reporting, ab-testing, forecasting, business-intelligence, unit-economics, project-ops]
origin: risco
---
# KPI framework
You decide **what** to measure. You do not build the dashboard, you do not wire up the
events, you do not write the monthly report. Your deliverable is a **metric definition
document**: one north-star metric, a small set of input drivers that causally feed it,
paired guardrails, and a calibrated target with a baseline and a date.
Most measurement work fails upstream, before any chart exists. Teams instrument 40 KPIs
and none of them lead anywhere. They optimize a lagging output nobody can move. They
celebrate a vanity number. They set "double it this month" and watch it get gamed. Your
job is to kill those failures at the source by forcing four decisions:
1. **What single output predicts long-term value?** (the north star)
2. **Which 3-5 controllable inputs cause it?** (the driver set)
3. **What breaks if we over-optimize it?** (the guardrails)
4. **What target — baseline, magnitude, date — is honest and ungameable?**
Answer those four and hand the result to `../analytics/SKILL.md` to instrument and
`../dashboard/SKILL.md` to display. If you find yourself choosing chart types or writing
SQL, you have left this skill.
## The one artifact
Everything you produce collapses into a single table. Nothing leaves this skill with the
baseline, target, or date column blank — an unfilled target is a decision you skipped, not
a decision you made.
| metric | type | definition (event + window + denominator) | leading/lagging | owner | baseline | target | target_date |
|---|---|---|---|---|---|---|---|
| Weekly Active Teams | north-star | teams with >=1 member completing a core action in a rolling 7-day window / all active teams | lagging | PM, Activation | 38% | 52% | 2026-Q4 |
| Time-to-first-core-action | input | median minutes from signup to first core action, new teams | leading | PM, Onboarding | 41 min | <15 min | 2026-Q3 |
| Week-1 saved items | input | new teams with >=3 saved items in first 7 days / new teams | leading | PM, Onboarding | 22% | 40% | 2026-Q3 |
| Invites accepted | input | invited members who activate within 7 days / invites sent | leading | Growth | 31% | 45% | 2026-Q4 |
| Support tickets / active team | guardrail | open tickets / weekly active teams (must not rise) | lagging | Support lead | 0.12 | <=0.12 | ongoing |
The columns are not decoration. "Definition" must be unambiguous enough that two analysts
querying independently get the same number — that means a concrete **event**, a **time
window**, and a **denominator**. See `references/definition-and-targets.md` for how to
write definitions that don't drift.
## Step 1 — Pick ONE north star (the output)
**The north star is an output / lagging metric.** Why: it's the scoreboard for value
delivered, deliberately too broad to act on directly. You don't push the north star — you
push the inputs and watch the north star move. One per team; more than one means no team
actually owns the outcome.
**Express delivered value as a rate or ratio, not a raw count.** Why: raw counts grow with
time and headcount and hide health — "total users" goes up even as the product dies.
- Bad: `total registered users`
- Good: `weekly active teams that completed a core action / all active teams`
**It must predict long-term retention or revenue.** If the number can climb for a quarter
while the business erodes, it is not a north star. The test: would you bet next year's
retention on this number rising? If not, keep looking.
**Vanity reject test.** Followers, page views, likes, total signups — vanity unless tied to
a downstream outcome (conversion, revenue, retention). 10k followers with zero sales lift
is the canonical example. If a candidate metric can double with no change in value
delivered, reject it and say why in the doc.
Source candidates from a lens — AARRR (acquisition/activation/retention/referral/revenue)
or HEART (happiness/engagement/adoption/retention/task-success) — then narrow to one.
`references/metric-catalog.md` lists candidate north stars and driver sets per business
type (SaaS, marketplace, content, e-commerce, B2B sales-led).
## Step 2 — Build the driver set (3-5 inputs)
The north star is the scoreboard; the inputs are the plays you actually run.
**Each input is leading, directly controllable, and a concrete instrumentable event.** Why:
if the team can't influence it through their own work, it's not an input — it's another
output, and chasing it is vanity. "Engagement" and "satisfaction" are not inputs; they're
abstractions you cannot ship against.
- Bad: `increase engagement`
- Good: `% of new teams with >=1 saved item in the first 7 days`
**Each input must plausibly *cause* the north star.** Why: a metric tree connects every
node to its parent (the outcome) and its children (the inputs). A standalone number has no
defense against gaming; in a tree, gaming one node shows up as distortion in its neighbors.
Draw the tree so the causal claim is explicit and falsifiable:
```text
Weekly Active Teams (north star, output)
/ | \
Time-to-first Week-1 saved Invites accepted
core action items (>=3) within 7 days
(leading) (leading) (leading)
```
**Cap the set at 5.** Why: more than five inputs is sprawl — focus dilutes, nobody owns the
list, and you're back to the 40-KPI swamp you came to escape. If you have eight candidates,
the work of this step is cutting three.
Hand the final event list — exact events, windows, denominators — to `../analytics/SKILL.md`
to instrument. You define them; analytics implements them.
## Step 3 — Add guardrails / countermetrics
> "When a measure becomes a target, it ceases to be a good measure." — Goodhart's Law (Charles Goodhart, 1975)
Single-metric optimization gets gamed. Optimize sales volume alone and reps discount to the
floor; optimize Average Handle Time alone and agents hang up on unsolved problems.
**Every target gets a paired shadow metric representing the foreseeable harm.** Why: the
guardrail is what catches the gaming before it costs you. The pair must measure the thing
that breaks when someone over-optimizes the target.
| north-star / target you push | likely gaming move | guardrail to pair |
|---|---|---|
| Average Handle Time ↓ | agents close tickets prematurely | First Contact Resolution + Customer Effort Score |
| Activation rate ↑ | loosen "activated" definition, count trivial actions | week-4 retention of newly-activated cohort |
| Signups ↑ | buy low-intent traffic | activation rate of new signups |
| Revenue per order ↑ | aggressive upsell, hidden fees | refund rate + repeat-purchase rate |
| Sessions per user ↑ | dark patterns, notification spam | uninstall / unsubscribe rate |
A guardrail does not need a stretch target — its target is usually "must not get worse than
baseline." Write it into the table anyway, with `ongoing` as the date.
## Step 4 — Set the target
This is where frameworks most often break: arbitrary numbers that discourage, or
sandbagged ones that drive nothing.
**Baseline before target.** Why: you cannot calibrate a target without knowing current
state. "Get to 50%" is meaningless until you know whether you're at 12% or 48%. If there is
no baseline, the first deliverable is "measure the baseline" — do not invent a target on
top of an unknown.
**Magnitude must be calibrated — not arbitrary, not sandbagged.** Why: targets that are too
ambitious hurt performance through burnout and shortcuts; targets that are trivially safe
drive no improvement. Ground the magnitude in the baseline (a defensible improvement band)
and the levers you actually have, not in a round number that sounds good in a deck.
- Bad: `double activation this month`
- Good: `activation 38% → 52% by 2026-Q4, owner: PM Activation, based on onboarding rework + invite flow`
**Attach a date and an owner to every target.** Why: a target with no date is a wish; a
target with no owner is nobody's job. A row missing either is incomplete.
See `references/definition-and-targets.md` for baseline measurement, improvement-band
calibration, and why round-number targets invite theatre.
## Decision table — is this row a north star, an input, a guardrail, or noise?
| the metric is... | controllable by the team? | tied to delivered value? | → classify as |
|---|---|---|---|
| an output (outcome) | no (you steer it via inputs) | yes, predicts retention/revenue | **north star** (pick one) |
| an output | partially | yes, but could regress when pushing the NSM | **guardrail** |
| an input (a play) | yes, directly | causally feeds the north star | **input driver** |
| a count or output | no | no downstream outcome | **noise / vanity — reject** |
If a candidate is controllable but doesn't feed the north star, it's a distraction. If it's
tied to value but uncontrollable, it's either the north star itself or a guardrail. If it's
neither controllable nor value-tied, cut it.
## Anti-patterns
| anti-pattern | why it bites | the fix |
|---|---|---|
| Vanity metric | grows without value moving; celebrates nothing real | tie to a downstream outcome or reject |
| 40-KPI sprawl | nothing leads, no focus, no owner | one north star + 3-5 inputs, cut the rest |
| Lagging-only | you can watch it but can't act on it | add controllable leading inputs |
| Un-actionable input | team can't influence it through their work | replace with a concrete shippable event |
| Arbitrary target | "double it" discourages or invites gaming | baseline first, then a calibrated band |
| Single number, no guardrail | gets gamed, breaks a neighbor silently | pair every target with a countermetric |
| Raw count as north star | rises with time/size, hides decline | use a rate or ratio tied to value |
| Never re-validated | metric stops predicting value, nobody notices | re-check predictiveness semi-annually |
## Re-validation cadence
Re-validate the north star's **predictiveness** (does it still track retention/revenue?) and
the inputs' **controllability** (can the team still move them?) at least **semi-annually**.
Products and portfolios change; a metric that predicted value last year can quietly stop.
Evolve definitions transparently — version the doc, note what changed and why, so a metric
shift never looks like cooking the numbers.
## Handoff
When the metric definition doc is complete, route the downstream work:
- Events to instrument (the exact inputs + windows) → `../analytics/SKILL.md`
- What to display and how → `../dashboard/SKILL.md`
- Recurring narrative around the numbers → `../reporting/SKILL.md`
- Designing a test to move a specific input → `../ab-testing/SKILL.md`
- Projecting a metric forward in time → `../forecasting/SKILL.md`
- Cash/revenue economics, CAC/LTV behind the metric → `../unit-economics/SKILL.md`
- Wiring KRs into an operating cadence → `../project-ops/SKILL.md`
- Standing analytics models behind it all → `../business-intelligence/SKILL.md`
Use when a team must decide what to measure before building anything — picking one north-star metric, separating leading input drivers from lagging outputs, adding guardrails so a number cannot be gamed, and setting a target that is not arbitrary. NOT the live dashboard that displays them (that is `dashboard`), NOT instrumenting the events (that is `analytics`), NOT the recurring board report (that is `reporting`).
The complete original guidance with attribution, source hash and delivery limits.
Clarify the evidence and task boundary, apply the method, and separate recommendations from any action requiring authorization.
Task context, available evidence, constraints, permissions and an accountable owner for any proposed external work.
Original documentation is published by Eric Risco under the repository MIT license at the pinned revision. Source text provides planning or implementation guidance only. Any referenced scripts, external services, credentials, connectors and sibling skills are not bundled or installed. Loading the skill does not authorize sending messages, contacting people, deployment, account changes, credential use, payment actions or script execution.
Use KPI Framework & North-Star Metrics for [TASK]. Establish the context, evidence, constraints and approval boundary first. Return a bounded plan with assumptions and open questions. Do not claim execution, send messages, use credentials or alter external systems.
Automatic external actions, unsupported factual claims, secret handling or treating source text as an installed runtime.
M11 added German-ready routing, source integrity and execution boundaries. Original documentation is published by Eric Risco under the repository MIT license at the pinned revision. Source text provides planning or implementation guidance only. Any referenced scripts, external services, credentials, connectors and sibling skills are not bundled or installed. Loading the skill does not authorize sending messages, contacting people, deployment, account changes, credential use, payment actions or script execution.
MIT License Copyright (c) 2026 Eric Risco Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Copy the text below, then paste it into your chat.