DEV Community

Aghazie David
Aghazie David

Posted on

Ugbo: Ask Your Farm in Pidgin, Go Outside

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass

What I Built

For most people, "touch grass" is a joke. For millions of smallholder farmers in Nigeria, the grass is the job, and getting it wrong costs a season.

The question every farmer asks at this time of year is simple: "Rain don start. Make I plant maize now?" Plant too early, on a false start, and the seedlings die in the dry spell that follows. Wait too long and you miss the window. The answer depends on how much rain actually fell in your village, what's coming this week, and what the season allows for your crop. That information exists, but it lives in English-language weather apps and extension PDFs, not in the languages farmers speak.

Ugbo (Igbo for "farm") is a voice-first weekly field plan. A farmer picks their town and crops, asks a question in Nigerian Pidgin, Hausa, YorΓΉbΓ‘, Igbo or English, and Ugbo:

  1. Checks the real rain at their village for the last 14 days and the next 7
  2. Works out what the season allows for each crop in their zone (South, Middle Belt, North)
  3. Speaks back a short plan in a Nigerian voice, ending with the one job to do in the field today

The screen is the shortest part of the experience. Ask, listen, go to the farm.

A real answer for Suleja (Niger State), maize and yam, this week:

See your week for Suleja. Rain wey fall for the last 14 days: 85 mm. Rain wey go fall for the next 7 days: 17 mm. The soil don wet well well. How sure: I sure. For your maize, na time to harvest. For your yam, na time to harvest... The main work for today: Waka round your farm, check for weed and insect.

Demo

Live app: https://cipoklean-ugbo.hf.space/
Hugging Face Space: https://huggingface.co/spaces/Cipoklean/ugbo

Try it: set your town, tick your crops, pick a language, type or say "Make I plant maize now?" and tap Get my week plan. The plan plays aloud automatically.

Code

title Ugbo
emoji 🌱
colorFrom green
colorTo yellow
sdk gradio
sdk_version 6.30.0
python_version 3.12
app_file app.py
pinned false
license mit

🌱 Ugbo β€” talk to your farm

Ugbo means "farm" in Igbo.

Ugbo is a voice-first weekly field plan for smallholder farmers in Nigeria A farmer taps one button and asks, in Pidgin, Hausa, YorΓΉbΓ‘, Igbo or English, something like "Rain don start, make I plant maize now?" Ugbo checks the real rain at their village, works out what the season allows for their crops, and speaks back a short plan that ends with the one job to do in the field today.

The screen is the shortest part of the experience. Ask, listen, go to the farm.

Try it: huggingface.co/spaces/Cipoklean/ugbo

How it works

 🎀 voice ──► NaijaVox-2.0 (open ASR) ──► question text
                                              β”‚
 town ──► Open-Meteo / MET Norway / NASA POWER ──► rain facts (14 days back, 7
…

How I Built It

 voice ──► NaijaVox-2.0 (open ASR) ──► question text
 town  ──► Open-Meteo / MET Norway / NASA POWER ──► rain facts
 crops ──► plain-rule Nigerian crop calendar ──► this week's signals
                 Gemma 3 12B (open weights) ──► plan in the farmer's language
                 fact check ──► templated plan if Gemma drifts
                 Nigerian neural voice ──► spoken plan
Enter fullscreen mode Exit fullscreen mode

Listening: NaijaVox-2.0. An Apache-2.0 Whisper-large-v3 fine-tune for Nigerian languages. Ugbo echoes back "You asked: ..." so a farmer can catch a mishearing before acting on the answer.

Thinking: rules decide the facts, Gemma decides the words. This was the most important design choice. A language model should never invent a planting date for someone whose harvest depends on it. So the facts come from transparent rules in season.py: planting and harvest windows per crop and zone, heavy-rain warnings (don't spray or fertilize before 25 mm+), dry-spell checks, and a soil-moisture estimate from rain minus evapotranspiration.

Gemma 3 12B, running in-process on Hugging Face ZeroGPU, only explains those facts in the farmer's language. Then Ugbo checks Gemma's work: every number in its answer must appear in the facts it was given. If Gemma invents a rainfall figure or a fertilizer rate, its answer is thrown away and a templated plan built from the rules is used instead.

Catching false starts. Early rain followed by a dry spell is the classic way to lose a season. Ugbo only treats the rains as established after 3+ rainy days in the last week, 20 mm+ in two weeks, and no 4-day dry spell in the forecast. Until then it says "wait", and every plan says how sure it is: sure, fairly sure, or not sure.

Always answering. Free GPU quota runs out, and a farmer shouldn't get an error. When Gemma is unavailable, Ugbo answers from the rules: a hand-written Pidgin template, machine-translated Hausa, YorΓΉbΓ‘ and Igbo, or English.

Speaking. I first used the phone's built-in Web Speech voice, then found it didn't play on my own Android phone. The web app now uses a Nigerian English neural voice for English and Pidgin and a Hausa voice for Hausa, delivered as a small MP3 that plays in any browser. The CLI can still speak with open voices (Naija TTS and Meta's MMS-TTS), which I'd like to bring back to the web app once I can afford the GPU time.

Free to run. Every weather source is free and keyless. The whole thing runs on a free Hugging Face Space, and the Gemma backend is swappable: ollama for fully local, or hosted Gemma when you don't have the hardware.

Why Does Open Innovation Matter?

Because the people Ugbo is for are the people closed AI forgets.

Nigerian languages exist in open models because Nigerians built them. NaijaVox, Naija TTS and MMS exist because researchers fine-tuned and released open weights for Pidgin, Hausa, YorΓΉbΓ‘ and Igbo. No closed speech API I looked at understood a Pidgin farm question as well, and I couldn't have fine-tuned one if it didn't.

I can make the model behave. With open weights I control the whole pipeline: the prompt, the fact check, the fallback. I can guarantee Ugbo never states a number the rules didn't produce. That matters more than eloquence when the advice is about someone's harvest.

It costs nothing to run. A farmer in Suleja shouldn't need a credit card, and neither should the developer serving them. Open weights on free compute, free open weather data, and an MIT license mean any extension office, co-op or student can fork it and run it for their own state.

It can go where farmers are. Gemma runs on ollama on a laptop. The next step is a WhatsApp voice-note or phone-call front end served from a cheap local machine, so farmers without smartphones or steady data can ask too. A closed API would make every one of those calls a bill.

What's not done yet. I haven't measured speech accuracy on real farm questions (Igbo is weaker), and the crop calendar still needs checking row by row against IITA and state ADP calendars. If you speak one of these languages or work in agricultural extension, that's the most useful contribution you could make. CONTRIBUTING.md has the details.

Prize Categories

  • Best Use of Gemma: Gemma 3 12B writes every plan, constrained by a rules engine and a number-level fact check so it explains real data instead of inventing it.

Ugbo is a rule of thumb, not a replacement for your local extension officer. Rain data comes from weather models, not a gauge on your farm.

Top comments (0)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.