HireLoom AI is a recruiting platform built around two user journeys: candidates looking for better job matches and recruiters managing job posts, applicants, and scoring workflows. The product combines a React frontend with a NestJS backend, Prisma, PostgreSQL, BullMQ, S3-backed resume storage, and Gemini-powered candidate-job analysis.
The Matching Problem
Recruiting workflows often collect useful data without turning it into timely decisions. Candidate skills, resume content, job requirements, application status, and recruiter review all live in the system, but they only create value when the platform can connect them quickly and explain the match.
HireLoom AI needed to make that loop more structured. Candidates should be able to search with intent, see relevant opportunities as analysis progresses, and track applications. Recruiters should be able to publish jobs, review applicants, and receive scoring signals without manually comparing every resume against every role.
What I Built
- Built role-based product flows for candidates and recruiters, including protected routes, onboarding, profile management, job browsing, recruiter job dashboards, applicant review, and application tracking.
- Implemented candidate profiles with skills, experience, remote preference, social links, and resume upload.
- Built S3-backed resume storage with signed URL access and PDF text extraction for downstream AI analysis.
- Implemented AI candidate-job scoring with LangChain and Gemini, returning match scores, reasoning, strengths, weaknesses, and recommendations.
- Added fallback scoring based on experience and skill overlap so job search and scoring workflows can still return useful results when AI calls fail.
- Built streaming AI job search over server-sent events, processing jobs in batches and sending progress updates plus incremental results to the client.
- Implemented asynchronous application scoring with BullMQ queues, splitting job-level scoring into per-application tasks and updating application notes and job scoring status transactionally.
- Modeled core recruiting data in Prisma across users, companies, jobs, candidate profiles, resumes, and applications.
Durable Shape
The strongest architectural decision was separating the recruiting workflow from the AI workflow. Job posting, application tracking, profile management, and resume storage remain normal product systems with clear database state. AI scoring sits on top as an analysis layer that can be queued, retried, streamed, or replaced without rewriting the core recruiting model.
That separation also made the user experience more resilient. Candidates can still browse and apply through conventional filters. Recruiters can still manage jobs and applicants. AI improves search and prioritization, but the platform does not collapse when a model call is slow or unavailable.
The next useful step would be tighter observability around scoring quality: comparing AI recommendations with recruiter decisions, tracking score drift by role type, and making the review loop more measurable over time.