Référence de configuration du profil
Cette page liste chaque paramètre accepté par un profil Sweepy. Gardez-la ouverte pendant que vous modifiez votre profil. Pour un parcours guidé, voir plutôt Configurer Sweepy.
Où vivent les profils
Sweepy lit les profils depuis le dossier profiles/ de votre répertoire Sweepy. Chaque profil utilise YAML, un format texte organisé par indentation et deux-points. Ouvrez-en un dans Notepad, VS Code ou tout éditeur de texte que vous possédez déjà.
Partez de config.sample.yaml ou d’un préréglage comme profiles/paralegal_nyc.yaml. Copiez un modèle, renommez-le et modifiez les valeurs :
copy config.sample.yaml profiles\my_search.yaml
notepad profiles\my_search.yaml
Pointez ensuite un balayage vers ce fichier :
sweepy --profile profiles/my_search.yaml
Un profil contient toute votre configuration. Créez autant de profils que vous voulez : un par ville ou par famille de postes. Sweepy conserve l’état du balayage hors du profil, dans le cache de découverte, la base d’historique et les dossiers logs/ et results/.
Indentez avec des espaces, jamais avec des tabulations. YAML refuse les tabulations, et une seule tabulation parasite rend tout le profil illisible.
Exemple de profil complet
L’exemple ci-dessous montre le profil complet d’Alex. Les lignes qui commencent par # servent de commentaires, et Sweepy les ignore :
# ─────────────────────────────────────────────────
# Sweepy — Alex's Paralegal Profile (New York City)
# ─────────────────────────────────────────────────
# Your name. It appears in the PDF report header.
name: "Alex Rivera"
# Set true to write rotating debug logs under logs/.
debug: false
# ─── Job search ───────────────────────────────────
search:
# Every title Sweepy searches at the same time.
titles:
- "Paralegal"
- "Legal Assistant"
- "Litigation Support Specialist"
- "Legal Secretary"
# Your target market.
location: "New York, NY"
# true keeps remote roles only. false keeps remote, hybrid, and on-site roles.
remote_only: false
# false removes hybrid roles from every report.
include_hybrid: true
# Annual salary floor. Use 0 to skip salary filtering.
min_salary: 65000
# true reads pay from the posting text when a board omits structured pay.
salary_from_description: true
# ─── Resume ───────────────────────────────────────
resume:
# Path to a PDF or DOCX resume. Forward slashes work on Windows.
path: "Alex_Rivera_Resume.pdf"
# Terms that carry the most weight when Sweepy scores a posting.
must_have_skills:
- "Westlaw"
- "LexisNexis"
- "e-discovery"
- "Contract Review"
- "Legal Research"
# 1.0 is standard. Raise it to reward exact skill matches.
keywords_weight: 1.5
# Interchangeable terms. Sweepy matches every member of a group either way.
synonyms:
- ["e-discovery", "ediscovery", "electronic discovery"]
- ["legal research", "case law research"]
- ["docketing", "case calendaring"]
- ["legal assistant", "legal secretary"]
- ["contract review", "contract analysis", "agreement review"]
# Optional: one resume per role family. Sweepy picks the best fit for each posting.
tracks:
- name: "Paralegal Resume"
path: "C:/Users/Alex/Documents/Alex_Rivera_Paralegal.pdf"
color: "#1D4ED8"
route_keywords: ["paralegal", "litigation", "e-discovery"]
- name: "Legal Assistant Resume"
path: "C:/Users/Alex/Documents/Alex_Rivera_Legal_Assistant.pdf"
color: "#7E22CE"
route_keywords: ["legal assistant", "legal secretary", "scheduling"]
# ─── Platforms ────────────────────────────────────
platforms:
greenhouse: true
ashby: true
lever: true
workable: true
aggregators: false
# Extra ATS domains. Sweepy labels matching postings with this name.
custom:
- name: "SmartRecruiters"
domain: "smartrecruiters.com"
enabled: true
- name: "Breezy HR"
domain: "breezy.hr"
enabled: true
# ─── Sources ──────────────────────────────────────
sources:
jobspy:
linkedin: true
indeed: true
glassdoor: true
zip_recruiter: true
# Leave a list empty to fall back to the seed lists in data/sources/.
ashby:
orgs:
- "crosby"
- "normlaw"
- "hargrove-firm"
- "lawhive"
workable:
slugs:
- "shegerianand-associates-1"
- "harper-james"
- "legalvision"
builtinnyc:
enabled: true
categories:
- "jobs/legal"
- "jobs/legal/search/paralegal"
# ─── Cache and history ────────────────────────────
cache:
enabled: true
ttl_seconds: 3600 # reuse discovery results for an hour
history:
enabled: true
retention_days: 4 # hide a reported posting for four days
match: "url+role" # "url" matches only an identical posting address
path: null # null uses ~/.sweepy/history.db
orchestrator:
timeout_per_source_seconds: 180
circuit_breaker:
failure_threshold: 5
cooldown_seconds: 30
# ─── Report layout ────────────────────────────────
report:
style: "cards" # "cards" (default) or "legacy"
cards_per_page: 6 # cards on each PDF page
max_cards: 24 # 0 or less shows every match
destinations: [] # extra folders for a copy of the PDF
assessment: "agent" # "keyword" accepts reports without agent judgments
# ─── Exports ──────────────────────────────────────
export:
format: "pdf,csv,json" # add "png" for page images
output_dir: "results"
tracking: true # job-tracking columns in the CSV
description_chars: 1000 # posting excerpt length in the CSV and JSON
Tous les paramètres
Sweepy applique les valeurs par défaut ci-dessous à tout paramètre que vous omettez. Sweepy a toujours besoin de search.titles, search.location et resume.path pour renvoyer des correspondances utiles.
| Section | Clé | Obligatoire | Valeur par défaut | Description |
|---|---|---|---|---|
| Niveau racine | name | Non | "Job Seeker" | Votre nom. Apparaît dans l’en-tête du rapport PDF. |
| Niveau racine | debug | Non | false | Mettez true pour écrire des journaux de débogage rotatifs dans logs/. |
search | titles | Oui | [] | Intitulés de poste que vous ciblez. Sweepy cherche tous les intitulés à la fois. |
search | location | Oui | "" | Votre marché, écrit sous la forme "Ville, État". |
search | remote_only | Non | false | Mettez true pour ne garder que les postes en télétravail. |
search | include_hybrid | Non | true | Mettez false pour retirer les postes hybrides. |
search | min_salary | Non | 0 | Plancher de salaire annuel. 0 désactive le filtre. |
search | salary_from_description | Non | true | Lit les fourchettes de salaire dans le texte de l’offre quand un site ne publie pas de salaire structuré. Mettez false pour n’utiliser que les champs structurés. |
resume | path | Oui | "" | Chemin vers votre CV PDF ou Word (DOCX). |
resume | must_have_skills | Non | [] | Termes qui reçoivent le poids de notation le plus élevé. |
resume | keywords_weight | Non | 1.0 | Multiplicateur des correspondances de compétences. Des valeurs plus hautes récompensent le chevauchement. |
resume | synonyms | Non | [] | Groupes de termes interchangeables. Voir Synonymes de CV. |
resume | tracks | Non | [] | Un CV par famille de postes. Voir Parcours de CV. |
resume.tracks[] | name | Oui | s. o. | Libellé affiché sur la fiche du rapport et dans le badge du parcours. |
resume.tracks[] | path | Oui | s. o. | Chemin vers le CV PDF ou DOCX de ce parcours. |
resume.tracks[] | color | Non | #1D4ED8 | Couleur du badge en code hexadécimal ou en nom de couleur comme navy. |
resume.tracks[] | route_keywords | Non | [] | Mots-clés qui affectent une offre à ce parcours. |
platforms | greenhouse | Non | true | Lance les recherches Greenhouse. |
platforms | ashby | Non | true | Lance les recherches Ashby. |
platforms | lever | Non | true | Lance les recherches Lever. |
platforms | workable | Non | true | Lance les recherches Workable. |
platforms | aggregators | Non | false | Lance les flux d’agrégateurs gratuits comme Remotive et Adzuna. |
platforms | custom | Non | [] | Domaines supplémentaires de systèmes de suivi des candidatures (ATS). Chaque entrée prend name, domain et enabled. |
sources | jobspy.linkedin | Non | true | Interroge LinkedIn via python-jobspy. |
sources | jobspy.indeed | Non | true | Interroge Indeed via python-jobspy. |
sources | jobspy.glassdoor | Non | true | Interroge Glassdoor via python-jobspy. |
sources | jobspy.zip_recruiter | Non | true | Interroge ZipRecruiter via python-jobspy. |
sources | greenhouse.enabled | Non | true | Active ou désactive la source Greenhouse. |
sources | greenhouse.boards | Non | [] | Jetons de site Greenhouse. Une valeur vide se rabat sur data/sources/greenhouse_boards.txt. |
sources | ashby.enabled | Non | true | Active ou désactive la source Ashby. |
sources | ashby.orgs | Non | [] | Identifiants d’organisation Ashby. Une valeur vide se rabat sur data/sources/ashby_orgs.txt. |
sources | lever.enabled | Non | true | Active ou désactive la source Lever. |
sources | lever.companies | Non | [] | Jetons d’entreprise Lever. Une valeur vide se rabat sur data/sources/lever_companies.txt. |
sources | workable.enabled | Non | true | Active ou désactive la source Workable. |
sources | workable.slugs | Non | [] | Identifiants de compte Workable. Une valeur vide se rabat sur data/sources/workable_slugs.txt. |
sources | builtinnyc.enabled | Non | true | Active ou désactive la source Built In NYC. |
sources | builtinnyc.categories | Non | [] | Chemins de catégorie Built In NYC comme jobs/legal. Une valeur vide se rabat sur data/sources/builtin_categories.txt. |
sources | builtinnyc.detail_pages | Non | false | Lit le texte complet de chaque offre sur sa page de détail. Built In bloque ces pages après quelques requêtes, donc Sweepy les récupère une par une et s’arrête au premier blocage. L’annonce fournit toujours l’entreprise, le lieu et le salaire. |
sources | enabled | Non | ["jobspy", "ats"] | Moteurs à exécuter. Ajoutez hirehunt, openroles, jobdrop ou apify après avoir installé chacun. Voir Sources et plateformes. |
sources | jobspy.sites | Non | ["linkedin", "indeed", "glassdoor", "zip_recruiter"] | Sites JobSpy sous forme de liste. Prend le pas sur les booléens de style jobspy.linkedin. |
sources | jobspy.fetch_descriptions | Non | true | Récupère le texte complet des offres pour la notation. Mettez false pour des balayages plus rapides aux scores plus faibles. |
sources | jobspy.proxies | Non | [] | Cibles de proxy écrites sous la forme user:pass@host:port. Les identifiants de proxy restent sur votre machine. |
sources | jobspy.user_agent | Non | null | Agent utilisateur des requêtes JobSpy. Omettez-le pour utiliser la valeur Chrome intégrée. |
cache | enabled | Non | true | Réutilise les résultats de découverte entre les balayages. |
cache | ttl_seconds | Non | 3600 | Secondes pendant lesquelles Sweepy réutilise un résultat en cache. |
cache | path | Non | null | Emplacement de la base de cache. null utilise ~/.sweepy/cache.db, et SWEEPY_CACHE_PATH remplace les deux. |
history | enabled | Non | true | Masque les offres que des balayages antérieurs ont déjà rapportées. |
history | retention_days | Non | 4 | Jours pendant lesquels Sweepy masque une offre rapportée avant qu’elle puisse réapparaître. |
history | match | Non | "url+role" | url ne correspond qu’à une adresse d’offre identique. url+role correspond aussi au même intitulé, à la même entreprise et au même lieu sur un autre site. |
history | path | Non | null | Emplacement de la base d’historique. null utilise ~/.sweepy/history.db, et SWEEPY_HISTORY_PATH remplace les deux. |
orchestrator | timeout_per_source_seconds | Non | 180 | Secondes pendant lesquelles une source peut s’exécuter avant que Sweepy l’arrête. |
orchestrator | circuit_breaker.failure_threshold | Non | 5 | Échecs consécutifs avant que Sweepy ignore cette source. |
orchestrator | circuit_breaker.cooldown_seconds | Non | 30 | Secondes pendant lesquelles Sweepy attend avant de réessayer une source ignorée. |
report | style | Non | "cards" | Structure du rapport : cards ou legacy. |
report | cards_per_page | Non | 6 | Fiches placées sur chaque page PDF. |
report | max_cards | Non | 24 | Nombre maximal de fiches. 0 ou moins affiche toutes les correspondances. |
report | destinations | Non | [] | Dossiers supplémentaires qui reçoivent une copie des fichiers PDF et PNG. |
report | assessment | Non | "agent" | agent bloque un rapport tant qu’une fiche repose sur le seul chevauchement de mots-clés. keyword autorise les rapports sans évaluation d’agent. |
export | format | Non | "pdf,csv" | Toute combinaison de pdf, csv, json et png, séparée par des virgules. |
export | output_dir | Non | "results" | Dossier de vos fichiers de rapport. Sweepy le crée s’il manque. |
export | tracking | Non | true | Ajoute les colonnes de suivi des candidatures au CSV : date_applied, status, interview_stage, offer_amount, offer_date, follow_up_date, contact et notes. Sweepy reporte les valeurs que vous saisissez dans les balayages suivants du même profil. Mettez false pour des données brutes uniquement. |
export | description_chars | Non | 1000 | Caractères de texte d’offre enregistrés dans le CSV et le JSON. Sweepy coupe sur une fin de phrase. 0 enregistre toute l’offre. |
Les détails sur les sources et la prise en charge des plateformes figurent dans Sources et plateformes. Les règles d’activation y expliquent comment platforms.* et sources.* fonctionnent ensemble. Les blocs optionnels hirehunt, openroles, jobdrop et apify vivent aussi sous sources, et la référence des commandes liste les options qui définissent leurs clés.
Parcours de CV
Un parcours est un CV nommé. Utilisez les parcours quand vous ciblez deux postes ou intitulés différents et que vous voulez noter chaque offre par rapport au bon document.
resume:
tracks:
- name: "Paralegal Resume"
path: "C:/Users/Alex/Documents/Alex_Rivera_Paralegal.pdf"
color: "#1D4ED8"
route_keywords: ["paralegal", "litigation", "e-discovery"]
- name: "Legal Assistant Resume"
path: "C:/Users/Alex/Documents/Alex_Rivera_Legal_Assistant.pdf"
color: "#7E22CE"
route_keywords: ["legal assistant", "legal secretary", "scheduling"]
Chaque entrée prend quatre champs :
nameétiquette le parcours. La fiche du rapport affiche ce libellé, donc écrivez un ou deux mots.pathpointe vers le CV PDF ou DOCX de ce parcours.colordéfinit la couleur du badge. Utilisez un code hexadécimal comme#1D4ED8, ou un nom de couleur commenavy.route_keywordsdécident quelles offres Sweepy affecte à ce parcours.
Sweepy affecte chaque offre par chevauchement de mots-clés. Il compte les correspondances de mots entiers entre l’intitulé et la description de l’offre et les route_keywords de chaque parcours. Sweepy affecte l’offre au parcours qui obtient le plus grand nombre. Quand deux parcours sont à égalité, Sweepy utilise le premier de votre liste.
route_keywords envoient une offre vers un CV et ne changent jamais le pourcentage de compatibilité. Ajoutez les expressions que chaque famille de postes utilise réellement dans ses offres.
Omettez tracks et Sweepy utilise resume.path comme un parcours implicite unique.
Synonymes de CV
resume.synonyms contient des groupes de mots qui veulent dire la même chose. Sweepy traite chaque mot d’un groupe comme égal aux autres. La correspondance fonctionne alors dans les deux sens. Voir Ajouter des termes propres à votre secteur pour la liste de vérification complète de mise en forme.
resume:
synonyms:
- ["e-discovery", "ediscovery", "electronic discovery"]
- ["legal research", "case law research"]
- ["docketing", "case calendaring"]
- ["legal assistant", "legal secretary"]
- ["contract review", "contract analysis", "agreement review"]
Un groupe exige au moins deux termes, sinon Sweepy l’ignore. La correspondance ignore la casse et gère les formes singulières et plurielles régulières. Le moteur compare toujours des expressions entières, donc listez legal research et legal researcher comme termes distincts quand vous voulez que les deux comptent.
Alex écrit e-discovery sur un CV. Une offre qui dit electronic discovery correspond maintenant à ce CV, car les deux termes appartiennent au même groupe.
Ajoutez un groupe chaque fois que vous remarquez deux fois la même absence. Copiez la formulation exacte de l’offre dans le groupe, à côté de votre propre terme.
Erreurs de mise en forme courantes
La plupart des profils cassés remontent à quelques erreurs courantes.
Les chemins Windows exigent des barres obliques ou des barres inverses doublées. YAML lit une barre inverse comme un caractère d’échappement. Un chemin comme C:\Users\Alex casse le fichier.
resume:
path: "C:/Users/Alex/Documents/Alex_Rivera_Resume.pdf" # ✅ works
# path: "C:\\Users\\Alex\\Documents\\Alex_Rivera_Resume.pdf" # ✅ also works
# path: "C:\Users\Alex\Documents\Alex_Rivera_Resume.pdf" # ❌ breaks YAML
Une seule barre inverse parasite dans un chemin empêche Sweepy de lire votre profil. L’assistant de configuration écrit des barres obliques à votre place, donc copiez ce style quand vous modifiez à la main.
Les commentaires commencent par #. Sweepy ignore tout ce qui suit un # sur cette ligne. Utilisez des commentaires pour noter l’importance d’une valeur, comme le fait le profil d’exemple.
L’indentation définit la structure. Indentez chaque niveau de deux espaces. Une seule tabulation dans le fichier casse le YAML.