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.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Teste ton CV et ta lettre de motivation face à une fiche de poste, comme un ATS — 100 % dans le navigateur
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 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 fichier d'origine de la dernière analyse enregistrée pour l'offre, avec sa mise en page et sa charte graphique : rien n'est reconstruit. Un même CV utilisé pour plusieurs offres n'est gardé qu'une fois. Si le fichier d'origine manque (candidature plus ancienne, texte collé, autre appareil), le bouton devient « joindre » ; importer le document dans l'analyseur ou via « Retrouver mes fichiers » le rattache automatiquement à toutes les candidatures enregistrées avec ce même document (même texte lu). 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. Elle raconte une histoire en deux illustrations : en accroche, le candidat dont le CV est rejeté par l'ATS ; dans l'appel final, ATS Tester qui le fait passer. Entre les deux : 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/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, illustrations (WebP, 900 et 1600 px), 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.