Hire Smarter. Screen Faster.
Automatically rank candidates, surface key strengths & gaps, and generate fit recommendations using an editorial AI-powered interface.
What It Does • Tech Stack • Getting Started • How to Use • Connect
demo.mp4
HireLens is a fully automated AI resume screening pipeline. HR teams upload a Job Description + up to 10 resumes and receive:
| Output | Description |
|---|---|
| Match Score (0–100) | Holistic LLM-evaluated fit score |
| Candidate Ranking | Sorted from best to worst fit |
| Key Strengths (2–3) | What the candidate does well |
| Key Gaps (2–3) | What the candidate is missing |
| Recommendation | Strong Fit / Moderate Fit / Not Fit |
| Recruiter Summary | 2-sentence AI-generated note |
- Mobile First & Adaptive: Pure vanilla CSS responsiveness that adjusts grid layouts, font sizes, and paddings for a seamless experience on any device.
- Sticky Actions: Important call-to-actions (like the "View Resume" button) are pinned to ensure they are always accessible, even with heavy content.
- Orchestrated Animations: Smooth transitions for FAQs, staggered list entries, and dynamic score rings powered by
motion/react. - Glassmorphic Design: A modern, high-end "frosted glass" aesthetic with dark mode optimization and sharp typography.
| Layer | Technology |
|---|---|
| Framework | Next.js 14 (App Router) |
| Authentication | Clerk |
| AI / LLM Engine | Groq API – llama-3.3-70b-versatile |
| Database | Supabase (PostgreSQL) |
| File Storage | Cloudinary |
| Animations | Motion |
| Styling | Vanilla CSS (dark glassmorphism) |
HireLens/
├── app/ # Next.js App Router pages & API routes
│ ├── (auth)/ # Sign-in / Sign-up (Clerk)
│ ├── screen/ # Upload JD + Resumes
│ ├── results/[sessionId]/ # Results Dashboard
│ └── dashboard/ # Session History
├── components/ # Reusable UI components
├── lib/ # Core modules (Groq, Supabase, Cloudinary, parseFile)
├── sample_data/ # 1 JD + 8 realistic resume profiles
├── Docs/ # Architecture documentation
│ ├── HLD.md # High Level Design
│ └── LLD.md # Low Level Design
├── .env.local # Environment variables (never commit!)
├── LICENSE
└── README.md
| Document | Description |
|---|---|
| High Level Design (HLD) | System architecture, data flow, component overview, deployment model |
| Low Level Design (LLD) | API specs, module interfaces, DB schema, component breakdown |
- Node.js 18+
- Accounts on: Clerk, Supabase, Cloudinary, Groq
git clone https://github.com/TuShArBhArDwA/HireLens.git
cd HireLens
npm installCopy and fill in your API keys:
cp .env.example .env.localEdit .env.local with your keys for Clerk, Supabase, Groq, and Cloudinary.
Run these SQL commands in your Supabase SQL editor:
CREATE TABLE screening_sessions (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id TEXT NOT NULL,
jd_title TEXT NOT NULL,
jd_text TEXT NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE candidates (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
session_id UUID REFERENCES screening_sessions(id) ON DELETE CASCADE,
name TEXT NOT NULL,
file_url TEXT,
resume_text TEXT,
score INTEGER NOT NULL,
rank INTEGER NOT NULL,
strengths JSONB NOT NULL DEFAULT '[]',
gaps JSONB NOT NULL DEFAULT '[]',
recommendation TEXT NOT NULL,
summary TEXT,
created_at TIMESTAMPTZ DEFAULT NOW()
);npm run devVisit http://localhost:3000
- Sign in with Clerk
- Go to Screen Candidates → upload your JD and resumes (PDF/DOCX/TXT)
- Or click "Load Sample Data" to use the built-in demo
- Click "Screen Candidates" → Groq analyzes each resume
- View the ranked results dashboard with scores, strengths, gaps, and recommendations
- Review past sessions in the Dashboard
Located in sample_data/:
jd_senior_data_engineer.txt– Realistic JD for a Senior Data Engineer roleresumes/– 8 diverse candidate profiles covering Strong Fit, Moderate Fit, and Not Fit scenarios
- All app routes are protected by Clerk authentication middleware
- API routes validate the authenticated user before processing
- No API keys are ever exposed to the client
.env.localis gitignored
This project is licensed under the MIT License - see the LICENSE file for details.
If you’d like to connect, feel free to reach out — Click here