AI Resume Screener is a full-stack web application that helps recruiters efficiently screen and rank candidates by automatically analyzing resumes against job descriptions. Resumes are scored using a multi-factor AI matching algorithm, and candidates are notified via automated email at each stage of the process.
| Feature | Description |
|---|---|
| π§ AI Resume Matching | Multi-factor scoring: skills (50pts), keywords (30pts), depth (10pts), experience (Β±10pts) |
| π€ Bulk Resume Upload | Upload multiple PDFs at once with real-time progress tracking |
| π§ Email Notifications | Automated HTML emails on submission, approval, and rejection via Brevo SMTP |
| π JWT Authentication | Secure recruiter login with BCrypt passwords and Bearer token authorization |
| π Resume Text Preview | In-app scrollable preview dialog with download option |
| π Pagination & Filtering | 10 results/page with ellipsis navigation, resets on filter change |
- Framework: Next.js (React 19)
- Styling: Tailwind CSS
- HTTP Client: Axios
- Deployment: Vercel
- Framework: Spring Boot 3.5 (Java 21)
- Database: MongoDB Atlas
- PDF Parsing: Apache PDFBox
- Email: Brevo SMTP
- Security: Spring Security + JWT
- Deployment: Railway
βββββββββββββββββββββββ ββββββββββββββββββββββββ βββββββββββββββββββ
β Next.js Frontend β HTTP β Spring Boot Backend β ODM β MongoDB Atlas β
β (Vercel) β βββββββΊ β (Railway) β βββββββΊ β resume_matcher β
βββββββββββββββββββββββ ββββββββββββββββββββββββ βββββββββββββββββββ
β
β SMTP
βΌ
ββββββββββββββββββ
β Brevo Email β
β Service β
ββββββββββββββββββ
- Java 17+
- Node.js 18+
- MongoDB (local or Atlas)
- Maven
git clone https://github.com/FaithEX1331/AI-Resume-Screening-App.git
cd AI-Resume-Screening-Appcd backendCreate a .env or set the following environment variables:
MONGODB_URI=mongodb://localhost:27017/resume_matcher
MONGODB_DATABASE=resume_matcher
JWT_SECRET=your_jwt_secret_here
JWT_EXPIRATION_MS=86400000
MAIL_API_KEY=your_brevo_smtp_key
CORS_ORIGIN=http://localhost:3000
UPLOAD_DIR=uploads
RECRUITER_NAME=HR TeamRun the backend:
./mvnw spring-boot:runcd ai-resume-screenerCreate a .env.local file:
NEXT_PUBLIC_API_URL=http://localhost:8080/apiRun the frontend:
npm install
npm run devThe app will be available at http://localhost:3000.
AI-Resume-Screening-App/
βββ ai-resume-screener/ # Next.js Frontend
β βββ src/
β βββ pages/
β β βββ ApplicantPage.jsx
β β βββ DashboardPage.jsx
β βββ services/
β βββ apiClient.js
β
βββ backend/ # Spring Boot Backend
βββ src/main/java/com/ai/screener/backend/
βββ service/
β βββ MatchingService.java
β βββ EmailService.java
β βββ AuthService.java
βββ security/
β βββ JwtUtil.java
β βββ JwtFilter.java
β βββ SecurityConfig.java
βββ resources/
βββ application.yaml
| Service | Platform | URL |
|---|---|---|
| Frontend | Vercel | https://ai-resume-screening-app-orpin.vercel.app |
| Backend | Railway | https://ai-resume-screening-app-production.up.railway.app |
| Database | MongoDB Atlas | Cluster: resume-screener |
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/auth/login |
Recruiter login |
POST |
/api/resumes/upload |
Upload single resume |
POST |
/api/resumes/bulk-upload |
Upload multiple resumes |
GET |
/api/resumes |
Get all resumes (paginated) |
PUT |
/api/resumes/:id/status |
Update resume status |
DELETE |
/api/resumes/:id |
Delete a resume |
Contributions are welcome! Please open an issue first to discuss what you'd like to change.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License. See the LICENSE file for details.
Made with β€οΈ by FaithEX1331