Inspiration
FarmHand NA was inspired by a problem in northern Namibia: when livestock become sick, farmers often have to make urgent decisions before a veterinarian or extension officer can be reached. In many settings, connectivity is unreliable, transport is expensive, and expert help is not immediately available. I wanted to build a small offline AI assistant that could help farmers and extension workers reason through likely causes, safe first actions, and clear red-flag signs that require urgent referral.
What it does
FarmHand NA is an offline livestock-health triage assistant designed for low-resource settings. A user can describe symptoms in plain language and receive structured guidance on:
- likely causes
- safe first actions
- warning signs that require same-day or urgent veterinary help
The current version is English-first and designed around northern Namibian livestock use cases, with a longer-term goal of bilingual support including a verified Oshiwambo written variety.
How I built it
I built the project around the Africa Deep Tech Challenge laptop constraints:
llama.cppruntime- GGUF quantized weights
- offline inference
- Ubuntu x86_64 target profile with 4 vCPU and 8 GB RAM
I benchmarked multiple small open models and compared them on memory use, generation speed, and a local agriculture multiple-choice evaluation set. After side-by-side testing, I selected Phi-4-mini-instruct-Q4_K_M as the current submission candidate because it offered the best balance of local task accuracy, memory headroom, and throughput on the target machine.
I also built a lightweight evaluation workflow for repeatable x86 benchmarking, participant-style smoke tests, and local multiple-choice scoring.
Challenges I ran into
One of the biggest challenges was making sure the project worked on the actual target hardware profile rather than just on a local laptop. Results on Apple Silicon were useful for iteration, but not trustworthy enough for final claims. I had to validate everything on an Ubuntu x86_64 VM.
Another challenge was evaluating compatibility. Some benchmark paths worked inconsistently with GGUF server-style logprob evaluation, so we switched to a more stable native llama.cpp multiple-choice scoring path. I also had to tune the evaluation settings carefully to avoid memory spikes on the 8 GB target profile.
Accomplishments that I am proud of
I am proud that the project now runs fully offline, fits comfortably within the RAM budget on the target machine, and has a repeatable benchmark workflow for comparing candidate models. I am also proud that the project is grounded in a real African agriculture use case rather than being a generic chatbot demo.
What I learned
I learned that model selection under tight hardware constraints is as much about evaluation discipline as it is about model quality. Small differences in runtime configuration, memory behavior, and benchmark method can change the
Built With
- agriculture
- cmake
- gguf
- hugging-face
- linux
- llama.cpp
- machine-learning
- namibia
- offline-ai
- python
- shell
- ubuntu
Log in or sign up for Devpost to join the conversation.