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
| Outcome | Detail |
|---|
| Menor huella de datos | Solo lo que el producto necesita para scorear y versionar; no el archivo original |
| Free tier justo | Uso medido, más reuso cuando nada del CV ha cambiado |
| Core responsive | Inferencia lenta aislada del request path |
| Acceso que puede evolucionar | Capacidades en vez de branches de plan ad hoc |
| Operación más segura | Telemetrí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).