Filed from the first real weekly growth report (VANTAGE, 2026-08-25 — evidence in gitignored docs/reports/growth/2026-08-25.md, figures deliberately not reproduced here).
What
lib/reports/academicCalendar.ts:39 defines TERM_CALENDAR as an empty array. The collector's termPhase therefore reports {"phase":"unknown"} — no seasonal explanation is ever available for weekly-active movement.
Why it matters
Weekly-active devices fell in six of seven week-over-week transitions across the eight complete PH weeks on record. With TERM_CALENDAR empty, a term break and a real audience decline are indistinguishable — and those need opposite responses. Every funnel metric is a share of this base; the report recommends populating the calendar BEFORE committing to any acquisition push.
Fix shape (from report)
Option B (minimal): populate TERM_CALENDAR with real term dates for the universities represented in profiles.university. One sitting, no code risk. Next week's report can then classify the decline.
Option C (only after B): treat as acquisition problem — tag shared links (currently 0 UTMs seen) and run distribution. Days of work; do not start against an unclassified curve.
Recommendation: B now, decide C next week.
Filed from the first real weekly growth report (VANTAGE, 2026-08-25 — evidence in gitignored docs/reports/growth/2026-08-25.md, figures deliberately not reproduced here).
What
lib/reports/academicCalendar.ts:39 defines TERM_CALENDAR as an empty array. The collector's termPhase therefore reports {"phase":"unknown"} — no seasonal explanation is ever available for weekly-active movement.
Why it matters
Weekly-active devices fell in six of seven week-over-week transitions across the eight complete PH weeks on record. With TERM_CALENDAR empty, a term break and a real audience decline are indistinguishable — and those need opposite responses. Every funnel metric is a share of this base; the report recommends populating the calendar BEFORE committing to any acquisition push.
Fix shape (from report)
Option B (minimal): populate TERM_CALENDAR with real term dates for the universities represented in profiles.university. One sitting, no code risk. Next week's report can then classify the decline.
Option C (only after B): treat as acquisition problem — tag shared links (currently 0 UTMs seen) and run distribution. Days of work; do not start against an unclassified curve.
Recommendation: B now, decide C next week.