Caso de estudio 05 · En solitario, de principio a fin · 2025 → 2026
Construyendo en 2026
El día que mi portfolio empezó a responder por sí solo. Un chatbot con mi voz, un scorer y un digest, lanzados en solitario.
Rol
En solitario: producto, diseño, prompts, código
Años
2025 → 2026
Stack
Next.js 16 · Claude · Upstash · Resend · Vercel
Estado
En producción en albruv.com
Publicado · Actualizado
2025 → 2026
capas: chat, scorer y digest
3
Un sistema
ejes evaluados en cada conversación
5
Encaje · legitimidad · valor · momento · petición
desde que termina un chat hasta el veredicto
3 min
Después, a mi bandeja de entrada
páginas de system prompt para que sonara como yo
~38
El trabajo de verdad
En breve
Álvaro Velasco lanzó el chatbot, el scorer y el digest de albruv.com en solitario, de principio a fin, entre 2025 y 2026 con Claude Code: un front conversacional (Albot) con su voz, un scorer de segunda pasada que lee cada conversación y un digest que le envía por email solo los leads que merecen su tiempo.
01 · Supuesto
Un portfolio es algo que la gente lee.
Los recruiters leen por encima. Los founders quieren saber algo concreto. La mayoría de lo que cuenta un portfolio no lo ha preguntado nadie.
02 · Decisión
Deja que la gente pregunte.
Albot responde preguntas sobre mi trabajo con mi voz. Una segunda pasada lee cada conversación unos tres minutos después de que el visitante deje de escribir y la evalúa en cinco ejes: encaje, legitimidad, valor, momento y si ha hecho una petición explícita.
Solo las conversaciones que merecen mi tiempo llegan a mi bandeja de entrada, como una tarjeta de triaje de cinco segundos. Los descartes se archivan en silencio.
Me encargué de la estrategia de producto, el diseño, los prompts y la lógica del sistema, el scoring de leads, el frontend, el backend y el deploy. El equipo éramos Claude Code y yo.
La primera versión juntaba personalidad, datos, reglas e historias en un documento largo. Separé la voz y las reglas de los datos. El rediseño usa un paquete de conocimiento seleccionado y validado en la compilación.
Chat, scorer, digest.
01
Chat
El visitante habla con Albot. Albot responde con mi voz.
Visitante
en el navegador
Interfaz de Albot
Next.js
Claude Sonnet
system prompt = yo
↓transcripción
02
Evaluación
Una segunda pasada lee la conversación tras la pausa, o al cerrar el chat o reservar. Devuelve campos estructurados.
Transcripción
de la capa01
Claude Haiku
prompt del scorer
Redis
campos evaluados
↓al cerrar / reservar / tras la pausa
03
Digest
Cuando una conversación importa, recibo un email que sí voy a abrir.
Compositor
evaluación + transcripción
Resend
API de correo
Mi bandeja de entrada
iCloud
Las tres capas, de principio a fin. Cada una tiene su propio disparador.
Ejemplo anonimizado
De:
Albruv Chatbot <onboarding@resend.dev>
Para:
alvaro@albruv.com
Asunto:
Very High · Sarah de [startup de IA serie B], busca IC sénior para producto de IA…
Prioridad: 🟢 Very High
Encaje: sí
Empresa: [ANONIMIZADA], verificada: sí
Contacto: Sarah, Head of Product
Puesto: jornada completa, IC sénior
Por qué ahora: lanzarán 2 funciones de IA el próximo trimestre,
su responsable de diseño acaba de irse
Resultado: que el producto de IA se perciba como
un solo producto, no como tres
Valor: Serie B, 24 M$ captados
Momento: cuanto antes, entrevistan este mes
Lo ha pedido: sí (intención explícita)
Alertas: ninguna
Email del visitante: sarah@[ANONIMIZADA].com
Contexto de empresa: verificado mediante búsqueda web
Fragmento de la conversación:
> «Lanzamos dos funciones de IA este trimestre y
> nuestra responsable de diseño acaba de irse. Necesitamos
> a alguien sénior que pueda construir y liderar, y que
> entienda la UX de productos con IA. ¿Aceptas llamadas?»
Transcripción completa:
https://www.albruv.com/api/chat/debug/transcript/[ID]
Un lead Very High anonimizado, con el formato que envía la capa de digest. Cabecera de triaje de cinco segundos, fragmento de conversación y enlace a la transcripción. Los descartes no llegan a la bandeja de entrada.
ALBOT
// responde por Álvaro, con sus palabrasen línea
albot>
Soy Albot. Álvaro me construyó para que no tengas que leerte todo su portfolio. Pregúntame lo que quieras sobre su trabajo.
you>
¿Cuál era el problema real en SellerCrowd?
albot>
El encargo era de arquitectura de información, y el rediseño la arregló. Pero las contribuciones, la métrica que importaba, siguieron estancadas. La verdadera palanca eran los incentivos: gemas, acceso VIP y contribuir con un clic. Las contribuciones mensuales pasaron de 360 a 23.770. leer el caso
albot puede equivocarse. Álvaro lee las conversaciones que importan.
Albot escribe y después responde. Puede equivocarse, y lo dice.
03 · Lo que se rompió
Cada arreglo está en producción.
iCloud rechazaba mis emails de prueba hasta que aprendí qué eran SPF y DKIM y los declaré correctamente.
El primer scorer se precipitaba y me enviaba emails en mitad de las conversaciones. Ahora espera tres minutos después de que el visitante deje de escribir.
El planificador rechazó mi servidor siete veces por motivos distintos: direcciones, identificadores, regiones, codificación y un fallo de red. Cada arreglo me enseñó algo que no contaba ningún tutorial.
El scorer descartó correctamente mis propios leads ficticios de prueba sin enviarme emails. El filtro estaba haciendo exactamente lo que había escrito en la especificación.
Extracto histórico
src/prompts/system.md
v1.9.2
## Antes de cada respuesta: el bucle de decisión
Recorre esta lista de arriba abajo. Detente
en la primera coincidencia y actúa.
1. ¿Intención explícita de contacto? (Ha preguntado
cómo contactar conmigo, por mi email o una reunión.)
→ Ofrece llevarme el mensaje. Para.
2. ¿Señales de desconexión? (Respuestas secas,
distracción, «solo estoy mirando», una palabra,
«esto no viene al caso», objeciones repetidas.)
→ Veredicto breve y ofrecimiento suave de contacto. Para.
3. ¿Tema inseguro, privado, no verificado o que
se ha descartado? (Sueldo, referencias, familia,
datos no verificados.)
→ Reduce el detalle o desvía. No inventes.
Para.
4. ¿Toca un paso de descubrimiento?
→ Pregunta exactamente por ese paso. Para.
5. ¿Procede pedir el email de forma suave y aún
no se ha hecho? (Hay una señal real, ≥ 2
turnos de descubrimiento, no toca otro paso.)
→ Introduce la petición de email como afirmación.
Para.
6. Si no → Responde con naturalidad.
Restricciones en cada respuesta:
≤ 200 palabras, como mucho una pregunta,
primera persona como Álvaro, sin rayas,
sin preámbulo.
El bucle de decisión que Albot seguía antes de cada respuesta. El prompt original completo tenía unas 38 páginas.
La lección
El cuello de botella nunca fue el código.
Fue escribir el system prompt que le decía al bot cómo ser yo: unas 38 páginas de voz, criterio y límites.