Étude de cas
Novera MegasearchUn moteur de sourcing IT candidate-driven : recherche fine, file de contact, et profils qui s’enrichissent eux-mêmes.
La brique de sourcing de ma plateforme Novera Talent : un moteur de recherche de profils à deux étages, alimenté par les candidats eux-mêmes via la vitrine novera-talent.com, qui enrichit automatiquement les profils et les rend requêtables finement par le recruteur.
- Rôle
- Design · Produit · Développement · Hébergement
- De A à Z, en solo
- Année
- 2026
- Type
- Moteur de sourcing IT candidate-driven · brique de la plateforme Novera Talent
Séniorité
Top skills
Le défi
Le sourcing IT à la main — LinkedIn, tableurs et boîte mail — ne passe pas l’échelle. Pas de recherche fine multi-critères, pas de file de contact persistante, aucune réutilisation des typologies de recherche, et aucune capture structurée des candidats qui se manifestent spontanément via la vitrine novera-talent.com.
L’objectif : un moteur où le candidat est le point de départ. Il se manifeste, on l’enrichit automatiquement, et il devient un profil requêtable finement — pendant que les recherches qui marchent se sauvegardent et se rejouent.
La solution : un moteur de sourcing à deux étages
Un cycle « candidate-driven » de bout en bout : le candidat se manifeste, s’enrichit, puis devient requêtable — du premier signal jusqu’au handoff de contact.
Recherche de sourcing
Recherche à deux étages : full-text PostgreSQL sur titre, skills et expériences + similarité trigramme pour la tolérance aux fautes, avec ranking combiné et facettes.
Recherches sauvegardées
Les typologies de recherche qui marchent sont sauvegardées et rejouables — plus besoin de reconstruire les critères à chaque fois.
Ingestion candidate-driven
Capture des profils depuis la vitrine, LinkedIn ou l’extension, en statut PENDING_CANDIDATE en attendant l’enrichissement.
Onboarding candidat
E-mail magic link, wizard d’enrichissement en 5 étapes (profil PARTIAL puis COMPLETE) et désinscription.
Enrichissement automatique
Trois providers gratuits — GitHub, site perso, page entreprise — bâtis sur un socle commun EnrichmentFact.
Parsing de CV par LLM
Extraction structurée du CV via l’API Anthropic, en job asynchrone exécuté hors du hot-path de recherche.
File de contact & export
File de contact persistée côté navigateur (Zustand + localStorage) et export de la shortlist en CSV.
Sourcing piloté par une offre
Campagnes → shortlist → handoff vers Novera Signal / Unipile pour le contact LinkedIn.
Sous le capot
La recherche s’appuie sur deux capacités natives de PostgreSQL — full-text et trigramme — plutôt que sur un moteur externe. L’enrichissement et le parsing IA tournent hors du chemin critique de recherche, en jobs asynchrones, pour garder la requête rapide.
Recherche à deux étages
Full-text PostgreSQL (tsvector) sur titre, skills et expériences, combiné à la similarité trigramme (pg_trgm) pour le fuzzy et la tolérance aux fautes. Ranking combiné FTS + trigramme, facettes (compteurs de séniorité, top skills) et pagination clampée côté serveur à 100.
Cycle candidate-driven
Ingestion (showcase / LinkedIn / extension) en PENDING_CANDIDATE → email magic link → wizard d’enrichissement en 5 étapes → profil PARTIAL puis COMPLETE → requêtable par le recruteur, les profils non enrichis étant masqués par défaut.
Enrichissement multi-providers
Trois providers gratuits — GitHub, site perso, page entreprise — bâtis sur un socle commun EnrichmentFact. Un run a produit 5 268 faits et ~581 liens net-new sur la base.
IA hors hot-path
Le parsing de CV par LLM (Anthropic) tourne en job asynchrone, en dehors du chemin critique de recherche — la requête reste rapide, l’extraction se fait en arrière-plan.
File de contact persistante
La file de contact est persistée côté navigateur (Zustand + localStorage), de sorte que la shortlist en cours survit entre les sessions ; export CSV pour le handoff.
Base & couverture de tests
Base d’environ 9 600 profils LinkedIn en PENDING_CANDIDATE, dont ~726 enrichis via GitHub, ~290 via site perso et ~65 entreprises. 366 tests unitaires backend + 97/97 frontend (Vitest + Playwright).
Mon rôle : tout, en solo
De la vision à l’hébergement, j’ai porté Novera Megasearch seul : design, produit, développement back et front, et exploitation. C’est la brique de sourcing qui alimente ma propre plateforme de recrutement — donc le produit dont j’assume chaque arbitrage.
Produit & cadrage (PO)
Cycle candidate-driven, frontières de plateforme, roadmap.
Design & expérience
Interface de sourcing, wizard d’onboarding candidat, facettes.
Développement full-stack
Backend Fastify/Prisma, recherche PostgreSQL, frontend Next.js, tests.
Hébergement & données
Exploitation, runs d’enrichissement, intégrité de la base de profils.
Construire mon propre moteur de sourcing, c’est comprendre de l’intérieur la donnée candidat et le métier du recrutement tech. Modéliser la recherche, dessiner le parcours candidat, écrire le code et l’exploiter : c’est ce regard de bout en bout que j’apporte quand j’évalue et recrute des profils tech.