Ingeniería de producto de IA
La función de IA en sí — construida para ser confiable desde el día uno, con las costuras de evaluación ya integradas para poder probarla más tarde.
#Lo que construyo
Asistentes conversacionales / chatbots
RAG sobre tu documentación, UI en streaming, citas de fuentes y un guardián de alcance para que se mantenga en tema.
Agentes de voz con IA
Voz entrante y saliente que califica, agenda y da seguimiento — con un gate de consentimiento estricto en las llamadas salientes.
Ingesta y extracción de documentos
Facturas, formularios y PDFs convertidos en datos estructurados validados, con un carril de revisión para los casos de baja confianza.
Copilots internos
Un asistente privado conectado a tu wiki, tu código y tus tickets — con acceso delimitado y auditable.
Ingeniería de pipelines RAG
Chunking, embeddings, recuperación híbrida, reranking y grounding — con evals de calidad de recuperación por delante.
Orquestación multiagente
Flujos estilo LangGraph con estado explícito, límites de herramientas, reintentos y puntos de control de aprobación.
#Cómo lo construyo
- Los outputs estructurados y el function-calling están validados por esquema, con fallbacks ante fallos de parseo y las entradas crudas registradas junto a cada decisión.
- El grounding se aplica por construcción donde importa — por ejemplo, ninguna ruta de generación sin cita — no se pide en un prompt esperando que funcione.
- El arnés de evaluación se diseña desde el inicio, para que la función sea demostrable, no solo desplegable.
En concreto, un paso de LLM es una función tipada y validada — no una llamada de texto libre que esperas que se parsee:
const Ticket = z.object({
category: z.enum(["billing","bug","howto","other"]),
urgency: z.enum(["low","med","high"]),
needs_human: z.boolean(),
});
const out = Ticket.safeParse(await llm(prompt, { schema: Ticket }));
if (!out.success) return { category: "other", needs_human: true }; // safe fallback
log({ input, decision: out.data }); // every decision is auditable