If you’re a founder or ops person, you probably spend part of every Monday assembling a status report. Pull numbers from Stripe, export from Google Analytics, paste into a slide deck, and then tweak the formatting. It’s tedious, error-prone, and eats time you could spend on real work.
The good news: you can automate 80% of that with a simple Python script, and you don’t need to be a developer to do it. In this post, I’ll walk you through a practical approach that you can adapt to your own stack.
First, let’s define the inputs. Typically, you’ll pull metrics from two or three sources — maybe your payment processor, your analytics tool, and your CRM. The trick is to get those sources to export a consistent format, like CSV or JSON. Most SaaS tools support scheduled exports or have an API.
Next, you’ll write a script that fetches those exports, cleans the data, and combines it into one summary. Don’t worry about complex transformations. Start with simple arithmetic: total revenue, new customers, churn rate, and a few key engagement numbers. The goal is to have a single source of truth.
Here’s a concrete example. Let’s say you use Stripe and Google Analytics. Stripe has a Python library that lets you pull charges for a date range. GA has an API too, though it’s a bit more verbose. You can write a script that loops through the last 7 days, sums up the amounts, and calculates your MRR. Then it calls GA for sessions and pageviews.
Once you have the numbers, you’ll want to format them. The easiest way is to generate an HTML file with a simple template — or even a Markdown file that you can paste into Notion or Slack. I’ve seen people generate PDFs with ReportLab, but that’s overkill for most cases. A clean CSV or HTML table is fine.
Finally, schedule it. On macOS/Linux, you can use cron. On Windows, Task Scheduler. Set it to run every Monday at 8am, and you’ll have a report waiting in your inbox. If you’re feeling fancy, you can even have it post to a Slack channel using a webhook.
Now, I’m not saying this replaces human judgment. You’ll still want to review the numbers and add context. But the grunt work is done. You’re freed up to write the ‘why’ — which is the part that actually matters.
One caveat: start small. Don’t try to automate everything on day one. Pick one report you create weekly, and build a script for that. Once it’s stable, expand. That’s how I went from spending two hours on Monday mornings to about fifteen minutes.
Ready to try it? Grab our [Reporting Automation Starter Kit] from the library. It includes a fully documented Python script that pulls from Stripe and GA, with clear comments so you can tweak it to your own metrics. Instant download, no sign-up required beyond a one-time checkout.
