cert-sender

CLI Tool

Send hackathon certificates
in minutes

Generate personalized PDF certificates and email them to participants. Built-in resume tracking and batch control.

Features

Everything you need to generate and deliver hackathon certificates at scale.

Batch Generation

Generate hundreds of certificates from a CSV in seconds

Email Delivery

Send personalized certificates directly via Gmail SMTP

Resume Support

Interrupt and restart anytime. Progress is tracked automatically

Custom Templates

Multiple tiers with unique templates for winners, runners-up, and participants

Dry Run Mode

Preview all generated PDFs without sending a single email

Rate Control

Configurable batch sizes to respect SMTP rate limits

How It Works

Three steps from CSV to delivered certificates.

01

Prepare

Add participant CSVs and certificate templates to the data/ and templates/ directories

02

Generate

Run python run.py to overlay names on templates and create PDFs

03

Send

The same command emails each certificate via Gmail with progress tracking

terminal
$ python run.py winner

[winner] Processing batch 1/6 (100 certificates)
[winner] Sent 100/573 emails
[winner] Processing batch 2/6 (100 certificates)
[winner] Sent 200/573 emails
...

Done! Sent 573 certificates in 4m 32s

Quickstart

Get up and running in under a minute.

Installation

terminal
git clone https://github.com/prem-thatikonda29/Certificates-Sender.git
cd cert-sender
pip install -r requirements.txt

Configuration

Create a .env file with your Gmail credentials:

.env
EMAIL=your-email@gmail.com
PASSWORD=your-app-password

Usage

terminal
# Generate + send certificates for winners
python run.py winner

# Dry run (generate PDFs only, no email)
python run.py winner --dry-run

# Send in batches of 10
python run.py participants --batch=10

Configuration

Customize tiers, templates, and email settings in config.py.

TierCSV FileTemplateDescription
winnerdata/winner.csvwinner_template.jpgHackathon winners
runner_updata/runner_up.csvrunner_up_template.jpgRunner-up awards
participantsdata/participants.csvparticipant_template.jpgAll participants

Example Tier Config

config.py
TIERS = {
    "winner": {
        "csv": "data/winner.csv",
        "template": "templates/winner_template.jpg",
        "output": "output/winner/",
        "subject": "Congratulations! You Won!",
        "body": "Dear {name},\n\n..."
    },
    # ... more tiers
}

Ready to send certificates?

Get started in under a minute. No account required.