Next-Generation AI Recruitment & Interactive Interview Practice Platform
Conduct autonomous voice interviews, evaluate hiring candidates with AI scorecards, and provide job seekers with real-time AI mock interview practice.
RecruitAI is a full-stack, open-source AI platform built with Laravel 12, Inertia.js, React, TypeScript, and Retell AI. It serves a powerful dual purpose:
- 🏢 For Companies & Recruiters: Automated end-to-end hiring pipeline — resume parsing, candidate screening, autonomous AI voice interviews, and detailed PDF scorecards.
- 🎯 For Job Seekers & Students (Interview Practice): An interactive practice sandbox where candidates can simulate real-world technical and behavioral voice interviews, get instant AI feedback, and review performance analytics before their real interview.
- Real-Time Mock Interviews: Practice behavioral, situational, and role-specific technical questions with adaptive AI voice interviewers.
- Equipment & Voice Test: Pre-flight audio check ensuring microphone clarity and network latency readiness.
- Detailed Practice Reports: Generates automated post-interview feedback highlighting answer quality, communication tone, strengths, and areas for improvement.
- Repeat Attempts & History: Track progress over multiple attempts across different job roles and difficulty levels.
- AI Voice Interviews: Automated, conversational voice interviews powered by Retell AI voice agents.
- Job Role & Criteria Customization: Define custom interview guidelines, mandatory topics, and evaluation criteria per position.
- Candidate Pipeline Management: Track applicant lifecycle from invitation to final hiring decision.
- Automated Scorecards & PDF Export: Instant generation of comprehensive evaluation reports with score breakdowns and downloadable PDFs (via DomPDF).
- Resume Parsing: Automatic PDF resume text extraction and candidate profile population (via Smalot PDF Parser).
- Team Collaboration: Invite team members, assign role-based permissions, and manage multiple company workspaces.
- Webhook Processing: Real-time webhook listeners for Retell AI call events, recording URLs, and transcripts.
- Cloud Storage Ready: Built-in AWS S3 support for storing candidate resumes and interview recordings.
- Authentication & Security: Secure authentication via Laravel Fortify with audit logging.
| Layer | Technology |
|---|---|
| Backend Framework | Laravel 12 (PHP 8.2+) |
| Frontend Framework | React 19 + Inertia.js 2.0 |
| Language & Tooling | TypeScript, Vite, Tailwind CSS |
| UI Components | Radix UI, Headless UI, Lucide Icons |
| Voice / AI Engine | Retell AI Voice Agents & Webhooks |
| Document Processing | smalot/pdfparser (Resume parsing), barryvdh/laravel-dompdf (PDF Reports) |
| Database & Cache | SQLite / MySQL / PostgreSQL, Redis |
| Testing | Pest PHP & PHPUnit |
Ensure you have the following installed on your machine:
- PHP >= 8.2 with extensions:
pdo,sqlite3(ormysql),mbstring,curl,gd - Composer (PHP Package Manager)
- Node.js >= 18.x (or Bun)
- SQLite (default) or MySQL / PostgreSQL
git clone <YOUR_REPO_URL> recruitAIOpenSource
cd recruitAIOpenSourceInstall PHP backend packages and JavaScript frontend dependencies:
# Install PHP dependencies
composer install
# Install Frontend dependencies (using npm or bun)
npm install
# or: bun installCopy the example environment file and generate the application key:
cp .env.example .env
php artisan key:generateOpen .env and verify/adjust your settings:
APP_NAME="RecruitAI"
APP_URL=http://localhost:8000
# Database (Default is SQLite)
DB_CONNECTION=sqlite
# Queue (Use database for background job processing)
QUEUE_CONNECTION=database
# Retell AI Voice Configuration (Optional: Add for live voice calls)
RETELL_API_KEY=your_retell_api_key_here
# AWS S3 Storage (Optional: For cloud uploads)
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=Create the database tables and seed default roles and settings:
# Create SQLite file if using SQLite
touch database/database.sqlite
# Run migrations and seed data
php artisan migrate --seedYou need to run both the Laravel backend server and Vite frontend asset compiler:
php artisan serveThe backend will be running at http://127.0.0.1:8000.
npm run dev
# or: bun run devphp artisan queue:workOpen your browser and visit: 👉 http://localhost:8000
- Practice Interviews: Navigate to Practice Interviews to start a mock session, test audio, and get AI feedback.
- Recruiter Dashboard: Register or log in to create job roles, invite candidates, and view interview results.
Run the test suite using Pest PHP / PHPUnit:
php artisan testTo run type checks and code formatting:
# TypeScript type check
npm run types
# Code formatting
npm run formatrecruitAIOpenSource/
├── app/
│ ├── Http/Controllers/
│ │ ├── CandidateController.php # Candidate management & invitations
│ │ ├── InterviewController.php # Recruiter voice interviews & evaluation
│ │ ├── PracticeInterviewController.php # Candidate practice & mock sessions
│ │ ├── JobRoleController.php # Job roles & criteria
│ │ └── WebhookController.php # Retell AI event handlers
│ └── Models/ # Eloquent Models (Candidate, Interview, JobRole, etc.)
├── config/ # Application configuration files
├── database/
│ ├── migrations/ # Database schema migrations
│ └── seeders/ # Database seeders
├── resources/
│ ├── js/
│ │ ├── components/ # Reusable UI components
│ │ ├── layouts/ # Inertia layout templates
│ │ ├── pages/ # React pages (Dashboard, Practice, Interviews)
│ │ └── types/ # TypeScript interfaces
│ └── css/ # Tailwind CSS styles
├── routes/
│ ├── web.php # Web & Inertia routes
│ └── console.php # Artisan CLI commands
└── tests/ # Pest / PHPUnit test cases
Contributions are welcome! Please feel free to submit a Pull Request.
- 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 open-source and licensed under the MIT License.