Automation

Daily Reporting Automation

Python ETL pipeline that automates the daily marketing report, end to end.

Stack
  • Python
  • Pandas
  • NumPy
  • smtplib
Daily Reporting Automation — Python ETL pipeline that automates the daily marketing report, end to end.

A Python script that automates a daily, repetitive routine end to end: collecting raw data, merging it with the previous days’ history, generating a summary, and sending the report by email. It runs on a cron schedule and is configured per use case, so the same pipeline can handle different data sources and different recipient lists without a rewrite.

The daily morning-report problem

Most marketing teams have a “morning report”: a spreadsheet someone updates every day before the standup. The work is mechanical, the schedule is unforgiving, and the output is the same shape every time: exactly the kind of task a script should own instead of a person. Miss a day by hand and the history has a gap that someone eventually has to explain or backfill; miss a day with a cron job and it just runs at 6am regardless of who’s on vacation or out sick.

How the ETL pipeline runs

Each run collects yesterday’s data from the configured source, merges it with the running history file, and generates the report in the same format the team already reads, then emails it to the configured recipient list on schedule. Nothing about the routine depends on a person remembering to kick it off.

Trend context, not just a daily snapshot

Pandas merges yesterday’s pull against the running history file, so the report always carries real trend context (this week versus last week, this month’s trajectory) rather than a single day’s numbers in isolation. A daily snapshot on its own answers “what happened yesterday”; merged against history, the same report starts answering “is this normal,” which is the question a standup actually needs answered.

Configuring new sources without touching code

The recipient list, source paths, and schedule all live in a small YAML config file, so pointing the pipeline at a new team or a new data source is an edit, not a deploy. Python handles the data work with Pandas and NumPy, and smtplib sends the finished report: a deliberately plain stack, chosen so a non-engineer can read the config and understand exactly what will run without needing to open the script itself.