Inspiration

Nigeria has over 70 million people working in agriculture, mostly smallholder farmers without reliable internet, stable electricity, or access to extension officers. When a farmer notices yellowing cassava leaves or wants to protect maize from fall armyworm, the real options are a long trip to an extension office or guesswork. I wanted to put accurate, locally-grounded agricultural advice directly in their hands — fully offline.

What it does

Ọ́bụ Ọ́rụ is an offline agriculture advisory assistant that runs entirely on an 8GB consumer laptop, no GPU and no internet connection required. It answers farmer questions in plain English or Nigerian Pidgin, diagnosing crop issues and giving practical, locally-appropriate advice — likely cause, immediate action, and preventive measure for next season.

How I built it

The core is Qwen2.5-1.5B-Instruct quantized to GGUF Q4_K_M, run via llama.cpp. The key architectural decision: since the official evaluation pipeline loads the raw GGUF directly with no custom application wrapper invoked, I embedded the advisor's full persona directly into the GGUF's tokenizer.chat_template metadata as the default system message — so the agriculture-advisor behavior applies automatically even with zero prompt engineering from the caller, verified via direct llama-cli testing.

A curated Igbo glossary layer supplements core farming vocabulary, since no small open-source model currently has genuine Igbo generative fluency — I chose to be honest about that constraint rather than ship broken Igbo that could mislead a farmer.

Challenges I ran into

  • Small quantized models can degenerate into repetition loops on rare Unicode/diacritic sequences — solved with repetition penalty tuning.
  • Discovered the official evaluation pipeline only touches the raw model file, not any custom wrapper script — this reshaped my entire persona-delivery architecture mid-build.
  • The model occasionally surfaces outdated agrochemical advice (e.g. naming banned pesticides) — documented honestly as a known limitation rather than hidden.
  • Full Nigerian Pidgin generative register isn't fully reliable at this parameter scale — also documented rather than overclaimed.

What I learned

That honest documentation of a small model's real limitations is more valuable — and more convincing — than overclaiming capability it doesn't have. Also learned a lot about GGUF metadata internals and llama.cpp's chat template system.

What's next

Fine-tuning on curated Pidgin agricultural Q&A pairs to improve register consistency, and expanding the Igbo glossary layer's coverage.

Built With

Share this project:

Updates