Retour aux réalisations
Job Finder
App web · centre de commande de recherche d'emploi · Un sprint de 15 jours pour décrocher un poste, avec un CRM construit autour.
Récupère des offres en direct sur cinq sites d'emploi, note chacune de 0 à 100 selon votre profil, suit chaque candidature sur un pipeline kanban avec un objectif quotidien qui s'adapte à votre pipeline ouvert, et rédige des lettres de motivation par IA dans la langue de l'offre.
Contexte
Une recherche d'emploi est un problème d'entonnoir : trop de sites, trop peu de suivi. Job Finder fusionne les sites, classe les offres selon ce qui compte (métiers visés, compétences, lieu ou télétravail, plancher de salaire) et transforme la recherche en un pipeline avec une échéance et un objectif quotidien.
Comment ça marche
- Cinq sources, une seule table: Chaque site a son propre adaptateur (Remotive, Arbeitnow, RemoteOK, Jobicy, plus France Travail). Les offres sont fusionnées dans une seule table, dédoublonnées, et rafraîchies à intervalle régulier.
- Un score d'adéquation que l'on peut inspecter: Chaque offre reçoit un score de 0 à 100 selon le profil, et l'app montre pourquoi. Le classement porte sur tout l'ensemble des offres, pas seulement la dernière page, avec des filtres sur le salaire et le type de contrat.
- Un pipeline, pas un tableur: Sept étapes, de « découverte » à « offre » ou « refus ». Chaque passage à « candidature envoyée » alimente un compteur quotidien, et les candidatures peuvent être traitées en lot, supprimées et relancées.
- Un tableau de bord de sprint: Un compte à rebours jusqu'à l'échéance, un objectif quotidien de candidatures qui suit le pipeline ouvert (le plus grand entre un minimum et le pipeline divisé par les jours restants), et un entonnoir avec taux de réponse.
- Une IA qui écrit dans la langue de l'offre: Les lettres de motivation sont rédigées à partir de l'offre et respectent sa langue, et un assistant par offre répond aux questions complémentaires. Aucune candidature n'est créée tant que la lettre n'a pas réellement été générée.
Ce que j'ai construit
- Agrégation en direct de cinq sites d'emploi avec dédoublonnage et synchronisation planifiée.
- Notation d'adéquation de 0 à 100 avec tri, filtres de salaire et de contrat, et raisonnement visible.
- Un pipeline kanban, des candidatures en lot, des relances et un suivi des recruteurs et recommandations.
- Le détail complet de l'offre dans l'app, avec un texte propre issu d'un HTML brouillon et un bouton de candidature clair.
- Une page mémo pour les questions que chaque formulaire de candidature répète.
- Une interface en français, avec des lettres rédigées en français pour les offres françaises.
Ingénierie et qualité
- Typé de bout en bout : un schéma Drizzle, une validation Zod sur les routes d'API et des types partagés.
- Nettoyage de texte robuste, y compris les entités HTML encodées deux fois qui cassaient les descriptions d'offres.
- Quand la passerelle d'IA a exigé une carte enregistrée, le modèle a été appelé directement, et son nom a été changé deux fois quand des modèles gratuits ont été retirés ou saturés.
- Honnête sur ses limites : mono-utilisateur, pas encore d'historique de migrations, et le README liste la suite.
Chronologie
- 29 Sep 2026: Premier commit, agrégation, notation, CRM, tableau de bord, lettres IA, interface française et page mémo, le tout en une journée.
- 30 Sep 2026: Assistant IA par offre, dates de publication et libellés de pertinence, et refonte visuelle complète.
En chiffres
- Commits en deux jours: 24
- Sources d'offres: 5
- Étapes du pipeline: 7
Next.js 16 · TypeScript · Tailwind CSS v4 · Drizzle ORM · Neon Postgres · TanStack Query · Vercel AI SDK + Google Gemini · Vercel Cron