Self-taught, shipping in production.
I’m a Google Cloud Certified ML Engineer and backend developer. I learned by building and shipping systems, not through a bootcamp. Today I run Axene.io, a B2B infrastructure platform giving African SMEs local-first, M-Pesa-compatible alternatives to USD-priced SaaS. Email, meetings and a CRM are live today; chat, payments, domains, analytics and ERP tools are next on the roadmap.
I’ve mentored rising data professionals, led AI/ML programming for GDG Chuka and She Code Africa, and spend a lot of weekends in rooms full of laptops helping someone ship their first model. I care about the whole lifecycle, from data engineering to training to containerised deployment on GCP.
Things I’ve built.
End-to-end engineering of Axene Mail, Axene Meet and an integrated CRM, built as affordable alternatives to USD-priced SaaS for the Kenyan SME market.
120 customers on Axene Mail
FastAPI, PostgreSQL, Docker, GCP, SMTP/DNS
An AI tutor named Doma guides students through the CBC curriculum, with separate student, teacher and parent roles.
Winner, Claude Hackathon, Elimu track
React 19, TypeScript, Node/Express, Neon Postgres
A Django storefront for everyday Kenyan goods, with category browsing, a cart and checkout built around M-Pesa payments, currently running against the M-Pesa sandbox.
Django, M-Pesa API
Ask questions about your own documents and get answers grounded in the source text, using retrieval-augmented generation.
RAG, LLM
2026, an Axene.io client project
A fast, mobile-friendly site for a Nairobi law firm, launched on the firm’s own domain and organised around what a client needs to decide: practice areas, partner profiles and how the firm works.
Experiments and notebooks
Smaller ML projects, run on synthetic or sample data to test an idea.
A pipeline that imputes missing values, scales and one-hot encodes features, then learns a logistic regression one row at a time, scored by predicting before it learns. Run on a deliberately messy synthetic Kenyan customer dataset.
Python, River, online ML, logistic regression
Fills missing values in a Kenyan customer-transactions dataset, then tests the result by hiding known values and scoring the guesses against a mean/mode baseline.
KNN beat the baseline: MAE about 653 vs 775
Python, Scikit-learn, KNNImputer
October 2026
Three runnable demos on synthetic data: a PyTorch credit-risk network, a random-forest check on which features drive a lending decision, and a rule-based script that logs maintenance tickets for failing rural water pumps.
Python, PyTorch, scikit-learn