This project implements a production-style Email Automation & Reminder System designed to automate reminder workflows, scheduled notifications, recurring alerts, and campaign-based communication pipelines using Python.
The objective is to simulate a real-world workflow automation platform used in domains such as:
- HR onboarding workflows
- Invoice reminder systems
- Webinar notification pipelines
- Operations automation
- Productivity engineering
- Business communication systems
The system follows a modular workflow where reminder data is:
→ Generated → Validated → Preprocessed → Scheduled → Processed by Worker Engines → Rendered using Jinja2 Templates → Delivered / Simulated → Logged & Reported → Visualized in Dashboard Analytics
This reflects industry-grade backend automation architectures used in workflow orchestration, scheduling systems, productivity platforms, and business process automation environments.
This section summarizes the key outputs generated from the automation pipeline.
All results are stored inside the outputs/ directory for reproducibility.
Generated datasets:
data/raw/contacts.csvdata/raw/reminders.csvdata/raw/campaigns.csvdata/raw/templates.csv
These datasets simulate:
- Automated reminder workflows
- Campaign-based email pipelines
- HR onboarding notifications
- Webinar reminders
- Invoice follow-up systems
Key observations:
- Realistic business-style workflow simulation
- Scheduler-ready reminder pipelines
- Modular synthetic data generation
- Repeatable workflow testing environment
Generated processed datasets:
data/processed/cleaned_contacts.csvdata/processed/processed_reminders.csv
The preprocessing pipeline performs:
- Email validation
- Duplicate removal
- Datetime validation
- Reminder normalization
- Workflow sanitization
This ensures:
- Scheduler stability
- Reliable downstream execution
- Production-style data hygiene
- Safe workflow processing
The system includes a secure dry-run execution mode that simulates:
- Reminder execution
- Email delivery workflows
- Worker processing
- SMTP execution
- Reporting pipelines
without sending real emails.
The execution flow follows:
Scheduler → Worker Engine → Jinja2 Template Rendering → SMTP Simulation → Logging → Report Generation
This functionality is useful for:
- Safe testing
- Local development
- GitHub demonstrations
- Portfolio showcasing
- Workflow debugging
Generated reports:
outputs/reports/sent_report.csvoutputs/reports/failed_report.csvoutputs/reports/delivery_status.csvoutputs/reports/campaign_summary.csvoutputs/reports/reminder_summary.csv
Generated Excel export:
outputs/exports/email_activity_export.xlsx
The reporting pipeline provides:
- Delivery tracking
- Workflow analytics
- Campaign summaries
- Reminder execution insights
- Failure monitoring
Generated logs:
logs/app.loglogs/scheduler.loglogs/sent_emails.loglogs/failed_emails.log
The logging layer tracks:
- Scheduler execution
- Reminder processing
- Workflow failures
- SMTP events
- Operational diagnostics
The project includes a Power BI–style Streamlit dashboard for workflow monitoring and operational analytics.
Dashboard capabilities:
- KPI cards
- Delivery monitoring
- Campaign analytics
- Reminder intelligence
- Workflow health tracking
- Log inspection
- Interactive Plotly visualizations
- Python
- Pandas
- SQLite
- APScheduler
- smtplib
- Jinja2
- Streamlit
- Plotly
- openpyxl
- email-validator
pip install -r requirements.txtCreate a .env file:
SMTP_EMAIL=your_email@example.com
SMTP_PASSWORD=your_password
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
DRY_RUN=Truepython main.pystreamlit run app/streamlit_app.pyEmail-Automation-Reminder-System/
│
├── app/
│ ├── streamlit_app.py
│ └── dashboard_utils.py
│
├── config/
│ ├── settings.py
│ └── logging_config.yaml
│
├── data/
│ ├── raw/
│ ├── processed/
│ └── README.md
│
├── db/
│ └── email_automation.db
│
├── logs/
│
├── outputs/
│ ├── reports/
│ ├── exports/
│ └── screenshots/
│
├── src/
│ ├── utils.py
│ ├── validators.py
│ ├── logger_config.py
│ ├── database.py
│ ├── csv_handler.py
│ ├── preprocess.py
│ ├── data_generator.py
│ ├── template_engine.py
│ ├── email_sender.py
│ ├── dry_run.py
│ ├── worker.py
│ ├── scheduler_engine.py
│ └── report_generator.py
│
├── templates/
│
├── .env
├── .env.example
├── .gitignore
├── main.py
├── requirements.txt
├── README.md
├── LICENSE
└── architecture.txt
- Modular backend automation pipeline
- Scheduler → Worker execution architecture
- Jinja2-based dynamic email rendering
- Safe dry-run workflow simulation
- SQLite workflow persistence
- Reporting & observability system
- Premium Power BI–style dashboard
- Production-style folder organization
Akash Das
