Weekly investor update deck, refreshed from a KPI sheet

By General Input

Every Friday afternoon, copy your investor template, fill it with this week's KPIs from Google Sheets, and post the new deck in Slack.

Integrations

  • Google Sheets
  • Google Drive
  • Google Slides
  • Slack

Type

Deterministic Code

Categories

  • Finance
  • Operations

Build me a deterministic code workflow that refreshes our weekly investor-update deck every Friday at 4pm local time so I can review it over the weekend and ship it Monday morning.

Trigger: cron, every Friday at 16:00 in my local time zone.

Step 1. Google Sheets Get Values from the 'Weekly KPIs' range on our metrics spreadsheet to pull this week's numbers: revenue, MRR, new logos, churn, runway months, and the headline narrative cell. Then do another Get Values on the prior-week range so we have last week's numbers for deltas. The spreadsheet ID and both A1 ranges should be configurable inputs.

Step 2. Google Drive Copy File to clone the master investor-update template (configurable Drive file ID) into our 'Investor Updates' Drive folder (configurable parent folder ID). Name the new file 'Investor Update, week ending {YYYY-MM-DD}' where the date is the upcoming Sunday.

Step 3. Google Slides ReplaceAllText on the new presentation to swap these tokens with the sheet values: {{week_ending}}, {{revenue}}, {{mrr}}, {{mrr_delta}}, {{new_logos}}, {{churn}}, {{runway_months}}, {{narrative}}. Compute {{mrr_delta}} as the signed percent change between this week's and last week's MRR and format it like '+4.2%' or '-1.8%'.

Step 4. Google Slides ReplaceAllShapesWithSheetsChart to embed the live trend charts from the same spreadsheet. The template has placeholder shapes containing chart tokens (for example {{chart_mrr}}, {{chart_revenue}}, {{chart_logos}}); for each one, embed the matching Sheets chart by ID so the deck stays linked to the source and refreshes on open.

Step 5. Slack Send a Message to our founders' private channel (configurable channel ID) with the new deck link and the headline metrics inline: week ending date, MRR with delta, new logos, runway months, and the narrative one-liner. Keep the message short and skimmable.

Every value that varies between teams (spreadsheet ID, the two A1 ranges, template file ID, parent folder ID, Slack channel ID, time zone) should be a top-level workflow input so I can reuse this without editing code. If a token has no matching value in the sheet, leave it blank rather than failing the whole run, and log which tokens were missing in the Slack message so I know what to fix.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageWin back LiveChat visitors whose chats went unansweredLet support send one-off Loops emails without an engineerStop cold emails to anyone with a live deal in PipedriveiMessage campaign console with pre-flight checks and delivery boardChat quality review board for LiveChat support leadsLinkedIn Ads budget pacing dashboard for every client accountFront desk appointment confirmation board for the next 3 daysGive your team Looker numbers without buying more seats