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.