Platform Documentation
How PM Recruit uses AI to match, assess, and interview project management professionals — from CV upload to hiring decision.
Overview
What is PM Recruit?
PM Recruit is an AI-powered recruitment platform for the project management sector in the GCC region. It automates the entire hiring pipeline — from CV parsing and match scoring, through AI-generated assessments and real-time voice interviews, to calendar scheduling and in-app notifications. Recruiters see ranked, explainable results at every stage. Candidates get faster, fairer evaluations.
Candidate Journey
From Application to Hiring Decision
The complete flow a candidate goes through — each step is AI-assisted and visible to the recruiter in the pipeline.
Browse & Apply
Candidate sees AI match scores on jobs, applies to high-match roles.
Screening
Recruiter moves to screening — assessment auto-assigned, email sent.
Take Assessment
Candidate completes 15-question timed assessment: 10 open-ended PM questions + 5 psychometric behavioral scenarios.
AI Scoring + Profiling
Claude scores open-ended answers. Psychometric responses produce a 5-trait personality profile. Recruiter sees both.
AI Voice Interview
Candidate joins real-time voice call with AI interviewer — transcript captured.
Interview Analysis
Claude analyses transcript across 5 dimensions, generates scores + recommendation.
Human Interview
Recruiter conducts video interview on the platform — no external tools.
Decision
Recruiter sees assessment score, interview score, and match score side by side.
Triggers
When Does AI Run?
The AI engines are triggered automatically by platform events. No manual action is required.
Candidate Uploads CV
When a candidate uploads or updates their CV, the system parses it then scores them against all published jobs. Only jobs that pass the pre-filter are sent to Claude.
CV Upload → Parse → Pre-Filter → Score vs All Published JobsRecruiter Publishes Job
When a recruiter publishes a job, the system scores all candidates who have a parsed CV against that job. The pre-filter and skip-unchanged logic ensure only relevant, unscored pairs use API calls.
Job Published → Pre-Filter All Candidates → Score Remaining PairsApplication Moved to Screening
When a recruiter moves an application to 'screening', the system auto-assigns the AI assessment (if one exists for the job) and sends the candidate a notification with a link to take the timed assessment.
Status → Screening → Auto-Assign Assessment → Email + NotificationAssessment Completed
When a candidate submits their assessment, a background job sends all answers to Claude for batch scoring. Per-question scores, feedback, and key points are stored and visible to the recruiter.
Submit → BullMQ Job → Claude Scoring → Results in PipelineCore Engine
The AI Pipeline
From a raw CV file to a hiring decision — every AI-powered step in the platform.
CV Upload & Text Extraction
Candidates upload their CV in PDF or DOCX format. The system extracts raw text using pdfjs-dist and mammoth. The extraction runs as a background job via BullMQ so the user isn't kept waiting.
LLM-Powered CV Parsing
The extracted text is sent to Claude (Anthropic) with a structured JSON schema. The model identifies and extracts skills, certifications, work history, industries, education, and more — without inventing data that isn't present.
Rule-Based Pre-Filter
Before calling the AI scoring engine, each candidate-job pair is checked against lightweight rules: experience threshold (50% minimum), salary range overlap, and industry match. Pairs that are obvious mismatches are skipped, saving API calls.
5-Dimension Match Scoring
Each candidate-job pair that passes the pre-filter is evaluated by Claude across five weighted dimensions. The resulting overall score (0-100) is categorised as Green (71-100), Orange (41-70), or Red (0-40) for quick recruiter triage.
AI-Generated Assessment
Claude generates 15 tailored questions in one call — 10 open-ended PM knowledge questions and 5 psychometric situational-choice questions with personality trait mapping. Candidates take a timed assessment with both text answers and multiple-choice. Claude scores knowledge questions; psychometric responses produce a 5-trait personality profile.
AI Voice Interview
Candidates join a real-time voice conversation with an AI interviewer powered by LiveKit and OpenAI Realtime API. The agent asks structured questions based on the job requirements, captures a full transcript, and Claude analyses it across 5 dimensions — communication, technical depth, problem solving, cultural fit, and leadership.
Human Video Interview
Recruiters and candidates join a browser-based video call powered by LiveKit WebRTC. No Zoom, no external tools. Recruiters schedule from the pipeline or calendar, both parties join from the platform.
In-App Notifications & Reminders
A real-time notification bell surfaces all platform events — interview reminders (15 min before), assessment assignments, scoring results, application status changes, and match notifications. Cron jobs handle scheduled reminders.
Match Scoring
Five-Dimension Scoring Model
Every candidate-job pair produces a weighted composite score across five transparent dimensions.
Salary Alignment
Overlap between the candidate's salary expectations and the job's offered range.
Experience
Candidate's years of experience measured against the job's minimum requirement.
Qualifications
Match rate of professional certifications (PMP, PRINCE2, SAFe, etc.).
Industry Fit
Overlap between candidate's industry preferences and the job's sector.
CV Outcomes
Claude analyses the CV text against the job requirements for relevant project outcomes, leadership experience, and domain expertise.
Assessment Engine
AI-Generated Assessments
Claude generates a combined assessment in one call — PM knowledge questions (open-ended, scored by AI) and psychometric behavioral questions (multiple-choice, trait-mapped). Candidates take it as one seamless flow. Recruiters see knowledge scores and a personality profile side by side.
Two-Part Generation
15 questions generated in one Claude call: 10 open-ended PM knowledge (3 situational, 3 technical, 2 behavioral STAR, 2 problem-solving) + 5 psychometric situational-choice questions with 4 options each, mapped to personality traits.
Psychometric Profiling
5 situational-choice questions measure 5 personality traits: Leadership, Adaptability, Risk Tolerance, Collaboration, and Detail Orientation. Each option is mapped to trait scores (1-3). No right or wrong answers — the result is a behavioral profile, not a pass/fail.
Timed Assessment
45-minute time limit. Questions appear one at a time — text area for open-ended, radio buttons for psychometric. Forward-only (no going back). Psychometric questions require a selection before advancing. Answers saved automatically.
Two-Track Scoring
Open-ended questions scored by Claude in a single batch call (0-100 per question, feedback, key points). Psychometric questions scored locally using trait mappings — no Claude call needed. Results: PM Knowledge score + Personality Profile.
Recruiter Control
Recruiters can preview, edit, add, or remove questions (including psychometric options). They can regenerate the entire set, set a custom deadline date, or let it auto-assign when moving to screening.
Recruiter Results View
Two sections: PM Knowledge Score (overall %, per-question scores with AI feedback, key points hit/missed) and Personality Profile (5 trait bars with descriptions). Psychometric responses shown with the selected option highlighted.
Interview System
AI Voice & Human Video Interviews
Two interview types, both happening entirely on the platform.
Round 1: AI Voice Interview
The candidate speaks with an AI interviewer powered by OpenAI Realtime API through LiveKit WebRTC. The agent is enriched at call time with the candidate's CV, assessment scores, and match analysis — enabling it to probe weak areas and reference specific experience. The full transcript is captured and Claude analyses it across 5 dimensions.
Round 2: Human Video Interview
Recruiter and candidate join a browser-based video call. No Zoom, no Teams, no external tools. Scheduled from the pipeline or calendar with reschedule and cancel options. Candidates can join 30 minutes early; a 15-minute grace period applies after the scheduled time.
AI Interview Analysis Dimensions
Communication
Clarity, articulation, listening skills, ability to explain complex concepts.
Technical Depth
Depth of knowledge in PM methodologies, tools, and domain expertise.
Problem Solving
Ability to think critically, handle ambiguity, and propose structured solutions.
Cultural Fit
Alignment with team dynamics, adaptability, GCC/multicultural awareness.
Leadership
Demonstrated leadership experience, stakeholder management, team motivation.
Agent Context Enrichment
At the start of every AI voice interview, the agent fetches enriched context from the platform API. This includes the candidate's CV and work history, assessment scores with weak/strong areas, and match score dimensions. The agent uses this to ask targeted questions — probing weak assessment areas, referencing specific CV experience, and exploring low-scoring match dimensions. Scores are never revealed to the candidate.
Scheduling
Calendar & Notifications
Weekly Calendar
Teams-style weekly time grid showing interviews and assessment deadlines. Recruiters can schedule interviews by clicking empty time slots. Candidates see their upcoming events in a read-only view. Color-coded: blue (AI interview), purple (video), orange (assessment).
In-App Notifications
Notification bell in the top bar with badge count, polling every 30 seconds. Covers: interview reminders (15 min before), assessment assignments, scoring results, application status changes, and match notifications. Click to navigate, mark as read, or clear all.
Optimisation
Smart Pre-Filtering
Rule-based checks eliminate obvious mismatches before calling Claude, reducing API costs by 50-70%.
Experience Threshold
If a job requires X years and the candidate has less than 50% of that, the pair is skipped.
Salary Range Overlap
If the candidate's minimum exceeds 1.5x the job's maximum, or their maximum is below 0.5x the job's minimum, it's skipped.
Industry Match
If both sides specify industries and there's zero overlap, the pair is skipped. 'Other' is treated as a wildcard.
Skip Unchanged Pairs
If a match score already exists and was computed after both the candidate and job were last updated, it's not re-scored.
Architecture
System Design
Async Background Jobs
CV parsing, match scoring, assessment generation, assessment scoring, interview analysis, and notifications all run as BullMQ background jobs.
PostgreSQL + Prisma
All data lives in PostgreSQL via Prisma ORM. Match scores, assessment results, and interview analyses are stored with full dimension breakdowns.
Layered Architecture
Route handlers call services, services call repositories. AI modules are self-contained. Workers import from lib but never from app.
Security by Default
Bcrypt hashing, JWT with auto-refresh token rotation, rate limiting, account lockout, CAPTCHA on registration, and private blob storage.
Real-Time Voice AI
AI voice interviews use LiveKit WebRTC for audio transport and OpenAI Realtime API for speech-to-speech. The agent runs as a separate Node.js process.
Scheduling & Calendar
Teams-style weekly calendar view. Recruiters schedule from the calendar or pipeline. Candidates see upcoming events. 15-minute reminders via cron.
Deployment
Production Architecture
Vercel
Next.js frontend + API routes. Auto-deploys on git push. Serverless functions for all API endpoints.
Railway — Worker
BullMQ background worker. Handles CV parsing, match scoring, assessment generation/scoring, interview analysis, notifications.
Railway — Agent
LiveKit agent process. Connects to LiveKit Cloud, joins AI voice interview rooms, powered by OpenAI Realtime API.
Neon
PostgreSQL database. Serverless, auto-scaling, connection pooling via PgBouncer.
Upstash
Redis for BullMQ job queues. TLS-encrypted, serverless, auto-scaling.
LiveKit Cloud
WebRTC infrastructure for real-time audio/video. Handles room management, media routing, and agent dispatch.
Technology
Tech Stack
Frontend
- Next.js 16 (App Router)
- React 19
- TypeScript (strict)
- Tailwind CSS v4
- Zustand
- LiveKit Components React
Backend
- Next.js API Routes
- Prisma 6 ORM
- Zod v4 Validation
- JWT (jose) + Auto-Refresh
- BullMQ Workers
- LiveKit Server SDK
AI & Real-Time
- Claude (Anthropic) — Scoring, Parsing, Assessments, Analysis
- OpenAI Realtime API — Voice Interviews
- LiveKit — WebRTC Audio/Video
- LiveKit Agents Framework
Infrastructure
- Vercel (Next.js)
- Railway (Workers + Agent)
- Neon (PostgreSQL)
- Upstash (Redis)
- LiveKit Cloud
- Vercel Blob (Private Storage)
Security
Security & Compliance
Password Security
Bcrypt hashing with automatic account lockout after consecutive failed login attempts (30-minute cooldown).
Token Management
Short-lived JWT access tokens (15 min) with automatic refresh token rotation. Tokens are revokable on logout. Silent refresh on 401.
Rate Limiting
Per-endpoint configurable throttling on public endpoints including login, registration, and password reset.
Private Storage
Vercel Blob with private access mode. Profile pictures and CVs served via authenticated proxy endpoints — never exposed publicly.