Churn prediction
An XGBoost classifier over listening behaviour, wrapped in a Streamlit app with feature-importance output so the result is something a person can act on.
Work
Each project carries its real status — what is deployed, what is in development, and what was built for a course.
Project 01
A health application for Cameroon, built for the phones and networks people actually have.
Problem
Getting to a clinic often means not knowing which one is open, how far it is, or what to do first. Paper records go missing between visits, so each consultation starts from nothing. In an emergency there is no fast path to the right contact.
Context
A mobile health application for Cameroon. The audience is general public rather than clinicians, which sets the bar for how much the app is allowed to assert about someone's health.
Constraints
My role
Technical build across the Flutter client and the PHP API — architecture, implementation, the design system, the test suite, and the CI setup.
Architecture
Feature-first module layout rather than layer-first. Auth, profile, health records, reminders, notifications, clinic locator and emergency each own their own state through Provider, with go_router handling navigation between them.
Behind that, three domains — auth, profile and health records — sit behind a repository abstraction with typed API models, so the call sites do not know or care whether data came from the network or a local store.
Key decisions
Implementation
Flutter and Dart on the client, PHP on the server, REST between them with JWT for session handling. A custom design system — Clinical Sanctuary — fixes the palette, an 8pt spacing grid, and the type scale, so screens stay consistent without a component library.
Built and working in the codebase: authentication, profile management, health records, reminders, notifications, clinic locator, emergency contacts, the emergency portal, and the rule-based symptom checker.
Testing
88 automated tests — 72 in Flutter, 16 on the PHP API. CI runs lint and the full suite and blocks a merge if either fails, so the gate is enforced rather than aspirational.
The repository also carries an architecture document, a deployment runbook and a risk register, which matters more than it sounds: the runbook is what makes the deployment reproducible by someone who is not me.
Security
Trade-offs
Status
In development. The feature set above is implemented in the codebase, but the application has not been deployed and is not in front of patients. A migration-readiness review for moving the backend to Laravel returned not yet, with three gates still outstanding.
Not built
Scoped but deliberately not implemented: a QR emergency health passport, AI health companion mapping, and a further privacy and security pass. None of these exist yet, and the app does not behave as though they do.
Next
Clear the three migration gates, add crash reporting and structured logging, then move to a real HTTPS deployment with scheduled database backups — in that order, because there is no point collecting crash data from an environment that is not yet reproducible.
Lessons
The abstraction I am most glad about is the one I added before I needed it. The one I underestimated is documentation: the runbook and risk register took an afternoon each and are the only reason the deployment path is legible now.
The harder lesson was scope. Health software makes it very easy to promise interpretation, and most of the engineering discipline here went into deciding what the app is not allowed to claim.
Project 02
Founder and Team Lead of a youth initiative — and the person who builds its software.
Dual role
I founded Rise for Impact in April 2025 and lead the team. I am also the only engineer on it, which means the roadmap and the implementation are decided by the same person — useful for speed, and something I have had to actively guard against when the convenient technical answer is not the right programme answer.
Operations
Programmes run in Cameroon, Ghana, Nigeria and Rwanda. The organisation publishes 500+ young people engaged across those programmes — programme reach, not platform accounts.
The people running it day to day are volunteers, not operators. That single fact drove most of the build: anything that required a developer to change was treated as a design failure.
Built
Constraints
Most people arrive on mid-range Android devices over mobile data. Page weight and round trips mattered more than framework choice, and the content model was kept flat specifically to avoid the request waterfalls a nested one would have created.
Project 03
An agricultural marketplace on a PHP MVC framework I wrote rather than installed.
Connects farmers, buyers and transport providers across four role-based portals — produce listings, price bidding, delivery tracking and an analytics view. Built for CS415, a software engineering course, with the full engineering process documented alongside the code.
The interesting part is the framework underneath: a front controller, a routing layer, and the design patterns wired by hand. Coursework, with a test suite that runs on a fresh clone.
Project 04
Three projects from a two-month AI & Machine Learning internship at Future Interns, June to July 2025. Each one shipped with an interface, because a model nobody can use is a notebook.
An XGBoost classifier over listening behaviour, wrapped in a Streamlit app with feature-importance output so the result is something a person can act on.
Dialogflow handles intent classification and entity extraction; the OpenAI API generates the response. Multi-turn context is carried across the conversation, with a confidence threshold that falls back to a clarifying question rather than guessing.
Time-series forecasting with Prophet, surfaced through Power BI dashboards so the output lands where the decisions are actually made.
Also
2025
Smart Tutor
Tutor–student scheduling with conflict detection and messaging. PHP, MySQL.
Coursework ↗
2025
Virtual Wardrobe
PHP MVC, normalised MySQL schema, session auth and role-based access.
Coursework ↗
2025
Attendance Management
Automated CSV and PDF reporting across admin, teacher and student roles.
Coursework ↗
2025
CleanShield
Glacier melt risk prediction from environmental data. Python, Streamlit.
Prototype ↗
—
Everything else
22 public repositories across Dart, TypeScript, Python, PHP, Java and Jupyter.
GitHub ↗