I build software that turns careful thinking into things people use.

  • Pestify, app screen
  • TriviaHub, app screen
  • Inventory Quotient, app screen
Mawuko Senyo Hayibor, Software Engineer

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.

Selected work

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.
Built with
React Native, Expo, Expo Router, Django, LiteRT (TensorFlow Lite), NumPy

Watch the demo videoApp code on GitHubAPI code on GitHub

  • only answers park questions
  • remembers the chat by chaining response IDs

WonderWorld AI Support Chatbot

2025–2026

Problem
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.
Built with
TypeScript, Bun, Express, Prisma, MySQL, React, Tailwind CSS, OpenAI API, Ollama

Watch the chatbot demoView on GitHub

  • you only ever see your own items
  • photo deleted if the save fails

Inventory Quotient Mobile App (Android Build)

2025–2026

Problem
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.
Built with
React Native, Expo, Nativewind, Zustand, Django REST Framework, PostgreSQL, Cloudinary

Watch the demo videoApp code on GitHubAPI code on GitHub

  • high scores kept per difficulty, as %
  • 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.
Built with
React Native, Expo, Expo Router, Nativewind, Reanimated

Watch the demo videoView on GitHub

inversepay.app
  • static pages where possible, so it stays fast

InversePay Official Website

2024

Problem
A new fintech product needed a public face that explained it clearly and loaded fast.
Decision
Led the web build in Next.js with Tailwind, keeping pages static where possible so they stay quick and easy to change.
Outcome
The live marketing site at inversepay.app.
Built with
Next.js, JavaScript, Tailwind CSS

Visit inversepay.app

github.com/Harry-Daniel/nextjs-nativewind
  • 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.
Built with
Expo, React Native, Expo Router, Nativewind

View on GitHub

Alusive Africa Website

2025

Problem
The organisation needed a site it could point partners and supporters to.
Decision
A focused Next.js site built as a freelance engagement, scoped to what they needed to say.
Outcome
Live at alusiveafrica.org.
Built with
Next.js, JavaScript, Tailwind CSS

Visit alusiveafrica.org

More work