Modo: batch — Procesamiento Masivo de Ofertas
Modo: batch — Procesamiento Masivo de Ofertas
Dos modos de uso: conductor –chrome (navega portales en tiempo real) o standalone (script para URLs ya recolectadas).
Arquitectura
Claude Conductor (claude --chrome --dangerously-skip-permissions)
│
│ Chrome: navega portales (sesiones logueadas)
│ Lee DOM directo — el usuario ve todo en tiempo real
│
├─ Oferta 1: lee JD del DOM + URL
│ └─► claude -p worker → report .md + PDF + tracker-line
│
├─ Oferta 2: click siguiente, lee JD + URL
│ └─► claude -p worker → report .md + PDF + tracker-line
│
└─ Fin: merge tracker-additions → applications.md + resumen
Cada worker es un claude -p hijo con contexto limpio de 200K tokens. El conductor solo orquesta.
Archivos
batch/
batch-input.tsv # URLs (por conductor o manual)
batch-state.tsv # Progreso (auto-generado, gitignored)
batch-runner.sh # Script orquestador standalone
batch-prompt.md # Prompt template para workers
logs/ # Un log por oferta (gitignored)
tracker-additions/ # Líneas de tracker (gitignored)
Modo A: Conductor –chrome
- Leer estado:
batch/batch-state.tsv→ saber qué ya se procesó - Navegar portal: Chrome → URL de búsqueda
- Extraer URLs: Leer DOM de resultados → extraer lista de URLs → append a
batch-input.tsv - Para cada URL pendiente: a. Chrome: click en la oferta → leer JD text del DOM b. Guardar JD a
/tmp/batch-jd-{id}.txtc. Calcular siguiente REPORT_NUM secuencial d. Ejecutar via Bash:claude -p --dangerously-skip-permissions \ --append-system-prompt-file batch/batch-prompt.md \ "Procesa esta oferta. URL: {url}. JD: /tmp/batch-jd-{id}.txt. Report: {num}. ID: {id}"e. Actualizar
batch-state.tsv(completed/failed + score + report_num) f. Log alogs/{report_num}-{id}.logg. Chrome: volver atrás → siguiente oferta - Paginación: Si no hay más ofertas → click “Next” → repetir
- Fin: Merge
tracker-additions/→applications.md+ resumen
Modo B: Script standalone
batch/batch-runner.sh [OPTIONS]
Opciones:
--dry-run— lista pendientes sin ejecutar--retry-failed— solo reintenta fallidas--start-from N— empieza desde ID N--parallel N— N workers en paralelo--max-retries N— intentos por oferta (default: 2)
Formato batch-state.tsv
id url status started_at completed_at report_num score error retries
1 https://... completed 2026-... 2026-... 002 4.2 - 0
2 https://... failed 2026-... 2026-... - - Error msg 1
3 https://... pending - - - - - 0
Resumabilidad
- Si muere → re-ejecutar → lee
batch-state.tsv→ skip completadas - Lock file (
batch-runner.pid) previene ejecución doble - Cada worker es independiente: fallo en oferta #47 no afecta a las demás
Workers (claude -p)
Cada worker recibe batch-prompt.md como system prompt. Es self-contained.
El worker produce:
- Report
.mdenreports/ - PDF en
output/ - Línea de tracker en
batch/tracker-additions/{id}.tsv - JSON de resultado por stdout
Gestión de errores
| Error | Recovery |
|---|---|
| URL inaccesible | Worker falla → conductor marca failed, siguiente |
| JD detrás de login | Conductor intenta leer DOM. Si falla → failed |
| Portal cambia layout | Conductor razona sobre HTML, se adapta |
| Worker crashea | Conductor marca failed, siguiente. Retry con --retry-failed |
| Conductor muere | Re-ejecutar → lee state → skip completadas |
| PDF falla | Report .md se guarda. PDF queda pendiente |
