Le marché des "auto-apply bots" est rempli de spam · LinkedIn Premium, services douteux qui envoient 500 candidatures aveugles par semaine. CitizOS Talent fait le contraire · volume + contrôle. 100 candidatures qualifiées par semaine, chacune validée par l'humain en 1 clic, lettre de motivation IA personnalisée par offre. Voici le pattern technique exact.
Le problème · le ratio quantité/qualité est inversé.
Quand on regarde le marché du recrutement, deux extrêmes ·
- Côté ultra-manuel · un candidat passe 30 min par offre · sourcing, lecture, adaptation CV, LM personnalisée, envoi. Résultat · 5-10 candidatures qualifiées par semaine.
- Côté ultra-auto · des bots "Easy Apply LinkedIn" envoient 500 candidatures aveugles avec un CV générique. Résultat · taux de réponse <1%, marque personnelle détruite, comptes LinkedIn bannis.
L'erreur commune est de penser qu'il faut choisir entre les deux. Ce n'est pas le cas. La technologie permet maintenant de combiner les deux propriétés · le volume du second, la qualité du premier. À une condition · garder l'humain dans la boucle de validation, mais hors de la boucle de production.
Le pattern · sourcing 4 sources, validation 1-clic, LM IA.
L'architecture Talent suit un flow strict ·
01
Sourcing automatique · 4 sources branchées
France Travail API officielle (OAuth2), HelloWork (JSON-LD scraping), Adzuna (API REST), LinkedIn (Playwright + cookie user). Cron quotidien 06:00 Paris.
02
Filtrage géographique strict
Mapping codes postaux + détection région. Si user demande "Île-de-France strict", on rejette automatiquement toute offre hors 75/77/78/91/92/93/94/95.
03
Scoring de match (0-100)
Heuristique simple V1 · +25 si métier ciblé exact dans le titre · +20 si zone matche · +15 si description riche · +10 si email recruteur direct.
04
Génération draft d'application
Insertion en DB avec status 'draft', score, channel inféré (brevo_email si email recruteur, external_link sinon). Pas d'envoi.
05
Génération LM IA personnalisée (DeepSeek)
Pour chaque draft sélectionné · prompt avec offre + CV master parsé + angle prioritaire → DeepSeek-chat → HTML A4 → PDF wkhtmltopdf.
06
Validation humaine 1-clic
Dashboard cards avec preview · checkbox sélection multi · bouton "Valider N candidatures". L'humain reste maître de la décision finale.
07
Envoi réel
brevo_email → email avec PJ CV+LM via Brevo API + BCC user. external_link → ouverture nouvel onglet + marquage 'sent' avec timestamp. Tracking dans application_events.
La clé du modèle · entre le sourcing (étape 1) et l'envoi (étape 7), il y a 6 étapes intermédiaires qui dégradent gracieusement la qualité. À chaque étape, on peut s'arrêter. C'est l'inverse d'un funnel · plus on avance, plus on est sûr de soi.
Pourquoi 4 sources · l'effet de diversification.
Une seule source = un seul risque. Si France Travail change son API, on est mort. Si LinkedIn bannit le compte, on est mort.
4 sources indépendantes · si une tombe, les 3 autres maintiennent le débit. C'est de la résilience opérationnelle, pas du marketing. Voici les 4 actuelles ·
- France Travail API officielle (OAuth2) · le plus stable, le plus gros volume sur FR, métadonnées riches (codes ROME, contrat, salaire, contact recruteur parfois exposé).
- Adzuna API (REST) · agrégateur multi-sources avec entreprises nommées et géo précise (avantage critique sur FT qui n'expose pas toujours l'entreprise).
- HelloWork (JSON-LD scraping) · données extrêmement propres via Schema.org JobPosting sur chaque page détail.
- LinkedIn (Playwright + cookie user) · pour Easy Apply et offres premium · plus fragile mais valeur ajoutée immense.
Indeed est techniquement bloqué (WAF maison + Cloudflare). En attente de proxies résidentiels (cf. /labs/).
Pourquoi LM IA personnalisée et pas template.
La différence entre une LM template ("J'ai été ravi de découvrir votre offre pour le poste de [POSTE] dans votre entreprise [ENTREPRISE]…") et une LM personnalisée par IA est colossale.
Concrètement, pour une offre "Veilleur-Livreur Orly chez Saveurs et Vie" envoyée à un éducateur spécialisé, voici ce que la LM IA produit ·
"Votre offre pour le poste de Veilleur-Livreur à Orly a retenu toute mon attention, car elle incarne une conception du service qui résonne profondément avec mon parcours professionnel. Au-delà de la simple livraison, c'est la dimension humaine et la mission de veille sociale auprès de personnes en situation de fragilité qui m'ont immédiatement interpellé. Fort de plusieurs années d'expérience dans l'accompagnement de publics vulnérables…"
Notez les éléments · "veille sociale", "personnes en situation de fragilité", "publics vulnérables". Aucun de ces termes n'est dans l'offre Saveurs et Vie. L'IA les a inférés en croisant la description du poste avec le profil du candidat (éducateur spé). C'est ça qui fait passer une LM de "générique" à "spécifique".
Côté technique · DeepSeek-chat avec system prompt strict (4 paragraphes, 280-380 mots, ton sobre, pas de listes, JAMAIS mentionner "IA"). Temperature 0.45 (assez créatif sans halluciner). Coût · ~0.001€ par LM. Latence · ~10s.
Pourquoi validation humaine 1-clic et pas full-auto.
L'argument est philosophique mais aussi opérationnel ·
- Légal · envoyer une candidature à votre nom sans votre validation explicite = problème juridique (RGPD, droit moral sur votre image).
- Marque · votre nom est en jeu. Une candidature envoyée à un mauvais recruteur ou avec une erreur factuelle endommage votre marque personnelle.
- Qualité · l'IA reste sujette aux erreurs · mauvaise interprétation d'une offre vague, info incorrecte glissée dans la LM. Le coup d'œil humain final est gratuit et infaillible.
Le compromis · l'humain valide en batch, pas une par une. Sur le dashboard, vous voyez 30 drafts proposés avec score + LM générée + preview. Vous sélectionnez les 10-15 qui méritent l'envoi (5-10 min), vous cliquez "Valider 12 candidatures". 12 emails partent dans la minute.
Volume + contrôle. Jamais spam automatique aveugle.
Les métriques réelles · transparence.
État au 26 mai 2026, sur le premier user de Talent (le fondateur lui-même comme pilote) ·
- ~250 offres collectées automatiquement sur 7 jours (4 sources confondues, IDF strict, métiers médico-social).
- ~120 drafts générés avec score >40 sur 100.
- ~80 LM IA générées en bulk (10-15s chacune).
- ~50 candidatures envoyées après validation humaine en lot.
- Sourcing daemon tourne chaque jour 06:00, RandomizedDelaySec 0-600s.
Le ratio "100 candidatures par semaine" est volontairement le plafond. Au-delà, c'est ingérable pour le candidat (suivi des réponses, entretiens). En-deçà, c'est sous-utilisé. 100 est l'optimum empirique observé.
Ce qui reste à faire · roadmap visible.
Trois chantiers identifiés et publics ·
- LinkedIn Easy Apply automatisé · backend déployé, en attente de cookie li_at user pour validation E2E.
- Indeed via proxies résidentiels · pour ajouter une 5e source à fort volume. Coût mensuel à arbitrer.
- Sites métier ESS (emploi-medico-social, sociodoo) · via worker Mac local pour contourner le géoblocage VPS.
Le changelog liste les releases hebdomadaires. Labs publie les explorations en cours sans promesse de release. Pas de roadmap fiction.
Conclusion · le pattern transposable.
La leçon générale de Talent dépasse le recrutement. Le pattern "multi-sources + scoring + draft IA + validation humaine + envoi automatique" est applicable à d'autres marchés où le volume est important mais la qualité critique ·
- Legal · recours juridiques → multi-sources de modèles + LM courrier IA + validation humaine + envoi tribunal.
- Commerce · acquisition prospects → multi-sources de leads + scoring + draft cold email IA + validation humaine + envoi séquence.
- Care · transmissions médico-sociales → multi-sources d'événements + draft compte-rendu IA + validation éducateur + intégration dossier.
C'est la raison principale d'avoir un OS au lieu de 7 startups · le pattern de Talent devient le squelette des 5 autres verticales.