TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
Computrabajo, Bumeran, LinkedIn, Indeed에서 인턴·첫 직장 공고 찾기
Encuentra vacantes de prácticas y primer empleo en Computrabajo, Bumeran, LinkedIn e Indeed. En Computrabajo, Chamba Lista llena la postulación con tu CV y tus datos: hasta quince por tanda, y tú das
생산성JavaScript · PythonGitHub @aliceromer8-hue온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Encuentra vacantes de prácticas y primer empleo en Computrabajo, Bumeran, LinkedIn e Indeed. En Computrabajo, Chamba Lista llena la postulación con tu CV y tus datos: hasta quince por tanda, y tú das el último clic.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Chamba Lista — plataforma de empleo con CV Harvard Plataforma web para que cualquier persona (no solo tú con el plugin 💅) pueda:README 전문 보기 ↗
Plataforma web para que cualquier persona (no solo tú con el plugin 💅) pueda:
| Modo | Cómo se activa | Qué hace |
|---|---|---|
| Simulado (por defecto) | python app.py | Vacantes de ejemplo de mock_jobs.py, con banner de aviso. Sirve para probar el wizard sin tocar el portal. |
| Real | MODO_REAL=1 python app.py | Búsqueda y postulación reales en Computrabajo vía navegador local. |
| Fase | Portal | Estado |
|---|---|---|
| 1 | Computrabajo | Conectado — búsqueda real y preparación de postulación |
| 2 | Bumeran | Pendiente |
| 3 | Indeed | Pendiente |
| 4 | Pendiente (el más restrictivo) |
pip install -r requirements.txt
python -m playwright install chromium
Modo simulado:
python app.py
Modo real (Computrabajo):
MODO_REAL=1 python app.py
El navegador corre en la máquina de la persona, no en un servidor, con un perfil persistente en perfil_navegador/. Eso resuelve el problema de la sesión: la persona inicia sesión una vez en esa ventana y las cookies se quedan en su propio equipo. La plataforma nunca ve, pide ni guarda su contraseña — solo consulta si la sesión quedó abierta.
En el paso 4 aparecen dos botones: Abrir Computrabajo (lanza el navegador en la pantalla de acceso) y Verificar mi sesión (comprueba si ya entró).
La postulación va en dos tiempos, a propósito:
Muchas vacantes añaden preguntas abiertas propias ("¿qué estudias y dónde?", "¿tienes disponibilidad para ir a La Molina?"). El conector las detecta y redacta una respuesta, no vuelca el CV en crudo. La redacción vive en respuestas.py.
La diferencia importa: a "¿Actualmente estudias Marketing? Menciona cuál y en qué universidad" no se contesta pegando la sección de educación, se contesta con una frase.
| Tipo de pregunta | Qué hace la plataforma |
|---|---|
| Estudios | Extrae carrera, casa de estudios y ciclo → "Sí, actualmente estudio Marketing en la USIL, cursando el ciclo 11." |
| Herramientas | Cruza las que pide el anuncio con las que el CV declara, con nivel si lo dice → "De las herramientas que mencionan, manejo Photoshop, Illustrator y Premiere Pro. Además trabajo con Meta Ads, Excel (avanzado)…" |
| Distrito + celular | El celular sale del CV; el distrito se pregunta, no se inventa → "Resido en Surco, mi celular de contacto es …" |
| Disponibilidad, horarios, viajar | Se le pregunta con opciones concretas y se redacta según lo que elija |
| Aceptar condiciones, ad honorem | Se le explica qué está aceptando (con aviso de que es sin pago) y decide ella |
Los campos que la persona respondió siguen visibles para poder corregirlos, y sus ediciones manuales sobreviven a las recomposiciones. Nada se escribe en el portal hasta que pulsa "Escribir respuestas en el formulario", y se envía exactamente el texto que dejó.
redactor_ia.py)Cada vacante inventa sus propias preguntas ("confírmanos tu usuario de TikTok", "¿por qué te interesa el puesto?") y no hay reglas que las cubran todas. Por eso la redacción se delega a un modelo cuando hay uno configurado. Sin modelo la plataforma sigue funcionando con las reglas de respuestas.py, pero las preguntas poco comunes quedan vacías — la interfaz lo avisa.
Tres opciones gratuitas, se detecta automáticamente la que esté disponible:
| Opción | Cómo se activa | Privacidad |
|---|---|---|
| Ollama (local) | Instalar de ollama.com, luego ollama pull llama3.2 | El CV nunca sale de la máquina |
| Gemini | GEMINI_API_KEY=... — clave gratis en aistudio.google.com | El CV se envía a Google |
| Groq | GROQ_API_KEY=... — clave gratis en console.groq.com | El CV se envía a Groq |
En PowerShell (&& y VAR=valor python son sintaxis de bash y no funcionan ahí):
$env:GEMINI_API_KEY = "tu-clave"
$env:MODO_REAL = "1"
python app.py
Notas sobre Gemini que costaron un rato de depuración:
gemini-flash-latest. Pedir gemini-2.0-flash por su nombre exacto devuelve 429 · limit: 0 con claves nuevas, aunque el alias latest sí tenga cuota gratuita.maxOutputTokens está en 2000 a propósito: estos modelos razonan antes de responder y ese razonamiento sale del mismo presupuesto. Con un tope bajo se agota pensando y devuelve texto truncado o vacío.thought: son el razonamiento, no la respuesta.CERTIFICATE_VERIFY_FAILED: Basic Constraints of CA cert not marked critical. Por eso se usa truststore, que delega la verificación al almacén de Windows. No se desactiva la verificación — el CV viaja por esa conexión.Ollama es la única consistente con la promesa de privacidad del proyecto (nada sale del equipo). Las otras dos son más fáciles de arrancar pero mandan el CV a un tercero, que es algo a decidir conscientemente si la plataforma se abre a más gente.
Lo que el modelo nunca decide. Las preguntas de disponibilidad y de aceptación de condiciones se resuelven antes de llamarlo y no se le envían: las responde la persona con botones. Verificado con una prueba que cuenta las llamadas al modelo para esas preguntas (deben ser cero).
Lo que el modelo no puede inventar. Las instrucciones le prohíben usar datos que no estén en el CV. Cuando falta algo, debe responder FALTA_DATO: <qué falta>, y la plataforma convierte eso en un campo para que la persona lo escriba.
computrabajo.py tiene un WorkerNavegador: un hilo dedicado que es dueño del navegador y recibe órdenes por una cola.SELECTORES (verificados contra el sitio real el 2026-07-29). Si Computrabajo cambia su maquetación, ese es el único sitio que hay que tocar.empleo-plataforma/
├── app.py # backend Flask con todos los endpoints
├── cv_parser.py # extracción de texto + parseo heurístico del CV
├── harvard_template.py # generador del .docx en formato Harvard
├── computrabajo.py # conector real (Playwright) + worker de navegador
├── respuestas.py # redacción de las preguntas de selección desde el CV
├── redactor_ia.py # redacción con modelo (Ollama / Gemini / Groq), opcional
├── lote.py # postulación en lote: modo revisado y modo automático
├── mock_jobs.py # vacantes de ejemplo + taxonomía de áreas y términos
├── requirements.txt
├── templates/index.html # wizard de 5 pasos
├── static/css/style.css
├── static/js/app.js
├── uploads/ # CVs subidos (se borran tras procesarlos)
├── generados/ # CVs Harvard generados, listos para descargar
├── perfil_navegador/ # perfil de Chromium con la sesión (solo modo real)
└── postulaciones.json # tracker (se crea con la primera postulación)
harvard_template.py no reproduce un "formato Harvard" genérico: está calcado del CV que usa el plugin (CV ALICE ROMERO 2026.docx), medido directamente del XML del Word:
| Elemento | Valor |
|---|---|
| Tipografía | Times New Roman (de los docDefaults, no del tema) |
| Márgenes | 1.91 cm en los cuatro lados |
| Nombre | 18 pt, negrita, centrado |
| Línea de contacto | 9.5 pt, centrada, separada por · |
| Títulos de sección | 11 pt, negrita, MAYÚSCULAS, sin línea divisoria |
| Entradas | 10.5 pt, dos líneas con tabulación derecha a 9026 twips (6.27") |
| Viñetas | estilo List Paragraph, sangría 0.63 cm |
Lo de "sin línea divisoria" es deliberado y va contra lo que suele asociarse al formato Harvard: el CV original no la lleva, y la fidelidad manda. Verificado que el .docx generado tiene 0 párrafos con borde.
La tabulación derecha es lo que produce el encabezado de dos columnas característico:
USIL – Market Research Group (GRIM) Lima, PE ← negrita
Practicante de Investigación de Mercados Dic 2022 – Ago 2023 ← cursiva
• Diseñé y ejecuté más de 6 estudios de comportamiento del consumidor…
Al procesar el CV original, el generado sale con 23 párrafos con tabulación — exactamente los mismos que el original.
PERFIL PROFESIONAL · COMPETENCIAS CLAVE · EXPERIENCIA PROFESIONAL · LIDERAZGO & VOLUNTARIADO · EDUCACIÓN · CERTIFICACIONES RELEVANTES · PROYECTO EN DESARROLLO · LOGROS DESTACADOS
En COMPETENCIAS CLAVE y PROYECTO EN DESARROLLO, solo la etiqueta anterior a los dos puntos va en negrita («Análisis & Herramientas: SPSS · Power BI…»), igual que el original.
Para poder alinear el lugar y las fechas a la derecha, el perfil guarda entradas, no líneas sueltas:
{"organizacion": "Zero West Street", "lugar": "Lima, PE (Remoto)",
"cargo": "Social Media Marketing Manager (Freelance)",
"fechas": "Jul 2024 – Dic 2024", "logros": ["Lideré el lanzamiento…"]}
normalizar() acepta también el modelo plano antiguo, y a_secciones_planas() produce la vista plana que necesita el código que redacta las respuestas del formulario. El análisis con IA extrae directamente esta estructura y separa el trabajo remunerado (experiencia) del voluntariado (liderazgo).
lote.py)Dos modalidades, ambas con un tope de 15 vacantes por tanda para que un fallo no acabe escribiendo a decenas de empresas.
Modo revisado (por defecto). Prepara todo —CV adaptado por vacante, respuestas redactadas, formulario llenado— y se detiene. La persona ve el plan completo con una casilla por vacante y envía las que marque.
Modo automático. Envía sin revisar cada una. Detrás de un consentimiento informado: cuatro casillas que describen un riesgo concreto cada una (es irreversible, no vas a revisar, las respuestas las redacta una IA y pueden tener errores, eres responsable del contenido). El backend exige los cuatro valores en True booleano — verificado que "true" como cadena no pasa.
Lo que el modo automático sigue sin hacer, y es deliberado:
Entre vacante y vacante hay una pausa de 2 segundos: evita topar el límite por minuto de la capa gratuita de la IA y no golpea el portal a ritmo de robot.
POST /api/cv/adaptar reordena y reenfoca el CV hacia una vacante concreta: reescribe el resumen orientado al puesto, sube lo relevante al inicio y usa las palabras del anuncio donde el CV ya las respalda. Devuelve además la lista de cambios para que la persona vea qué se movió y por qué.
Las instrucciones del modelo prohíben inventar: no puede añadir herramientas, logros, empresas, cifras ni títulos que no estén en el CV, y si la vacante pide algo que la persona no tiene, no lo menciona. Cada CV adaptado se guarda con el nombre de la empresa y el puesto, así que no se sobrescriben y queda historial.
Tras generar el CV, POST /api/cv/preview devuelve el mismo contenido en HTML con el formato Harvard (Times New Roman, nombre centrado, secciones en mayúsculas con línea) para revisarlo sin abrir el Word. El paso 3 no avanza hasta que la persona confirma que está bien.