HRTech
An applicant tracking platform with explainable candidate matching
A recruitment platform where structured CV parsing and explainable matching cut screening time without removing recruiter judgement.
- Next.js
- TypeScript
- Node.js
- PostgreSQL
- pgvector
- Redis
- AWS
Sample case study — illustrative, not a delivered client engagement
Northwind Talent is an invented company used to demonstrate our case-study format and our approach to this kind of work. The technical detail reflects how we would genuinely deliver it; the client name is fictional and the figures under Results are design targets rather than measured outcomes.
Client
Northwind Talent
Illustrative HRTech scale-up, 40 staff, mid-market recruitment
- Industry
- HRTech
- Year
- 2025
The business challenge
The team ran hiring pipelines for mid-market employers through a mix of a generic CRM, shared spreadsheets and email. A single role could attract several hundred applications, and recruiters were spending most of their day reading CVs to produce a shortlist. Screening quality varied by recruiter and by how late in the day an application arrived, and there was no defensible record of why one candidate progressed and another did not.
Objectives
- Replace spreadsheet-based pipeline tracking with a single candidate record
- Reduce the time between application and first recruiter decision
- Make shortlisting consistent and reviewable across the team
- Keep a human decision at every point that affects a candidate
- Support GDPR obligations for consent, retention and deletion
Discovery and strategy
What we did before writing code
- Shadowed four recruiters through a full screening cycle and measured handling time per application
- Analysed a year of historical placements to understand which signals actually predicted a successful hire
- Mapped every place candidate data was stored, including personal drives and email attachments
- Ran a workshop on automated decision-making risk with the client’s legal adviser
- Agreed that the system would rank and explain, never reject automatically
Solution
What we built
Unified candidate record
One record per candidate holding applications, documents, communications, interview feedback and consent state, replacing four disconnected sources.
Structured CV parsing
Documents are parsed into normalised skills, roles, durations and education, with per-field confidence. Anything below threshold is flagged for a recruiter to confirm rather than silently accepted.
Explainable matching
Candidates are ranked against a role profile using semantic similarity over structured attributes. Every score shows the specific evidence behind it, and recruiters can adjust weightings per role.
Structured scorecards
Interview feedback is captured against defined criteria rather than free text, making comparison across candidates and interviewers meaningful.
Retention automation
Consent state and retention periods are enforced by scheduled jobs, with automated candidate notification and verified deletion.
Recruiter analytics
Funnel conversion by stage, source and role, so the team can see where pipelines stall rather than guessing.
Architecture
How it fits together
Platform architecture
A conventional web application with a separate document-processing pipeline, so parsing load never affects interactive performance.
- Web applicationNext.js App Router, server-rendered recruiter workspace
- Application APINode.js service with role-based access control
- Document pipelineQueued parsing and extraction with retry and dead-letter handling
- Search and matchingPostgreSQL with pgvector for structured and semantic retrieval
- Consent and retentionScheduled enforcement jobs with verified deletion
- AnalyticsEvent stream feeding funnel and source reporting
Design approach
Decisions in the interface
- Designed the recruiter workspace around the screening queue, since that is where most of the working day is spent
- Every match score is expandable to show the evidence behind it, so recruiters can verify rather than trust
- Bulk actions kept deliberately limited to prevent accidental mass rejection
- Candidate-facing pages built to WCAG 2.2 AA and tested on low-end mobile devices
- Consent and data-use language written with the client’s legal adviser rather than borrowed from a template
Development process
How the work ran
- Two-week cycles with a working environment reviewed by recruiters every Friday
- An evaluation set of 400 historical CVs with recruiter-verified extractions, used to score every parsing change
- Matching quality measured against historical placement outcomes rather than perceived relevance
- Playwright coverage of the screening, interview and offer journeys
- Load testing against a synthetic dataset representing three years of application volume
Technology stack
What it runs on
- Next.js
- TypeScript
- Node.js
- PostgreSQL
- pgvector
- Redis
- AWS
Challenges resolved
What went wrong, and what we did
Every project has these. A case study that omits them is a brochure.
Parsing quality across inconsistent CV formats
Early extraction struggled with multi-column and scanned CVs. Adding a layout-aware pre-processing step and routing scanned documents through OCR before extraction raised field-level accuracy substantially on the evaluation set.
Avoiding automated adverse decisions
Ranking risked becoming a de facto filter. The interface was changed so low-ranked candidates remain visible and require an explicit recruiter action, with the reason recorded.
Deletion across every store
Candidate data existed in the database, object storage, the search index and analytics. A single deletion orchestrator now handles all four and produces a verification record.
Results
Objectives and design targets
Because this is a sample case study, these are the objectives and design targets agreed in scope — not measured business results.
Time to first decision
Target: same day
Illustrative target agreed during discovery, not a measured outcome
Screening consistency
Structured scorecards on 100% of interviews
Design target for the platform
Data sources consolidated
4 systems into 1 record
Scope defined during discovery
Client feedback
In their words
Placeholder quote
This quote is sample content shown to demonstrate the layout. It is not attributable to a real person or organisation and will be replaced only with a genuine, approved testimonial.
“Sample content for design demonstration. This quote is illustrative and is not attributable to a real client.”
Sample Client ContactHead of Talent Operations (illustrative)
Related services
The practices behind this work
AI & Automation
Applied AI engineering — assistants, agents, document workflows and automation — built on your data with evaluation and guardrails from day one.
Explore AI & AutomationProduct Engineering
SaaS platforms, custom software and MVPs engineered for multi-tenancy, billing, security and the release cadence a growing product needs.
Explore Product Engineering
More work
Other case studies
- FinTechSample content
Multi-tenant billing and entitlements for a growing SaaS platform
Retrofitting organisations, entitlements and usage-based billing into a product originally built for individual users.
- Next.js
- TypeScript
- Node.js
- PostgreSQL
- LogisticsSample content
Modernizing a logistics portal without pausing operations
Incremental migration of a business-critical customer portal and driver workflow using the strangler pattern, with no cutover event.
- Next.js
- TypeScript
- Node.js
- PostgreSQL
- HealthcareSample content
A patient portal that clinicians actually adopted
Placeholder case study. Appointments, results and secure messaging delivered against an immovable EHR, designed around clinician workload rather than around the feature list.
- Next.js
- TypeScript
- Node.js
- PostgreSQL
- E-commerceSample content
Replatforming a storefront without losing a peak season
Placeholder case study. A headless storefront migrated page type by page type, with checkout instrumented before anything was redesigned.
- Next.js
- TypeScript
- Shopify Hydrogen
- Algolia
- EdTechSample content
An assessment platform that holds up on results day
Placeholder case study. Timed assessment delivery engineered for concentrated load, with integrity controls and accessibility treated as requirements rather than settings.
- Next.js
- TypeScript
- Node.js
- PostgreSQL
Similar situation?
Start a project like this one
Tell us where you are. We will tell you how we would approach it and what we would want to understand first.
Prefer email? contact@xalicon.co