The mind behind the work

Hi, I'm Francis. Product Designer, AI Engineer, Framer developer and Brand Identity Designer.

It started in 2014 with Photoshop and a favour. A course mate needed a flyer. Word got around, the work got paid, and somewhere between late nights and client briefs, design became a career.

The real shift came in 2018. I was redesigning a rural microfinance bank app a friend needed help on and something clicked. I stopped asking how an interface should look and started asking how a person actually moves through it. That question never left.

Since then I've worked with agencies and companies across Ghana, Nigeria, Kenya, Europe and the US, shipping products in fintech, sales intelligence, compliance and healthcare. I work closely with engineers from discovery through handoff, balancing systems thinking with sharp visual decisions, and using AI tools to move faster without cutting corners.

Outside work, I watch almost every genre of film, read widely across self-care, career books and fiction, and spend a lot of time down YouTube rabbit holes on topics far outside design: astrophysics, woodworking, gadgets, car manufacturing, gardening. Music is always on, mostly pop and afrobeats. I am a Manchester United supporter through the good seasons and the difficult ones, and sport in general is something I genuinely care about.

Francis
Francis
Francis at desk
Francis
Side Projects
Contentify
Contentify Plugin 500+ users A Figma plugin for realistic African placeholder content.
Contentify
Contentify Website The home for Contentify's library and plugin.
Lume
Lume Design System A design system built for scale, consistency, and speed.
Favourite playlist
To Do List
Engage my high school sweetheart Go get your own list
Co-found a startup Go get your own list
Learn motion design Go get your own list
Build an open source design system Go get your own list
Grow Contentify to 1,000 users Go get your own list
function toggleTheme() { const isDark = document.documentElement.classList.toggle('dark'); localStorage.setItem('theme', isDark ? 'dark' : 'light'); if (window.playThemeToggleSound) window.playThemeToggleSound(isDark); else playToggleSound(isDark); updateThemeIcon(isDark); } function updateThemeIcon(isDark) { document.querySelectorAll('#themeIcon, [data-theme-icon]').forEach((icon) => { icon.innerHTML = isDark ? '' : ''; }); } updateThemeIcon(document.documentElement.classList.contains('dark'));