Evalia is a comprehensive 3-tier AI-powered platform that revolutionizes resume analysis and job matching. It combines advanced AI technologies with modern web development to provide intelligent insights, personalized career recommendations, and seamless job matching experiences.
- π€ AI-Powered Resume Analysis - Advanced parsing and skill extraction using OpenAI
- π― Intelligent Job Matching - Vector-based similarity search with industry-specific namespacing
- π Career Insights - Personalized recommendations and skill gap analysis
- π Real-time Notifications - WebSocket-based notification system with persistent storage
- π₯ Multi-Role Support - Separate interfaces for job seekers and recruiters
- π£οΈ Voice Integration - AI-powered voice interactions using Vapi
- π Analytics Dashboard - Comprehensive analytics with Material-UI charts
- π Secure Authentication - JWT-based authentication with OTP verification
Evalia follows a microservices architecture with clear separation of concerns:
- Upload β PDF uploaded to Cloudinary
- Parsing β AI extracts structured data
- Storage β MongoDB stores resume data
- Vectorization β Pinecone stores embeddings by industry
- Analysis β OpenAI provides insights and recommendations
To store the vector values of the Resume we used Qdrant. For better searching efficiency we separated the table by industry. This virtual separation is done by storing industry metadata in each point.
- join -> User joins the interview using the link
- Interview Agent: Monke β Our interview agent
- Aggregation β Results grouped by candidate
- Ranking β Scored by relevance and skills match
- Presentation β Formatted results with recommendations
- Query β User searches for opportunities
- Vector Search β Pinecone finds similar profiles
- Aggregation β Results grouped by candidate
- Ranking β Scored by relevance and skills match
- Presentation β Formatted results with recommendations
- Event Trigger β Microservice publishes event
- Processing β Notification service handles event
- Persistence β MongoDB stores notification
- Delivery β WebSocket pushes to frontend
- Display β Redux store updates UI
- Persistent Notifications: Important events requiring user attention
- Toast Notifications: Immediate feedback (using React Toastify)
- Real-time Updates: WebSocket for live notifications
- Winston: Structured logging across Node.js services
- Console Logs: Vector search debugging
- Error Handling: Specific status codes with graceful degradation within global error handling
- Node.js 18+
- Java 17+
- MongoDB
- Maven
Create .env files in each service directory and add application.json file in the auth-gateway server. follow the .env.example files for details.
server.port=8080
spring.mail.host=smtp.gmail.com
spring.mail.username=your_email
spring.mail.password=your_app_password- Clone the repository
git clone https://github.com/Imran-2020331101/evalia.git
cd evalia- Install dependencies for all services
cd {server-name} && npm install
# Auth Gateway (Maven)
cd ../server/auth-gateway && ./mvnw clean install- Start all services in separate terminals
In each terminl run:
cd {server-name} && npm run devAuth Gateway
cd server/auth-gateway && ./mvnw spring-boot:runFor detailed installation guide check individual readme
GET /health # Health check
POST /api/resume/upload # Upload resume PDF
GET /api/resume/:id # Get resume by ID
POST /api/resume/basic-search # Search resumes
GET /api/courses # Get skill development courses
GET /api/jobs # Get all jobs
POST /api/jobs # Create new job
GET /api/jobs/:jobId # Get job by ID
POST /api/jobs/generate/interview-questions # Generate interview questions
POST /api/jobs/:jobId/shortlist # Shortlist candidates
GET /api/jobs/organization/:id # Get jobs by organization
POST /api/interviews/schedule # Schedule interview
PUT /api/interviews/:id/transcript # Update interview transcript
WebSocket: Real-time video processing # Video analysis
POST /api/auth/register # User registration
POST /api/auth/login # User login
POST /api/auth/verify-otp # OTP verification
POST /api/auth/resend-otp # Resend OTP
GET /api/auth/profile # Get user profile
GET /api/notifications # Get user notifications
POST /api/notifications # Create notification
WebSocket: /socket.io (Port 6001) # Real-time notifications
This project is licensed under the MIT License - see the LICENSE file for details.
- Azwoad - Frontend Developer
- Imran - Backend Developer
- OpenAI for GPT models
- Qdrant for vector database
- Cloudinary for file storage
- Material-UI for component library
Made with β€οΈ by the Evalia Team






