An AI-powered recruitment platform that automates the entire hiring pipeline from candidate sourcing to offer generation using multi-agent AI systems.
| Stage | Description |
|---|---|
| Sourcing | Search and discover candidates across platforms (LinkedIn, GitHub, Indeed), AI-score fit against job requirements |
| Campaigns | Multi-step email outreach sequences with personalization, delivery tracking, and engagement analytics |
| Phone Screening | AI-powered voice calls via Vapi that probe skills and generate recommendations (STRONG_YES/YES/MAYBE/NO) |
| Offer Generation | Create competitive compensation packages and professional offer letters |
| Agent | Description |
|---|---|
| Talent Screener | Scores sourced candidates against job requirements with detailed fit reasoning |
| Phone Screen Agent | Analyzes call transcripts for skills, compensation expectations, red flags, and communication quality |
| Offer Generator | Creates compensation packages based on market data and candidate expectations |
- Multi-Platform Sourcing - Search LinkedIn, GitHub, Indeed, Glassdoor, AngelList
- AI Candidate Scoring - Automatic fit scoring with detailed reasoning
- Email Campaigns - Multi-step sequences with SendGrid tracking (opens, clicks, replies)
- AI Phone Screens - Vapi-powered calls with transcript analysis and recommendations
- Pipeline Kanban - Visual board tracking candidates through Sourced β Contacted β Replied β Phone Screen β Ready
- Real-time Dashboard - Live metrics, pipeline status, and agent activity
JOB CREATED
β
SOURCING ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββ Search candidates across platforms (LinkedIn, GitHub, etc.)
ββ Import and deduplicate candidates
ββ AI-score candidates using Talent Screener agent
β
CAMPAIGNS βββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββ Create multi-step email sequences
ββ Add sourced candidates as recipients
ββ Send personalized emails with SendGrid tracking
ββ Track: delivered β opened β clicked β replied
β
PHONE SCREEN ββββββββββββββββββββββββββββββββββββββββββββββββββ
ββ Schedule AI voice calls via Vapi
ββ Probe job-relevant skills in conversation
ββ Capture transcript and call metadata
ββ Phone Screen Agent analyzes and scores
ββ Generate recommendation: STRONG_YES / YES / MAYBE / NO
β
OFFER GENERATION ββββββββββββββββββββββββββββββββββββββββββββββ
ββ Generate compensation package
ββ Create and send offer letter
| Service | Purpose |
|---|---|
| Vapi | AI phone calling and real-time transcription |
| SendGrid | Email delivery with webhook tracking |
| Google ADK | Agent orchestration with Gemini 2.5 |
| Supabase | Database, auth, storage, real-time updates |
- FastAPI - High-performance Python web framework
- Google ADK - Agent Development Kit with Gemini 2.5 Flash/Pro
- Supabase - PostgreSQL database + file storage
- Pydantic - Data validation and serialization
- Next.js 14 - React framework with App Router
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first styling
- Lucide React - Icon library
- Supabase - Database, auth, real-time subscriptions, and storage
- Vercel - Frontend deployment
- Railway - Backend deployment
- Python 3.11+
- Node.js 18+
- Supabase account
- Google AI API key
-
Clone the repository
git clone https://github.com/TCS-Intern/HR-Plus.git cd HR-Plus -
Backend Setup
cd backend cp .env.example .env # Edit .env with your credentials uv sync
-
Frontend Setup
cd frontend npm install cp .env.example .env.local # Edit .env.local with your credentials
-
Database Setup
- Create a Supabase project
- Run the migration in
files/001_initial_schema.sql - Create storage buckets:
resumes,videos,documents
Backend (.env)
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_SERVICE_KEY=your-service-key
GOOGLE_API_KEY=your-google-api-key
GEMINI_MODEL=gemini-2.5-flashFrontend (.env.local)
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
NEXT_PUBLIC_API_URL=http://localhost:8000Using Make (recommended)
make dev # Runs both backend and frontendManual
# Terminal 1 - Backend
cd backend
uv run uvicorn app.main:app --reload --port 8000
# Terminal 2 - Frontend
cd frontend
npm run devAccess the application:
- Frontend: http://localhost:3000
- API Docs: http://localhost:8000/docs
HR-Plus/
βββ backend/
β βββ app/
β β βββ agents/ # AI agent implementations
β β β βββ talent_screener.py # Candidate scoring
β β β βββ phone_screen_agent.py # Call transcript analysis
β β β βββ offer_generator.py # Compensation packages
β β β βββ coordinator.py # Agent orchestration
β β βββ api/v1/ # REST API endpoints
β β β βββ sourcing.py # Candidate sourcing
β β β βββ campaigns.py # Email campaigns
β β β βββ phone_screen.py # AI phone screens
β β β βββ offers.py # Offer management
β β βββ schemas/ # Pydantic models
β β βββ services/ # Database, Vapi, SendGrid
β βββ pyproject.toml
β
βββ frontend/
β βββ app/
β β βββ (dashboard)/ # Main dashboard pages
β β β βββ sourcing/ # Candidate sourcing
β β β βββ campaigns/ # Email campaigns
β β β βββ phone-screens/ # AI phone screens
β β β βββ pipeline/ # Kanban board
β β β βββ offers/ # Offer management
β β βββ jobs/ # Job management
β βββ components/ # Reusable UI components
β βββ types/ # TypeScript definitions
β
βββ files/
βββ 001_initial_schema.sql # Database schema
βββ AGENT_SPECS.md # Agent specifications
βββ SYSTEM_DESIGN.md # Architecture docs
| Endpoint | Method | Description |
|---|---|---|
/api/v1/sourcing/search |
POST | Search candidates across platforms |
/api/v1/sourcing/import |
POST | Import search results as candidates |
/api/v1/sourcing/{id}/score |
POST | AI-score candidate fit |
/api/v1/sourcing/bulk-score |
POST | Score multiple candidates |
/api/v1/sourcing/{id}/convert |
POST | Convert to application |
| Endpoint | Method | Description |
|---|---|---|
/api/v1/campaigns |
POST | Create email campaign |
/api/v1/campaigns/{id}/recipients |
POST | Add candidates to campaign |
/api/v1/campaigns/{id}/send |
POST | Send pending messages |
/api/v1/campaigns/webhook/sendgrid |
POST | Handle email events |
| Endpoint | Method | Description |
|---|---|---|
/api/v1/phone-screen/schedule |
POST | Schedule AI phone call |
/api/v1/phone-screen/webhook |
POST | Handle Vapi call events |
/api/v1/phone-screen/{id}/approve |
POST | Approve for offer stage |
/api/v1/phone-screen/{id}/reject |
POST | Reject candidate |
| Endpoint | Method | Description |
|---|---|---|
/api/v1/offer/generate |
POST | Generate offer package |
/api/v1/dashboard/metrics |
GET | Get dashboard metrics |
- Create Job β Define role requirements and skills
- Source Candidates β Search across LinkedIn, GitHub, Indeed
- Score & Filter β AI scores candidates against job requirements
- Run Campaigns β Send personalized email sequences
- Phone Screen β AI calls interested candidates, analyzes responses
- Review Results β Check recommendations (STRONG_YES/YES/MAYBE/NO)
- Generate Offer β Create compensation package for approved candidates
- Track Pipeline β Monitor candidates through Kanban board
Visual board tracking candidates through Sourced β Contacted β Replied β Phone Screen β Ready stages.
Multi-platform candidate search with AI fit scoring and skills matching.
Email sequence builder with delivery tracking and engagement analytics.
AI call results with recommendations, transcript analysis, and skill assessments.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
MIT License
- Google ADK for AI agent orchestration
- Vapi for AI phone calling
- SendGrid for email delivery
- Supabase for backend infrastructure
- Lucide for icons