I built this for the All Things Agentic Hackathon. This post covers how it works and what broke along the way.
A satellite can't see crop disease. It sees one signal — plants looking less healthy than they should — and that has a dozen causes: drought, harvest, haze, a field boundary drawn over a car park. Every satellite tool alerts on that drop, and because most alerts are nothing, farmers stop opening them.
So I built Fieldhand: a fleet of agents where most of the effort goes into trying to prove its own findings wrong.
Nobody logs in. Cloud Scheduler → Pub/Sub wakes it at 4am, a Watchman picks the fields worth looking at, and each runs through a Google ADK fleet: Diagnostician (reads the satellite evidence) → Skeptic (attacks the diagnosis) → Agronomist (plans treatment + a real spray window) → Operations (work orders). Anything that costs money stops at a human.
It's not told to "verify" — a model asked to verify goes and finds supporting evidence. It's told to find the reason the diagnosis is wrong. Its main instrument is arithmetic: compare this field to its neighbours, and to its own history in prior years. On a real Palouse field reading −5.5σ (catastrophic), the Skeptic pulled 3 years of history, saw it's harvested and bare every August, and refused to alarm. During testing it also caught a "dying 400-acre field" I'd drawn over downtown Pullman — it looked at the imagery, saw rooftops, and dropped confidence to 0.10.
max_output_tokens
covers thinking AND the answer."$6,044"
), which crashed the policy layer until I coerced at the tool boundary.The policy layer is plain code with no model in it. Even a wrong or prompt-injected agent physically can't spend a grower's money. The interesting engineering wasn't making the agents smart — it was deciding where they don't get a vote.
Built with Google ADK · Gemini 3.5/3.7 Flash on Vertex AI · Gemma · Cloud Run · Firestore · Cloud Scheduler + Pub/Sub. Data from Sentinel-2 and Open-Meteo, both free.
Live: [https://fieldhand-web-37zk72cqha-uc.a.run.app](https://fieldhand-web-37zk72cqha-uc.a.run.app)
Code: [https://github.com/OJ-IRO/fieldhand](https://github.com/OJ-IRO/fieldhand)