π HireLens β AI-Powered Job Application Optimizer + Semantic Ranking (Fullstack-project,.NET + React)
HireLens is an enterprise-grade AI recruitment platform designed to modernize hiring through intelligent automation, AI-powered evaluation, and transparent decision-making.
HireLens aims to redefine modern recruitment by combining intelligent automation, AI-driven evaluation, and transparent decision-making into one seamless platform.
The mission is to empower recruiters to make faster, smarter, data-driven hiring decisions while ensuring candidates receive fair, evidence-based evaluations.
By integrating AI scoring, explainability, and structured workflows, HireLens bridges the gap between human intuition and machine intelligence in the hiring ecosystem.
Frontend (Vercel):
https://ai-powered-job-application-optimizer-vupphwx74.vercel.app
Backend API (Render):
https://ai-powered-job-application-optimizer.onrender.com/swagger
Frontend (Vercel)
β¬
Backend API (Render β Dockerized)
β¬
PostgreSQL Database (Render Managed DB)
This project demonstrates full-stack architecture, API design, and scalable backend development using modern technologies.
Frontend (React)
β
βΌ
Backend API (.NET Core)
β
βΌ
Database (PostgreSQL)
β
βΌ
AI Service (OpenAI)
- ASP.NET Core 8
- Entity Framework Core
- PostgreSQL (Npgsql)
- JWT Authentication
- Swagger
- React (Vite)
- Axios
- JWT Token Storage
- OpenAI (Evaluation + Embeddings)
- Render (API + Database)
- Vercel (Frontend)
- GitHub Actions (CI/CD)
- Docker
- JWT-based authentication
- Secure password hashing
- Role-based access ready
- Create candidate
- Update status (New β Shortlisted β Interview β Hired β Rejected)
- Recruiter notes
- Audit logging
- PDF-only upload (15MB max)
- Text extraction using PdfPig
- Cleaned text storage
- Ready for AI evaluation
- OpenAI integration
- Skill extraction
- Match scoring
- Embedding generation
- Explainability service
- Score-based candidate ranking
- Evaluation tracking
Tracks:
- Who changed status
- Before/After snapshot
- Timestamp
Build and run backend container:
docker build -t hirelens-api .
docker run -p 8080:8080 hirelens-apiRender backend requires:
ConnectionStrings__DefaultConnection=Host=...;Port=5432;Database=...;Username=...;Password=...;SSL Mode=Require;Trust Server Certificate=true;
Jwt__Key=VERY_LONG_SECRET_32+_CHARS
Jwt__Issuer=HireLens
Jwt__Audience=HireLens
OpenAI__ApiKey=sk-...
OpenAI__Model=gpt-4o-mini
OpenAI__EmbeddingModel=text-embedding-3-smallGitHub Actions pipeline includes:
- .NET Restore
- Build
- Tests
- Frontend Build
Update HireLens.Api/appsettings.json:
- ConnectionStrings:DefaultConnection
- Jwt:Key (32+ characters)
- OpenAI:ApiKey (optional)
Run migrations:
dotnet ef database updateRun API:
dotnet run --project HireLens.ApiSwagger:
http://localhost:5159/swagger
cd HireLens.Web
npm install
npm run devFrom repository root:
docker compose up --buildWeb:
http://localhost:3000
API:
http://localhost:8080/swagger
POST /api/auth/register
POST /api/auth/login
GET /api/candidates
POST /api/resumes/upload
POST /api/evaluations/jobs
POST /api/evaluations
GET /api/rankings/jobs/{jobId}/candidates
GET /api/rankings/jobs/{jobId}/candidates/{candidateId}/explain
dotnet test- If OpenAI key is not configured, evaluation endpoints return a short 400 error.
- PDF extraction works for text-based PDFs. Scanned/image PDFs require OCR.
- Role-based authorization (Admin / Recruiter)
- Resume similarity search
- Vector database integration
- Analytics dashboard
- AI interview question generator
- Production-grade logging (Serilog)
- Rate limiting
Thabang Rakeng
Full-Stack Developer | AI-Focused Backend Engineer