Inspiration
Mawudo Aerospace builds drone and ground control software for precision agriculture in West Africa. This challenge asked us to build something outside our usual scope: a fully offline LLM application, so we chose to extract real value from one of our core use cases: post-flight agronomic diagnosis. Farmers and agronomists in the field often lack reliable internet access, making cloud-based AI tools impractical. We wanted to prove that useful, trustworthy AI diagnostics could run entirely offline, on hardware already available locally.
We named the project Hapi Field, after Hapi, the Egyptian god of the Nile flood and the fertility of the land, the deity who determined whether a season would bring abundance or famine, based on how much water reached the fields. It felt like the right name for a tool built to answer a simple, ancient question in a modern way: is there enough water reaching this land, and what should be done about it?
What it does
Hapi Field takes pre-measured water-stress data from a field mission, retrieves relevant context from a local knowledge base (mission history
- agronomic corpus), and generates a clear, actionable diagnostic in natural language, all without any internet connection or cloud API. The operator gets a stress level, its evolution since the last mission, a trend, and a concrete recommendation, sourced from the agronomic corpus consulted by the system.
How we built it
First, we tested and rejected a more ambitious approach. We initially tried a Vision-Language Model analyzing aerial photos directly to judge water stress. Rigorous testing on two models (Gemma 3 4B and Qwen3-VL 8B) against a scientific reference dataset with ground-truth annotations, showed neither model could reliably discriminate stress levels from raw images; even a human control test performed significantly better. We documented this failure honestly rather than hiding it, and pivoted to a more reliable architecture.
The pipeline we built instead:
- Water-stress values extracted directly from real dataset annotations (not invented, not AI-guessed)
- A RAG system retrieving mission history (SQLite) and agronomic reference material (ChromaDB)
- Gemma 3 4B (Q4_K_M), running locally via Ollama, limited strictly to interpretation and natural-language generation, never calculating the diagnosis itself
Challenges we ran into
- Memory stability: Ollama's context cache grew across successive
generations, causing real out-of-memory crashes during testing. Fixed
at the root with
keep_alive=0, verified with zero residual RAM across repeated runs, not just a demo-time workaround. - Latency vs. rhythm: ~70-90s per live generation is a real UX challenge for a live demo. We addressed it with pre-generated reference diagnostics and a live progress indicator, while keeping at least one live generation to prove the pipeline is real, not scripted.
- Honesty about data: our demo missions combine real measured values (from dataset annotations) with a constructed timeline (the dataset has no native longitudinal tracking). We chose to be explicit about this rather than imply a false longitudinal field study.
Accomplishments that we're proud of
- Independent scientific validation of our own data. As a bonus, we computed NDVI directly from the dataset's raw spectral channels and cross-checked it against the stress annotations we used correlation r=0.89. Rather than cherry-picking a clean result, we documented the one significant outlier we found and explained it honestly, which we believe strengthens the credibility of the whole pipeline more than a perfect number would.
- Catching and fixing a silent failure mode before it reached a user. Edge-case testing revealed that a missing sensor reading (0 zones measured) was silently classified as "Normal," a real false-negative risk for a farmer. We caught it, fixed it at the source, and verified the corrected diagnostic now explicitly recommends a field check instead.
- A fully offline pipeline verified end-to-end, not just in theory: measured RAM usage (~4.06 GB peak, well under the 7 GB budget) and throughput (8.94 tokens/s) using the official ADTC profiler, on integrated graphics only, with zero thermal throttling.
What we learned
That rigorous testing and honest documentation of failure in the VLM approach, the NDVI outlier, the edge-case gap we found build more credibility than a polished narrative with no visible struggle.
What's next for Hapi Field
Full field validation with real drone-captured multispectral data (not just the reference dataset), and why not integration into Mawudo Aerospace's broader post-flight analysis toolchain.