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:
copy config.sample.yaml profiles\my_search.yaml
notepad profiles\my_search.yaml
Luego, apunta un barrido a ese archivo:
sweepy --profile profiles/my_search.yaml
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/.
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:
# ─────────────────────────────────────────────────
# 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ón | Clave | Obligatorio | Predeterminado | Descripción |
|---|---|---|---|---|
| Nivel superior | name | No | "Job Seeker" | Tu nombre. Aparece en el encabezado del informe en PDF. |
| Nivel superior | debug | No | false | Ponlo en true para escribir registros de depuración rotativos en logs/. |
search | titles | Sí | [] | Puestos de trabajo que buscas. Sweepy busca todos los títulos a la vez. |
search | location | Sí | "" | Tu mercado, escrito como "Ciudad, Estado". |
search | remote_only | No | false | Ponlo en true para conservar solo los roles remotos. |
search | include_hybrid | No | true | Ponlo en false para descartar los roles híbridos. |
search | min_salary | No | 0 | Salario anual mínimo. 0 desactiva el filtro. |
search | salary_from_description | No | true | Lee los rangos salariales del texto de la oferta cuando una plataforma no publica sueldos estructurados. Ponlo en false para usar solo campos estructurados. |
resume | path | Sí | "" | Ruta a tu archivo de currículum en PDF o Word (DOCX). |
resume | must_have_skills | No | [] | Términos que reciben el mayor peso en la puntuación. |
resume | keywords_weight | No | 1.0 | Multiplicador para las coincidencias de habilidades. Los valores más altos recompensan la superposición. |
resume | synonyms | No | [] | Grupos de términos intercambiables. Consulta Sinónimos del currículum. |
resume | tracks | No | [] | Un currículum por familia de roles. Consulta Canales de currículum. |
resume.tracks[] | name | Sí | n/a | Etiqueta que aparece en la ficha del informe y en la insignia del canal de currículum. |
resume.tracks[] | path | Sí | n/a | Ruta al archivo PDF o DOCX del currículum de ese canal. |
resume.tracks[] | color | No | #1D4ED8 | Color de la insignia como código hexadecimal o nombre de color, como navy. |
resume.tracks[] | route_keywords | No | [] | Palabras clave que asignan una oferta a este canal de currículum. |
platforms | greenhouse | No | true | Ejecuta búsquedas en Greenhouse. |
platforms | ashby | No | true | Ejecuta búsquedas en Ashby. |
platforms | lever | No | true | Ejecuta búsquedas en Lever. |
platforms | workable | No | true | Ejecuta búsquedas en Workable. |
platforms | aggregators | No | false | Ejecuta feeds gratuitos de agregadores como Remotive y Adzuna. |
platforms | custom | No | [] | Dominios adicionales del sistema de seguimiento de candidatos (ATS). Cada entrada toma name, domain y enabled. |
sources | jobspy.linkedin | No | true | Consulta LinkedIn a través de python-jobspy. |
sources | jobspy.indeed | No | true | Consulta Indeed a través de python-jobspy. |
sources | jobspy.glassdoor | No | true | Consulta Glassdoor a través de python-jobspy. |
sources | jobspy.zip_recruiter | No | true | Consulta ZipRecruiter a través de python-jobspy. |
sources | greenhouse.enabled | No | true | Activa o desactiva la fuente Greenhouse. |
sources | greenhouse.boards | No | [] | Tokens de las plataformas de Greenhouse. Si está vacío, recurre a data/sources/greenhouse_boards.txt. |
sources | ashby.enabled | No | true | Activa o desactiva la fuente Ashby. |
sources | ashby.orgs | No | [] | Slugs de organización de Ashby. Si está vacío, recurre a data/sources/ashby_orgs.txt. |
sources | lever.enabled | No | true | Activa o desactiva la fuente Lever. |
sources | lever.companies | No | [] | Tokens de empresa de Lever. Si está vacío, recurre a data/sources/lever_companies.txt. |
sources | workable.enabled | No | true | Activa o desactiva la fuente Workable. |
sources | workable.slugs | No | [] | Slugs de cuenta de Workable. Si está vacío, recurre a data/sources/workable_slugs.txt. |
sources | builtinnyc.enabled | No | true | Activa o desactiva la fuente Built In NYC. |
sources | builtinnyc.categories | No | [] | Rutas de categoría de Built In NYC, como jobs/legal. Si está vacío, recurre a data/sources/builtin_categories.txt. |
sources | builtinnyc.detail_pages | No | false | Lee 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. |
sources | enabled | No | ["jobspy", "ats"] | Motores a ejecutar. Añade hirehunt, openroles, jobdrop o apify después de instalar cada uno. Consulta Fuentes y plataformas. |
sources | jobspy.sites | No | ["linkedin", "indeed", "glassdoor", "zip_recruiter"] | Plataformas de JobSpy en forma de lista. Tiene prioridad sobre los booleanos del estilo jobspy.linkedin. |
sources | jobspy.fetch_descriptions | No | true | Obtiene el texto completo de la oferta para su puntuación. Establece false para barridos más rápidos con puntuaciones más débiles. |
sources | jobspy.proxies | No | [] | Destinos de proxy escritos como user:pass@host:port. Las credenciales del proxy se quedan en tu máquina. |
sources | jobspy.user_agent | No | null | Agente de usuario (user agent) para las peticiones de JobSpy. Omítelo para usar el valor integrado de Chrome. |
cache | enabled | No | true | Reutiliza los resultados de descubrimiento entre barridos. |
cache | ttl_seconds | No | 3600 | Segundos que Sweepy reutiliza un resultado en caché. |
cache | path | No | null | Ubicación de la base de datos de la caché. null usa ~/.sweepy/cache.db y SWEEPY_CACHE_PATH anula ambos. |
history | enabled | No | true | Oculta las ofertas que ya se reportaron en barridos anteriores. |
history | retention_days | No | 4 | Días que Sweepy oculta una oferta reportada antes de que pueda volver a aparecer. |
history | match | No | "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. |
history | path | No | null | Ubicación de la base de datos del historial. null usa ~/.sweepy/history.db y SWEEPY_HISTORY_PATH anula ambos. |
orchestrator | timeout_per_source_seconds | No | 180 | Segundos que puede ejecutarse una fuente antes de que Sweepy la detenga. |
orchestrator | circuit_breaker.failure_threshold | No | 5 | Fallos consecutivos antes de que Sweepy se salte esa fuente. |
orchestrator | circuit_breaker.cooldown_seconds | No | 30 | Segundos que Sweepy espera antes de reintentar una fuente omitida. |
report | style | No | "cards" | Diseño del informe: cards o legacy. |
report | cards_per_page | No | 6 | Fichas colocadas en cada página del PDF. |
report | max_cards | No | 24 | Número máximo de fichas. 0 o menos muestra todas las coincidencias. |
report | destinations | No | [] | Carpetas adicionales que reciben una copia de los archivos PDF y PNG. |
report | assessment | No | "agent" | agent bloquea un informe mientras alguna ficha solo tenga solapamiento de palabras clave. keyword permite informes sin los juicios del agente. |
export | format | No | "pdf,csv" | Cualquier combinación de pdf, csv, json y png, separada por comas. |
export | output_dir | No | "results" | Carpeta para los archivos de tus informes. Sweepy la crea si no existe. |
export | tracking | No | true | Añ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. |
export | description_chars | No | 1000 | Caracteres 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. |
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.
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:
nameetiqueta el canal. La ficha del informe muestra esta etiqueta, así que escribe una o dos palabras.pathapunta al currículum en PDF o DOCX de ese canal.colordefine el color de la insignia. Usa un código hexadecimal como#1D4ED8o un nombre de color comonavy.route_keywordsdeciden 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.
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.
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.
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.
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
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.