Skip to main content
Werin Group

Werin Sourcing — AI-Augmented Recruitment Platform

An internal platform augmenting Werin Group's ATS with AI-driven CV extraction and job-to-candidate matching.

Technical lead (team project)

Angular Node.js Express MySQL Gemini AI Groq
5,617
CVs used for training
0.795
F1 score (test set)
9
Production bugs fixed

The challenge

Werin Group, a Moroccan recruitment firm, runs its sourcing through the BoondManager ATS, but two tasks stayed slow and unreliable when done by hand: classifying each CV by specialty domain and computing a candidate's real years of experience, then, for every open position, quickly surfacing the right candidates from a pool of several thousand CVs. Saad had to design an internal tool that could make this sourcing more reliable without replacing Boond or disrupting recruiters' habits, while working within the real constraints of shared hosting with no root or SSH access.

The solution

Under Saad's technical leadership, a team built Werin Sourcing, a platform made of several independent Node.js/Express services (a Boond gateway, a CV extractor, a sourcing engine) plus an Angular 19 frontend. The part that's operational today covers:

  • automatic extraction of specialty domain (a fine-tuned classifier) and years of experience (a deterministic engine) from the raw CV text already stored in Boond, written back after review
  • a background "bootstrap" job to recompute these fields across the entire existing candidate pool, with pause/resume, cost tracking, and an admin review screen before anything is written back
  • for each open position in Boond, a hard filter by domain/experience followed by keyword-relevance ranking, complemented by an AI-generated criteria grid extracted from the free-text job description

The product's later stages — semantic embedding search, outreach automation, candidate-dossier generation — are documented on the roadmap but not yet built.

The results

The domain classifier was trained on 5,617 real CVs exported from Boond (split into training, validation and test sets), reaching a 0.795 micro-average F1 score on the held-out test set with roughly 136ms inference time per CV. The experience-extraction engine processes 3,254 CVs in 19.7 seconds and was validated at an exact 300-out-of-300 match against a Python reference implementation — comparing it against Boond's own legacy experience field was judged inconclusive, since that field itself turned out to be inconsistent, an honest finding rather than a polished one. The platform is deployed on real shared hosting under Werin Group's own domain, though confirmed day-to-day use by recruiters is not yet established.

Methodology and project management

A dated code-and-spec audit directly contradicted the project's own internal tracker, which claimed 95% completion on phase one: the audit found that a module marked "done" actually meant "coded in isolation," not "wired together and working end-to-end," and catalogued roughly ten concrete bugs breaking the pipeline. Rather than ignore that finding, the team documented and fixed it. The real deployment to shared hosting produced its own incident report detailing 9 concrete production bugs (dependency conflicts, schema mismatches, double URL-prefixing, an authentication bypass), all fixed and documented — a discipline of systematic verification rather than a silent go-live.

Technical architecture and performance

Computing years of experience originally relied on a local LLM (Ollama, Qwen2.5-3B), abandoned after repeated failures under load and clearly identified reasoning errors (a missing end date interpreted as "today," adding phantom years; internships counted as work experience). It was replaced with a deterministic date-parsing engine, hundreds of times faster and fully reproducible. On the classification side, rather than merging similar categories, the platform lets a CV carry multiple domain labels at once, and deliberately silences low-confidence classes into a manual review queue instead of guessing. The target architecture called for Redis, Qdrant and local VPS inference; the real constraints of shared hosting led the team to explicitly drop them for the version currently deployed.

AI-Augmented Delivery Enablement

Common questions about this kind of engagement

Have a similar project?

Get in touch to discuss it.

Chat on WhatsApp