# The field foreman

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

**Client:** Wastech
**Year:** 2020
**Role:** Led, team of five
**Stack:** Flutter, C#, ASP.NET MVC, MySQL
**Runs on:** Client-hosted
**What it does:** Works with no signal — offline-first in the field

## 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.

## Outcome

- Reporting to the owner cut from weeks or months to same-day.
- Deployed across two plantations, each divided into 10 to 20 zones.
- More than 50 connected irrigation devices reporting soil moisture, weather and machinery hours.
- 20 to 30 field workers running their day from the app, fully offline.
- Irrigation scheduled against actual rainfall rather than a fixed routine, cutting water and the diesel used to pump it.

## 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.


[Overcode](https://overcode.io/) — AI workflows and custom systems. This study as HTML: https://overcode.io/work/plantation-irrigation-telemetry/
