learn · funnel and metrics
Live, daily and weekly rhythms
What to look at, and when.
In Funnel and metrics
What to look at, and when: the few live alerts that rot in hours, the daily frozen snapshot, the Monday review, and the slower monthly reads.
rule 1 — Live is for rot · Only what goes stale in hours interrupts anyone.
rule 2 — Decide on snapshots · Never on a single event.
rule 3 — One review a week · Where the one change is chosen.
what it is, in industry terms
Different questions need different clocks.
Industry names: operating cadence, alerting, daily snapshot, weekly business review. Live alerts are for things that rot in hours, the daily snapshot catches breakage, and the weekly review is where decisions are made. Mixing them up means either missing a reply or reacting to noise.
Alert — page · notification · A condition someone must act on now.
Snapshot — periodic aggregate · Counts frozen at a fixed time, so later reads agree.
Review — cadence meeting · The scheduled read where a decision gets made.
Cooldown — deduplication window · Stops one condition alerting over and over.
how it works
Three loops at three speeds.
- Event lands — reply, failure, lead
- Live rules — alert if it rots in hours
- Daily snapshot — counts frozen
- Monday report — reads 7 snapshots
- One change — judged later
- Event lands — reply, failure, lead
- Live rules — alert if it rots in hours
- Daily snapshot — counts frozen
- Monday report — reads 7 snapshots
- One change — judged later
Live acts on single events; daily and weekly read only frozen snapshots.
Live: only what rots — A waiting reply, a Hot lead, a failed payment, a stop request, a dead source. Everything else waits.
Daily: catch breakage — A detector that went silent, a prompt that suddenly gets discarded.
Weekly: decide — Pace, constraint, readouts, one change.
Monthly: slow reads — First-touch attribution and label consistency need more than a week of data.
Never decide on live data — Single events are anecdotes; decisions read snapshots.
the object
Alert rules and snapshots.
alert rule
| Field | Type | What it holds |
|---|---|---|
id | string | alert.<name> |
condition | expression over events | |
severity | now | today | |
route | push | email | dashboard | |
cooldown | duration | |
action | sentence | What the person should do. |
{
"id": "alert.reply_waiting",
"condition": "reply.received and no touch.sent to the same lead within 30 minutes",
"severity": "now",
"route": "push",
"cooldown": "2 hours",
"action": "answer before new prospects"
}daily snapshot
| Field | Type | What it holds |
|---|---|---|
snapshot_id | id | |
taken_at | timestamp | End of day, ET. |
rungs | object | People on each rung, and arrivals. |
per_detector | object | Signals and leads. |
drafts | object | Generated, shipped, edited, discarded. |
sources | object | Health per source. |
{
"snapshot_id": "snap_2026-10-17",
"taken_at": "2026-10-17T23:59:00-04:00",
"rungs": {
"found": "{n}",
"engaged": "{n}",
"signed_up": "{n}"
},
"drafts": {
"generated": "{n}",
"shipped": "{n}"
},
"sources": {
"reddit": "ok"
}
}the catalog
Every alert and read, by rhythm.
live · needs a person now — 6
A reply or question waiting on you
Reads reply.received with no answer.
- where
- push
- latency
- minutes
- then
- answer it; it beats any new prospect
A new Hot lead
Reads lead.scored tier = Hot.
- where
- push
- latency
- minutes
- then
- open the lead and draft the move
A failed payment
Reads invoice.payment_failed.
- where
- push + email
- latency
- minutes
- then
- run the recovery play
A stop or report
Reads negative_feedback.
- where
- push
- latency
- minutes
- then
- mark never-contact; check the campaign's stop rate
A source down past its max staleness
Reads source health = stalled.
- where
- push
- latency
- within the hour
- then
- fix the feed or pause its detectors
A scheduled post failed
Reads scheduled post status failed.
- where
- push
- latency
- minutes
- then
- retry or reschedule
daily · one frozen snapshot — 4
daily
People on each rung, and new arrivals
Reads the funnel snapshot.
- where
- dashboard
- latency
- once a day
- then
- nothing unless something broke
daily
New signals and leads per trigger and detector
Reads signal.detected, lead counts.
- where
- dashboard
- latency
- once a day
- then
- watch for a detector going silent
daily
Drafts generated, shipped, edited, discarded
Reads draft.generated, draft.decided.
- where
- dashboard
- latency
- once a day
- then
- a spike in discards means a prompt broke
daily
Post metrics from the snapshots
- where
- dashboard
- latency
- once a day
- then
- feed winners to tomorrow's drafts
weekly · the Monday report — 3
weekly
Pace against the goal
Reads met.waitlist_joins_weekly.
- where
- Monday report
- latency
- Monday
- then
- part of the one change
weekly
The constraint review
Reads met.rung_conversion.
- where
- Monday report
- latency
- Monday
- then
- choose one change
weekly
Experiment readouts due
Reads judge-by dates.
- where
- Monday report
- latency
- Monday
- then
- write verdicts to learnings
monthly · slower reads — 2
monthly
First-touch attribution
Reads attribution credit rows.
- where
- monthly review
- latency
- first Monday
- then
- rebalance channels and detectors
monthly
Label consistency check
Reads blind relabel of 20 items.
- where
- monthly review
- latency
- first Monday
- then
- update the labeling rule
illustrative example
A founder with a day job.
The founder works a 9 to 5. Live alerts are limited to the five that rot in hours, routed to the phone, with cooldowns so one busy thread doesn't buzz all afternoon. The daily snapshot is read once, in the evening, in under five minutes. The Monday report takes fifteen minutes and ends with one change.
The rhythms on this page sit on top of those jobs.
failure modes
How cadences break.
| Failure | Symptom | Catch | Fix |
|---|---|---|---|
| Alert fatigue | alerts ignored | alerts per day vs acted on | only things that rot in hours; cooldowns |
| Decisions on live data | flip-flopping | changes not tied to a review | decide only in the weekly review |
| Snapshot drift | two reads of the same day disagree | snapshot ids in every report | read frozen snapshots only |
| Silent detector | no alert, no signals | zero-signal days per detector | daily check for silence |
| Missed review | changes pile up unjudged | weeks with no review_completed | the report is generated anyway; one tap to pick the change |
data to capture
What this component records, and what that data trains.
record
- every alert fired, with whether and when it was acted on
- every snapshot, frozen
- every review, with its decision
label
- alert acted on or ignored
trains
- alert tuning: which alerts earn a push
- the learnings base, from reviews
test
- acted-on rate per alert
- regenerate a week's report from its snapshots