Okomu — Enterprise Farm Intelligence & Bunch Counting Platform

Frontend · Backend · Data Engineering · ML · Infrastructure — delivered for Okomu Oil Palm

ReactFastAPIPostgreSQLPostGISMinIO YOLO Object DetectionComputer VisionMobile integrationGIS

A bespoke, end-to-end enterprise system for oil palm operations — not a demo or a single model, but a production platform spanning a web dashboard, a spatial backend, an object detection model running inside a field mobile app, and the infrastructure holding it together. I owned the frontend, the backend, the data engineering, the data flow between every component, and the infrastructure.

What the system does

It brings the whole harvest operation into one place: field data captured on mobile, fruit bunches detected and counted automatically from imagery, everything georeferenced, and the results surfaced as dashboards and maps management can act on. Because every count carries a location and an image behind it, the platform doubles as a control system — the core GIS includes functionality built specifically to detect fraud in field reporting, catching counts and captures that don't hold up against where and when they claim to have happened.

Frontend — dashboard and spatial visualisation

I built the web application in React: the operational dashboards, the analytics views, and the in-browser GIS visualisation that puts field activity, harvest volumes, and spatial patterns on a map rather than in a table. I used Antigravity AI as a development accelerator throughout the frontend build.

Backend — FastAPI and PostGIS

The backend is FastAPI, backed by PostgreSQL with PostGIS handling all the spatial processing. Pushing the GIS work down into the database — rather than into an application layer or a separate geoprocessing service — keeps the spatial queries next to the data and lets the whole system run on one storage engine instead of a stack of specialised ones.

The bunch detection model

I built the machine learning side end to end: assembling the training data from multiple sources — online imagery plus field campaigns where images were captured directly at the sites — through modelling and training a YOLO object detection model for palm bunch detection and counting. Dense, overlapping bunches and variable field lighting are what make this hard; a clean photo is the easy case, and almost nothing in the field is a clean photo.

Mobile integration

The platform connects to a field mobile app, and my detection model is integrated into it so counting happens where the work happens — an operator captures a bunch and gets a count on the spot, which then flows back into the platform. I did not build the mobile app itself; I built the model inside it and the data pipeline it talks to.

Storage and infrastructure

Field imagery is object data and a lot of it, so we self-hosted MinIO for image and file storage, keeping the large binary assets out of the database and addressable by the rest of the system. I handled the infrastructure management across the platform along with the data engineering — the ingestion, the flow between mobile, model, database, and dashboard, and the connections that make the separate pieces behave as one system.

Delivery

This is a bespoke enterprise deployment rather than a public product, so there's no live demo to link. Screenshots of the system will be added here as they become available for release.