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.
Prepare
Add participant CSVs and certificate templates to the data/ and templates/ directories
Generate
Run python run.py to overlay names on templates and create PDFs
Send
The same command emails each certificate via Gmail with progress tracking
$ 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 32sQuickstart
Get up and running in under a minute.
Installation
git clone https://github.com/prem-thatikonda29/Certificates-Sender.git
cd cert-sender
pip install -r requirements.txtConfiguration
Create a .env file with your Gmail credentials:
EMAIL=your-email@gmail.com
PASSWORD=your-app-passwordUsage
# 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=10Configuration
Customize tiers, templates, and email settings in config.py.
| Tier | CSV File | Template | Description |
|---|---|---|---|
| winner | data/winner.csv | winner_template.jpg | Hackathon winners |
| runner_up | data/runner_up.csv | runner_up_template.jpg | Runner-up awards |
| participants | data/participants.csv | participant_template.jpg | All participants |
Example Tier Config
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.