Banks & enterprise SaaS
Multi-tenant platforms
Goal: Sell one product to many organisations, each with its own branding, rules and infrastructure, without keeping a codebase per client.
As CTO of Lawyering I'm building a platform where law firms and individual practitioners each get an isolated workspace for their staff and clients. At Zercom I merged per-client copies of an LMS into Tangerine365: one codebase, tenants by subdomain or by ID. At Seamless I work on tenant isolation for a multi-tenant HR suite.
Solutions architecture
Deployment and infrastructure design
Goal: Run each system on infrastructure that fits its budget, its compliance rules and its risk.
For client deployments I write the sizing, server requirements and deployment architecture, including First Bank's three-tier on-premise build. For Zercom's own internal tools, staging and UAT, I moved separate DigitalOcean droplets onto one server running CyberPanel and LiteSpeed, configured for wildcard subdomains, and cut that hosting bill by about 85%.
National health campaigns
Offline-first data systems
Goal: Field workers in malaria campaigns get credited and paid for the days they actually worked, even when their phones sync late.
On contract with eGov Foundation I support DIGIT HCM across Abuja, Bauchi, Taraba and Borno. I traced worker lockouts to activities being dated at sync time instead of creation time, and I'm sizing infrastructure and support staffing for a 2027–29 programme across 11 states (~27M people).
How I work
Guardrails for AI coding agents
Goal: Get the speed of AI coding agents on production codebases without losing control of what they change.
I work agent-first. agent-contract, my npm CLI, checks every write an agent attempts against the repository's rules and blocks anything outside the task's scope before it lands. I'm also researching repository memory: how a decision log stays true and reaches the agent at the right moment, behind a write gate that humans control. It's the subject of my talk for PHP Talks Lagos.