I build software that turns careful thinking into things people use.
Mawuko Senyo Hayibor
Mawuko Senyo Hayibor — also known as Mawuko Hayibor — is an AI Engineer & Full-Stack Developer based in Accra, Ghana, building scalable web and mobile apps with Next.js, React, React Native & Django, and deploying ML models into production systems that solve real-world problems.
Now: Bringing machine-learning models into production apps, and exploring where AI meets VR and AR.
What each project asked for, what I decided, and how it turned out.
confidence stuck near 35%? a double softmax. fixed it.
no known pest = asks for a new photo, never guesses
Pestify: Crop Pest Detection App
2025–2026
Problem
Farmers often can't tell one crop pest from another until the damage is done, and by then an infestation has spread.
Decision
My final-year project. I built an Expo app and a Django API that serves our team's pest classifier, trained by a teammate. You snap a photo, and the app names the pest (aphid, armyworm, diamondback moth, grasshopper or whitefly), then shows its effects and how to control it. When the model sees no known pest, the app asks for a new photo instead of guessing. A guess-the-pest game helps farmers learn them.
Outcome
Before publishing it, I found a double-softmax bug that showed confident predictions at around 35%, and fixed it. I also swapped full TensorFlow for the lighter LiteRT runtime and added endpoint tests.
A support chatbot is only useful if it sticks to what the business actually offers, remembers the conversation, and doesn't make things up.
Decision
Built a full-stack TypeScript app for WonderWorld, a fictional theme park. The chatbot runs on OpenAI's gpt-4o-mini, with the park's details loaded into its instructions, a low temperature, and a rule to answer only park questions. It remembers each conversation by chaining OpenAI response IDs. The same app summarizes product reviews with a small local model through Ollama, saving each summary in MySQL so it's only generated once.
Outcome
Both features work end to end, as the demo shows. The server is split into controllers, services and repositories, with every model call behind one LLM client, so a model can be swapped without touching the rest. Built while following Code with Mosh's Build AI-Powered Apps course.
Tracking stock from a phone means knowing what you have, how many, and what's running low, with each person's inventory kept private and photos that load fast.
Decision
Built an Expo app on my own Django REST API. Accounts use JWT, and the app refreshes tokens automatically so you stay signed in. The server only ever returns your own items. Photos go to Cloudinary and are cleaned up if a save fails, and the data lives in PostgreSQL.
Outcome
Shipped as an installable Android build, with the code for both the app and the API public. The demo backend ran on a free Render database that has since expired, so the video shows it working.
empty API reply = a plain message, not a blank screen
TriviaHub Mobile App
2026
Problem
A quiz app sounds simple, but quizzes here come in three lengths and four difficulties, so a single high score means little. The free question API can also come back empty or fail.
Decision
Built it in Expo on the Open Trivia DB API with no backend. Scores are saved on the device as percentages, kept separately for each difficulty, so a 10-question quiz and a 20-question quiz compare fairly. Every empty or failed fetch gets a plain explanation instead of a blank screen.
Outcome
The full quiz loop runs on Android: 24 categories, feedback after every answer, a row of progress nodes, score history, and support for reduced motion. A Play Store release is next.
Inventory Quotient and TriviaHub both started here
Open Source Nextjs-Nativewind React Native Expo Template
2025
Problem
Every new Expo project meant wiring up Nativewind again: the Babel, Metro and Tailwind configs all have to agree, and one mismatch silently breaks styling.
Decision
Packaged that setup once as an open-source template, with Next.js-style file routing, a working two-screen example with a bottom nav bar, and a guide to making it your own. I keep it updated with each Expo SDK.
Outcome
One command starts a new app from it. It's now on Expo SDK 56, and both Inventory Quotient and TriviaHub were built on it.