A monthly report is the Agency-tier deliverable that aggregates a project's metrics into a single readable page, snapshot-frozen on the 1st of each month and emailed as a 90-day signed link.
What's aggregated
Each report freezes:
- Cluster count + ownership breakdown (owned / partial / gap / cannibal)
- Authority score — current value
- Top 10 impressions clusters — the queries driving the most traffic
- AEO visibility score — composite citation rate across OpenAI, Anthropic, Perplexity
- Brief count generated lifetime
- Latest audit grade — most recent site readiness audit
The data is stored as JSON in the project_reports.snapshot_json column so historical reports never drift when underlying metrics change. The view route reads the snapshot verbatim, never re-aggregates.
How it's delivered
The cron fires at 03:00 UTC on the 1st of each month, generates the report data, persists the snapshot, and emails a signed URL pointing at /reports/[id]?t=<token>. Recipients open the URL in their browser, see the rendered report, hit Print or save as PDF for a file deliverable.
White-label branding applies to the report header the same way it does to public AEO Visibility Cards — your name, logo, accent color.
Recipients
The project owner always gets a copy. Additional recipients are configurable in Settings → Reports (one per line or comma-separated, up to 8). Useful for putting clients themselves on the distribution list.