Software Engineer

Alexis Alulema

Software Engineer · Builder

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

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 →
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
18 min read

What Do We Do When the Agent Doesn't Learn? RL Debugging Explained from Scratch

Part 8 of the Reinforcement Learning from scratch series with Agentic Racing. How to turn "the agent doesn't learn" into testable hypotheses, told through the real debugging of the project's RL pilot: at least six plumbing bugs before the first run, eight PPO runs with the lap fraction stuck, a baseline that had a bug of its own, misleading averages, termination versus truncation in ML-Agents, and the process mistakes that cost the most time.

reinforcement-learningmachine-learningagentsunity
19 min read

What Should an Agent Be Able to See? Observation Design Explained from Scratch

Part 7 of the Reinforcement Learning from scratch series with Agentic Racing. How you decide what information an agent gets, going one by one through the project pilot's 42 real observations: scaling, anticipation, memory, what can let a policy memorize a circuit, what it doesn't see (the rivals), the bugs that sent empty observations, and why the pilot, the expert, and the LLM strategist deliberately see different things.

reinforcement-learningmachine-learningagentsunity