Mario Chasco
Ingeniero de IA. Productos con LLM, agentes y automatización
El código decide; el modelo lee y redacta.
Construyo y mantengo sistemas de IA que funcionan solos. Desde septiembre de 2026, una peluquería de Pamplona usa mi agente de reservas por voz y WhatsApp: 407 llamadas y 212 reservas a finales de octubre.
Conoce tu negocio
Contexto
Tus reglas, tu tono
Se conecta a lo que ya usas
Conexiones
Sin cambiar de programas
Hace el trabajo repetitivo
Capacidades
Siempre igual, sin olvidos
Corre solo y te avisa
Cadencia
Tú decides lo dudoso
Sobre mí
Soy ingeniero mecánico de formación, así que primero pienso en cómo puede fallar un sistema y lo pruebo antes de fiarme. Desde 2025 construyo agentes y automatizaciones con LLM para negocios reales, y los mantengo yo en mi propio servidor.
Mis sistemas trabajan para clientes reales. Una peluquería de Pamplona usa mi agente de reservas desde septiembre de 2026, una agencia de viajes recibe un vídeo nuevo cada 3 días desde octubre y, desde junio, construyo y mantengo una plataforma de analítica de solo lectura para una firma de inversión en Londres. Esa plataforma nunca opera y nunca mueve dinero.
Vengo de la ingeniería mecánica. En 2016 amplié un código multicuerpo en MATLAB para aerogeneradores flotantes, y entre 2018 y 2020 trabajé con visión artificial en una fábrica, donde propuse meter IA y la empresa no quiso. Mi primera vez con Claude fue en septiembre de 2025, en el último reto de un programa selectivo de IA: conecté Claude Code con n8n por MCP.
Hoy programo con Claude Code y Codex como compañeros, y cada cambio generado pasa por tests y revisión. Flowara AI es mi trabajo público: los sistemas que he construido para negocios reales y las plantillas que he sacado de ellos.
Vivo en Pamplona y trabajo en remoto (CET). Mi lengua materna es el español; en inglés tengo el Cambridge C1 (CAE) y trabajo a nivel C2.
Sistemas
Agente de reservas por voz y WhatsApp
Atiende el teléfono de una peluquería y apunta las citas en su agenda real.
- llamadas a finales de octubre de 2026
- 407
- reservas en el mismo periodo
- 212
- errores técnicos en los 2 primeros días (63 llamadas, 34 reservas)
- 0
- tests en el sistema de producción
- >5.700
- tests en verde en la plantilla pública
- 4.767 + 277
El dueño está cortando el pelo y suena el teléfono. O suelta las tijeras o pierde la cita.
Contesta con la voz clonada del dueño y reserva en la agenda real del local; por WhatsApp, otro agente confirma o cambia citas y manda recordatorios. El modelo solo elige entre las opciones que le da el código.
- TypeScript
- Fastify
- Zod
- ElevenLabs
- Meta WhatsApp Cloud API
- Docker
El asistente sigue un guion. Si el cliente pide cita, sigue con él; si pregunta otra cosa, contesta corto y vuelve a la cita.
Lo que tiene consecuencias lo decide el código: quién llama, qué huecos existen y qué se escribe en la agenda. Cada petición del modelo pasa por un esquema Zod estricto (una librería que comprueba que cada dato tiene la forma correcta) y, si algo no encaja, se rechaza antes de tocar la agenda. Cada cliente va en su propio contenedor.
Los dos primeros días hubo 63 llamadas y 34 reservas, con alrededor de minuto y medio por llamada y 0 errores técnicos. El sistema de producción tiene más de 5.700 tests; la plantilla pública, con datos ficticios, tiene 4.767 + 277, todos en verde.
Analítica cripto de solo lectura
Cuadra cada día los números de una firma de inversión, sin poder mover dinero.
- filas cargadas
- 1,26 M
- entre cada captura en vivo de la cuenta
- 1 min
- días con las comisiones cuadradas con el libro contable
- 117/117
- de diferencia entre dos fuentes independientes en 40 días
- <0,2 %
Una firma de inversión en Londres necesita saber si lo que dice el exchange cuadra con su propio libro contable. Y no puede arriesgarse a que una herramienta toque el dinero.
Lee el historial y el estado de la cuenta con claves de solo lectura, lo concilia con el libro contable y calcula Sharpe, Sortino, Calmar y drawdown. Nunca opera, retira ni transfiere.
- Python
- FastAPI
- PostgreSQL
- Next.js
- Docker
Funciona como cuadrar la caja de una tienda al cerrar: comparas lo que dice la caja con los tickets y, si no coincide, lo ves enseguida. Aquí la caja es el exchange y los tickets son el libro contable de la firma.
Casi no hay modelo, y es a propósito. El código descarga los datos y los cuadra; también calcula las medidas. La automatización informa y las personas deciden.
La seguridad pesaba más que la técnica. Las claves solo permiten leer, así que la plataforma no puede mover dinero aunque alguien quisiera. Es privada; la enseño en una demo en directo si me la pides, nunca con datos del cliente.
AI Knowledge Feeds y servidor MCP
Cada mañana sincroniza la documentación oficial y sirve a mis agentes solo fragmentos.
- fuentes sincronizadas cada día a las 08:00
- 31
- caracteres como mucho por mensaje
- 1.200
- para añadir el puntero
- 0,25 s
Un agente de programación no sabe lo que cambió ayer en sus propias herramientas. Pasarle la documentación entera gasta contexto en lo que no necesita.
Cada día a las 08:00 sincroniza 31 fuentes, de documentación oficial y changelogs a transcripciones de vídeo, y las sirve por MCP en fragmentos, nunca documentos enteros. Lo oficial pesa más que la opinión.
- Python
- BM25
- MCP
- yt-dlp
- pytest
Cuando escribo un mensaje, un hook (un programa pequeño que se ejecuta solo en cada mensaje) busca la nota que mejor encaja y añade un puntero de 1.200 caracteres como mucho, en 0,25 segundos. Si el agente necesita más, se lo pide al servidor MCP, que devuelve fragmentos.
El código decide qué entra en el mensaje: puntúa por palabras y ordena por autoridad, y nunca pasa de 1.200 caracteres. La búsqueda es por palabras (BM25) y los tests corren sin conexión.
Transcripción de reuniones autoalojada
Subo el audio de una reunión y recibo en Drive una nota con resumen.
- módulos
- 21
- tests, incluido uno golden-file
- 161
- líneas de documento de arquitectura
- 1.300
Después de cada reunión alguien tiene que escribir quién dijo qué y qué se decidió.
Una cola SQLite con estados transcribe con faster-whisper, separa hablantes con sherpa-onnx y resume con un LLM. La nota llega a Drive en Markdown, con un aviso por Telegram.
- Python
- SQLite
- faster-whisper
- sherpa-onnx
- APIs de LLM
- Google Drive API
Cada audio tiene un estado en la cola, así que siempre se ve en qué paso está.
El modelo solo resume. Adónde va la nota y cuándo se reintenta lo decide el código.
Tiene 21 módulos y 161 tests, entre ellos uno que compara la salida con una nota correcta guardada (golden-file), y un documento de arquitectura de 1.300 líneas. La memoria y la velocidad están medidas en una VPS pequeña.
Toolkit de Claude Code
La configuración de Claude Code con la que construyo todo lo demás.
- niveles de subagentes
- 4
- de servidor parado, el fallo que dio origen al hook de cierre
- 3 h
Pedirle a un modelo que se acuerde de una regla no basta; la regla la tiene que comprobar el código.
Junta hooks, skills de relevo entre sesiones y subagentes en 4 niveles según la complejidad; un verifier revisa cada cambio sin editarlo. Un hook de cierre bloquea el turno que promete trabajo sin lanzarlo.
- Claude Code
- Hooks
- Subagentes
- Skills
Funciona como una oficina pequeña. La sesión principal reparte el trabajo y no escribe código; junior busca y resume, plumber hace lo rutinario, senior se queda con lo difícil o lo que no tiene vuelta atrás y verifier revisa al final sin tocar nada.
Los hooks son código y se ejecutan siempre, quiera el modelo o no. El router de cada mensaje tiene un modo --dry-run que enseña lo que haría sin hacerlo.
El hook de cierre salió de un fallo real: una sesión anunció trabajo, cerró el turno sin lanzarlo y mi servidor estuvo 3 horas parado. Desde entonces, un turno que promete trabajo sin haberlo empezado no se puede cerrar.
Pipeline de vídeo sin supervisión
Un vídeo narrado cada 3 días en el Drive del cliente, sin tocar nada.
- vídeo nuevo desde octubre de 2026
- 1 cada 3 días
Una agencia de viajes necesitaba vídeos con regularidad.
Un temporizador de systemd arranca el trabajo a su hora, una voz clonada pone la narración y ffmpeg monta el vídeo. El resultado llega al Google Drive del cliente.
- Voz clonada
- ffmpeg
- Timer de systemd
- Google Drive API
No depende de que alguien se acuerde: lo lanza el temporizador y nadie pulsa ningún botón.
El código decide cuándo se ejecuta y adónde va el vídeo.
Es privado, así que aquí solo cuento cómo funciona.
Secretaria de IA para docentes
Informes para docentes con un filtro de privacidad que falla cerrado.
- tests unitarios
- 11
- typecheck y lint
- Limpios
Los datos de alumnos son delicados: un informe nunca puede llevar lo que no debe.
Importa datos, los valida, los enseña en un panel y genera informes deterministas. Un filtro de privacidad en código falla cerrado: si algo va mal, bloquea la salida en vez de dejarla pasar.
- Next.js
- Prisma
- PostgreSQL
- Zod
Es una plantilla pública y todos los datos son sintéticos: no aparece ningún alumno real.
Los informes son deterministas: los mismos datos dan siempre el mismo informe.
Tiene 11 tests unitarios, y el typecheck y el lint están limpios.
Cómo trabajo
La mínima IA posible
El código decide la identidad, el dinero, el enrutado y los envíos; el modelo lee y redacta. Lo que tiene consecuencias no depende de cómo se exprese el modelo ese día.
La autonomía se gana
Por tipo de tarea, y se demuestra con un golden set de casos reales: una lista fija de entradas con su resultado esperado. Primero comprueba el código; después, un juez calibrado.
Sin fallos silenciosos
Cada sistema deja log, contador y canario. Si algo se para, se tiene que ver.
Cada agente tiene un responsable
Una persona responde de cada agente, y cada error se convierte en una regla escrita en un fichero. Una regla en un fichero aguanta; repetírsela al agente, no.
Contexto primero
Ficheros planos y portables, que leen igual una persona y un modelo.
Tests y revisión en cada cambio
Programo con Claude Code y Codex como compañeros, y cada cambio generado pasa por tests y revisión antes de quedarse.
Solo lectura donde hay dinero
En finanzas, la automatización informa y las personas deciden.
Trayectoria
Jun. 2026 – ActualidadColaborador de backend y DevOpsUna firma de inversión en LondresConstruí y mantengo su plataforma de analítica de solo lectura.
Me ocupo de la carga de datos y del cuadre, de la captura en vivo y del panel, con despliegue en Docker y PostgreSQL. Trabajo en remoto, y la plataforma nunca opera ni mueve dinero.
2025 – ActualidadFundador e ingeniero de IAFlowara AIFlowara AI es mi trabajo público: sistemas para negocios reales y las plantillas que saco de ellos.
Llevo el ciclo completo, del diagnóstico al soporte, con el despliegue en mi propia VPS. Además construyo en público en más de 38 vídeos cortos de YouTube.
Ago. 2025 – Sep. 2025Ingeniero de IA en formaciónPrograma remoto selectivo de ingeniería de IAEntré con una tasa de admisión de alrededor del 10 % y entregué tres proyectos con n8n.
Un asistente sobre Google Workspace, un chatbot RAG sobre el guion de una película y un analista de marketing que pasa preguntas en lenguaje natural a SQL. En el último reto conecté Claude Code con n8n por MCP, y fue mi primera vez con Claude.
Sep. 2023 – ActualidadProfesor de TecnologíaGobierno de NavarraDoy clases de IA, ciberseguridad y programación en inglés.
Trabajo con grupos de niveles distintos. De aquí me viene explicar lo técnico sin complicarlo.
2021Máster Universitario en Profesorado (Ciencias experimentales)Universidad de NavarraTFM sobre un proyectil que entra en un medio granular denso.
Escribí código en MATLAB y Python que ajusta su ecuación de movimiento y lo validé con datos de simulación del departamento de física. Lo acompañé de una propuesta didáctica para Física del Bachillerato Internacional.
2018 – 2020Ingeniero mecánicoBerry GlobalInspección de calidad con visión artificial y puesta en marcha de robots en máquinas de moldeo.
Trabajé con INTRAVIS e In-Sight. Se rechazaban piezas buenas cuando salían del campo de la cámara; propuse añadir IA y la empresa lo descartó. Me llevé una idea: si un sistema falla igual una y otra vez, ajustarlo a mano cada vez no escala.
2017 – 2019Máster en Astronomía y AstrofísicaVIU, Universidad Internacional de ValenciaTFM: «Clasificación automática de espectros estelares» (2019).
Fue mi primer trabajo práctico de machine learning. Lo terminé en 2019, mientras trabajaba en Berry Global.
2016 – 2017Técnico de laboratorioSchneider ElectricEnsayos de conformidad de producto según normas UNE e IEC.
Mi trabajo era comprobar con ensayos que un producto cumplía la norma. Hoy aplico la misma idea con los tests: nada se da por bueno sin probarlo.
2016Ingeniero en prácticasCENERCódigo multicuerpo en Python y MATLAB para aerogeneradores marinos flotantes.
Trabajé sobre modelos de aerogeneradores que flotan en el mar. Ese mismo año defendí el TFG, con tutores de la UPNA y del CENER.
2012 – 2016Grado en Ingeniería MecánicaUniversidad Pública de Navarra (UPNA)TFG: modelo dinámico reducido para aerogeneradores flotantes.
Amplié un código multicuerpo en MATLAB de 2 a 3 grados de libertad, sobre una base de código del CENER. Lo defendí en junio de 2016.
Vídeos
En YouTube tengo más de 38 vídeos cortos en los que construyo en público y explico cómo funcionan mis sistemas.
Contacto
Si quieres ver alguno de estos sistemas funcionando, escríbeme. Puedo hacer una demo en directo o una tarea de prueba pagada, lo que te diga más. Trabajo en remoto desde Pamplona (CET).
