2026

A 1B language model that writes ForoCoches threads: title, opening post and replies, in the forum’s Spanish, conditioned on a thread type and year. Gemma 3 fully fine-tuned on a full crawl of the forum (2003–2026) plus the public archive, 820k threads in all, served as a forum look-alike where generation runs in your browser over WebGPU. Model, dataset, crawl, code.
A searchable archive of public Telegram channels relevant to Spanish politics. Browse messages and channel statistics, trace forwarding sources, and explore similar posts grouped into weekly stories. The channel selection draws on published disinformation research and includes parties, media and civil-society organisations. code.
An experiment in cataloguing A Coruña through street-level imagery from Apple, Google and Mapillary. Detects and crops shop signs, graffiti, street-name plates and other objects into a browsable map and photo grids inspired by the Bechers’ typologies. Includes text search, capture-date filters and multiple viewpoints. code.
In 1729 and 1733 Feijoo dared his readers to find even four lines in his books translated from French journals. Using OCR and cross-language search, I found ten solid cases and two borderline ones, six of which I couldn’t find identified in earlier scholarship. The write-up is on the blog (in Spanish); materials and code and data.
A browser instrument for designing flags, made for the album release of my friend alexoalexo. Layers, heraldic symbols, patch-cable effects and two LFOs for animation; exports to SVG, PNG, WebM or a shareable link. code.
Experiments in getting an audio-aesthetics predictor (Audiobox Aesthetics) to give top scores to unusual sounds, by optimising waveforms, codec latents and the initial noise of a frozen generator. The scores can be pushed past the human 1–10 scale, but they collapse with small gain changes or off-grid time shifts, and a high predicted score doesn’t make the audio more enjoyable.
A self-hosted dead man’s switch on Cloudflare’s free plan. Monthly check-ins by email and Telegram; if I stop answering, trusted people are asked, and once enough of them confirm, my messages are sent. It also emails the blog’s life updates to the newsletter list.
financeOct
Self-hosted personal finance on a plain-text Beancount ledger. Daily sync of bank accounts (Enable Banking), Indexa, on-chain wallets and prices; transactions are categorized from my own history first and with a classifier only when unsure, uncertain ones go to Telegram for review. A minimal web UI for net worth, spending and portfolio, and a CLI that my agents use to answer questions and book things. Replaces my earlier beancount-ui.
Winner of the HackSpain Maisa track. Turns operating policy described in plain language into versioned, deterministic decision processes. Ingests documents in any format, proposes the rules and data sources, compiles them to tested Python, and backtests against past cases before publishing… Built with a team of five.
A public, source-backed map of data centres in peninsular Spain and their relationship to the electricity transmission grid. It keeps IT load, grid connection capacity, and installed power separate, and leaves gaps and contradictions visible. The project attracted interest from a data-centre consulting company. code and data.
A self-hosted personal media library for music, books, movies, series, anime, manga, webtoons, and live shows. Save links through Telegram or the web UI, enrich them with provider metadata, cache artwork, track ratings and status, and migrate saved tracks to YouTube Music. Built on Cloudflare Workers, D1, and R2.
An interactive explorer of how common a seven-axis profile is among Spanish adults, built from CIS microdata. It preserves the joint distribution of responses instead of multiplying marginal percentages.
A two-player couch game with trivia and minigames. One screen shows the board while two phones act as controllers. Runs on Cloudflare Workers with realtime Durable Objects.
Investigation notes and tooling for an LLM-based CTF challenge. Compared model checkpoints, probed token likelihoods, and drove the live grader. The write-up is on the blog.
A self-hosted PII and breach-data search stack. Ingests normalized leads into ClickHouse, supports tags and a small query DSL, and uses JWT or API-key authentication.
A local development tool for inspecting AWS SQS queues. Lists queues, peeks at messages without consuming them, and shows their bodies, attributes, and metadata.
Explore/exploit benchmark for LLMs. Runs models through 8 environments — stationary and non-stationary bandits, grid search, combinatorial optimization — and measures cumulative regret, exploration ratio, and adaptation speed. Useful for comparing behavior across models, temperatures, and prompt framings.
AI enrichment pipeline for debt collection cases. Takes a minimal case record (name, country, debt amount) and fans out across 23 OSINT modules to produce a sourced, collector-ready dossier. Uses a wave-based async scheduler and a typed Signal system for provenance tracking.
Telegram bot for managing a shared home pantry. Add, remove, list items, and get recipe suggestions via slash commands, free-form messages, or photos of groceries or receipts. Uses an LLM for natural-language parsing.
A daily Telegram bot that parses the RSS feeds from Spain’s BOE and Galicia’s DOG, filters entries relevant to my interests with AI, and sends a summary to Telegram.
A CLI for saving links to Linkwarden, with fzf collection selection, clipboard input, and a local collection cache.
My Omarchy desktop configuration plus the curated set of agent skills I run in Claude Code and Codex, vendored from upstream with inventory notes and an installer that links them into every agent.
A skill for coding agents (Claude Code, opencode…) for adding i18n translations to big codebases that originally had hardcoded strings.

2025

Evaluating LLM agents on finding shortest citation paths between academic papers. Generates graphs for visualizing results and allows a human player via a web interface.
AI-powered CLI tool that merges data sources (.csv, .sql, .jsonl…) into a unified format. Automatically maps fields, infers missing headers, and rejects irrelevant information.
Competed in Spain’s biggest hackathon, where we created VuelingConnect, a multiplatform app that creates a decentralized communications network using BLE, with a creative approach to ensure battery efficiency and avoid redundancies.
Competed with 2 different projects over 3 days with a couple of friends: cMatch, a website and Chrome extension to find and manage clothes from Inditex; and skillhub, a hard and soft skills manager for organizations where users can post issues and guides.

2024

Using gyms’ occupancy data and maps, we built a simulation that allows managers to easily visualize it and identify problems.
Trained a LoRA for Llama 3.1 on a dataset of Miguel Anxo Bastos’s conferences and articles.

2023

Performed an audiovisual live show at the event, using reactive and artificially generated visuals that morph with the music. Most of the songs were my own productions; the visuals were made with StableDiffusion and TouchDesigner.

2026

Un modelo de lenguaje de 1B que escribe hilos de ForoCoches: título, OP y respuestas, en el castellano del foro y según el tipo de hilo y el año que le pidas. Gemma 3 con full fine-tune sobre un crawl completo del foro (2003–2026) y el archivo público, 820.000 hilos en total, servido como una réplica del foro donde la generación corre en tu navegador con WebGPU. Modelo, dataset, crawl, código.
Un archivo con buscador de canales públicos de Telegram relacionados con la política española. Permite consultar mensajes y estadísticas, rastrear el origen de los reenvíos y explorar publicaciones similares agrupadas en historias semanales. La selección parte de investigaciones publicadas sobre desinformación e incluye partidos, medios y organizaciones de la sociedad civil. código.
Un experimento para catalogar A Coruña a partir de imágenes de calle de Apple, Google y Mapillary. Detecta y recorta rótulos de comercios, grafitis, placas de calles y otros objetos para explorarlos en un mapa y en cuadrículas de fotos inspiradas en las tipologías de los Becher. Incluye búsqueda de texto, filtros por fecha de captura y varias vistas. código.
En 1729 y 1733 Feijoo retó a sus lectores a encontrar siquiera cuatro líneas traducidas de revistas francesas en sus libros. Con OCR y búsqueda entre idiomas encontré diez casos sólidos y dos fronterizos; para seis no encontré una identificación anterior en la bibliografía. El artículo está en el blog; materiales y código y datos.
Un instrumento en el navegador para diseñar banderas, hecho para el lanzamiento del disco de mi amigo alexoalexo. Capas, símbolos heráldicos, efectos conectados con cables y dos LFO para animar; exporta a SVG, PNG, WebM o un enlace para compartir. código.
Experimentos para que un predictor de estética de audio (Audiobox Aesthetics) dé la máxima nota a sonidos poco habituales, optimizando formas de onda, latentes de un códec y el ruido inicial de un generador congelado. Las puntuaciones se pueden llevar por encima de la escala humana de 1 a 10, pero se hunden con pequeños cambios de ganancia o desplazamientos fuera de la rejilla temporal, y una nota alta no hace que el audio guste más.
Un interruptor de hombre muerto autoalojado en el plan gratuito de Cloudflare. Comprobaciones mensuales por correo y Telegram; si dejo de responder, se pregunta a personas de confianza y, cuando suficientes confirman, se envían mis mensajes. También manda por correo las actualizaciones del blog a la lista del boletín.
financeoct
Finanzas personales autoalojadas sobre un libro contable de Beancount en texto plano. Sincronización diaria de bancos (Enable Banking), Indexa, wallets on-chain y precios; las transacciones se categorizan primero con mi propio historial y con un clasificador solo si hay dudas, y las inciertas van a Telegram para revisarlas. Una web mínima para patrimonio, gastos y cartera, y un CLI que usan mis agentes para responder preguntas y registrar movimientos. Sustituye a mi antigua beancount-ui.
Ganador de HackSpain, track de Maisa. Convierte procesos descritos en lenguaje natural en pipelines automáticos: ingiere documentos en cualquier formato, propone reglas y fuentes de datos, compila a Python determinista, hace backtesting… Hecho con un equipo de cinco personas.
Un mapa público y con fuentes de los centros de datos de la España peninsular y su relación con la red de transporte eléctrico. Separa la carga IT, la capacidad de conexión a la red y la potencia instalada, y deja a la vista los huecos y las contradicciones. El proyecto despertó el interés de una consultora especializada en centros de datos. código y datos.
Una biblioteca multimedia personal y autoalojada para música, libros, películas, series, anime, manga, webtoons y directos. Guarda enlaces desde Telegram o la web, los enriquece con metadatos de cada proveedor, cachea las portadas, registra valoraciones y estado, y migra las canciones guardadas a YouTube Music. Hecha con Cloudflare Workers, D1 y R2.
Un explorador interactivo de lo común que es un perfil de siete ejes entre los adultos españoles, construido a partir de microdatos del CIS. Conserva la distribución conjunta de las respuestas en lugar de multiplicar porcentajes marginales.
Un juego de sofá para dos con preguntas y minijuegos. Una pantalla muestra el tablero y dos móviles hacen de mando. Funciona sobre Cloudflare Workers con Durable Objects en tiempo real.
Notas de investigación y herramientas para un reto CTF basado en LLMs. Comparé checkpoints de modelos, sondeé probabilidades de tokens y ataqué el evaluador en vivo. El write-up está en el blog (en inglés).
Un sistema autoalojado de búsqueda de datos personales y filtraciones. Ingiere registros normalizados en ClickHouse, admite etiquetas y un pequeño DSL de consultas, y usa autenticación por JWT o API key.
Una herramienta de desarrollo local para inspeccionar colas de AWS SQS. Lista las colas, ojea mensajes sin consumirlos y muestra su contenido, atributos y metadatos.
Benchmark de exploración/explotación para LLMs. Pone a los modelos en 8 entornos (bandits estacionarios y no estacionarios, búsqueda en rejilla, optimización combinatoria) y mide el regret acumulado, la tasa de exploración y la velocidad de adaptación. Útil para comparar el comportamiento entre modelos, temperaturas y formas de plantear el prompt.
Pipeline de enriquecimiento con IA para casos de recobro de deudas. Parte de un registro mínimo (nombre, país, importe) y lo reparte entre 23 módulos OSINT para generar un dossier con fuentes, listo para el gestor. Usa un planificador asíncrono por oleadas y un sistema tipado de Signals para rastrear la procedencia.
Bot de Telegram para gestionar una despensa compartida. Añade, quita y lista productos, y sugiere recetas mediante comandos, mensajes libres o fotos de la compra o de tickets. Usa un LLM para entender lenguaje natural.
Un CLI para guardar enlaces en Linkwarden, con selección de colección con fzf, entrada desde el portapapeles y caché local de colecciones.
Mi configuración de escritorio Omarchy más el conjunto de skills para agentes que uso en Claude Code y Codex, copiadas del original con notas de inventario y un instalador que las enlaza en cada agente.
Una skill para agentes de programación (Claude Code, opencode…) que añade traducciones i18n a proyectos grandes que tenían los textos escritos directamente en el código.

2025

Evalúa agentes LLM buscando el camino de citas más corto entre artículos académicos. Genera gráficos para visualizar los resultados y permite jugar a personas desde una interfaz web.
CLI con IA que une fuentes de datos (.csv, .sql, .jsonl…) en un formato unificado. Mapea campos automáticamente, deduce cabeceras que faltan y descarta información irrelevante.
Competimos en el mayor hackathon de España, donde creamos VuelingConnect, una app multiplataforma que monta una red de comunicaciones descentralizada con BLE, con un enfoque creativo para ahorrar batería y evitar redundancias.
Competimos con 2 proyectos distintos durante 3 días con un par de amigos: cMatch, una web y extensión de Chrome para encontrar y gestionar ropa de Inditex; y skillhub, un gestor de habilidades técnicas y personales para organizaciones donde los usuarios pueden publicar incidencias y guías.

2024

Con datos de ocupación y planos de gimnasios, construimos una simulación que permite a los gestores visualizarla fácilmente e identificar problemas.
Entrené una LoRA para Llama 3.1 con un dataset de conferencias y artículos de Miguel Anxo Bastos.

2023

Hice un directo audiovisual en el evento, con visuales reactivos y generados artificialmente que se transforman con la música. La mayoría de la música eran producciones mías; los visuales los hice con StableDiffusion y TouchDesigner.