Skip to main content
Back to Showcase

AUGURY: Reading Soil Health from Weeds

Author:RegeneratusLabsModel:MiniCPM5-1B

Maps weed species to soil-health indicators; phone-deployable, no cloud

AUGURY treats weeds as soil-health indicators. It is an open-source pipeline that maps weed species to the soil conditions they indicate — compaction, waterlogging, nutrient imbalances, pH, salinity and organic-matter state. Indicators only, no management advice. No cloud required, and it is designed to run on a phone.

"The plant is the mirror of the soil." — Gérard Ducerf

How It Works​

Plain Text
[photo] → DINOv2-base embedding → FAISS kNN over 111k-photo gallery → top-k species
[text] → deterministic species extraction (regex + fuzzy DB match)
│
▼
species_lookup.py → database-merged.json (2,230 spp)
│ the model NEVER generates facts
▼
MiniCPM5-1B + LoRA ("the voice") → conversational soil story

Three layers, one job each:

  1. Perception — retrieval, not classification. DINOv2-base embeddings plus FAISS over a 111,320-photo gallery. A new species means new photos and a DB row; the encoder never retrains. AU-scoped: 80.9% top-1 / 88.3% top-3 on 188 Australian weeds (alias-merged).
  2. Facts — a deterministic database. 2,230 species × region (Australia / Europe / UK) × indicator dicts, drawn from Ellenberg (1991), Maughan & Amos, CAWR and Australian government publications. The model formats these facts; it cannot hallucinate a pH value because it never generates one.
  3. Voice — one small fine-tune. A MiniCPM5-1B LoRA (r16/α32, 3 epochs, bf16, one A10 session) on 13,627 DB-generated rows. GGUF Q4_K_M = 660MB, phone-ready via llama.cpp. Eval: val loss 0.0398; 6/6 fact-keys echoed in a local smoke test.

Status (2026-08-13)​

  • ✅ Text funnel live: species extraction → DB → trained formatter story. Multi-species ("docks and thistles"), region-aware, with the correct refusal boundary (indicators only, never management advice). 6–12 s per answer on a 16-core laptop.
  • 🔄 Photo path in progress: the full-gallery FAISS index is being built, with confidence bands (auto-accept / top-3 confirm / honest unknown).
  • ✅ All artifacts published: model, species DB and training data. The vision gallery stays local as the index-build source (the runtime artifact is the compact FAISS index, not the raw images).

Quick Start​

Bash
# text funnel (CLI)
.venv-mcpmv46/bin/python scripts/augury_funnel.py \
--model models/MiniCPM5-1B-AUGURY-Q4_K_M.gguf --region Australia \
"What does dandelion indicate about my soil?"

# chat server (Flask, feedback loop included)
.venv-mcpmv46/bin/python scripts/augury_server.py

Artifacts​

WhatWhere
Model (GGUF Q4_K_M / F16 / merged fp16 / LoRA adapter)RegeneratusLabs/augury-1b
Species database (2,230 spp)RegeneratusLabs/augury-species-db
Training data (13,627 rows)RegeneratusLabs/augury-training-data
Vision gallery (111k images + license sidecars)Local only; build-time source, never read at runtime
Vision retrieval index (runtime artifact, to be built)RegeneratusLabs/augury-vision-index (pending)

Lessons Learned​

  • Retrieval beats classification for open-ended fine-grained ID: nearest-neighbour search over the gallery scales to new species without retraining; a fixed classifier cannot.
  • Loss is a liar: always evaluate per species on held-out data; never trust the train-loss curve alone.
  • The voice model formats given facts; the funnel never lets it do anything else.

See the repo's technical stack and model card for details.

Roadmap​

AUGURY is the first model in a composable SLM ecosystem for regenerative agriculture: AUGURY (weeds → indicators) → Soil Assessment SLM → Remediation SLM → Grazing SLM. Each model does one thing. All open source. All phone-deployable.

Project info

Author
RegeneratusLabs