Weekly Supabase metrics report in Slack and Notion

Every Monday at 9am ET, turn last week's Supabase analytics into a written executive summary posted to Slack and archived as a full report in Notion.

Agentic Task
SupabaseSlackNotionProductOperationsAI ReportsDaily Digests

Build me an agent workflow that runs every Monday at 9am ET (cron trigger) and produces a written weekly metrics report from my Supabase analytics tables, posted to Slack and archived in Notion.

Inputs the user should configure when installing: (1) the list of Supabase tables to report on, defaulting to signups, active_users, conversions, and churn_events, with the timestamp column for each table (default created_at); (2) the Slack channel for the headline summary, defaulting to #product-metrics; (3) the Notion parent page ID where each weekly report should be created as a child page (the 'Weekly Reports' page).

Each Monday run, the agent should: 1) Compute the two date ranges in ET. 'Last week' = the most recent Monday 00:00 ET through the following Sunday 23:59 ET that has already finished. 'Prior week' = the seven days immediately before that. 2) For each configured table, call Supabase Get Many Rows twice, once filtered to the last-week range and once to the prior-week range, using a gte/lte filter on the configured timestamp column (e.g. created_at=gte.<start>&created_at=lte.<end>). Page through results if needed so totals are complete. 3) For each table, compute the row count for last week, the row count for the prior week, the absolute delta, the percent change, and any notable distribution shifts the agent can see in the raw rows (for example a spike concentrated on one day, or an unusual jump in a specific segment if relevant columns exist).

Then the agent should write a short executive summary that leads with the two or three most important shifts that week. Important means largest absolute or percent change, sustained anomaly, or a reversal of a recent trend. Do not always lead with the same KPI; pick leads based on what actually moved. Call out anomalies worth investigating in a separate 'Worth a look' section. If a table is empty or returned no rows, flag that as a data gap rather than reporting it as zero.

Output destinations: (a) Post the headline summary to Slack using Send a Message in the configured channel. The Slack message should be short and scannable: a one-line headline, three bullets for the leading shifts, and a link to the Notion page. (b) Create a Notion page using Create a Page as a child of the configured 'Weekly Reports' parent. The page title should be 'Weekly Metrics Report — <week start> to <week end>'. The body should contain the full long-form report: the executive summary, a section per KPI with last week vs prior week numbers and the percent change, the 'Worth a look' anomalies, and a short 'What we'll be watching next week' closing paragraph.

Important constraints: do not ask the user to write SQL. Build the date filters on the agent's side using the timestamp column name they provided. Always include the Notion page link in the Slack post so anyone in the channel can jump to the full report. If the Supabase query for any table fails, post the Slack summary with the other tables and clearly note which table failed so the report still ships.

Additional information

What does this prompt do?
  • Pulls last week's and the prior week's numbers from your Supabase analytics tables.
  • Computes the week-over-week shifts and writes a short executive summary that leads with the two or three changes that actually matter.
  • Posts the headline summary to your product metrics channel in Slack so the team sees it first thing Monday.
  • Saves the full long-form report as a new Notion page under a Weekly Reports parent, so you build a searchable archive over time.
What do I need to use this?
  • A Supabase project with the analytics tables you want reported on (for example signups, active users, conversions, and churn).
  • The names of your tables and the date column on each one (the agent uses these to pull last week and prior week).
  • A Slack workspace and the channel that should receive the headline summary, for example #product-metrics.
  • A Notion workspace with a parent page (such as Weekly Reports) where each new report should live.
How can I customize it?
  • Change when it runs. Pick a different day, time, or timezone if Monday at 9am ET isn't right for your team.
  • Swap in your tables. Tell the agent which Supabase tables and date columns map to your KPIs.
  • Change the destinations. Point it at a different Slack channel or a different Notion parent page anytime.
  • Tune the narrative. Tell the agent how long the Slack headline should be, how many KPIs to lead with, or which thresholds count as anomalies.

Frequently asked questions

Will the report always lead with the same metric every week?
No. The agent looks at what changed the most week over week and picks the leads from that. Slow weeks lead with whatever moved most, even if it's a smaller KPI.
Do I have to use the table names signups, active_users, conversions, and churn_events?
No, those are just examples. You tell the agent what your tables are called and which column holds the timestamp, and it builds the queries to match.
What happens if one of my tables is empty or missing data for the week?
The agent flags the gap in the report instead of inventing numbers, so you know the data is missing rather than seeing a misleading zero.
Where does the full report live, and what gets posted to Slack?
The full long-form write-up lands as a new page in Notion under your Weekly Reports parent. Slack only gets the short headline summary so the channel doesn't get noisy.
Can I change the Slack channel or the Notion parent page later?
Yes. Both are editable settings on the workflow. Change the channel or move the parent page whenever your team's setup evolves.

Stop rebuilding the same metrics review every Monday morning.

Connect Supabase, Slack, and Notion once, and Geni delivers a written weekly metrics narrative to your team every Monday at 9am ET.