La restricción#
La UI se hace en una tarde. El requisito no: el agente habla como representación de una carrera real, así que una respuesta equivocada puede inventar un empleo, un cliente o una habilidad que un reclutador se crea.
El agente está limitado a propósito a la evidencia de este portafolio y se prueba contra regresiones factuales, de atribución y de seguridad.
Por eso tampoco interpreta a Brenda. Es su IA de portafolio, se refiere a ella en tercera persona y lo dice cuando la identidad importa.
Una capa de verdad antes que una personalidad#
El material que es fuente de verdad se mantiene separado de la prosa. El agente distingue entre un hecho que puede sostener, un proyecto que se está construyendo y algo que sencillamente no sabe.
claim = retrieve(question) if claim.source_strength == "verified": answer_with_citation(claim) elif claim.source_strength == "in_progress": answer_with_status_label(claim) else: say_you_do_not_know()
Recuperación#
La pregunta de un reclutador suele cruzar varios documentos, así que la recuperación funciona sobre chunks pequeños y ricos en evidencia con metadatos: empresa, proyecto, periodo, tecnología, tipo de afirmación. La búsqueda full-text de Postgres y los embeddings con pgvector se combinan con reciprocal rank fusion, y un router decide primero si la pregunta necesita evidencia.
El texto recuperado se trata como evidencia, nunca como instrucciones. Las instrucciones que aparezcan dentro de un documento recuperado no se siguen.
Un agente público es una superficie adversarial#
Límites de alcance duros, con comprobaciones de entrada y salida.
Secretos completamente fuera de la recuperación.
Sesiones emitidas por el servidor: tres preguntas, y el contador no se reinicia recargando.
Límites de tasa y logging de patrones sospechosos.
Comportamiento de fallback seguro.
El email que se pide antes de la demo es para acceso y prevención de abuso, no una newsletter. Los identificadores de visitante se hashean en el servidor.
Evals#
Factual
Fechas, títulos, empresas.
Límite
No inventa clientes, ingresos ni escala.
Atribución
Mantiene separados JPMorgan, Moody's y los proyectos personales.
Estado
Llama prototipos a los prototipos.
Recuperación
Cita el case study relevante, no la palabra clave más cercana.
Idioma
EN y ES con los mismos hechos.
El eval que más importa: ¿el agente la hace sonar más consumada de lo que la evidencia sostiene?
Observabilidad#
Cada traza registra los chunks recuperados, la latencia del modelo, una estimación de tokens y coste, las decisiones de seguridad y el grado de fundamento. Una mala respuesta deja de ser una anécdota y se convierte en un caso de test.
Arquitectura#
Browser widget ↓ streaming request Serverless API (Vercel) ├─ rate limit + server-issued session ├─ safety / scope check ├─ router: does this need evidence? ├─ hybrid retrieval │ ├─ Postgres full-text │ └─ pgvector embeddings │ └─ reciprocal rank fusion ├─ model generation (Claude) └─ trace + online scoring ↓ eval datasets / CI gate
Las trazas y el registro de prompts funcionan sobre Langfuse, con un prompt de fallback local para que la recuperación del prompt no sea un punto único de fallo. Una GitHub Action convierte los fallos de producción en pull requests de test de regresión; una persona fusiona, y los prompts nunca se mutan de forma autónoma en producción.
Qué está funcionando#
Un front end estático con un widget que no guarda secretos.
Funciones de API serverless en Vercel para creación de sesión y chat.
Recuperación híbrida sobre un corpus en Supabase Postgres.
Scoring online de cada respuesta en calidad, fundamento y seguridad.
Una suite de evals con puerta en CI sobre seis categorías.
Se construyó con herramientas de desarrollo asistido por IA, que conviene decir en voz alta en una página sobre no exagerar. Siguiente: más evals a partir de preguntas reales de producción, Turnstile y la voz cuando los hechos se sostengan.
Preguntas frecuentes#
¿El agente habla como si fuera Brenda?
No. Es la IA de portafolio de Brenda, se refiere a ella en tercera persona y lo dice siempre que la identidad importa. Una persona en primera persona hace que una alucinación suene como una afirmación personal.
¿Cómo funciona la recuperación?
Recuperación híbrida sobre un corpus en Supabase Postgres: búsqueda full-text y embeddings con pgvector combinados con reciprocal rank fusion. Un router decide primero si la pregunta necesita evidencia del portafolio, y el texto recuperado se trata como evidencia, nunca como instrucciones.
¿Por qué solo tres preguntas por visitante?
Prevención de abuso en una superficie pública. Las sesiones las emite el servidor, así que el contador no se reinicia recargando, y un hash de visitante generado en servidor añade un segundo límite.
¿Se construyó con ayuda de IA?
Sí. El código es suyo y puede explicar cada parte, pero se escribió con herramientas de desarrollo asistido por IA, no solo a mano.
Pregúntale algo
El chat de esta página es el sistema descrito arriba. Te dirá lo que no sabe.