Nimpact Environmental Ltd.

Why Territory View can't "hallucinate" a bad recommendation

A one-page answer to: "An AI killed 25 acres in China — how do I know yours won't?"

The short version

That incident happened because a generative AI wrote a recommendation as free text, and someone acted on it. Our system is built the opposite way on purpose: no language model ever produces a flag, a number, or a recommendation. Every output is arithmetic on a measured satellite value against a fixed threshold. If you can read the number, you can check the advice.

The five safeguards

1. No AI in the decision path. Recommendations come from agronomy_rules.py — a fixed set of if value < threshold rules. It is deterministic: the same field data always yields the same result. There is no model that can invent, drift, or "confidently guess."

2. Full traceability. Every flag on the dashboard carries the raw measured index and the exact threshold that triggered it (e.g. NDMI = 0.159, rule fires when NDMI < 0.20). A human can verify any recommendation in seconds. Nothing is unsourced.

3. A confidence gate that refuses to guess. Imagery older than 14 days, or more than 20% cloud over the field, returns INSUFFICIENT DATA — no recommendation. The China failure was an AI acting on bad input. This system's default on bad input is silence, not a guess.

4. Human-in-the-loop by design. The tool ranks and flags which fields to look at. It never prescribes a rate and nothing is ever applied automatically. The agronomist drives out, ground-truths, pulls a tissue test, and makes the call. The expert is the verification layer — and that is sold as a feature, not a disclaimer.

5. Calibrated, conservative, and labelled. Thresholds are conservative starting points that get calibrated per crop/region against your own ground truth before any dollar figure is trusted. Dollar amounts are explicitly wide call-prioritisation estimates, never guaranteed returns or prescriptions.

What the satellite data itself is

The indices (NDVI, NDMI, NDRE, etc.) are computed directly from ESA Sentinel-2 imagery — public, calibrated, government-operated satellite data. They are measurements, not predictions. The only interpretation layer is the transparent rules engine above.

The one-line pitch

"It doesn't tell your farmers what to do. It tells your reps which farmers to call this week — and shows the measured number behind every call, so your agronomist confirms before anyone touches a field."

Don't take our word for it — audit it in one command

./verify.sh

That runs three independent proofs and prints PASS or FAIL. It is meant to be run in front of you, on your laptop, before you buy anything.

ProofWhat it establishesScale
test_agronomy_rules.pyThe engine cannot invent advice35 safety invariants, 23,000+ evaluations
test_engine_parity.pyThe web page runs that exact engine, not a lookalike4,047 cases compared field-by-field
test_page_integrity.pyThe page contains no AI model, and the map cannot misplace a field65 static + headless checks

The invariants that are mechanically enforced — not promised, tested:

Why the parity test matters most

The audited engine is Python; browsers can't run Python, so the dashboard carries a JavaScript copy of the same rules. That duplication is the one place this system could quietly start lying — a drifted copy would display flags and dollar figures the audit never approved, while every "traceable" claim on the page stayed printed there. So the parity test extracts the JavaScript straight out of the live page and fails if the two engines disagree on any status, any threshold, any dollar figure, or any word of suggested action.

It has already caught one real defect: Python's int() truncates where JavaScript's Math.round() rounds, so fields with fractional acreage would have printed a dollar figure off by one from the audited engine. Found and fixed before it ever reached a grower's card.

It also checks itself in your browser

The dashboard runs seven of these invariants live, on page load, against the same engine that built the table you're looking at — not against saved results. The badge in the top-right shows the outcome; click it to see every check. If the engine were ever edited into producing an unjustified flag, that badge turns red before you read a single recommendation, and the failure panel opens on its own.

The engine, on one real field

python3 agronomy_rules.py

Runs the engine on the real Homestead reading (2026-08-02) and prints the flag, the triggering value, and the threshold — the whole decision, fully auditable.

The map draws pictures, not conclusions

The dashboard shows each field on a satellite basemap. Two things are worth stating plainly, because a map is the easiest place for a tool to look more certain than it is:

Field outlines are drawn from legal land descriptions to the real township grid, and the suite checks that geometry rather than trusting it: every field must land inside the county, no two fields may share a location, and each drawn rectangle's true ground area must match the acreage printed beside it to within 1%. A quarter section drawn at double size would be a confident wrong answer, which is the failure this whole project exists to prevent.

What we are still honest about

Open the live dashboard Print this page