The Problem & Context
SMEs and SACCOs lose pipeline visibility when deals live in WhatsApp and spreadsheets — without shared roles, tenant boundaries, or async reporting.
Multi-tenant CRM for Kenyan SMEs

SMEs and SACCOs lose pipeline visibility when deals live in WhatsApp and spreadsheets — without shared roles, tenant boundaries, or async reporting.
React → Express → MySQL with BullMQ workers; Jest suite + GitHub Actions CI.
Express REST API with JWT, RBAC, and tenant_id scoping.
MySQL 8 in production patterns; SQLite fallback for local/CI.
BullMQ + Redis: enqueue reports → worker → status / result API.
Land parcels, commercial quotes/invoices, legal matters, analytics hooks.
Tenant isolation and async jobs under test — CI fails when no tests are discovered.
Flagship engineering system with documented architecture and expanding tests; production rollout is phased.
I engineer reliable full-stack systems, institutional platforms, and M-Pesa payment workflows for Kenyan schools and businesses.