{"slug": "built-an-agent-fleet-that-helps-farmer-s-for-free", "title": "Built an agent fleet that helps farmer's for free", "summary": "A developer built Fieldhand, an agent fleet for the All Things Agentic Hackathon that helps farmers by trying to disprove its own satellite-based crop diagnoses. The system uses a Watchman to select fields, then a Diagnostician, Skeptic, Agronomist, and Operations agent to validate findings, with a policy layer that prevents agents from spending money. It successfully avoided false alarms on a Palouse field and a mock 'dying' field drawn over downtown Pullman.", "body_md": "*I built this for the All Things Agentic Hackathon. This post covers how it works and what broke along the way.*\n\nA 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.\n\nSo I built **Fieldhand**: a fleet of agents where most of the effort goes into trying to prove its own findings wrong.\n\nNobody 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.\n\nIt'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.\n\n`max_output_tokens`\n\ncovers thinking AND the answer.`\"$6,044\"`\n\n), 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.\n\nBuilt 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.\n\nLive: [https://fieldhand-web-37zk72cqha-uc.a.run.app](https://fieldhand-web-37zk72cqha-uc.a.run.app)\n\nCode: [https://github.com/OJ-IRO/fieldhand](https://github.com/OJ-IRO/fieldhand)", "url": "https://wpnews.pro/news/built-an-agent-fleet-that-helps-farmer-s-for-free", "canonical_source": "https://dev.to/oj-iro/built-an-agent-fleet-that-helps-farmers-for-free-ebj", "published_at": "2026-08-31 23:30:32+00:00", "updated_at": "2026-08-31 23:53:00.494720+00:00", "lang": "en", "topics": ["artificial-intelligence", "ai-agents", "ai-products", "developer-tools"], "entities": ["Fieldhand", "Google ADK", "Gemini", "Vertex AI", "Gemma", "Cloud Run", "Firestore", "Sentinel-2"], "alternates": {"html": "https://wpnews.pro/news/built-an-agent-fleet-that-helps-farmer-s-for-free", "markdown": "https://wpnews.pro/news/built-an-agent-fleet-that-helps-farmer-s-for-free.md", "text": "https://wpnews.pro/news/built-an-agent-fleet-that-helps-farmer-s-for-free.txt", "jsonld": "https://wpnews.pro/news/built-an-agent-fleet-that-helps-farmer-s-for-free.jsonld"}}