AI-generated job descriptions
Paste a few bullet points; get a polished JD with role-specific skills, responsibilities, and qualifications.
A cloud-based AI recruitment platform that automates the hiring pipeline — from AI-generated job descriptions to live, evaluated AI interviews. My final year project at NUST SEECS.
01 — Problem
The first 80% of hiring is structural: writing a JD, ranking resumes, scheduling phone screens, normalizing notes. None of it is judgment work — and yet it consumes the recruiters and engineers who'd be better used on the final 20% where the actual hire/no-hire decision lives.
TalentScout collapses the structural layer. JDs are generated from a brief, resumes are ranked by semantic match, and the first technical pass is an AI-conducted interview with a defensible rubric. By the time a human engineer joins the loop, there's a transcript, a score breakdown, and a shortlist worth their attention.
02 — The pipeline
Recruiter defines a role. Resumes get parsed and ranked. Top candidates take an AI-conducted interview. The system writes back a structured evaluation. Recruiter reviews the shortlist with the receipts already attached.
Paste a few bullet points; get a polished JD with role-specific skills, responsibilities, and qualifications.
Vector-based similarity between parsed resume features and the JD. Candidates are ranked, not just listed.
Browser-native WebRTC video, real-time transcription, dynamic question generation, and live scoring against the role's rubric.
Sandboxed editor + test-runner for technical roles. Auto-graded against hidden tests with per-case feedback.
03 — AI interviewer
Browser-native WebRTC, no install. Mic + cam permission, then a quick warm-up question.
Speech → STT → LLM evaluation → LLM next-question → TTS. Streamed, so the next question feels conversational.
Per-criterion reasoning persisted alongside the transcript. Recruiter sees the score and the why.
04 — Decisions
Early-stage technical interviews are a scheduling tax. Recruiters either skip them and over-trust resumes, or burn engineer hours on candidates who won't progress. An AI interview standardizes the first pass and lets human time concentrate where it actually matters.
Decoupled React + Express let me iterate on the AI service independently of the recruiter dashboard, and let the WebRTC peer signaling stay close to the API layer. Mongo's flexibility handled the variable shape of interview transcripts and evaluation rubrics without schema gymnastics.
No installs, no plugins. The candidate joins from a link in any modern browser. WebRTC handles the media pipeline; the server only sees signaling traffic. Audio is captured, transcribed, fed to the LLM, and the next question is generated in roughly conversational time.
A static question bank stops working the moment candidates share answers. Generating each question from the role description + previous answers means no two interviews are identical, and the model can dig into a strong claim or a vague one in real time.
05 — Tradeoffs
Candidate speaks → STT → LLM evaluation → LLM next-question → TTS back is a chain of slow steps. Cut perceived latency by streaming the model's response and starting TTS on the first sentence, and by running STT and evaluation in parallel rather than series.
An AI score is suspicious unless you can show your work. Every evaluation persists the rubric used, the candidate's transcript, and the model's per-criterion reasoning. Recruiters see the breakdown — not just the number — so an objection has somewhere to land.
Technical roles need code, not just talk. Built a sandboxed code-editor with auto-grading on a hidden test suite. The candidate sees pass/fail per case; the recruiter sees runtime, memory, and approach summary. Same evaluation rubric applies — score it, explain it, store it.
Next
Happy to walk through the code, the deployment, or any of these decisions in more depth.