Software Engineer

Alexis Alulema

Software Engineer · Builder

Software Engineer with 20+ years turning complex problems into scalable solutions — across software, cloud, AI and hardware.

MCP Talk to this site from your AI assistant

Try it live

Real AI projects you can spin up on demand — each one gets its own ephemeral environment.

See all projects →
Live demo

Trip Planner (Chain of Agents)

Type a trip request and watch a chain of specialised agents hand the work along in real time until they deliver a day-by-day itinerary checked against your budget. A LangGraph orchestrator owns the control flow; a local Qwen 2.5 writes only the prose, while typed decisions and plain arithmetic handle the rest. When the plan goes over budget, a conflict-resolution agent renegotiates it without a human. Local LLM (Qwen 2.5 via Ollama) and no API keys; live weather, places and exchange rates come from open data sources.

PythonFastAPILangGraph
Try the live demo →
Live demo

Agentic Racing

Six identical cars race a closed circuit in the browser. Each car is a two-tier agent: a pilot that drives every frame, and an independent LLM team boss that reads live telemetry and radios back a strategy — attack, defend, conserve — F1 team-radio style, on screen. The race never waits on the model: a fixed heuristic takes over the instant it is slow, off, or replies invalid JSON. Fully self-hosted: a local llama3.2:3b behind a proxy with its own circuit breaker, rate limit and concurrency gate.

Unity WebGLPythonFastAPI
Try the live demo →
Live demo

RAG Chatbot over Blog Posts

An interactive retrieval-augmented generation chatbot that answers questions using my blog posts as a knowledge base. Fully self-hosted: semantic vector search (pgvector) with multilingual embeddings and a local Qwen 2.5 LLM served by Ollama — no external LLM APIs.

PythonFastAPIpgvector
Try the live demo →

Latest posts

See all posts →
10 min read

The MCP server that waited almost two months (and shipped in one night)

This blog is now also a read-only MCP server: any AI assistant can search and read the posts and check the demos, always citing the original URL. I had the idea in September and almost every piece already existed, but the demos, especially Agentic Racing, came first. When I finally finished the spec, the server was in production that same night. This post covers why it took so long, what was actually missing, and how search turned out: recall@5 of 1.00 with the post's own words and 0.40 with paraphrases.

mcpagentsllmraginformation-retrievalpython
15 min read

Harness²: an agent that improves its own instructions (and a judge that always said yes)

I turned the core idea of Harness², from Google Research, into a live demo: improve an agent by changing its execution harness, not the model, in a Propose → Probe → Compose loop. With 1.5B and 2B models on CPU and the same model acting as judge, all 26 comparisons I recorded accepted the proposed change, 18 of them with exactly the same scores, and the judge rewarded answers with the arithmetic backwards. This post covers what I built, how I measured it, why an optimizer has no way of knowing whether it improved without an independent verifier, and under what conditions I'd use Harness² in my next projects.

agentsllmllm-evaluationprompt-engineeringollamapythonfastapi
16 min read

The Dreaming Agent: Three-Level Memory with a Small Model (and the Naive RAG That Beat It)

I turned LightMem's memory architecture into a demo: an agent that stores facts as it talks and that, when you ask it to "dream", consolidates its memory —merging, updating, promoting and forgetting— as a visible diff. Fully local, with 3B and 7B models. I measured it against a naive RAG with three runs per condition, and it lost: 79 vs 88 % with 7B, 58 vs 93 % with 3B. This post covers what I built, where it breaks, and why, with small models, the best memory turned out to be the one that rewrites the least.

agentsllmmemoryragollamapythonfastapiembeddings