Placement-Pro is an AI-assisted career application platform built to help job seekers improve resume quality, measure role fit, generate recruiter outreach, and track application activity in one workflow.
This project started as a set of resume tools and was gradually shaped into a more product-focused experience with separate ATS checking, JD matching, cold email generation, bullet improvement, and application history.
- Built a full-stack AI product around a real job-search workflow instead of isolated generators
- Separated ATS checking from JD matching to reflect two different user problems
- Moved AI prompt logic from the frontend into protected backend routes
- Added authenticated application history to support repeated usage and future product scaling
- Designed the backend to run locally and in a Vercel-style deployment setup
Many candidates apply with the same resume to every role and do not know:
- whether their resume is ATS-friendly
- how well their resume matches a specific job description
- what keywords or skills are missing
- how to write better project bullets
- how to send a stronger recruiter outreach email
Placement-Pro addresses those gaps with a guided application workflow instead of isolated utilities.
Phase 1 features implemented:
- ATS Resume Checker Evaluates general resume quality, structure, and ATS readiness
- JD Matching Tool Compares a resume against a target job description and returns match score, missing keywords, and advice
- Cold Email Generator Creates a personalized recruiter outreach email using resume and job context
- Bullet Improvement Converts rough project descriptions into stronger resume-ready bullet points
- Application History Saves ATS checks, JD matches, email drafts, and bullet improvement activity per user
- AI prompt logic is handled in the backend, not the frontend
- Gemini API is used through protected Express routes
- JWT-based authentication protects personalized features and saved history
- MongoDB stores user data and application activity history
- The backend is structured to run both locally and on Vercel
- Frontend: React, React Router, Axios, Tailwind CSS
- Backend: Node.js, Express, MongoDB, Mongoose, JWT, Multer, pdf-parse
- AI: Gemini API
- Deployment: Vercel-ready backend setup with env-based CORS configuration
- User signs up or logs in
- User checks resume with the ATS Resume Checker
- User compares the same resume with a specific job in the JD Matching Tool
- User improves project bullets if needed
- User generates a recruiter cold email
- All major actions are stored in Application History
frontend/
React client
protected routes
feature pages for ATS, JD match, email, bullets, history
backend/
Express API
auth routes
AI routes
Gemini-based controller logic
MongoDB models
All AI endpoints require authentication.
POST /api/resume/ats-checkPOST /api/resume/jd-matchPOST /api/email/generatePOST /api/bullets/generateGET /api/auth/historyGET /api/auth/profilePUT /api/auth/profile
Create backend/.env with:
PORT=8000
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
GEMINI_API_KEY=your_gemini_api_key
GEMINI_MODEL=gemini-2.5-flash
CORS_ORIGINS=http://localhost:3000,https://your-frontend-domain.vercel.appcd backend
npm install
npm startFor development with auto-reload:
cd backend
npm run devcd frontend
npm install
npm startIf needed, set REACT_APP_API_URL in the frontend environment.
- It reflects product thinking, not just API integration
- It separates general ATS checking from role-specific JD matching
- It stores user activity to support repeat usage and future product expansion
- It moves AI business logic to the backend instead of exposing prompts in the client
- It demonstrates full-stack work across authentication, AI integration, stateful workflows, and deployment concerns
- Refactored the project from frontend-owned prompt generation to backend-owned AI orchestration
- Split one overloaded analysis tool into two clearer product features: ATS checking and JD matching
- Added shared history tracking across multiple AI features instead of storing only scan scores
- Updated backend startup and CORS handling to better support both local development and deployment
- Reworked the project from a tool collection into a more realistic user journey
- Create a dedicated
Applicationmodel instead of relying only on activity history - Add resume versioning for different job applications
- Add background jobs and queueing for heavier AI and document-processing tasks
- Introduce usage limits, analytics, and plan-based feature controls
- Build recruiter or placement-cell dashboards for a stronger B2B use case
If extended further, the strongest next additions would be:
- saved applications as first-class records
- resume versioning per job
- interview question generation from a JD
- recruiter dashboard or placement-cell analytics
- usage limits and subscription plans