Perfil Primero nació de una frustración real: el proceso de búsqueda de empleo en Chile está roto. Los candidatos regalan sus datos personales a empresas que no les dicen ni el sueldo. Decidimos invertir el modelo.
El problema que queríamos resolver
En el mercado laboral chileno tradicional, el postulante aplica a ciegas: no sabe el sueldo, no sabe las condiciones, y entrega su CV completo antes de saber si la oferta vale la pena. Las empresas acumulan datos personales sin compromiso real.
Nuestra propuesta: el trabajador publica un perfil anónimo con su renta esperada. Las empresas verificadas lo encuentran y hacen una oferta con cargo, sueldo y modalidad visible. El candidato decide si avanza — y solo entonces revela su identidad.
4 roles
Worker, Empresa, Admin, OMIL
90 días
De idea a producción
0 bugs críticos
En lanzamiento
Stack tecnológico y por qué lo elegimos
La decisión más importante fue Firebase + Next.js con export estático. Sin servidor propio, sin infraestructura que mantener, costo marginal casi cero en etapa early.
- Next.js 15 App Router: Routing limpio, SSG para performance, TypeScript nativo
- Firebase Firestore: Base de datos en tiempo real, sin migración de esquemas
- Cloud Functions v2: Lógica de negocio serverless — pagos, IA, auditoría
- Firebase Hosting: Deploy en segundos, CDN global, SSL automático
- Mercado Pago: El único gateway que funciona bien en Chile para pagos locales
- Groq (Llama 3): Análisis de CVs: extrae habilidades, experiencia y fit cultural
El mayor desafío: seguridad de datos y roles
Con cuatro tipos de usuario (worker, company, admin, omil) y datos privados que nunca deben cruzarse, las reglas de seguridad de Firestore fueron el núcleo del proyecto.
La regla principal: las colecciones sensibles son de solo escritura por Cloud Functions (usando Firebase Admin SDK). El cliente nunca escribe directamente en pagos, invitaciones ni mensajes de chat. Esto elimina una clase entera de vulnerabilidades.
// firestore.rules — colecciones write-locked
match /payments/{id} {
allow read: if request.auth.uid == resource.data.userId;
allow write: if false; // solo Cloud Functions
}
match /invitations/{id} {
allow read: if isParticipant();
allow write: if false; // solo Cloud Functions
}Integrar Mercado Pago sin morir en el intento
Mercado Pago tiene documentación inconsistente y comportamientos distintos entre sandbox y producción. Lo que aprendimos:
- Usa Checkout Pro, no Payment Brick — más estable en móvil
- Valida el webhook con la firma X-Signature, no solo con el payment_id
- Siempre re-consulta el estado del pago vía API después del webhook — no confíes ciegamente en el payload
- El sandbox no simula bien todos los estados — prueba en producción con montos reales desde el día 1
IA para análisis de CVs con Groq
Integramos Groq (Llama 3) para analizar CVs subidos por los postulantes. El modelo extrae habilidades, años de experiencia y genera un resumen profesional anónimo que aparece en el perfil público.
La clave fue el prompt engineering: le dimos al modelo un schema JSON estricto de salida y validamos la respuesta antes de guardarla en Firestore. Tasa de éxito: 97% en producción.
Lo que haríamos diferente
- Empezar con tests de reglas Firestore desde el día 1 — no en la semana 8
- Separar Cloud Functions en módulos desde el inicio — un archivo de 2.000 líneas es técnicamente correcto pero mentalmente agotador
- Implementar analytics desde el lanzamiento — las primeras semanas sin datos de comportamiento son un punto ciego
¿Tienes un proyecto similar?
Construimos plataformas SaaS, marketplaces y sistemas web desde cero. Cotización por escrito en 48 h.
Recibe el próximo artículo en tu correo
Sin spam. Un artículo al mes sobre desarrollo web real, SaaS y tecnología en Chile.
Estamos preparando un formulario de suscripción seguro. Vuelve pronto para activar tus avisos.