DEV Community

Cover image for I thought the clever part was the AI, but the real win was putting the farmer controls in WhatsApp
Lars Winstand
Lars Winstand

Posted on • Originally published at standardcompute.com

I thought the clever part was the AI, but the real win was putting the farmer controls in WhatsApp

I expected the interesting part of this farm irrigation build to be the model logic.

Weather checks. Soil conditions. Motor control. Maybe GPT-5.4 or Claude Opus 4.6 deciding whether the field needs water.

Then I read a thread on r/openclaw about a WhatsApp-controlled irrigation agent built for someone’s uncle in India, and the thing that stuck with me was not the AI.

It was the interface.

The uncle’s problem was brutally simple: stop waking up at 4 AM to deal with irrigation.

The build handled the obvious automation pieces:

  • check weather
  • check soil conditions
  • decide whether watering is needed
  • turn the irrigation motor on
  • send updates
  • allow override through WhatsApp

That last part is the real product.

Not because WhatsApp is fancy. Because it is already where the operator is.

The mistake: building dashboards before proving the control loop

A lot of us reach for a dashboard too early.

We tell ourselves we need:

  • a control center
  • charts
  • historical logs
  • filters
  • role-based access
  • a mobile-friendly UI

Three weeks later, we have a React app nobody opens unless something is already broken.

Meanwhile, the actual operator is standing in a field with weak signal and a phone full of apps they already ignore.

That is why this OpenClaw irrigation example is more useful than it sounds.

It exposes a rule that applies way beyond farming:

If automation is doing the work 24/7, the human interface should be the lowest-friction thing available.

For a lot of real-world workflows, that is WhatsApp.

Why WhatsApp works better than people expect

Developers tend to think of WhatsApp as a notification sink.

That is underselling it.

With the WhatsApp Cloud API, you can send:

  • text
  • media
  • interactive messages
  • button-based prompts

That is enough for a lot of operational workflows.

You do not need a full app to support:

  • "Pump started"
  • "Soil moisture below threshold"
  • "Rain predicted in 2 hours. Skip watering?"
  • "Motor failed to start. Retry?"

That is not a chatbot problem. That is an operator control problem.

And operator control gets dramatically easier when the human does not need to install a new app, remember a password, or open a dashboard they never wanted.

What OpenClaw gets right

OpenClaw is interesting here because it treats chat apps as real control surfaces, not just notification endpoints.

The docs describe it as an OS plus messaging gateway for AI agents across WhatsApp, Telegram, Discord, iMessage, and more.

That matters.

It means the architecture is built around persistent agents with human interruptibility.

A minimal setup looks like this:

openclaw onboard
openclaw gateway --bind tailnet --token YOUR_TOKEN
Enter fullscreen mode Exit fullscreen mode

And the local endpoints are concrete enough that this feels like an actual ops tool, not a demo:

Gateway dashboard: http://127.0.0.1:18789/
Gateway WebSocket: ws://127.0.0.1:18789
Canvas host: http://<gateway-host>:18793/__openclaw__/canvas/
Enter fullscreen mode Exit fullscreen mode

That is the difference between:

  • "cool AI concept"
  • and "I could run this on a Raspberry Pi and trust it"

The pattern I would actually build

If I were implementing this for a farm, warehouse, or field-service team, I would not let the LLM own the control loop.

I would split responsibilities like this:

  1. deterministic logic decides routine actions
  2. local hardware or automation executes them
  3. AI handles summaries, anomalies, and human-readable explanations
  4. WhatsApp handles alerts, approvals, and override

That gives you something like:

if soil_moisture < 0.22 and rain_probability < 0.30:
    start_pump()
    send_whatsapp("Pump started. Moisture low, no rain expected.")
else:
    summary = llm_summarize({
        "soil_moisture": soil_moisture,
        "rain_probability": rain_probability,
        "pump_status": pump_status,
    })
    send_whatsapp(f"No action taken. {summary}")
Enter fullscreen mode Exit fullscreen mode

That is a much better use of AI than asking GPT-5.4 to pretend to be a sprinkler timer.

You probably do not need AI for irrigation logic

This is the part the Reddit commenters got right.

If the logic is deterministic, then an Arduino, a relay, a moisture sensor, and a timer are often enough.

Something like this is not glamorous, but it is correct:

if (soil_moisture < THRESHOLD && rain_expected == false) {
  pump_on();
} else {
  pump_off();
}
Enter fullscreen mode Exit fullscreen mode

You do not need Claude Opus 4.6 to decide that dry soil is dry.

Where AI becomes useful is around the edges:

  • summarizing why the system acted
  • explaining anomalies
  • rewriting alerts so humans can act quickly
  • handling weird cases that do not fit simple rules
  • making approvals easier for non-technical operators

That is the sweet spot.

WhatsApp vs Telegram vs dashboard

No, WhatsApp is not always the winner.

Telegram has real advantages for agent-heavy workflows, especially if you want message editing and streaming progress updates.

A custom dashboard still wins when the workflow is genuinely complex and people need historical reporting or deep control.

But for normal operators, WhatsApp is hard to beat.

Option Best use
WhatsApp Familiar operator interface, alerts, approvals, start/stop override
Telegram Bot-native workflows, editable messages, progress updates, agent wrangling
Custom dashboard Complex workflows, reporting, rich controls, but higher adoption friction

My take:

  • WhatsApp wins when the operator is a normal human doing real work
  • Telegram wins when the operator is basically managing agents
  • custom dashboards win only when the workflow really needs them

Most teams overestimate how often they are in category three.

The hidden problem is not the UI

The hidden problem is cost shape.

Once you move from one-off prompts to persistent agents, your model usage stops looking like a few big requests and starts looking like constant background traffic.

A real automation system does things like:

  • classify sensor anomalies
  • summarize weather changes
  • explain failed actions
  • rewrite alerts for clarity
  • generate approval prompts
  • interpret photos or attachments

None of those calls are individually expensive.

Together, they become the steady-state load of an always-on agent.

That is where per-token billing gets annoying fast.

Teams start doing dumb things like:

  • skipping summaries users actually need
  • reducing context to save money
  • turning off escalation paths
  • avoiding useful checks because they are afraid of surprise bills

That is exactly the wrong optimization.

For anyone building with OpenClaw, n8n, Make, Zapier, or a custom OpenAI-compatible stack, the economics matter as much as the UX.

If your workflow is going to run all day, the agent layer needs predictable cost.

That is why Standard Compute is relevant here.

It is a drop-in OpenAI API replacement with flat monthly pricing, so you can keep the agent doing useful background work without staring at a token meter. If your automation keeps calling models for summaries, anomaly checks, and approval prompts, predictable cost changes what you are willing to ship.

A practical architecture for this pattern

Here is the stack I would recommend for this class of workflow:

Sensors/PLC/Arduino
    -> local rules engine
    -> OpenClaw or workflow runner
    -> LLM calls for summaries/anomalies
    -> WhatsApp or Telegram for operator actions
    -> human approve/deny/override
Enter fullscreen mode Exit fullscreen mode

Or if you are using n8n:

Webhook / sensor event
    -> deterministic filter node
    -> LLM summary node
    -> WhatsApp approval message
    -> branch on approve/deny
    -> execute action
    -> send confirmation
Enter fullscreen mode Exit fullscreen mode

The important design choice is this:

use deterministic systems for control, use AI for interpretation, use chat for human override

That pattern is robust.

Why this matters beyond farming

The farm example is not niche.

It is a template.

The same pattern works for:

  • warehouse alerts that need supervisor approval
  • procurement exceptions that need sign-off
  • field-service jobs that need photo review
  • home lab agents that restart services and escalate only on failure
  • maintenance workflows where someone just needs a clean "approve / stop / retry" prompt

The common thread is not agriculture.

It is this:

ambient automation with human interruptibility

That is the category.

Not chat.
Not copilots.
Not another shiny AI dashboard.

Persistent agents doing boring work in the background, with humans stepping in only when needed.

What I would build first

If you are automating a real-world process, start with one question:

Where will the human say yes, no, stop, or what happened?

If the honest answer is WhatsApp, build for WhatsApp first.

Then make sure the agent behind it can afford to stay awake all day.

That means:

  • keep routine control deterministic
  • use AI only where it adds leverage
  • put approvals and override in the app people already check
  • run the model layer on predictable pricing if the workflow is persistent

That was the thing I did not expect from a post about irrigation.

I thought the clever part would be the AI deciding when to water crops.

The real insight was simpler:

the best control panel is usually the one the operator already has open.

Top comments (0)