Saltar al contenido principal

Referencia de configuración del perfil

Esta página enumera todas las opciones que acepta un perfil de Sweepy. Mantenla abierta mientras editas tu perfil. Para un tutorial paso a paso, consulta Configurar Sweepy.

Dónde se guardan los perfiles​

Sweepy lee los perfiles de la carpeta profiles/ dentro de tu directorio de Sweepy. Cada perfil usa YAML, un formato de texto sin formato organizado mediante sangrías y dos puntos. Abre uno en el Bloc de notas, VS Code o cualquier editor de texto que ya tengas.

Empieza con config.sample.yaml o un ajuste preestablecido como profiles/paralegal_nyc.yaml. Copia una plantilla, cámbiale el nombre y edita los valores:

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

Luego, apunta un barrido a ese archivo:

Terminal
sweepy --profile profiles/my_search.yaml
nota

Un perfil contiene toda tu configuración. Crea tantos perfiles como quieras: uno por ciudad o familia de roles. Sweepy guarda el estado del barrido fuera del perfil, en la caché de descubrimiento, la base de datos del historial y las carpetas logs/ y results/.

precaución

Aplica sangría con espacios, nunca con tabulaciones. YAML rechaza las tabulaciones, y una sola tabulación perdida hace que todo el perfil sea ilegible.

Ejemplo de perfil completo​

El siguiente ejemplo muestra el perfil completo de Alex. Las líneas que empiezan con # funcionan como comentarios y Sweepy las ignora:

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

Todas las opciones​

Sweepy usa los valores predeterminados que aparecen a continuación para cualquier opción que omitas. Sweepy todavía necesita search.titles, search.location y resume.path para devolver coincidencias útiles.

SecciónClaveObligatorioPredeterminadoDescripción
Nivel superiornameNo"Job Seeker"Tu nombre. Aparece en el encabezado del informe en PDF.
Nivel superiordebugNofalsePonlo en true para escribir registros de depuración rotativos en logs/.
searchtitlesSí[]Puestos de trabajo que buscas. Sweepy busca todos los títulos a la vez.
searchlocationSí""Tu mercado, escrito como "Ciudad, Estado".
searchremote_onlyNofalsePonlo en true para conservar solo los roles remotos.
searchinclude_hybridNotruePonlo en false para descartar los roles híbridos.
searchmin_salaryNo0Salario anual mínimo. 0 desactiva el filtro.
searchsalary_from_descriptionNotrueLee los rangos salariales del texto de la oferta cuando una plataforma no publica sueldos estructurados. Ponlo en false para usar solo campos estructurados.
resumepathSí""Ruta a tu archivo de currículum en PDF o Word (DOCX).
resumemust_have_skillsNo[]Términos que reciben el mayor peso en la puntuación.
resumekeywords_weightNo1.0Multiplicador para las coincidencias de habilidades. Los valores más altos recompensan la superposición.
resumesynonymsNo[]Grupos de términos intercambiables. Consulta Sinónimos del currículum.
resumetracksNo[]Un currículum por familia de roles. Consulta Canales de currículum.
resume.tracks[]nameSín/aEtiqueta que aparece en la ficha del informe y en la insignia del canal de currículum.
resume.tracks[]pathSín/aRuta al archivo PDF o DOCX del currículum de ese canal.
resume.tracks[]colorNo#1D4ED8Color de la insignia como código hexadecimal o nombre de color, como navy.
resume.tracks[]route_keywordsNo[]Palabras clave que asignan una oferta a este canal de currículum.
platformsgreenhouseNotrueEjecuta búsquedas en Greenhouse.
platformsashbyNotrueEjecuta búsquedas en Ashby.
platformsleverNotrueEjecuta búsquedas en Lever.
platformsworkableNotrueEjecuta búsquedas en Workable.
platformsaggregatorsNofalseEjecuta feeds gratuitos de agregadores como Remotive y Adzuna.
platformscustomNo[]Dominios adicionales del sistema de seguimiento de candidatos (ATS). Cada entrada toma name, domain y enabled.
sourcesjobspy.linkedinNotrueConsulta LinkedIn a través de python-jobspy.
sourcesjobspy.indeedNotrueConsulta Indeed a través de python-jobspy.
sourcesjobspy.glassdoorNotrueConsulta Glassdoor a través de python-jobspy.
sourcesjobspy.zip_recruiterNotrueConsulta ZipRecruiter a través de python-jobspy.
sourcesgreenhouse.enabledNotrueActiva o desactiva la fuente Greenhouse.
sourcesgreenhouse.boardsNo[]Tokens de las plataformas de Greenhouse. Si está vacío, recurre a data/sources/greenhouse_boards.txt.
sourcesashby.enabledNotrueActiva o desactiva la fuente Ashby.
sourcesashby.orgsNo[]Slugs de organización de Ashby. Si está vacío, recurre a data/sources/ashby_orgs.txt.
sourceslever.enabledNotrueActiva o desactiva la fuente Lever.
sourceslever.companiesNo[]Tokens de empresa de Lever. Si está vacío, recurre a data/sources/lever_companies.txt.
sourcesworkable.enabledNotrueActiva o desactiva la fuente Workable.
sourcesworkable.slugsNo[]Slugs de cuenta de Workable. Si está vacío, recurre a data/sources/workable_slugs.txt.
sourcesbuiltinnyc.enabledNotrueActiva o desactiva la fuente Built In NYC.
sourcesbuiltinnyc.categoriesNo[]Rutas de categoría de Built In NYC, como jobs/legal. Si está vacío, recurre a data/sources/builtin_categories.txt.
sourcesbuiltinnyc.detail_pagesNofalseLee el texto completo de cada oferta desde su página de detalles. Built In bloquea esas páginas con un desafío (captcha) después de algunas peticiones, por lo que Sweepy las obtiene de una en una y se detiene al primer desafío. El listado sigue proporcionando empresa, ubicación y salario.
sourcesenabledNo["jobspy", "ats"]Motores a ejecutar. Añade hirehunt, openroles, jobdrop o apify después de instalar cada uno. Consulta Fuentes y plataformas.
sourcesjobspy.sitesNo["linkedin", "indeed", "glassdoor", "zip_recruiter"]Plataformas de JobSpy en forma de lista. Tiene prioridad sobre los booleanos del estilo jobspy.linkedin.
sourcesjobspy.fetch_descriptionsNotrueObtiene el texto completo de la oferta para su puntuación. Establece false para barridos más rápidos con puntuaciones más débiles.
sourcesjobspy.proxiesNo[]Destinos de proxy escritos como user:pass@host:port. Las credenciales del proxy se quedan en tu máquina.
sourcesjobspy.user_agentNonullAgente de usuario (user agent) para las peticiones de JobSpy. Omítelo para usar el valor integrado de Chrome.
cacheenabledNotrueReutiliza los resultados de descubrimiento entre barridos.
cachettl_secondsNo3600Segundos que Sweepy reutiliza un resultado en caché.
cachepathNonullUbicación de la base de datos de la caché. null usa ~/.sweepy/cache.db y SWEEPY_CACHE_PATH anula ambos.
historyenabledNotrueOculta las ofertas que ya se reportaron en barridos anteriores.
historyretention_daysNo4Días que Sweepy oculta una oferta reportada antes de que pueda volver a aparecer.
historymatchNo"url+role"url solo coincide con una dirección de oferta idéntica. url+role también coincide con el mismo título, empresa y ubicación en otra plataforma.
historypathNonullUbicación de la base de datos del historial. null usa ~/.sweepy/history.db y SWEEPY_HISTORY_PATH anula ambos.
orchestratortimeout_per_source_secondsNo180Segundos que puede ejecutarse una fuente antes de que Sweepy la detenga.
orchestratorcircuit_breaker.failure_thresholdNo5Fallos consecutivos antes de que Sweepy se salte esa fuente.
orchestratorcircuit_breaker.cooldown_secondsNo30Segundos que Sweepy espera antes de reintentar una fuente omitida.
reportstyleNo"cards"Diseño del informe: cards o legacy.
reportcards_per_pageNo6Fichas colocadas en cada página del PDF.
reportmax_cardsNo24Número máximo de fichas. 0 o menos muestra todas las coincidencias.
reportdestinationsNo[]Carpetas adicionales que reciben una copia de los archivos PDF y PNG.
reportassessmentNo"agent"agent bloquea un informe mientras alguna ficha solo tenga solapamiento de palabras clave. keyword permite informes sin los juicios del agente.
exportformatNo"pdf,csv"Cualquier combinación de pdf, csv, json y png, separada por comas.
exportoutput_dirNo"results"Carpeta para los archivos de tus informes. Sweepy la crea si no existe.
exporttrackingNotrueAñade las columnas de seguimiento de candidaturas al CSV: date_applied, status, interview_stage, offer_amount, offer_date, follow_up_date, contact y notes. Sweepy conserva los valores que escribes en los siguientes barridos del mismo perfil. Configura false para obtener solo los datos sin procesar.
exportdescription_charsNo1000Caracteres del texto de la oferta que se guardan en el CSV y el JSON. Sweepy corta en el límite de una frase. 0 guarda la oferta completa.
consejo

En Fuentes y plataformas encontrarás el detalle sobre las fuentes y el soporte de plataformas. Las reglas de activación de esa página explican cómo funcionan juntos platforms.* y sources.*. Los bloques opcionales hirehunt, openroles, jobdrop y apify también viven bajo sources, y la referencia de comandos enumera las banderas que definen sus claves.

Canales de currículum​

Un canal es un currículum con nombre. Usa canales cuando busques dos puestos o títulos distintos y quieras puntuar cada oferta con el documento correcto.

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"]

Cada entrada usa cuatro campos:

  • name etiqueta el canal. La ficha del informe muestra esta etiqueta, así que escribe una o dos palabras.
  • path apunta al currículum en PDF o DOCX de ese canal.
  • color define el color de la insignia. Usa un código hexadecimal como #1D4ED8 o un nombre de color como navy.
  • route_keywords deciden a qué canal asigna Sweepy cada oferta.

Sweepy enruta cada oferta según el solapamiento de palabras clave. Cuenta las coincidencias de palabras completas entre el título y la descripción de la oferta y los route_keywords de cada canal. Sweepy asigna la oferta al canal con el recuento más alto. Si dos canales empatan, Sweepy usa el primero de tu lista.

consejo

Los route_keywords envían una oferta a un currículum y nunca cambian el porcentaje de compatibilidad. Añade las frases que cada familia de puestos usa realmente en sus ofertas.

Si omites tracks, Sweepy usa resume.path como un único canal implícito.

Sinónimos del currículum​

resume.synonyms contiene grupos de palabras que significan lo mismo. Sweepy trata cada palabra de un grupo como equivalente a las demás. Así, la coincidencia funciona en ambos sentidos. Consulta Incorporación de términos específicos del sector para ver la lista de comprobación de formato completa.

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 grupo necesita al menos dos términos o Sweepy lo ignora. La coincidencia ignora las mayúsculas y admite las formas regulares en singular y plural. El motor sigue comparando frases completas, así que incluye legal research y legal researcher como términos separados si quieres que ambos cuenten.

Alex escribe e-discovery en un currículum. Una oferta que dice electronic discovery ahora coincide, porque ambos términos pertenecen al mismo grupo.

consejo

Añade un grupo cada vez que detectes la misma omisión dos veces. Copia el texto exacto de la oferta en el grupo, junto a tu propio término.

Errores de formato habituales​

La mayoría de los perfiles que fallan se deben a un par de errores habituales.

Las rutas de Windows necesitan barras inclinadas o barras invertidas dobles. YAML interpreta una barra invertida como carácter de escape. Una ruta como C:\Users\Alex rompe el archivo.

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
precaución

Una sola barra invertida suelta en una ruta impide que Sweepy lea tu perfil. El asistente de configuración escribe barras inclinadas por ti, así que copia ese estilo cuando edites a mano.

Los comentarios empiezan por #. Sweepy ignora todo lo que sigue a un # en esa línea. Usa comentarios para anotar por qué importa un valor, como hace el perfil de ejemplo.

La indentación define la estructura. Indenta cada nivel con dos espacios. Una sola tabulación en cualquier parte del archivo rompe YAML.