The Problem
A seed-stage startup tracks revenue in Stripe, expenses in a shared Google Sheet, and runway projections in a Notion page that the CEO updates every Monday morning (when he remembers). Investor updates require pulling numbers from 3 places.
The "runway" number is always stale. Twice, the team was surprised by how little runway remained because nobody updated the sheet for 3 weeks. When you're burning $30k/month, a 3-week blind spot can be the difference between raising on time and running out of cash.
The Solution
A daily cron job that pulls live revenue from Stripe and expenses from the team's sheet, calculates all financial metrics, updates a Notion time-series dashboard, sends a weekly digest, and alerts immediately if runway drops below the safety threshold.
- Cron fires daily at 7am
- Stripe API fetches current MRR, active subscriptions, and churn
- Google Sheets reads the monthly expenses breakdown
- Code node calculates burn rate, net revenue, and runway months
- Notion gets a new row in the dashboard database (creating a time series)
- On Mondays, Slack posts the weekly summary to #founders
- If runway drops below 6 months, immediate alert fires
The Workflow
This is a sanitized replica of the production workflow. Credentials, API keys, and client-specific data have been removed to protect confidentiality.
Results
- Dashboard always current (updated daily, not "when someone remembers")
- CEO reclaims 1 hour/week of manual number crunching
- Runway alert prevented a surprise cash crisis
- Investor updates now take 2 minutes (just share the Notion link)
- Full financial history in Notion for trend analysis
Timeline
Mar 2026
Stack
Responsibilities
- Financial metrics calculation logic
- Stripe API integration
- Notion database automation
- Alert threshold system
