Volver a proyectos
CASO DE ESTUDIO

Profila

Un producto de scoring de CVs que trata el currículum como dato sensible: medición honesta, mejora en la app y disciplina de producción en privacidad, acceso e inferencia lenta.

Next.jsRailsTypeScriptPostgreSQLRedisSidekiqDockerCloudflare

Overview

Profila ayuda a candidatos a medir un CV, elegir mejoras, editar en el lugar y conservar una copia de trabajo versionada — con un job board simple para la búsqueda alrededor.

Lo diseñé, construí y opero como un producto completo: cuentas, scoring, política y producción. El loop público es corto — conoce el score, luego súbelo — pero el sistema está construido como algo a lo que se le puede confiar un currículum, no como un demo envuelto alrededor de un modelo.

El score es nuestro medidor, no el de un empleador. Esa restricción moldeó el producto tanto como la arquitectura.


The Challenge

Un producto de CV falla de formas que una app CRUD típica no falla:

  • Los currículums son sensibles; guardar los archivos originales es un pasivo, no una feature
  • La inferencia es lenta y contendida: si vive en el request path, el resto del producto espera con ella
  • Un free tier sin límites se abusa; un free tier sin un modelo de acceso real es un rewrite después
  • El copy de “ATS score” es fácil de shippear y difícil de defender
  • Auth, telemetría y disciplina de release siguen teniendo que estar cuando el equipo es pequeño

Hacía falta un producto de scoring en el que se pueda confiar: un modelo de cuenta real, un free tier justo y un pipeline de análisis que no tumbe la app.


The Solution

Traté la política y la privacidad como parte de la arquitectura, no como trabajo posterior:

  • Separación clara de producto: la interfaz se queda presentacional; scoring, identidad, límites y jobs viven detrás de la API
  • Ingestión con privacidad primero: derivar lo que el análisis necesita, no retener uploads originales y mantener las superficies privilegiadas libres de cuerpos de CV
  • Análisis asíncrono: validar al frente y luego encolar el trabajo lento para que el path interactivo se quede responsive
  • Capacidades, no checks de plan dispersos: el mismo modelo de acceso cubre free, paid y roles internos — incluso un launch con billing apagado
  • Uso justo: rate limits en auth, un free tier medido y reuso cuando el candidato mide el mismo CV otra vez
  • Launch honesto: feature flags para shippear un loop enfocado sin fingir que paths comerciales no usados están vivos
  • Observabilidad sin filtrado: analytics de producto y error tracking que no necesitan el contenido del CV para ser útiles

La inferencia se queda fuera del hot path. El producto puede mejorar el modelo después sin reescribir cómo la gente entra, se limita o recibe un resultado.


Key Technical Features

  • Sesiones server-side, confirmación antes de acciones privilegiadas e invalidación de sesión al cambiar credenciales
  • Controles separados para abuso de autenticación y uso diario de análisis: un run fallido no quema un slot free
  • Jobs en background con retries y progreso que la UI puede mostrar, sin guardar archivos originales en el pipeline
  • Revisiones inmutables de CV (restaurar sin duplicar) y un job board con pipeline fijo
  • Validación de upload, redacción de logs para campos sensibles y herramientas de admin que listan cuentas, no documentos
  • Producción containerizada en el edge, con tests automatizados y security scanning rumbo al release

Impact

Profila

  • Shippeado como producto — vivo en profila.dev, con un loop completo medir → elegir → editar → guardar
  • Los datos sensibles quedan acotados — no se conservan archivos originales; los paths de soporte y error están diseñados para no mostrar texto de CV
  • El producto se queda interactivo durante el análisis — el scoring es un job, no un request bloqueado
  • La política se codifica una vez — launch sin billing, espacio para paid y admin, preview de resultados free en vez de esconder el producto
  • Scoring honesto — estructura, lenguaje de impacto y longitud; no un ranking falso contra el ATS de un empleador

What that bought

OutcomeDetail
Menor huella de datosSolo lo que el producto necesita para scorear y versionar; no el archivo original
Free tier justoUso medido, más reuso cuando nada del CV ha cambiado
Core responsiveInferencia lenta aislada del request path
Acceso que puede evolucionarCapacidades en vez de branches de plan ad hoc
Operación más seguraTelemetría y admin sin contenidos de CV en el blast radius

Profila convirtió “sube un CV, llama a un modelo” en un producto con defaults de privacidad, política enforceable y una historia de operaciones que de verdad se puede correr.


Takeaway

Este es el tipo de trabajo de producto que me importa: sistemas en los que la gente puede confiar — datos sensibles tratados a propósito, acceso modelado como política, trabajo lento fuera del path interactivo, y un launch honesto sobre lo que el score es (y no es).

¿Te interesa? ¿Tienes alguna pregunta?

Abierto a colaboración de ingeniería y roles donde el diseño de sistemas y la calidad de entrega importan.

Contactar