Work
Four projects, and what actually changed.
Client names are withheld where the contract requires it. References available on request during scoping.
Mobile money reconciliation engine
PROBLEM
Settlement across three telco wallets and one bank was reconciled by hand in spreadsheets. It took two staff most of two days, and disputes were found days after the fact.
APPROACH
An event-driven service ingesting transaction files and API statements, matching against the internal ledger with idempotent processing and a documented exception queue for anything that fails to match.
OUTCOME
Settlement runs in about 15 minutes, unattended. Unmatched items dropped from hundreds a week to a handful, each with a trail showing exactly where the divergence started.
STACK — .NET 8 · PostgreSQL · Redis · Docker
Case management for a law firm
PROBLEM
Matters were tracked in a shared drive and a wall calendar. Filing deadlines were missed twice in one year, and nobody could answer how many active matters a partner held.
APPROACH
A matter-centric system: clients, matters, deadlines, documents and time entries in one model, with role-based access, deadline reminders by email and SMS, and an audit log on every record.
OUTCOME
All 11 fee earners moved over in six weeks. Deadline misses went to zero in the first year, and partner utilisation is now a report instead of a conversation.
STACK — NestJS · PostgreSQL · React · S3-compatible storage
Clinic booking and patient records portal
PROBLEM
Bookings came in by phone and WhatsApp to one overloaded front desk. No-shows ran near a third of appointments and patient history lived in paper folders across two branches.
APPROACH
Phone-number-based booking that works on a low-end Android, an SMS reminder pipeline, and a clinician-facing record view with strict access control and a full read audit.
OUTCOME
Around 60% of bookings now arrive without a phone call. No-shows fell by a third after reminders launched, and both branches see the same patient history.
STACK — Flutter · NestJS · PostgreSQL · SMS gateway integration
Inventory and field-sales integration
PROBLEM
Stock counts in the warehouse system never matched what field sales had sold that day. Reps worked offline in vans and reconciled paper dockets at week's end.
APPROACH
An offline-first Flutter app for reps with conflict-safe sync, integrated to the existing accounting package through a queued API layer with retries and a daily reconciliation report.
OUTCOME
Stock accuracy moved from roughly 82% to above 98%. Week-end reconciliation went from a full day to a report the operations manager reads over coffee.
STACK — Flutter · .NET · PostgreSQL · RabbitMQ