En ligne : https://cvcrible.vercel.app
Agrégateur d'offres d'emploi (France Travail + Adzuna + Meteojob) avec analyse de CV, classement des offres, brouillons de lettres de motivation et adaptation de CV à une offre, le tout via l'API DeepSeek (la lecture du CV en PDF reste chez Claude). Front en HTML/CSS/JS sans framework, back en fonctions serverless Vercel.
- Sur vercel.com : Add New → Project → Import Git Repository, choisir ce dépôt.
- Laisser les réglages par défaut : Vercel détecte
/apiet sert la racine en statique. Ni build command ni output directory à renseigner. - Ajouter les 5 variables d'environnement ci-dessous (Settings → Environment Variables), sur les trois environnements (Production, Preview, Development).
- Déployer. Chaque
git pushsurmainredéploie automatiquement.
Aucune clé ne figure dans le code. Les cinq premières sont obligatoires côté serveur :
| Variable | Où l'obtenir | Sert à |
|---|---|---|
ANTHROPIC_API_KEY |
console.anthropic.com | Lecture du CV en PDF (toujours), et tout le reste si IA_PROVIDER=anthropic |
DEEPSEEK_API_KEY |
platform.deepseek.com | Classement, lettres, adaptation — fournisseur par défaut |
FT_CLIENT_ID |
francetravail.io | Offres France Travail |
FT_CLIENT_SECRET |
francetravail.io | Offres France Travail |
ADZUNA_APP_ID |
developer.adzuna.com | Offres Adzuna |
ADZUNA_APP_KEY |
developer.adzuna.com | Offres Adzuna |
Meteojob est interrogé sans clé.
Choix du fournisseur d'IA — variable facultative IA_PROVIDER :
| Valeur | Effet |
|---|---|
absente, ou deepseek |
DeepSeek V4 Flash (tri, analyse) et V4 Pro (réécriture du CV) — essai en cours |
anthropic |
Retour à Claude Haiku / Sonnet, comme avant |
La lecture du CV en PDF (/api/profile) reste sur Claude dans les deux cas : DeepSeek ne sait
pas lire un PDF envoyé en pièce jointe. ANTHROPIC_API_KEY reste donc nécessaire.
Les routes /api ont besoin d'un runtime serverless : un simple serveur de fichiers
statiques ne suffit pas, l'interface se chargera mais tous les appels API renverront 404.
npm i -g vercel
vercel devvercel dev récupère les variables d'environnement du projet lié et exécute les fonctions
localement sur http://localhost:3000.
index.html interface
app.js état, traductions FR/EN, rendu, enchaînement des appels
styles.css thème « rapport d'analyse » (fond graphite, rampe de mesure unique)
api/
_claude.js helpers partagés (appel Anthropic ou DeepSeek, parsing JSON, langue)
search.js agrégation France Travail + Adzuna + Meteojob
profile.js CV PDF -> profil + expériences structurées (Claude Haiku, toujours)
match.js notation des offres selon le profil (rapide)
letter.js brouillon de lettre de motivation (rapide)
tailor.js adaptation du CV à une offre, en 3 étapes (rapide + soigné)
Le bouton « Adapter mon CV » enchaîne trois appels distincts, avec affichage progressif :
- Regard du recruteur — le modèle joue un recruteur senior de l'entreprise de l'offre et renvoie les 5 mots-clés manquants et les 3 signaux d'alerte repérables en 10 secondes.
- Réécriture XYZ — les expériences sont réécrites selon la formule de Google (« Accompli X, mesuré par Y, en faisant Z »), en intégrant les mots-clés et en supprimant les signaux d'alerte. C'est l'étape confiée au modèle le plus soigné, là où la qualité rédactionnelle compte.
- Filtre ATS — le modèle joue un ATS et un recruteur qui lit 200 CV d'affilée : score, verdict, passages qui seraient ignorés, réécritures qui accrochent.
Le résultat s'affiche en comparatif avant / après. Le modèle a interdiction d'inventer un
fait absent du CV : les chiffres qu'il ne connaît pas apparaissent comme [à chiffrer],
à remplir soi-même.
Un résultat est mis en cache par offre : re-cliquer ne relance aucun appel. Coût indicatif : environ 0,04 € par adaptation.
Le PDF du CV n'est stocké nulle part. Il est transmis une seule fois à l'API Claude (jamais à DeepSeek) pour en extraire un profil et les expériences, puis oublié côté serveur. Le profil extrait reste uniquement dans le navigateur de l'utilisateur (localStorage) et s'efface via « Oublier mon CV ».