const tim = {
base: "Nairobi, Kenya",
trainedAt: "ALX Software Engineering",
does: ["product engineering", "programmes", "community"],
ships: "production systems, end to end, mostly solo",
buildsWith: ["Next.js", "Supabase", "Vercel", "Claude Code"],
wiredFor: ["Paystack", "M-Pesa", "Africa's Talking", "Resend"],
rule: "build it so it runs after I leave",
};Most of my client code is private. The code I can share is in ./open-source below.
| Project | What it is |
|---|---|
| AfriESG Metrics | ESG platform: public site and CMS, multi-tenant product app, data collection tool |
| Epic Prime Investments | Land sales site, customer portal, back office CRM |
| Nawiri Sisters Foundation | Donations, events, ticketing, CMS |
| Mozini Gifts | Gift shop: storefront, Paystack and WhatsApp checkout, back office |
| Amplify Africa | Site, academy applications with Paystack, admin |
| Canvathon Kenya | Design competition: briefs, submissions, judging, results |
| Arkaiv | Governance SaaS |
| magotheinnocent.com | Founder portfolio with its own CMS |
| Docent | Animated A to B route links with live tracking |
| Tafsiri | Chrome extension: live meeting captions translated on device (Meet, Teams, Zoom web) |
| timmwangi.com | My site and blog on a Supabase CMS I built |
Tools I built for the work I do: running programmes, running communities, and wiring apps for Kenya.
| Repo | What it does |
|---|---|
| docent | Directions as a short animated route in one link, built for Kenyan phones and data. Next.js, Supabase. Try it |
| tafsiri | Chrome extension: live meeting translation that runs on your own computer with Chrome's built-in AI. Install it |
| apply-desk | Pick a cohort fairly: blind review, even reviewer workloads, conflicts handed on, harsh and lenient reviewers evened out, ranked shortlist. Neon, Vercel. Try it |
| ask-the-room | Live Q&A for panels: questions from phones, upvotes, moderation and a projector view; 300 phones cost one database read every 2 seconds. Neon, Vercel. Try it |
| mpesa-match | Paste an M-Pesa statement and a member list: who paid, who paid part, who owes, and money from strangers. Runs in the browser. Try it |
| mentor-hours | Office hours for hubs and cohorts: mentors open slots, founders book with one link, Postgres makes double booking impossible. Neon, Vercel. Try it |
| campaign-links | A short link per channel, so you know if WhatsApp, LinkedIn or the posters brought the applicants. Link previews counted apart. Neon, Vercel. Try it |
| event-feedback | One QR on the last slide, 30-second answers, live Net Promoter Score before people leave. Neon, Vercel. Try it |
| judging-desk | Fair scoring for hackathons and competitions: cancels out harsh and lenient judges, flags gaps and conflicts. Try it |
| event-checkin | Door check-in on a phone that keeps working when the wifi dies, with QR tickets and two-phone merge. Try it |
| cohort-pulse | Drop in a cohort CSV and see who needs a nudge, with a WhatsApp draft for each. Try it |
| paystack-mpesa-kit | M-Pesa and card checkout through Paystack: signed webhooks, server-side amounts, idempotent settlement. Try the sandbox |
| sms-kit-kenya | Africa's Talking SMS without the surprises: Unicode costs, number cleanup, STOP opt-outs, no double sends. Try it |
| site-launch-check | 20 pre-launch checks for any website, in the browser or one command. Try it |
| ALX work | C and Python from scratch: a UNIX shell, a bytecode interpreter, sorting, binary trees, an AirBnB clone API |
The bot above just ate my whole year without dying. Think you can match it?
contributions, last year .. 1,601
this week ................. 62
current streak ............ 13 days π₯
longest streak ............ 18 days
best day .................. 157 on 2026-09-27
last public push .......... docent, 12d ago
100-day streak challenge
[ββββββββββββββββββββ] 13/100
today's side quest: Write a post instead of a draft
- I run alumni relations at AfricaHackon and the socials at Hackhouse Africa.
- I'm product manager at Teckid, an online coding school for kids.
- At ALX I supported more than 2,000 learners and walked one cohort of 160+ all the way to graduation.
- I was the main contact for 70+ founders in the first Startup Garage Africa cohort.
- I'm a Canva Canvassador.
- Building client systems that keep working when I'm not in the room.
- Getting Tafsiri onto the Chrome Web Store.
- Writing more about what it takes to build for programmes and communities here.
- Push code 100 days in a row. The counter above keeps me honest.
- Ship one small, silly project a month, for no reason at all.
- Build something in a language I've never written.
- Get a stranger to star one of my repos.
- Learn psychology properly, then build something with it.
- Get outside more. Weekly, not "when things calm down".
Running a programme, a community or a startup that needs something to work properly?
Book a call or email me.



