ProgrammingPython

How I Automated My Daily Workflow with Python in Under 30 Minutes

python automation

Introduction

It started with frustration. Every morning, I’d sit down with a coffee and open the same five tabs, sift through repetitive emails, rename downloaded files, and update a spreadsheet that felt more like a punishment than a productivity tool. It was the same dance every day — tedious and mind-numbing. But then it hit me: I’m a developer. I have Python. Why am I doing all of this manually?

This post walks through how I automated my daily workflow using Python — from opening apps and organizing files to pulling in data and sending summary reports. It took less than 30 minutes to set up, and it changed my mornings completely.

Part 1: Identifying the Repetitive Tasks

Before diving into code, I took a step back to list the tasks I repeated daily. It looked something like this:

  1. Open email and sort unread messages.
  2. Launch productivity tools (Notion, Slack, Google Calendar).
  3. Rename and move downloaded files to categorized folders.
  4. Log key updates in a Google Sheet.
  5. Summarize tasks and email them to my team.

When I saw them written down, I realized: these are all things a script could handle.

Part 2: The Tools I Used

  • Python 3.11: My language of choice.
  • Selenium: For web browser automation.
  • imaplib + email: To connect to and process Gmail.
  • os / shutil / pathlib: For file operations.
  • openpyxl + pandas: To interact with Excel and CSV.
  • smtplib: For sending emails.
  • schedule: To automate running scripts at specific times.

Part 3: Automating Email Processing

The first problem was my inbox. I used Python’s imaplib to connect to my Gmail account. Here’s the condensed flow:

  • Connect via IMAP.
  • Search unread emails.
  • Download sender, subject, timestamp.
  • Mark important ones (from specific addresses) with a label.

I created a small rule engine based on subject keywords. Anything containing “invoice”, “client update”, or “meeting” would trigger a specific tag or action.

import imaplib, email

(Full code excluded here for brevity, but trust me — it was under 30 lines.)

Part 4: Opening Daily Tools

I used Python’s subprocess module to open tools like Notion and Slack from their local app paths. For web tools, I used Selenium to launch Chrome and navigate to predefined tabs.

import subprocess
subprocess.Popen(["C:\\Program Files\\Notion\\Notion.exe"])

With a loop, I could launch all my web apps in separate tabs within seconds.

Part 5: Organizing My Downloads Folder

This one gave me a silly amount of joy.

Every morning, I’d rename downloaded PDFs (receipts, invoices, etc.) manually. Now I run a Python script that scans ~/Downloads, checks for file types, renames them based on patterns, and moves them into categorized folders.

from pathlib import Path
import shutil

for file in Path.home().joinpath("Downloads").glob("*.pdf"):
    if "invoice" in file.name.lower():
        new_name = f"invoice_{file.stat().st_mtime}.pdf"
        shutil.move(file, Path("~/Documents/Invoices") / new_name)

Part 6: Updating My Spreadsheet

Every day I used to type key numbers (emails handled, meetings scheduled, tasks done) into a Google Sheet.

Now, I gather the metrics during the workflow and update the sheet automatically using gspread and pandas. Here’s a snippet:

import gspread
from oauth2client.service_account import ServiceAccountCredentials

client = gspread.authorize(creds)
sheet = client.open("Daily Tracker").sheet1
sheet.append_row([date, emails, meetings, tasks])

Simple. Fast. Painless.

Part 7: Emailing the Summary

The final step was to wrap it all up and send a short report to myself and my team. I used smtplib to send an HTML-formatted email.

import smtplib
from email.mime.text import MIMEText

msg = MIMEText("<h3>Daily Summary</h3><p>Emails: 12<br>Meetings: 2<br>Tasks: 5</p>", 'html')
msg['Subject'] = 'Daily Workflow Report'

Send it. Done. No more writing morning updates manually.

Part 8: Scheduling It

To make it truly effortless, I scheduled the entire script using the schedule module, and had it run automatically at 8:30 AM every day.

import schedule
import time

schedule.every().day.at("08:30").do(run_daily_workflow)

while True:
    schedule.run_pending()
    time.sleep(1)

Or, if you prefer OS-level scheduling:

  • Windows: Task Scheduler
  • macOS/Linux: cron jobs

Conclusion: Why This Changed My Life

This took me under 30 minutes to build, test, and implement.

What I gained:

  • ~1 hour saved every day
  • Zero cognitive load in the morning
  • No skipped updates or forgotten tabs
  • That smug feeling when someone says “how do you stay so organized?”

And the best part? Once you automate one thing, you start noticing everything you can automate. Python becomes a personal assistant — and not just in theory.

If you’re a developer (or even a semi-technical person) and you’re still stuck in the loop of repeating daily tasks manually, I can’t recommend this enough. Python isn’t just for data science or backend work — it can give you your time back.

Now when I sit down with my coffee, my tabs are open, my email is sorted, my docs are filed, and my brain is ready for actual work — not digital housekeeping.

About author

Articles

We are the Vitademy Team — a group of tech enthusiasts, writers, and lifelong learners passionate about breaking down complex topics into practical knowledge. From software development to financial literacy, we create content that empowers curious minds to learn, build, and grow. Whether you're a beginner or an experienced professional, you'll find value in our deep dives, tutorials, and honest explorations.