Projet personnel
JobRadar
Une veille d’offres d’emploi auto-hébergée. Elle collecte plusieurs sources, retire les doublons, note chaque offre selon mon profil et suit mes candidatures jusqu’à la réponse.
- Période
- 2026
- Rôle
- Seul
- Technologies
Le problème
Chercher un emploi, c’est relire chaque jour les mêmes annonces sur plusieurs sites, souvent publiées en double. JobRadar interroge les API officielles de France Travail, Adzuna et Jooble selon un calendrier, et ne garde qu’une fois une annonce publiée à plusieurs endroits. Pour les reconnaître, il compare une empreinte de l’entreprise et de l’intitulé, normalisés : accents, mentions H/F, forme juridique.
Mes candidatures se suivent ensuite dans un tableau par étapes, avec notes, dates et rappels de relance.
Un LLM, mais pas pour tout
Envoyer chaque offre à un modèle de langage coûterait cher et irait vite au bout des quotas gratuits. La notation se fait donc en deux temps. D’abord des mots-clés pondérés, gratuits et instantanés : le titre compte double, et une annonce qui exige trop d’années d’expérience est pénalisée. Ensuite, seules les offres prometteuses partent au modèle, par lots de dix, qui renvoie une note, un résumé, des points forts et des points faibles.
Avec un quota gratuit de vingt requêtes par jour, cela couvre deux cents offres. Quand le quota est épuisé, tout s’arrête proprement, et les offres restantes sont notées au passage suivant.
Le client parle le format d’API d’OpenAI : Gemini, OpenRouter ou OpenAI s’échangent par configuration, comme sur Tima. Les réponses sont validées et bornées, et une saturation du fournisseur déclenche des relances espacées.
Une source en panne n’arrête pas les autres
Chaque source implémente la même interface. Une source sans clé est simplement désactivée, une source en erreur n’empêche jamais les autres de tourner. Les appels aux API externes sont testés avec des réponses simulées, et la base avec un vrai PostgreSQL lancé par Testcontainers.
Les meilleures offres déclenchent une notification ntfy sur mon téléphone, avec le lien direct. C’est le même mécanisme qui me prévient quand quelqu’un écrit depuis ce site.