Case study

The field foreman

Durian plantation management: soil and weather readings, task assignment, and labour cost per zone.

Works with no signaloffline-first in the field

Client
Wastech
Year
2020
Role
Led, team of five
Stack
Flutter, C#, ASP.NET MVC, MySQL
Runs on
Client-hosted

The problem

Irrigation and field work were run entirely by hand, with no record of what had actually been done in which zone. Without that, planning the next round of work was guesswork, and nobody could say what a completed task had cost in labour or diesel. What reporting there was reached the owner weeks or months after the work.

What we built

A coordination system for the whole estate. Soil moisture, weather and machinery-hour readings are pulled from the irrigation provider over their API. We consume the data rather than owning the devices. Supervisors then assign work against the zones those readings describe. Because the plantations have no connectivity, the mobile app is offline-first: workers sync their assignments in the morning, work the day disconnected, and sync completions back at the end of it. The reporting layer turns that into zone-by-zone completion, labour spend per task, and the irrigation decision itself.

The long version

Durian is a high-value crop with a low tolerance for guesswork, and the estates here were run on neither data nor records. Irrigation ran to a routine rather than to conditions, and once a worker walked into a block there was no trace of what got done until someone said so. That gap is what made planning hard: the question is never really “what should we do this week”, it is “what actually happened last week”, and nobody could answer it.

The constraint that shaped the build is that plantations have no internet. An app that assumes a connection is useless past the gate, so the field side is offline-first rather than offline-tolerant. Supervisors assign work the day before; each worker syncs in the morning before heading out, carries the full day’s assignments on the device, and syncs completions back when they return to coverage. Nothing in the field waits on a network, because there isn’t one.

Telemetry arrives from the irrigation equipment over an API rather than from sensors we own: soil moisture, weather, and machinery hours per zone. Pairing it with the task records is what makes the system worth more than either half: a zone that has just had rain does not need its scheduled watering, and skipping it saves both the water and the diesel burned pumping it. The same pairing gives the owner the other number they never had, which is what a completed task cost in labour.

The reporting is deliberately dull to look at. A supervisor wants to know which zones are done and which are outstanding; the owner wants to know what the month cost and where it went. Both of those are answerable the same day now, from records that write themselves as the work happens, rather than assembled by hand weeks later from memory.