learn · funnel and metrics
The Monday report
The weekly review, section by section.
In Funnel and metrics
The weekly review, section by section: pace against the goal, the constraint, where joins came from, quality, experiments due, and the one change for the week.
rule 1 — One change a week · Everything else waits.
rule 2 — Read the snapshot · Frozen counts, so the report can be regenerated.
rule 3 — Write the decision down · It becomes an event the next report can judge.
what it is, in industry terms
The weekly business review that changes exactly one thing.
Industry names: weekly business review (WBR), growth review, constraint review. It is where the week's numbers become one decision. The report is generated; the decision is the founder's, and it is written down as an event so the next report can judge it.
Constraint — bottleneck · The rung that leaks most against its own past.
Hypothesis — bet · Why the rung leaks, in one sentence.
Change — intervention · One thing that ships this week to test the hypothesis.
Judge-by date — readout date · When the change is scored.
Win rule — decision rule · Set before the change ships.
how it works
From Sunday night's snapshot to Monday's decision.
- Sunday snapshot — counts frozen
- Compute metrics — min samples applied
- Draft report — ten sections
- Founder reads — 15 minutes
- One change chosen — review_completed
- Change ships — change_shipped
- Sunday snapshot — counts frozen
- Compute metrics — min samples applied
- Draft report — ten sections
- Founder reads — 15 minutes
- One change chosen — review_completed
- Change ships — change_shipped
The report is generated from frozen counts, so re-running it gives the same numbers.
Freeze the week — A snapshot at the end of Sunday, ET. The report reads only the snapshot.
Apply minimum samples — Below a metric's min_sample, show the count and no rate.
Compare to its own past — This week vs the 4 weeks before, per metric. Not against a benchmark from someone else's product.
Mark what's due — Experiments with a judge-by date this week get their verdict.
Decide one thing — The founder writes the constraint, hypothesis and change. The report saves it as review_completed.
Ship and schedule the readout — change_shipped with a judge-by date puts it in a future report.
the object
The report record.
weekly review
| Field | Type | What it holds |
|---|---|---|
week | ISO week | |
snapshot_id | id | The frozen counts it read. |
sections | list | Each section's metrics with value, sample size and 4-week baseline. |
constraint_chosen | rung | |
hypothesis | sentence | |
change | object | What, where, new version. |
judge_by | date | |
win_rule | sentence | Set now. |
experiments_read | list | Experiment ids scored this week. |
{
"week": "2026-W43",
"snapshot_id": "snap_2026-10-25",
"constraint_chosen": "brief offered → waitlist offered",
"hypothesis": "people who get a brief don't see a reason to join yet",
"change": {
"what": "add the waitlist line to the brief message",
"where": "sequence: Lead to waitlist, step 3",
"version": "seq.lead_to_waitlist v2"
},
"judge_by": "2026-11-02",
"win_rule": "offer-to-join rate up vs the 4 weeks before, with at least 30 offers",
"experiments_read": []
}the sections
Ten sections, each with the metric it reads and what to do.
the report, top to bottom — 10
1 · Pace
- reads
met.waitlist_joins_weekly- then
- Behind pace two weeks running: the constraint review below is mandatory.
2 · Ladder and constraint
Each rung's count and conversion vs its own 4-week past; the weakest rung marked.
- reads
met.rung_conversion- then
- Pick the constraint by the rule: lowest conversion against its own past, rungs with 30+ entering only.
3 · Where joins came from
Joins by last touch, first touch, and self-reported answers.
- reads
attribution- then
- A source with joins but no first-touch credit needs a detector feeding it.
4 · Detector quality
Precision and yield per detector, and the noisiest one.
- reads
met.signal_precision, met.yield_per_dollar- then
- Retire or retune the worst detector by yield per dollar.
5 · Draft quality
Share shipped unedited and median edit distance, split by edit locus.
- reads
met.drafts_unedited, met.edit_distance_median- then
- Edits clustered in the hook: test a new opener prompt.
6 · Outreach health
Reply rate and stop requests per 100 touches.
- reads
met.reply_rate_7d, met.stop_rate- then
- Stop rate above its guardrail: pause the campaign that caused it.
7 · Posts
This week's posts by profile clicks per 100 impressions.
- reads
met.impressions_24h, met.profile_clicks_per_100- then
- Feed the top post's pattern to next week's drafts.
8 · Experiments due
Each test with a judge-by date this week: arms, sample size reached, the pre-set rule's verdict.
- reads
experiment readouts- then
- Write the verdict to learnings, win or lose.
9 · Founder time
Minutes spent per join this week.
- reads
met.founder_minutes_per_join- then
- Rising minutes per join: automate the most time-consuming step first.
10 · The one change
The constraint chosen, one hypothesis, one change, its judge-by date and win rule.
- reads
review_completed, change_shipped- then
- Exactly one. Everything else waits a week.
illustrative example
What a Monday report looks like.
Placeholders only: no numbers are invented here.
1 · pace — Waitlist joins this week: {n}. Straight-line pace needs {n} a week from here.
2 · constraint — Weakest rung against its own past: {rung} at {rate} (4-week {rate}), {n} entering.
3 · where joins came from — Last touch: {playbook} via {channel}, {n}. Self-reported: {answers}.
8 · experiments due — {test}: {n} per arm of {min} needed. Verdict by the pre-set rule: {win | lose | inconclusive}.
10 · the one change — Constraint {rung}. Hypothesis {why}. Change {what}. Judge by {date}.
failure modes
How weekly reviews go wrong.
| Failure | Symptom | Catch | Fix |
|---|---|---|---|
| Too many changes | nothing can be judged | more than one change_shipped per week | one change; the rest wait |
| Reading noise | a rung "drops" on 6 people | min_sample shown on every rate | hide rates below the minimum |
| Vanity first | impressions lead the report | section order | pace and constraint always first |
| No readout | changes pile up unjudged | changes past judge-by with no verdict | section 8 lists them until scored |
| Moving definitions | numbers jump when a formula changes | metric version in the report | show version; compare like with like |
data to capture
What this component records, and what that data trains.
record
- the frozen snapshot id
- the report as generated
- review_completed and change_shipped with the founder's words
label
- each change's verdict by its pre-set rule
trains
- the learnings base: which kinds of change move which rung
- later, an agent that proposes the next change
test
- regenerate last week's report from its snapshot: same numbers