Projects

Each case study follows the same structure: the problem, the approach, the technical decisions with the alternatives I rejected, the code that proves the claims, what did not work, and the results with how they were measured. Where a number was never measured it says so.

01LiveJan 2026 to present

Kylie, MCP Edition

A WhatsApp and Telegram agent whose calendar and search abilities live in a standalone MCP server, so the same server also plugs into Claude Desktop and Claude Code, with every message traced in Opik.

  • MCP
  • Python
  • FastAPI
  • LangGraph
  • LangChain

Read the case study

Kylie MCP architecture: a FastAPI host containing a LangGraph brain and an MCP client, talking JSON-RPC 2.0 over stdio or HTTP to a standalone MCP server that exposes tools, resources and prompts, with WhatsApp and Telegram as entry points and Opik tracing the whole run.

02Open sourceJan 2026 to present

Visual Document Understanding Pipeline

PDFs and photos in, clean Markdown out: tables as tables, maths as LaTeX, charts described in words.

  • Qwen3.5-4B
  • PP-DocLayoutV3
  • vLLM
  • NVIDIA CUDA
  • Hugging Face

Read the case study

Visual Document Understanding Pipeline architecture. Clients (an application or curl, and AI assistants such as Claude, Claude Code, OpenAI and Codex) reach an authenticated, rate-limited edge holding the API gateway and an MCP server with tools, resources and prompts. Inside a private Kubernetes cluster, an internal load balancer feeds the Rust API, which saves each document to Redis and adds it to the queue. A Python worker on the T4 pool takes the next task, runs PP-DocLayoutV3 layout detection on its local GPU, sends cropped regions to the vLLM server running Qwen on the A100 pool, and saves the result to Redis. A reaper recovers stale tasks, and the observability block (ServiceMonitor, Prometheus and KEDA) scales both GPU pools on queue length.

03ArchivedSept 2025 to Dec 2025

Kylie, WhatsApp Agent

The first version: a LangGraph agent living inside WhatsApp with voice, images, calendar, web search and Qdrant memory, and the reasons its hand-wired tools had to go.

  • Python
  • FastAPI
  • LangGraph
  • LangChain
  • LangSmith

Read the case study

Kylie v1 system design: the WhatsApp Cloud API webhook feeds a FastAPI service running a LangGraph workflow, with Groq for text, Whisper for speech, ElevenLabs for voice replies, Together AI for images and Qdrant for long-term memory.

Websites and applications I have shipped

Production sites for studios, restaurants, cleaning, healthcare, governance and real estate clients across Uganda, Rwanda and the United States.