SEC 000/HERO SCROLL 000% FPS -- PNL 0 PTR 0.00, 0.00 EAT --:--:--
Nairobi · UTC+3 | 7 yrs runtime | Status: open to work

Product engineer shipping JS features inside real products.

I build the TypeScript layer that makes products do the thing — component and attribute systems, generators, integrations, interfaces that hold up under real users. Seven years in, the last three at Finsweet.

primaryTypeScript · Svelte · Three
platformWebflow API · Cloudflare
alsoLaravel · Vue · Python
latticedrag it · click it
view the work
shipped for — agency & product
Dropbox Sign Weglot EquipmentShare Meow Wolf Leigh Bureau Illumio Sugarologie The Chosen
0
years building software
0+
sites launched & maintained
0%
faster front-end builds via reusable components
0%
seller efficiency lift on Vagascape
SPEC-01 — CASE STUDY
Finsweet · 2023 → present · shipped

Policy Generator, Consentpro CMP

Webflow users need GDPR-grade privacy policies and cookie declarations without a lawyer or a developer. I own the feature that generates them — jurisdiction-aware, scanner-fed, and editable inside the site they already have.

TypeScript Svelte Webflow API Cloudflare Workers LLM assist
drop Consentpro generator UI
1600 × 1200 · png
REQ · inputs
Site domain, scanned cookie inventory, vendor list, business entity details, and the jurisdictions the customer sells into.
CON · constraints
Output has to be legally defensible per jurisdiction, regenerate when the cookie scan changes, and stay editable by a non-technical marketer inside Webflow — no build step, no dev handoff.
DEC · decisions
Clause-level template graph instead of one document per jurisdiction, so GDPR, CCPA and friends compose from shared blocks. Generation runs on the edge and returns structured content, not HTML soup — the renderer decides presentation.
IMP · implementation
Svelte UI in the CMP dashboard, TypeScript generation core with typed clause schemas, Webflow CMS write-back for the published policy page, and LLM assist confined to phrasing — never to the legal structure.
OUT · outcome
Compliance became a setup step rather than a project. Customers self-serve their policy, and support stopped fielding "which jurisdiction am I in" tickets.
SPEC-02 — CASE STUDY
Sugarologie · agency build · live
drop Cakeculator screen
1600 × 1200 · png

The Cakeculator

A recipe engine dressed as a calculator: pick cake type, pan geometry, frosting and filling, and it rescales every ingredient, bake time and yield. The hard part was never the UI — it was the ratio model behind it and keeping it correct across pan volumes.

modelbaker's-percentage scaling by pan volume
stackTypeScript · Webflow CMS · Wized
outcomethe site's most-used page
INDEX — SELECTED BUILDS
2019 → 2026
idbuildstackyr
01 Attributes & Components systems CMS filtering, sliders, tabs, sort and load-more that non-coders configure with attributes. TypeScript · Webflow API 2023
02 Algolia ↔ Webflow CMS sync Search app for Leigh Bureau — index pipeline plus a front-end that stays fast at scale. TypeScript · Algolia · Cloudflare 2022
03 EquipmentShare location views Google Maps data visualisation of branch and fleet coverage across the US. JavaScript · Maps API 2022
04 Meow Wolf event ticketing Ticketing flow for events — inventory, checkout and confirmations on a no-code shell. JavaScript · Wized · Webflow 2022
05 Kopokopo M-Pesa package Open-source Laravel package so other developers ship mobile payments in an afternoon. PHP · Laravel · Kopokopo API 2021
06 Upworkstation & Vagascape Two platforms built solo — a multi-tenant hiring marketplace, and multi-store commerce sync for Kilimall sellers. Laravel · Vue · Redis · Websockets 2021
MATRIX — WHAT I REACH FOR
depth · not a checklist
A · language
TypeScript96
JavaScript94
PHP72
Python55
B · front of house
Component architecture & reusable design systems
Svelte · Vue · Alpine · Livewire
GSAP · ScrollTrigger · Lenis · Three.js
Responsive, mobile-first, cross-browser
Accessibility & UX best practice
C · behind it
Webflow API — Designer & CMS
API design & third-party integration
Cloudflare Workers · Redis · queues
MySQL · Postgres · websockets (Soketi)
Laravel · Wized · WordPress when it fits
D · how I work
Performance budgets, not vibes
Internal tooling to speed the team up
Async writing · open communication
Git discipline · reviewable increments
Debugging as a first-class skill
LOG — EXPERIENCE
2017 → present
AUG 2023 → PRESENT
Finsweet · remote

Webflow Product Engineer

Owned the Policy Generator in Consentpro CMP. Designed and implemented Attributes and Components systems that let non-coders build CMS filtering, sliders, tabs and sortable content. Modularised the component library — reusable templates cut front-end build time by 20% — and led the internal tooling that decides how new components enter the product.

→ AUG 2023
Finsweet · agency team

Agency Projects Developer

Built and maintained front-ends for Dropbox Sign, Weglot, EquipmentShare, The Chosen Adventures and Yuna — plus the logic layers behind them: the Cakeculator recipe engine, Algolia search sync, Meow Wolf ticketing, Marketo form mirroring for Illumio, and XML-fed ad automation.

FEB 2019 → JUL 2023
Freelance · Nairobi

Software Developer

Shipped Upworkstation and Vagascape solo — multi-tenant architecture, permissions, queues, live chat, marketplace API sync. Also 50+ WordPress sites, a researcher platform for SDSN, a documented API for the Kenya Research Information System, and open-source packages the Laravel community still installs.

2014 → 2017
University of Eldoret

BSc. Computer Science

Software engineering methodology, data structures and algorithms, databases, statistics. Started freelancing before graduating, which is why the log overlaps.

LAB — GLASS LATTICE
the panels behind this page, exposed

The same lattice that drifts behind this page — sheets of glass with a hand-written fresnel shader, reorganising into a new formation every section. Here you get the controls.

drag inside · click to burst
geometry
panels22
panel scale1.00
drift0.35
spin0.30
meshes 22 · fresnel glass shader · double-sided
now

Building product features at Finsweet, and open to senior front-end / product engineering roles where the JavaScript layer matters.

basedNairobi, KE
overlapEAT · CET · EST am
remote since2019
local time--:--:--
readingWebGPU specs
tinkeringshaders & motion
offlineswimming · hiking
giving backLaravel open source
EXIT — SAY HELLO
mgates4410@gmail.com