Skip to content

Work

Everything, in one ledger: what shipped, who else touched it, and where it stands today. Five have full case studies. The rest get honest attribution and a couple of paragraphs.

Baobab

In production

A financial-data and wealth-management terminal for the Ghanaian capital markets, built and run solo.

Sole engineer, first commit to production · Oct 2025 to Aug 2026

Baobab treasury securities screen showing Bank of Ghana T-Bill rates, yields, and a macroeconomic snapshot, each figure carrying a source and date
Every figure on this screen carries its source and the date it refers to: "Source: Bank of Ghana" on the yields, "Source: GSS, Bank of Ghana" on the macro snapshot, "Rate date: 31 Aug 2026" under each T-Bill. The as-of date is the one the data carries, not the day it was fetched. That distinction is the whole reason the pipeline validates freshness instead of trusting a successful HTTP response.
Read the case study →

SkyLog

In production

Replaced the paper flight logbook at Ghana Air Force Headquarters. Still in use.

Sole author · 2025 to present

SkyLog flight entry form with fields for date, aircraft, crew, day and night hours, and instrument time
The flight entry form, the most important screen: it mirrors the paper logbook's column order rather than reorganising it around what a web form makes easy.
Read the case study →

Dermaid

Archived

A nine-class skin condition classifier, audited against its own test set and corrected in public.

Sole author · 2024 (training), 2026 (browser redeployment and audit)

Confusion matrix for the nine skin condition classes on the deduplicated 247-image test set
Almost every error sits between clinically related classes: chickenpox with shingles (same virus family), athlete's foot with cutaneous larva migrans (both present on feet), ringworm with cellulitis. That pattern is evidence the model learned real visual features rather than dataset noise.
Read the case study →

StockAlert

Prototype

A pharmacy inventory and expiry tracker with first-expiry-first-out dispensing, built in 2026.

Sole author · 2026

StockAlert barcode scanning screen with a manual barcode field beside the camera scanner
The camera scanner, with a manual barcode field beside it. The manual path exists because the application had to stay demonstrable on a machine with no webcam, and it is the same lookup either way.
Read the case study →

TrimQ

Prototype

Multi-branch barbershop queue management, built around walk-ins rather than appointments.

Sole author · 2025

TrimQ waiting-room display for the East Legon branch showing two customers Now Serving and five customers Up Next, each with a barber, service, and price
The screen that hangs in the shop, and the one this system is actually organised around. Barbershops here run on walk-ins, so the primary interface is not an admin dashboard: it is Now Serving and Up Next, readable across a room, refreshing itself every thirty seconds. Nobody has to be looking at it for it to do its job.
Read the case study →

AirVault

In production

Replaced paper and spreadsheet personnel and training records at Ghana Air Force HQ.

Sole author · 2025

More detail

A normalised four-entity PostgreSQL schema behind 84 routes and 14 screens. The CSV bulk import is deliberately forgiving, built to absorb the unit's existing, inconsistently formatted spreadsheets without a round of manual cleaning first. Backups are versioned SQL dumps rather than a managed service, run inside Docker Compose alongside the app.

109Counted. git log
commits
84Counted. repository
routes

GAFCTS

In production

Officer and course tracking for the Air Secretary's office, replacing paper course records.

Sole author · 2025

More detail

A 3,383-line Flask application over psycopg2, with 53 routes and five explicit course-completion states standing in for what used to be a note in a margin. PDF and Excel export cover the office's existing reporting habits, and CSV bulk import carries records in from the spreadsheets that preceded it.

25Counted. git log
commits
53Counted. repository
routes

Training Directorate System

In production

Replaced manual training registers with a role-based tracking system, including an unattended TV display mode.

37 of 45 commits · 2025

More detail

A 12-table schema serves four distinct role interfaces off one data model, including a display mode meant to run unattended on a TV in the training room. JWT auth, APScheduler-driven deadline reminders, a full activity audit trail, and written API and deployment documentation, since this one was handed off rather than kept solely in Ron's head.

37 of 45Counted. git log
of the project's commits
81Counted. repository
routes

Flashy

Archived

A university team project: document text extraction and flashcard generation from lecture material.

Text-extraction layer and flashcard-generation modules · 2024

More detail

Ron's part covered document text extraction, DOCX, PPT, PPTX, PDF, and image OCR, and the flashcard-generation modules, which put Google Gemini and OpenAI behind a single interface so either could generate cards. Image OCR and PPT extraction were unfinished when the team stopped work on it. It's the only university team project here; everything else had Ron as sole or majority author.

Flight Track

Archived

A flight-logbook prototype on MongoDB, killed after establishing the domain didn't fit a document store.

Sole author · 2024

More detail

Express, TypeScript, and MongoDB on the backend with a Next.js frontend. It's included here precisely because it was ended on evidence: a strongly relational, report-heavy domain like flight logging fits badly on a document store, and rather than force it, the project was rebuilt from scratch on Flask and PostgreSQL. That rebuild became SkyLog, which is in production today.