Applying to jobs as a fresher can feel repetitive, overwhelming, and unstructured.
You find dozens of openings.
You copy-paste emails.
You attach resumes repeatedly.
You try to track who you’ve contacted.
You worry about accidentally emailing the same recruiter twice.
To solve this, I built Bulk Applicant Dispatcher — a locally hosted MERN stack application designed to help job seekers send multiple applications efficiently, professionally, and safely.
This is not a marketing spam tool.
It is a structured, privacy-first job application system.
💡 The Problem
Most job seekers:
- Send applications manually
- Struggle to track recruiter responses
- Risk duplicate emailing
- Use third-party tools that store sensitive data externally
Existing bulk email tools are usually:
- Designed for marketing campaigns
- Cloud-based
- Not privacy-focused
- Lacking cooldown safeguards
I wanted a system that:
- Runs entirely on localhost
- Uses my own Gmail securely
- Enforces responsible email scheduling
- Keeps all personal data under my control
🔐 Core Philosophy: Privacy First
Bulk Applicant Dispatcher runs 100% locally.
- No external server
- No cloud database
- No third-party email relay
- No external storage of resumes or contacts
Everything — templates, company lists, history logs — is stored in a local MongoDB instance.
Your data never leaves your machine.
✨ Key Features
🧠 Smart Cooldown Mechanism (15 Days)
One of the most important features.
The system:
- Tracks every dispatched email
- Stores recipient email + timestamp
- Prevents sending duplicate applications within 15 days
- Allows a Force Send override when necessary
Cooldown Logic Example
if (lastEmailDate && daysSinceLastEmail < 15 && !forceSend) {
skipEmail();
} else {
sendEmail();
}
This ensures:
- Professional outreach
- Reduced spam risk
- Safer Gmail usage
- Controlled automation
Editable Plain-Text Templates
Instead of copying and pasting from Word documents:
- Write professional cover letters directly in the app
- Save multiple template variations
- Easily switch between them
- Use structured profile data for personalization
The app reads user details from a local profile.json file:
{
"name": "Your Full Name",
"my_place": "Your City, Country",
"phone_no": "+91 1234567890",
"my_email": "your_email_id@gmail.com"
}
Templates dynamically populate this data during dispatch.
No HTML required. Just clean, readable English.
Built-In Contact Manager
Managing contacts through spreadsheets becomes messy quickly.
This system allows:
- Manual company entry via UI
- Bulk import using JSON
- Easy editing and deletion
- Structured storage inside MongoDB
As companies are added, a companies.json file is automatically generated inside the server directory.
Dashboard & Application Tracking
The dashboard provides structured visibility into your job hunt:
- Total applications sent
- Pending contacts
- Total companies added
- Full application history
- Timestamped logs
This turns job hunting into a measurable workflow instead of chaos.
Force Sending Override
Sometimes urgency matters.
The app allows:
- Force sending to a specific recruiter
- Force sending an entire batch
- Bypassing cooldown when required
Automation with control.
Technology Stack
Frontend
- React (v19)
- Vite ### Backend
-
Node.js & Express.js
- Email dispatch logic
- Cooldown validation
- API routing
- Template processing
- Communication between frontend and backend
-
Nodemailer
- Gmail SMTP connection
- Secure authentication via App Password
- Resume attachment
- Bulk email dispatching
Uses Google App Password authentication (not your regular Gmail password).
MongoDB & Mongoose
Local database storing:
Contact list
Templates
Email history
Cooldown metadata
Dispatch logs
Using MongoDB provides flexible and structured storage for scalable tracking.
Environment Configuration
Inside server/.env:
EMAIL_USER=your_real_email_id@gmail.com
EMAIL_PASS=your_gmail_app_password
MONGO_URI=mongodb://localhost:27017/bulk_email_sender
PORT=3000
resumePath=your_resume_name.pdf
Important: Gmail App Password
You must generate an App Password:
Go to Google Account → Security
Enable 2-Step Verification
Generate App Password
Paste the 16-character key into .env
Never use your actual Gmail password.
Usage Flow
Add contacts manually or import JSON.
Edit or create email templates.
Ensure resume is placed inside server/resumes/.
Click Start Run.
System checks cooldown.
Eligible contacts receive emails.
History updates automatically.
Everything runs locally.
What This Project Demonstrates
This project goes beyond CRUD operations.
It demonstrates:
SMTP automation
Cooldown / rate-limiting logic
Secure environment configuration
Structured MERN architecture
Privacy-first system design
Real-world application tracking
Responsible Usage Notice
This tool is strictly for ethical, professional job applications.
It is not intended for spam, unsolicited marketing, or misuse.
The cooldown system exists to promote respectful communication and protect both users and recruiters.
Written by Adithyan G
Portfolio: https://adithyan-phi.vercel.app/
Top comments (0)