Create ATS-optimized, jobβtailored resumes with AI assistance. Upload your PDF, analyze against any JD, weave missing keywords, polish language, and download a clean PDF. Built with React + Node + MongoDB + Gemini AI.
- AIβpowered ATS analysis with actionable fixes
- Oneβclick βBoost My Resumeβ (Tailor β Weave Keywords β Polish)
- Professional templates with live preview and PDF export
- Public resume link with daily view analytics
- Admin dashboard and feedback collection
Clone and run locally in minutes.
# 1) Clone
git clone https://github.com/Sarthak-Developer-Coder/ATS_RESUME_BUILDER.git
cd ATS_RESUME_BUILDER
# 2) Backend
cd backend
npm install
# copy your env
# Windows PowerShell
copy .env.example .env # fill MONGODB_URI, JWT_SECRET, GEMINI_API_KEY, EMAIL_*, FRONTEND_URL
npm start # http://localhost:8001
# 3) Frontend (new terminal)
cd ../frontend
npm install
# Windows PowerShell
copy .env.example .env # set REACT_APP_API_URL=http://localhost:8001
npm start # http://localhost:3001Health & docs:
- Backend Health: http://localhost:8001/api/health
- API Docs: http://localhost:8001/api
- Admin panel route:
/admin/login - To create admin user locally:
cd backend
npm run create-adminDefault (example) creds used in docs: admin@resumebuilder.com / admin123 (change in .env).
Most resumes miss ATS filters or lack roleβspecific alignment. This tool fixes both: clear builder UX + AI that tailors content to each job.
- π Auth: Email/password (Firebase optional)
- π§βπ Smart Builder: Stepper UI, manual reorder + AI reorder suggestions
- π§ AI Suite:
- Generate / Polish / Translate Summary
- ATS Analyze vs JD (scores, suggestions)
- Keyword Gap + Weave Keywords into bullets responsibly
- Readability Insights (Flesch score, passive voice, long sentences)
- Tailor to JD (skill prioritization, summary rewrite)
- Cover Letter Generator
- π Clean, ATSβsafe PDF export
- π₯ Resume Upload & parsing (PDF)
- π Public Share with daily view analytics
- π¬ Feedback widget (General, Bug, Feature, Help)
- π¨βπΌ Admin Dashboard (users, resumes, feedback, analytics)
- π Forgot/Reset Password via email
- π Responsive Material UI
| Layer | Technology |
|---|---|
| Frontend | React (CRA), Material UI, Firebase (optional) |
| AI Engine | Google Generative AI (Gemini) |
| Backend | Node.js, Express.js, MongoDB, JWT |
| PDF Export | html-pdf-node, pdf-parse |
| Feedback | EmailJS + Nodemailer |
| Admin | JWT Auth, Role-based Access |
ats-resume-builder/
βββ backend/
β βββ controllers/ # API Logic (Resume, Auth, AI, Admin)
β βββ models/ # Mongoose Schemas
β βββ routes/ # Express Routes
β βββ middleware/ # Auth, Error Handling
β βββ scripts/ # Admin Creation Script
β βββ utils/ # PDF Parser, Helpers
βββ frontend/
βββ public/ # Static Files
βββ src/
βββ components/
βββ pages/
βββ contexts/
βββ firebase/
βββ helper/
git clone https://github.com/Sarthak-Developer-Coder/ATS_RESUME_BUILDER.git
cd ATS_RESUME_BUILDERcd backend
npm installcd ../frontend
npm installPORT=8001
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret_key
GEMINI_API_KEY=your_gemini_api_key
FIREBASE_PROJECT_ID=your_firebase_project_id
FIREBASE_CLIENT_EMAIL=your_firebase_client_email
FIREBASE_PRIVATE_KEY=your_firebase_private_key
EMAIL_USER=your_gmail_address
EMAIL_PASS=your_gmail_app_password
FRONTEND_URL=http://localhost:3001Helpful: the Firebase Admin private key is multiline. To safely place it in backend/.env as a single-line escaped string, use the helper script:
# from repo root
node backend/scripts/encode-firebase-key.js C:\path\to\service-account.json
# copy the printed FIREBASE_PRIVATE_KEY=... line and paste into backend/.envPORT=3001
REACT_APP_FIREBASE_API_KEY=your_firebase_api_key
REACT_APP_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain
REACT_APP_FIREBASE_PROJECT_ID=your_firebase_project_id
REACT_APP_FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket
REACT_APP_FIREBASE_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id
REACT_APP_FIREBASE_APP_ID=your_firebase_app_id
REACT_APP_FIREBASE_MEASUREMENT_ID=your_measurement_id
REACT_APP_API_URL=http://localhost:8001cd backend
npm run create-adminYou can run the frontend and backend together or separately.
Backend
cd backend
npm startFrontend
cd frontend
npm startThen open http://localhost:3001
- Backend: Render web service (root
backend/). Use env vars frombackend/.env.example. - Frontend: Vercel project (root
frontend/). SetREACT_APP_API_URLto your Render URL.
- Email:
admin@resumebuilder.com - Password:
admin123 - Added script to create admin user:
npm run create-admin
- Fixed email sending with proper HTML templates
- Added fallback for development (logs reset URL)
- Improved error handling and user feedback
- Added proper token validation and expiration
- Fixed PDF generation to match preview exactly
- Improved responsive design for different content lengths
- Added dynamic font sizing based on content volume
- Enhanced spacing and layout consistency
- Fixed template rendering issues
- π§βπ Freshers: Quickly generate a professional resume with AI help.
- πΌ Working Professionals: Score resumes against job descriptions to increase chances.
- π Resume Review Services: Extract content, improve, and export with ease.
- π€ Job Portals: Integrate AI scoring as an enhancement.
- π¨βπΌ HR Teams: Admin dashboard for user management and analytics.
For forgot password functionality, configure these environment variables:
EMAIL_USER=your_gmail_address
EMAIL_PASS=your_gmail_app_passwordTo get a Gmail App Password:
- Enable 2βFactor Authentication on your Gmail account
- Google Account Settings β Security β App Passwords
- Generate a new app password for "Mail"
- Use this password in
EMAIL_PASS
Place your images in docs/screenshots/ with the names below (or adjust paths in this README).
| Login | Profile | Dashboard |
|---|---|---|
| Upload Resume | ATS Score β Input | ATS Score β Results |
|---|---|---|
| AI Recommendations & Keywords | Template Select | Summary (AI) |
|---|---|---|
| Resume Preview | Feedback |
|---|---|
Made with β€οΈ by Sarthak Nag
π§ sarthakthesde@gmail.com
π LinkedIn
Made with β€οΈ by Prerit Nag
π§ preritnag4@gmail.com
π LinkedIn
MIT License