importar-cvs
Skill0 starsChanged 2 months agoMITView on GitHub
Lee los CVs que la persona dejó en curriculums/ (y el PDF de su LinkedIn, si lo agregó), extrae cada afirmación con su procedencia hacia datos/hechos.yaml y marca las contradicciones entre versiones para resolverlas con ella. Úsalo la primera vez, o cada vez que llegue un CV nuevo.
The file
Files
Importar CVs a la fuente de verdad
El objetivo no es escribir un CV nuevo: es construir datos/hechos.yaml, la única
fuente de verdad. Los CVs que la persona subió son material de origen: se leen, no
se corrigen ni se borran.
0. Preparar
- Si no existe
datos/hechos.yaml:python scripts/iniciar.py. - Lista lo que hay en
curriculums/(incluidas subcarpetas). - DOCX, TXT y MD:
python scripts/extraer.pyy lee los.txtque deja ensalidas/texto/. Fíjate en la línea[ENCABEZADO / PIE DE PÁGINA]: contacto ahí es un problema de formato que hay que avisar. - PDF: léelo directo con Read (con
pagessi tiene más de 10 páginas). Si sale vacío o como imagen, es un escaneo: avisa que un ATS tampoco lo va a poder leer. - Si hay PDF del perfil de LinkedIn o de sus aptitudes, es una fuente más
(
linkedin-pdf). Las aptitudes van además adatos/linkedin-aptitudes.yaml. - Si
hechos.yamlya tiene datos (segunda pasada), no lo rehagas: registra la fuente nueva y compárala contra lo que ya está.
1. Un código por fuente
Registra cada documento en meta.fuentes:
meta:
fuentes:
cv-2023: {archivo: "CV 2023.pdf", fecha: 2023-11}
cv-ia: {archivo: "CV mejorado.pdf", fecha: 2026-03, nota: "reescrito con un chatbot"}Pregunta la fecha aproximada de cada CV si no se deduce, y si alguno fue reescrito con IA o por otra persona: esas versiones son las que más inflan. La fecha sirve para ordenar, no para decidir quién tiene razón.
2. Extraer sin mejorar
- Copia cada afirmación tal como está. No mejores la redacción, no agregues cifras, no completes logros. Reformular viene después, y solo si la persona quiere.
- Cada entrada lleva
fuentes: [...]con todos los códigos donde aparece, yestado: por_confirmar. Nada entra comoconfirmadosin que la persona lo diga: que tres CVs coincidan no lo prueba, porque los CVs se copian entre sí. - La misma afirmación en varios CVs con distinta redacción es una entrada con varias fuentes. Si difieren en sustancia (una cifra, un alcance, una tecnología), es conflicto.
- Habilidades:
cobertura= en cuántos CVs aparece. Si solo está en LinkedIn o en el temario de un curso,cobertura: 0. - Fechas como
AAAA-MM. Cargo vigente:fin: actualidad. Si no se sabe,null: el CV lo va a omitir, y eso es lo correcto. - Educación: registra
titulo_profesional: true|false. Si no está claro, pregúntalo: grado vs título es de las confusiones más caras.
Formato de cada sección: docs/esquema-hechos.md. Ejemplo completo: ejemplo/hechos.yaml.
3. Detectar contradicciones
Compara campo por campo entre fuentes. Lo típico:
| Qué | Ejemplo |
| Fechas distintas para el mismo cargo | agosto en un CV, septiembre en otro |
| El mismo logro con distinto peso técnico | "dashboard en Power BI" vs "microservicios de visualización" |
| Una cifra que cambia | "~40 sucursales" vs "más de 60" |
| Grado presentado como título | "Licenciada en Ciencias de la Ingeniería" vs "Ingeniera Civil Industrial" |
| Formación presentada como certificación | un bootcamp listado como "certificado" |
| Nivel de idioma distinto | "B1" vs "inglés avanzado" |
| El mismo trabajo contado dos veces | como experiencia y otra vez como proyecto |
Cada contradicción es una entrada con estado: conflicto, un texto neutro y los
valores de cada fuente:
- texto: Mantuve el reporte semanal de ventas de las sucursales.
estado: conflicto
valores: {cv-2025: "~40 sucursales", cv-ia: "más de 60 sucursales"}
fuentes: [cv-2025, cv-ia]No elijas tú. Y ausencia no es contradicción: un cargo que falta en un CV puede
ser una omisión deliberada (un empleo de soporte fuera de un CV técnico). Pregunta; si
fue deliberado, se registra como politica_de_uso, no como conflicto.
4. Resolver con la persona
- De a un bloque: identidad → experiencia → educación → certificaciones → habilidades → idiomas. No dispares 20 preguntas juntas.
- Usa
AskUserQuestioncuando los valores en conflicto son acotados. - Al resolver:
estado: confirmado, agregausuarioafuentes,resuelto: AAAA-MM-DDy unanotacorta del porqué. - La versión perdedora no se borra. Queda como entrada aparte con
estado: descartadoymotivo, para que ninguna reescritura futura la reintroduzca. Si era una forma de nombrar algo (un grado, una certificación, un logro inflado), va además aredacciones_prohibidas. - Por cada término técnico avanzado, pregunta: ¿lo puedes defender en una entrevista
técnica? Lo que no, va a
no_defendibles(en minúsculas y sin tildes). Los CVs reescritos con IA suelen agregar patrones que suenan bien y que la persona no puede sostener. - Por cada cifra: ¿de dónde sale? Sin respaldo, se propone redactar sin la cifra y
la versión con cifra queda
descartado. - Proyectos con datasets de tutorial (Iris, Titanic, MNIST): sugiere descartarlos si hay proyectos propios. No distinguen a nadie.
- Si la persona no sabe algo, déjalo
por_confirmary sigue. Un perfil a medias sirve; un interrogatorio abandonado, no. - Escribe a disco a medida que avanzas, no al final.
5. Cerrar
python scripts/validar.pytiene que terminar sin errores. Los avisos, revísalos con la persona.- Audita cada CV viejo contra los hechos ya resueltos:
python scripts/validar.py --cv curriculums/<archivo>. Marca lo que no se puede trazar, lo que repite algo descartado, las redacciones prohibidas y los problemas de formato. Sirve para saber qué versiones hay que dejar de enviar. Es heurístico: revisa cada marca antes de afirmarla. - Resume: cuántas afirmaciones se cargaron, cuántas quedaron confirmadas y cuántas por confirmar, qué conflictos siguen abiertos y qué CVs viejos tienen errores.
- Siguiente paso:
/perfilar(si no se ha hecho) o/cv.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

