TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
Teste ton CV et ta lettre de motivation face à une fiche de poste, comme un logiciel de recrutement (ATS). Gratuit, et tout reste dans ton navigateur.
Translation pending
ProductivityJavaScript · CSSGitHub @Hermes-bitOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Teste ton CV et ta lettre de motivation face à une fiche de poste, comme un ATS — 100 % dans le navigateur
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Le messager de ta candidature.
Teste ton CV et ta lettre de motivation face à une fiche de poste, comme le ferait un logiciel de recrutement (ATS), avant de les envoyer.
🔗 Démo en ligne : https://hermes-bit.github.io/ats-tester/
La plupart des entreprises trient les candidatures avec un ATS (Applicant Tracking System). Ce logiciel lit le texte du CV, cherche les mots-clés de l'offre et écarte les candidatures qui ne correspondent pas, parfois avant qu'un recruteur les voie. Cette application simule ce filtre pour t'aider à corriger tes documents à temps.
Import de la fiche de poste : texte collé, PDF, DOCX, TXT, Markdown, HTML ou RTF.
Import du CV et de la lettre : PDF, DOCX, TXT…, ou texte collé.
Analyse des mots-clés : compétences, logiciels, formats de données, méthodes et savoir-être repérés dans l'offre, puis recherchés dans le CV et la lettre. La recherche ignore les accents, les majuscules et les pluriels, et reconnaît les synonymes (ex. FME Server = FME Flow, SIG = GIS).
Distinction obligatoire / « un plus » : les compétences marquées « est un plus » ou « serait appréciée » pèsent moins dans le score.
Vérifications ATS : texte lisible (PDF scanné ?), coordonnées, rubriques standards, intitulé du poste, longueur, dates, tableaux et images, ligatures typographiques (« Shapefile » lu « Shape fi le »), lettres isolées.
Vérifications de la lettre : nom de l'entreprise, intitulé du poste, longueur, formule d'appel, formule de politesse, objet.
Lecture structurée du CV, comme un vrai ATS : nom, e-mail validé, téléphone au format international (E.164), ville, expériences (intitulé, entreprise, dates, durée en mois calculée, poste actuel), formations (niveau normalisé Bac+2 à Bac+8), compétences (année du dernier usage et contexte). Les intitulés de poste sont normalisés (« VP Sales », « Directeur commercial », « Head of Sales » → SALES_DIRECTOR ; « Géomaticien », « Chargé d'études SIG » → GIS_ANALYST). Ce qui ne peut pas être découpé est gardé tel quel (unparsed_rich_text) et reste cherchable.
Questions éliminatoires : autorisation de travail, permis, diplôme exigé, années d'expérience minimum, langues, habilitation. Un « non » fait passer la candidature à DISQUALIFIED_AUTO, comme dans un vrai ATS. Elle reste enregistrable avec le statut de ton choix et porte l'étiquette « ⛔ Pré-requis bloquant » dans « Mes candidatures » ; un critère sans réponse affiche « ❔ Pré-requis à vérifier ». Les réponses sont modifiables dans le détail de la candidature, un filtre « Pré-requis bloquant » les regroupe, et un webhook (Zapier, Make, n8n…) peut être prévenu.
Score en 3 piliers pour le CV (voir plus bas), un score pour la lettre et un indice global, avec des recommandations classées par priorité.
« Ce que voit l'ATS » : le texte brut extrait, dans l'ordre de lecture, avec les mots-clés trouvés surlignés.
Prompt pour ton IA générative : un prompt prêt à copier dans ChatGPT, Claude, Gemini, Le Chat ou Copilot. Il reprend la fiche de poste, tes documents, les scores, les mots-clés manquants et les problèmes détectés. Deux modes :
Dans les deux cas, l'IA n'invente rien et te pose des questions sur les compétences qui manquent. Une option masque ton e-mail et ton téléphone avant le partage.
Espace personnel : chacun se connecte avec son e-mail et un mot de passe et retrouve ses propres candidatures. Les candidatures enregistrées avant la création des espaces sont proposées à la récupération lors de la première connexion. Voir Espaces personnels.
Temps de réflexion : pendant l'analyse, une fenêtre montre les étapes une à une (lecture, mots-clés, comparaison, contrôles, recommandations) avec les vrais chiffres.
Suivi des candidatures : sauvegarde de chaque candidature (entreprise, poste, date, statut, notes, scores, fiche de poste, textes envoyés et profil lu par l'ATS), filtres par statut, archives et statistiques.
CV et lettre de chaque candidature téléchargeables : le fichier d'origine (PDF, DOCX…) est gardé dans le navigateur avec la candidature, puis retéléchargeable depuis « Mes candidatures » (boutons dans la liste et dans le détail). C'est toujours le document de la dernière analyse enregistrée pour l'offre. Un même CV utilisé pour plusieurs offres n'est gardé qu'une fois. Si le fichier d'origine n'a pas été gardé (texte collé, candidature plus ancienne, autre appareil), un PDF est recréé à partir du texte lu, et le détail de la candidature permet de joindre le PDF d'origine. Les fichiers ne sont jamais envoyés sur un serveur : en mode cloud, ils restent sur l'appareil où ils ont été importés. L'export JSON les inclut, pour passer d'un appareil à l'autre.
Recherche booléenne : QGIS AND (Rennes OR Nantes) NOT stage, ET / OU / SAUF, -mot, "expression exacte" et champs (entreprise:, poste:, statut:, offre:, cv:, competences:, notes:).
Nouvelle offre : un bouton vide l'offre, la lettre et les résultats en gardant ton CV, pour enchaîner les candidatures. Le formulaire s'ouvre toujours vide : rien n'est gardé d'une visite à l'autre.
Export / import JSON pour sauvegarder tes candidatures ou les transférer sur un autre ordinateur.
Confidentialité : l'analyse se fait dans le navigateur. Aucun fichier n'est envoyé sur un serveur. En mode cloud, seules les candidatures que tu enregistres (avec le texte de l'offre et de tes documents) sont synchronisées dans ton espace.
Interface responsive (ordinateur et mobile), avec un bouton « Retour » sur chaque page (Mes candidatures revient d'abord à l'analyseur) et un bouton pour remonter en haut de page, en bas à droite et dans le pied de page.
Le site compte trois pages :
index.html : la page publicitaire de l'outil, présentée par son créateur (accroche avec portrait, fonctionnalités, démo avant / après, chiffres, méthode, créateur).
connexion.html : l'écran de lancement (logo animé, chargement jusqu'à 100 %), puis la connexion ou la création d'un espace.
analyser.html : le testeur lui-même, réservé aux personnes connectées (analyse, prompt pour l'IA, suivi des candidatures). analyser.html#candidatures ouvre directement l'historique.
Style « néon fun » :
#07060F, cyan #22D3EE, violet #A78BFA, rose #F472B6, citron vert #A3E635.Clique sur une ligne du tableau des mots-clés pour ignorer un terme sans rapport avec le poste (ex. le nom de la ville).
Chaque personne a son espace, protégé par un mot de passe. Deux modes existent, selon assets/js/config.js :
| Mode | Quand | Où sont les candidatures |
|---|---|---|
| Appareil (par défaut) | config.js laissé vide | Dans le navigateur de l'appareil. Le mot de passe est haché (PBKDF2-SHA-256) et n'est jamais stocké en clair. Pour changer d'appareil, utilise Exporter / Importer. |
| Cloud | config.js rempli avec un projet Supabase | Dans une base Supabase, synchronisées sur tous les appareils. Mot de passe oublié par e-mail. |
En mode appareil, personne ne peut réinitialiser un mot de passe oublié : pense à exporter tes candidatures de temps en temps.
supabase/schema.sql et clique sur Run. Le script crée :
applications, où chaque utilisateur ne voit que ses propres lignes ;candidats, experiences_professionnelles (avec duree_mois calculée), formations et competences ;https://hermes-bit.github.io/ats-tester/connexion.htmlhttps://hermes-bit.github.io/ats-tester/**assets/js/config.js, puis envoie la modification sur GitHub :
ATS.config = {
supabaseUrl: "https://xxxx.supabase.co",
supabaseKey: "clé publique",
};
Ensuite, crée ton espace en mode cloud sur l'appareil où se trouvent tes candidatures : le bandeau « candidatures retrouvées sur cet appareil » les ajoute à ton espace, qui les synchronise.
Aucune installation n'est nécessaire : c'est un site statique (HTML, CSS, JavaScript).
git clone https://github.com/Hermes-bit/ats-tester.git
cd ats-tester
python3 -m http.server 8000
# puis ouvre http://localhost:8000
Tu peux aussi ouvrir directement index.html dans ton navigateur.
Le dépôt contient un workflow (.github/workflows/deploy.yml) qui publie le site à chaque push sur main.
ats-tester sur GitHub (sans README).git remote add origin https://github.com/Hermes-bit/ats-tester.git
git branch -M main
git push -u origin main
https://hermes-bit.github.io/ats-tester/.ats-tester/
├── index.html # Page publicitaire (accueil)
├── connexion.html # Écran de lancement + connexion / création d'espace
├── analyser.html # Le testeur : analyse, prompt IA, suivi des candidatures
├── assets/
│ ├── css/style.css # Styles (clair / sombre, responsive)
│ ├── js/keywords.js # Dictionnaire de compétences et mots vides (FR / EN)
│ ├── js/extract.js # Extraction du texte : PDF (pdf.js), DOCX (mammoth), TXT…
│ ├── js/analyzer.js # Moteur d'analyse ATS : mots-clés, vérifications, score en 3 piliers
│ ├── js/profile.js # Lecture structurée du CV : coordonnées, expériences, formations, compétences
│ ├── js/offer.js # Exigences de l'offre et questions éliminatoires
│ ├── js/search.js # Recherche booléenne dans les candidatures
│ ├── js/prompt.js # Prompt pour une IA générative à partir des résultats
│ ├── js/config.js # Mode des espaces : appareil (vide) ou cloud (Supabase)
│ ├── js/auth.js # Comptes et sessions (mot de passe haché ou Supabase)
│ ├── js/storage.js # Candidatures de chaque espace, synchronisation, export / import
│ ├── js/files.js # Fichiers d'origine (CV, lettre) gardés dans le navigateur (IndexedDB)
│ ├── js/pdf-writer.js # PDF recréé à partir d'un texte (quand le fichier d'origine manque)
│ ├── js/login.js # Écran de lancement et formulaires de connexion
│ ├── js/app.js # Interface du testeur
│ ├── js/fx.js # Effets : apparitions, compteurs, démo, confettis
│ ├── img/ # Logo, favicon, portrait, icône iPhone, image de partage
│ └── vendor/ # pdf.js 3.11.174, mammoth 1.8.0 et polices (inclus, sans CDN)
├── supabase/schema.sql # Table, règles d'accès, vues du schéma ATS et index plein texte
├── tests/ # Tests unitaires Jest (+ PGlite pour le SQL)
├── package.json # Dépendances de test uniquement (le site n'a pas d'étape de compilation)
├── docs/ # Captures d'écran
└── .github/workflows/deploy.yml
Le score du CV suit trois piliers :
| Pilier | Poids | Contenu |
|---|---|---|
| Compétences techniques requises | 50 % | Logiciels, langages, formats, méthodes demandés par l'offre. |
| Contexte et savoir-être | 30 % | Intitulé de poste (exact ou même métier normalisé), années d'expérience demandées, management, savoir-être, vocabulaire de l'offre. |
| Atouts et certifications | 20 % | Compétences « un plus », certifications, langues, niveau de diplôme. |
Deux règles s'appliquent aux compétences techniques :
duree_mois de toutes les expériences où la compétence (ou un synonyme) apparaît. Les périodes qui se chevauchent sont comptées une seule fois. En dessous du seuil, la compétence ne rapporte qu'une partie de ses points.Un pilier sans aucun critère dans l'offre est marqué « non applicable » et son poids est réparti sur les autres. Un CV illisible est plafonné à 10.
| Autres scores | Composition |
|---|---|
| Lettre | 50 % mots-clés (reprendre 50 % des compétences suffit pour le score maximal) + 50 % vérifications de forme |
| Indice global | 70 % CV + 30 % lettre |
Les vérifications de format (lisibilité, coordonnées, rubriques, dates…) restent affichées, mais ne comptent plus dans le score du CV.
Le poids d'un mot-clé augmente s'il revient souvent dans l'offre ou s'il figure dans l'intitulé du poste. Il diminue s'il est présenté comme « un plus ».
Une question éliminatoire non remplie passe la candidature à DISQUALIFIED_AUTO, quel que soit le score : c'est ce que fait un vrai ATS.
Les règles de lecture, de normalisation, de score, de questions éliminatoires et de recherche sont couvertes par des tests unitaires (Jest). Le script supabase/schema.sql est exécuté sur un vrai Postgres embarqué (PGlite). Les tests couvrent aussi les cas limites : CV mal formaté, dates manquantes ou incohérentes, caractères spéciaux (ligatures, espaces insécables, emojis), requêtes mal formées.
npm install
npm test
GitHub Actions lance les tests avant chaque mise en ligne : si un test échoue, le site n'est pas mis à jour.
Le dictionnaire de compétences se trouve dans assets/js/keywords.js. Il couvre surtout la géomatique, les SIG, la donnée et le développement web. Pour l'adapter, ajoute tes propres entrées :
{ label: "Revit", cat: "tools", aliases: ["revit", "autodesk revit"] },
Les termes absents du dictionnaire mais répétés dans l'offre sont aussi détectés automatiquement (rubrique « Autres termes fréquents »).
.doc (Word 97-2003) et .odt ne sont pas lus : convertis-les en .docx ou en PDF.localStorage) et ne se synchronisent pas : active le mode cloud ou utilise l'export JSON.HTML, CSS et JavaScript sans framework ni étape de compilation · Web Crypto (PBKDF2) · Supabase en option · pdf.js (Apache 2.0) · mammoth.js (BSD-2) · polices Inter et Cormorant Garamond (SIL OFL 1.1) · GitHub Actions et GitHub Pages.
Hermès BARRY, géomaticien. LinkedIn · GitHub
MIT. Voir LICENSE.