Stiven Ruiz
← Todos los proyectos
Automatización e IAEn desarrolloProyecto de GG Forge

Asistente de búsqueda de empleo con aprobación humana

Un asistente que encuentra ofertas que encajan con tu perfil y prepara las postulaciones, pero la última palabra es siempre tuya: nada se envía sin que lo revises y apruebes.Plataforma multi-app en TypeScript (NestJS + Playwright, Expo/React Native, Tauri y un backend cloud en Railway) que asiste la búsqueda, el filtrado y la preparación de postulaciones con IA multiproveedor, con revisión humana obligatoria antes de cada envío.

El problema

Buscar empleo implica revisar decenas de ofertas en varios portales y responder una y otra vez las mismas preguntas en cada formulario. Es repetitivo, consume horas y es fácil postularse a vacantes que no encajan con tu perfil.Cada portal (LinkedIn, Computrabajo, Magneto, Get on Board) tiene su propio flujo, formato y API no documentada, y sus formularios mezclan texto libre, listas, opciones y autocompletados. Automatizarlo exige manejar sesiones reales de forma segura, no inventar respuestas y no poner en riesgo la cuenta del usuario.

La solución

El asistente busca ofertas según tus preferencias, descarta las que no encajan (idioma, modalidad, tecnologías, salario) y prepara cada postulación con una base de respuestas que aprende de ti. Cuando no sabe algo te lo pregunta en vez de inventarlo, y se detiene antes de enviar para que revises y apruebes. Funciona como app de escritorio y desde el celular puedes revisar y aprobar.Un backend NestJS local (SQLite/TypeORM con migraciones) orquesta adaptadores por plataforma: automatización de navegador con Playwright para LinkedIn, HTTP + parseo HTML para Computrabajo y consumo de APIs JSON para Magneto y Get on Board. Un resolvedor de autocompletado en tres capas (coincidencia exacta, emparejamiento semántico e IA redactora limitada al perfil real) usa una cadena de fallback entre 7 proveedores de IA más un modelo de clasificación tipada vía AI Gateway; las decisiones críticas las toma código determinista, no el modelo. Tauri v2 empaqueta frontend y backend como instalador de escritorio, y un servicio cloud NestJS + PostgreSQL en Railway aporta cuentas (Auth0), suscripción (Paddle), sincronización last-write-wins y una cola de comandos cifrada para el control remoto.

El resultado

El usuario pasa de llenar formularios a mano a revisar y aprobar postulaciones ya preparadas, desde el PC o el celular, con filtros que evitan perder tiempo en vacantes que no encajan y protecciones que reducen el riesgo de bloqueos en los portales.Monorepo con 4 aplicaciones (backend local, app Expo web/Android, envoltorio Tauri para Windows y Linux, API cloud) y unas 42 mil líneas de TypeScript de producción; alrededor de 2.570 casos de prueba en 168 archivos (Vitest) y 4 workflows de GitHub Actions (lint, typecheck, unitarias, e2e, integración contra Postgres efímero, APK firmado y paquete .deb). 429 commits y 26 PRs en dos semanas, con specs y planes de diseño por funcionalidad.

Lo más destacado

  • Construyó solo un producto completo que funciona en escritorio (Windows y Linux), web y Android, con un servicio en la nube para cuentas y suscripciones.Cuatro aplicaciones coordinadas en un monorepo: NestJS local empaquetado como sidecar en Tauri v2 (Rust), Expo Router/React Native Paper para web y Android, y una API NestJS + PostgreSQL desplegada en Railway con migraciones versionadas.
  • Usa inteligencia artificial de forma responsable: nunca inventa habilidades que el usuario no tiene y siempre pide confirmación antes de enviar una postulación real.Autocompletado en tres capas con fallback entre 7 proveedores de IA ordenables por el usuario, clasificación tipada (sí/no, elegir opción) sobre claves que define el código, mitigación de prompt injection en el emparejamiento de respuestas y un freno de envío automático bloqueado hasta la primera revisión humana.
  • El celular funciona como control remoto del PC: puedes iniciar búsquedas, ver el progreso en vivo y aprobar postulaciones, incluso si el PC se conecta más tarde.Sincronización last-write-wins por registro con lápidas y cursor de secuencia, canal WebSocket con handshake autenticado, espejo del estado del PC principal y cola de comandos cifrada (AES-GCM) con toma atómica, expiración y ejecución exactamente una vez mediante un registro local.
  • Cuida la seguridad de las cuentas y los datos del usuario: las credenciales se guardan en el almacén seguro del sistema operativo y la app se detiene sola si un portal muestra señales de sospecha.Secretos en el llavero del SO (troceados para superar el límite de Windows), API local solo por loopback con token Bearer, login OAuth con PKCE y guard RS256, webhooks de Paddle con HMAC sobre el cuerpo crudo y deduplicación, CSP estricta, helmet y rate limiting; topes diarios por plataforma y detención ante 429/403, sesión vencida o texto de sospecha.
  • Trabaja con estándares profesionales de calidad: miles de pruebas automáticas y revisiones en cada entrega.Cerca de 2.570 casos de prueba (unitarias, e2e e integración con Postgres real en CI), typecheck y lint en CI, flujo de PRs con rondas de revisión documentadas, y documentos de diseño y plan de implementación por cada funcionalidad.

Mi rol

Diseño y desarrollo end-to-end: producto, arquitectura, backend local y en la nube, app móvil/web, empaquetado de escritorio, CI/CD, despliegue y documentación.

Habilidades que demuestra

Stack

  • Diseño de producto y UX
  • Desarrollo full stack
  • Automatización de procesos
  • Integración de APIs de terceros
  • Inteligencia artificial aplicada (LLMs)
  • Automatización de navegador
  • Desarrollo de apps móviles y de escritorio
  • Arquitectura de sistemas distribuidos y sincronización
  • Seguridad de aplicaciones y manejo de credenciales
  • Autenticación y pagos (OAuth, suscripciones)
  • Pruebas automatizadas
  • CI/CD y despliegue en la nube
  • Documentación técnica
  • TypeScript
  • Node.js
  • NestJS
  • TypeORM
  • SQLite
  • PostgreSQL
  • Playwright
  • Cheerio
  • React Native
  • Expo
  • Expo Router
  • React Native Paper
  • Zustand
  • i18next
  • Tauri v2
  • Rust
  • WebSocket
  • Auth0 (OAuth 2.0 + PKCE)
  • Paddle
  • Vercel AI SDK / AI Gateway
  • APIs de LLM (OpenAI-compatible, Anthropic, Gemini, Groq, Mistral y otros)
  • Zod
  • Vitest
  • GitHub Actions
  • Railway
  • Docker

Actividad

27 días trabajados en el último año · Activo hace 2 días

Pasa el mouse por un día para ver en qué se trabajó esa semana.

Cómo ha avanzado

  1. Semana del lun, 28 sept 2026Más portales y más control: integración con Get on Board, lista de ofertas para postular a mano, filtro por títulos de cargo deseados, botón "Ya apliqué" y un análisis más robusto de las ofertas de Computrabajo.
  2. Semana del lun, 21 sept 2026Salto a producto: servicio en la nube con cuentas de usuario y suscripción Pro, integración con Magneto, sincronización entre equipos en tiempo real, control remoto desde una app Android, búsquedas programadas y versión para Linux. Además, preguntas que dependen de cada oferta, protecciones para no poner en riesgo las cuentas (límites diarios y pausas) y filtros por tipo de oferta, palabras y salario.
  3. Semana del lun, 14 sept 2026Diseño del producto y primera versión funcional: encuentra ofertas en LinkedIn y prepara las postulaciones con IA y con las respuestas guardadas del usuario, preguntando cuando no sabe algo. Se añadió la revisión obligatoria antes de enviar, el guardado seguro de credenciales, la app de escritorio para Windows, un rediseño completo de la interfaz y la búsqueda en Computrabajo.