Aller au contenu principal

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 :

Terminal
copy config.sample.yaml profiles\my_search.yaml
notepad profiles\my_search.yaml

Pointez ensuite un balayage vers ce fichier :

Terminal
sweepy --profile profiles/my_search.yaml
Remarque

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/.

attention

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 :

profiles/paralegal_nyc.yaml
# ─────────────────────────────────────────────────
# 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.

SectionCléObligatoireValeur par défautDescription
Niveau racinenameNon"Job Seeker"Votre nom. Apparaît dans l’en-tête du rapport PDF.
Niveau racinedebugNonfalseMettez true pour écrire des journaux de débogage rotatifs dans logs/.
searchtitlesOui[]Intitulés de poste que vous ciblez. Sweepy cherche tous les intitulés à la fois.
searchlocationOui""Votre marché, écrit sous la forme "Ville, État".
searchremote_onlyNonfalseMettez true pour ne garder que les postes en télétravail.
searchinclude_hybridNontrueMettez false pour retirer les postes hybrides.
searchmin_salaryNon0Plancher de salaire annuel. 0 désactive le filtre.
searchsalary_from_descriptionNontrueLit 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.
resumepathOui""Chemin vers votre CV PDF ou Word (DOCX).
resumemust_have_skillsNon[]Termes qui reçoivent le poids de notation le plus élevé.
resumekeywords_weightNon1.0Multiplicateur des correspondances de compétences. Des valeurs plus hautes récompensent le chevauchement.
resumesynonymsNon[]Groupes de termes interchangeables. Voir Synonymes de CV.
resumetracksNon[]Un CV par famille de postes. Voir Parcours de CV.
resume.tracks[]nameOuis. o.Libellé affiché sur la fiche du rapport et dans le badge du parcours.
resume.tracks[]pathOuis. o.Chemin vers le CV PDF ou DOCX de ce parcours.
resume.tracks[]colorNon#1D4ED8Couleur du badge en code hexadécimal ou en nom de couleur comme navy.
resume.tracks[]route_keywordsNon[]Mots-clés qui affectent une offre à ce parcours.
platformsgreenhouseNontrueLance les recherches Greenhouse.
platformsashbyNontrueLance les recherches Ashby.
platformsleverNontrueLance les recherches Lever.
platformsworkableNontrueLance les recherches Workable.
platformsaggregatorsNonfalseLance les flux d’agrégateurs gratuits comme Remotive et Adzuna.
platformscustomNon[]Domaines supplémentaires de systèmes de suivi des candidatures (ATS). Chaque entrée prend name, domain et enabled.
sourcesjobspy.linkedinNontrueInterroge LinkedIn via python-jobspy.
sourcesjobspy.indeedNontrueInterroge Indeed via python-jobspy.
sourcesjobspy.glassdoorNontrueInterroge Glassdoor via python-jobspy.
sourcesjobspy.zip_recruiterNontrueInterroge ZipRecruiter via python-jobspy.
sourcesgreenhouse.enabledNontrueActive ou désactive la source Greenhouse.
sourcesgreenhouse.boardsNon[]Jetons de site Greenhouse. Une valeur vide se rabat sur data/sources/greenhouse_boards.txt.
sourcesashby.enabledNontrueActive ou désactive la source Ashby.
sourcesashby.orgsNon[]Identifiants d’organisation Ashby. Une valeur vide se rabat sur data/sources/ashby_orgs.txt.
sourceslever.enabledNontrueActive ou désactive la source Lever.
sourceslever.companiesNon[]Jetons d’entreprise Lever. Une valeur vide se rabat sur data/sources/lever_companies.txt.
sourcesworkable.enabledNontrueActive ou désactive la source Workable.
sourcesworkable.slugsNon[]Identifiants de compte Workable. Une valeur vide se rabat sur data/sources/workable_slugs.txt.
sourcesbuiltinnyc.enabledNontrueActive ou désactive la source Built In NYC.
sourcesbuiltinnyc.categoriesNon[]Chemins de catégorie Built In NYC comme jobs/legal. Une valeur vide se rabat sur data/sources/builtin_categories.txt.
sourcesbuiltinnyc.detail_pagesNonfalseLit 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.
sourcesenabledNon["jobspy", "ats"]Moteurs à exécuter. Ajoutez hirehunt, openroles, jobdrop ou apify après avoir installé chacun. Voir Sources et plateformes.
sourcesjobspy.sitesNon["linkedin", "indeed", "glassdoor", "zip_recruiter"]Sites JobSpy sous forme de liste. Prend le pas sur les booléens de style jobspy.linkedin.
sourcesjobspy.fetch_descriptionsNontrueRécupère le texte complet des offres pour la notation. Mettez false pour des balayages plus rapides aux scores plus faibles.
sourcesjobspy.proxiesNon[]Cibles de proxy écrites sous la forme user:pass@host:port. Les identifiants de proxy restent sur votre machine.
sourcesjobspy.user_agentNonnullAgent utilisateur des requêtes JobSpy. Omettez-le pour utiliser la valeur Chrome intégrée.
cacheenabledNontrueRéutilise les résultats de découverte entre les balayages.
cachettl_secondsNon3600Secondes pendant lesquelles Sweepy réutilise un résultat en cache.
cachepathNonnullEmplacement de la base de cache. null utilise ~/.sweepy/cache.db, et SWEEPY_CACHE_PATH remplace les deux.
historyenabledNontrueMasque les offres que des balayages antérieurs ont déjà rapportées.
historyretention_daysNon4Jours pendant lesquels Sweepy masque une offre rapportée avant qu’elle puisse réapparaître.
historymatchNon"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.
historypathNonnullEmplacement de la base d’historique. null utilise ~/.sweepy/history.db, et SWEEPY_HISTORY_PATH remplace les deux.
orchestratortimeout_per_source_secondsNon180Secondes pendant lesquelles une source peut s’exécuter avant que Sweepy l’arrête.
orchestratorcircuit_breaker.failure_thresholdNon5Échecs consécutifs avant que Sweepy ignore cette source.
orchestratorcircuit_breaker.cooldown_secondsNon30Secondes pendant lesquelles Sweepy attend avant de réessayer une source ignorée.
reportstyleNon"cards"Structure du rapport : cards ou legacy.
reportcards_per_pageNon6Fiches placées sur chaque page PDF.
reportmax_cardsNon24Nombre maximal de fiches. 0 ou moins affiche toutes les correspondances.
reportdestinationsNon[]Dossiers supplémentaires qui reçoivent une copie des fichiers PDF et PNG.
reportassessmentNon"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.
exportformatNon"pdf,csv"Toute combinaison de pdf, csv, json et png, séparée par des virgules.
exportoutput_dirNon"results"Dossier de vos fichiers de rapport. Sweepy le crée s’il manque.
exporttrackingNontrueAjoute 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.
exportdescription_charsNon1000Caractè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.
astuce

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.

profiles/paralegal_nyc.yaml
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.
  • path pointe vers le CV PDF ou DOCX de ce parcours.
  • color définit la couleur du badge. Utilisez un code hexadécimal comme #1D4ED8, ou un nom de couleur comme navy.
  • route_keywords dé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.

astuce

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.

profiles/paralegal_nyc.yaml
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.

astuce

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.

profiles/paralegal_nyc.yaml
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
attention

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.