ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββ ββββββββββββ βββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββ ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββ
ββββββββββββββββββββββββββ ββββββββββββββββ βββββββββββββββββββββββββββ
βββββββββββββββββββββββββββ ββββββββββββββ βββββββββββββββββββββββββββ
βββββββββββββββββββββββββββ βββββββββββ ββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββ ββββββββββββββ ββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
A comprehensive, AI-driven recruitment platform featuring a dual-dashboard architecture: one for Recruiters to parse and rank candidates, and one for Individuals to take proctored, interactive AI interviews.
- Job Description Management: Create and store multiple job descriptions.
- Bulk Resume Upload: Drag-and-drop multiple PDF resumes for simultaneous analysis.
- Candidate Leaderboard: Real-time ranking of candidates based on ATS score, technical fit, and behavioral integrity.
- Detailed Drill-down: View matching/missing skills and the AI's qualitative assessment for each candidate.
- AI Interview Suite: Participate in a dynamic, voice-enabled technical interview.
- Proctored Assessments: Real-time camera monitoring using MediaPipe and YOLOv8 to detect multiple faces, absence of user, or suspicious behavior.
- Interactive Coding Sandbox: A VS Code-like Monaco editor where candidates write Python/C++ code that is safely evaluated inside a strict Docker sandbox.
- Assessment Dashboard: View historical interview performance, AI feedback, and overall scores.
The backend utilizes a sophisticated multi-agent system powered locally by Ollama, ensuring privacy and zero API costs.
- Agent 1 (Interviewer): Uses
qwen2.5-coder:7bto generate contextual, dynamic technical questions based on the user's resume and the Job Description. - Agent 2 (Evaluator): Uses
qwen2.5-coder:7bto evaluate the candidate's qualitative responses, communication skills, and behavioral fit. - Agent 3 (Validator): Uses a HuggingFace
CrossEncoderandChromaDBto semantically match the candidate's extracted resume text against JD requirements. - Agent 4 (Assessor): Uses
gemma3:4bto generate custom Data Structures & Algorithms (DSA) questions for the coding sandbox. - Agent 5 (Interview Evaluator): Uses
qwen2.5-coder:7bto synthesize all interview data into a strictly formatted JSON report detailing strengths, weaknesses, and a final hire recommendation.
- Frontend: React + Vite + TypeScript + TailwindCSS + shadcn/ui
- Backend: FastAPI (Python) + SQLite + ChromaDB
- Local AI Inference: Ollama
- Computer Vision / Proctoring: OpenCV, MediaPipe (Pose/Face), YOLOv8
- Code Execution: Docker containers (isolated, 5-second timeout)
- Cloud Hosting: Vercel (Frontend) + Ngrok (Backend Tunnel)
π¦ SmartHire
β£ π Frontend/ # React Frontend Application
β β£ π src/
β β β£ π components/ # Reusable UI components (shadcn, navbar, etc.)
β β β£ π config/ # API configurations (api.ts -> VITE_API_BASE_URL)
β β β£ π pages/
β β β β£ π Auth/ # Firebase Login & Signup
β β β β£ π Dashboard/ # Shared Dashboard Layouts
β β β β£ π Individual/ # Candidate Profile & Mission Logs
β β β β£ π Interview/ # Multistep AI Assessment Suite (Camera, Code, Voice)
β β β β£ π Recruiter/ # Job Listings, Bulk Upload, Candidate Leaderboards
β β β β π Screening/ # Resume parsing UI
β β β£ π App.tsx # React Router implementation
β β β π main.tsx
β β£ π vercel.json # Vercel SPA Routing Configuration
β β£ π vite.config.ts
β β π package.json
β
β£ π pbl-test1/ # Python FastAPI Backend
β β£ π data/ # SQLite DB and ChromaDB vector stores
β β£ π monitoring_system/ # AI Proctoring & Computer Vision
β β β£ π detection/ # YOLOv8 and MediaPipe landmarker logic
β β β£ π logic/ # Rules engine for detecting cheating
β β β π app.py # Standalone monitoring test script
β β£ π fastapi_app.py # Main FastAPI server and WebSocket routes
β β£ π agent_1_interviewer.py # AI Agent 1 logic
β β£ π agent_2_evaluator.py # AI Agent 2 logic
β β£ π agent_3_validator.py # AI Agent 3 logic
β β£ π agent_4_assessor.py # AI Agent 4 logic
β β£ π agent_5_interview_evaluator.py # AI Agent 5 logic
β β£ π code_executor.py # Manages Docker containers for code execution
β β£ π Dockerfile.sandbox # Docker image for secure code evaluation
β β£ π database.py # SQLAlchemy ORM definitions
β β£ π embedder.py # Text embedding generation for semantic search
β β£ π vector_store.py # ChromaDB integration for ATS parsing
β β π requirements.txt # Python dependencies
Since the AI runs locally on your machine, you must install Ollama and download the required models before starting the backend:
# Pull the required reasoning and coding models
ollama pull qwen2.5-coder:7b
ollama pull gemma3:4bThe backend requires a robust Python environment (Python 3.11+ recommended).
cd pbl-test1
# Create and activate a virtual environment
python -m venv venv
.\venv\Scripts\activate # (Windows)
# source venv/bin/activate # (Mac/Linux)
# Install dependencies
pip install -r requirements.txt
# Initialize the SQLite database
python -c "from database import init_db; init_db()"
# Build the Docker Code Sandbox (Required for the Coding Interview step)
docker build -t code-sandbox:latest -f Dockerfile.sandbox .
# Start the FastAPI Server
python -m uvicorn fastapi_app:app --host 0.0.0.0 --port 8000 --reloadcd Frontend
# Install Node dependencies
npm install
# Start the Vite development server
npm run devAccess the application at: http://localhost:5173
Because the backend requires heavy GPU/CPU usage for local AI models, it cannot be deployed to standard serverless platforms like Vercel or Render Free.
The recommended deployment architecture is:
- Frontend: Hosted globally on Vercel.
- Backend: Hosted on your local machine, exposed to the internet via Ngrok.
Deployment Steps:
- Start your backend:
uvicorn fastapi_app:app --reload - Start an Ngrok tunnel on your local machine:
ngrok http 8000
- Copy the secure Ngrok URL (e.g.,
https://xxxx-xxxx.ngrok-free.app). - In your Vercel Dashboard, go to your Frontend project's Environment Variables.
- Add
VITE_API_BASE_URLand set the value to your Ngrok URL +/api(e.g.,https://xxxx-xxxx.ngrok-free.app/api). - Click Redeploy in Vercel.
Your Vercel website is now live and securely routing API requests back to your local AI engine!
MIT License