SITIO EN MANTENIMIENTO Y EXPANSIÓNV1.0_BETA

Volver al Blog
IALangGraphCarreraAutomatizaciónProductividad

El fin del currículum manual: Construyendo un Agente de Carrera con LangGraph

Por qué los currículums tradicionales deben morir y cómo utilicé IA para crear un sistema que gestiona mi identidad profesional con integridad y precisión.

Los currículums manuales deben morir (y no, no hablo de mentir con IA)

A nadie le gusta escribir currículums. Es una tarea mecánica: repetir lo mismo una y otra vez, haciendo pequeños ajustes para intentar encajar en un sistema automático. Es frustrante y, sobre todo, es una pérdida de tiempo humano.

Por eso construí un Agente de Currículum. Pero lo hice con una regla inquebrantable: la verdad no se negocia.

El problema de la "IA mentirosa"

Muchos temen que la IA invente información para forzar un encaje con la vacante. Mi diseño se enfoca en lo contrario: el agente sabe exactamente cuándo tu experiencia coincide y cuándo no. Si no hay "match", no se inventan datos. El agente no es un creador de ficción; es tu representante más honesto.

El futuro: Relaciones entre iguales

Hoy estamos en transición, pero el futuro es inevitable: nosotros no enviaremos currículums; nuestros agentes —que nos conocen de pies a cabeza— se encargarán del primer "apretón de manos digital". Pasaremos del modelo "patrón-empleado" a una prestación de servicios entre profesionales, donde la tecnología gestiona el ruido y nosotros nos enfocamos en el impacto.


El "Under the Hood": Arquitectura con LangGraph

Para los que quieren saber cómo funciona la maquinaria, aquí explico la orquestación detrás de este co-piloto de aplicaciones. Decidí no usar una cadena simple, sino un grafo con estado para permitir ciclos de revisión.

graph TD
    Start((Job Input)) --> Scraper[node: Scraper]
    Scraper -->|job_description| Parser[node: Parser]
    Parser -->|parsed_job| Match[node: Matching Engine]
    Match -->|gap_analysis & dashboard_md| Tailor[node: Tailors]
    
    Tailor --> Verify{Verification Edge}
    Verify -->|Incomplete / cycle < 2| Tailor
    Verify -->|Complete / Valid| Exporter[node: Exporter]
    
    Exporter -->|tailored_cv.tex| End((Final Output))

    subgraph "External Loading"
        MasterCV[(Master CV)] -. Loaded .-> Match
        MasterCV -. Loaded .-> Tailor
    end

    style Verify fill:#f9f,stroke:#333
    style Exporter fill:#dfd,stroke:#333
    style Scraper fill:#bbf,stroke:#333

¿Por qué LangGraph?

En lugar de un flujo lineal, LangGraph permite construir aplicaciones cíclicas. Esto es vital porque permite que el agente cometa errores, los revise y decida si necesita intentar de nuevo una tarea (un "bucle de autocrítica").

El sistema se divide en cinco nodos principales:

  • Scraper Node (scraper.py): Extrae la información cruda de las URLs de vacantes.
  • Parser Node (parser.py): Utiliza gemini-flash-lite-latest y PydanticOutputParser para transformar texto desordenado en una estructura clara de requisitos (Must-haves vs Nice-to-haves).
  • Matching Engine (matching_engine.py): Compara el CV Maestro contra los requisitos para generar un "Gap Analysis" y un puntaje de compatibilidad.
  • Tailor Node (tailor.py): Optimiza el resumen y los logros del candidato bajo restricciones estrictas de "cero alucinación".
  • PDF Exporter (exporter.py): Generación nativa mediante LaTeX y Jinja2, evitando la inestabilidad de convertir HTML a PDF.

El Bucle de Verificación (Self-Correction)

La potencia del grafo reside en el Conditional Edge. Si el modelo olvida incluir una sección obligatoria, el sistema lo detecta y lo devuelve al nodo anterior:

# Lógica de verificación en el Grafo
def verify_tailored_sections(state: GraphState):
    # Si la sección está incompleta, reintenta (máximo 2 veces)
    if is_incomplete(state) and state["cycle_count"] < 2:
        return "tailor" 
    return "exporter" # Si todo está bien, genera el PDF

Reflexiones Finales

Construir agentes autónomos estables exige un diseño de estado estricto (Pydantic) y motores de inferencia ultra rápidos. Al usar Gemini Flash-Lite, la latencia es mínima, permitiendo que lo que antes tardaba horas de edición manual, ahora se entregue en segundos con total integridad.

¿Estás listo para dejar que un agente gestione tu próxima oportunidad laboral o prefieres mantener el control manual?


Nota del autor: Este post lo escribí usando IA. Sin embargo, ya que lo tengo a la mano, siento que le falta un poco de "vida". Para los siguientes posts voy a modificar cómo lo hago; creo que volveré a un proceso más manual para que no se sienta como algo sin alma. No es flash.