Inspiration
The theme "From Data to Impact" drove the vision for JUA Agri Engine. While exploring the JKUAT Conduit data, it became clear that raw telemetry—like UV indices or soil moisture percentages—is incredibly valuable to researchers, but functionally invisible to the smallholder farmers in Juja and Kiambu who actually grow our food. Farmers don’t need another weather widget; they need to know if their crops are experiencing thermal shock right now and whether they should turn on the drip lines. I wanted to build a bridge that translates university-grade environmental sensing into low-tech, high-impact human action.
What it does
JUA (JKUAT Utility for Agriculture) is an automated agronomic decision engine. Instead of forcing users to interpret charts, it acts as a digital agronomist.
- Ingests: It pulls live telemetry (Temperature, Rainfall, UV Radiation, and Soil Moisture) directly from the
conduit.jhubafrica.comAPI. - Computes: It calculates crop stress and water deficit thresholds in real time.
- Acts: When thresholds are breached, it dispatches precise, plain-language SMS instructions (e.g., "Run drip lines for 45 mins after 17:00") directly to farmers' feature phones, while updating a clean, web-based triage dashboard for farm managers.
How I built it
Drawing on my background as a fullstack engineer, I architected JUA to be both lightweight and highly responsive.
- The Engine: I built the data-ingestion and logic layer using Python and Node.js, continuously polling the Conduit API. The core engine applies standard agronomic physics to the raw data. For example, to determine when to trigger an irrigation alert, the system calculates the Soil Water Deficit Index (SWDI):
$$SWDI = \frac{\theta - \theta_{WP}}{\theta_{FC} - \theta_{WP}}$$
(Where $\theta$ is current moisture, $\theta_{WP}$ is the Wilting Point, and $\theta_{FC}$ is Field Capacity).
It also calculates proxy Evapotranspiration ($ET_0$) using real-time temperature and UV radiation to predict heat stress before visual crop damage occurs.
- The Dashboard: The farm manager interface was developed using Next.js and TypeScript, styled with Tailwind CSS for a clean, accessible UI that emphasizes operational status over raw numbers.
- The Dispatch: I integrated the Africa's Talking API to handle the outbound SMS triggers to offline mobile devices.
Challenges I ran into
Working solo meant I had to balance the agricultural data science with the fullstack engineering execution. The biggest challenge was standardizing the live JSON payloads from the Conduit platform and calibrating the mathematical thresholds. I had to ensure the engine was sensitive enough to catch sudden heat spikes, but stable enough not to trigger false-alarm SMS messages to farmers.
What I learned
This project pushed me to think beyond software architecture and dive into environmental physics. I learned how to model soil-water retention, design zero-friction user flows for non-technical users, and effectively bridge the gap between IoT hardware telemetry and web-based dispatch systems.
What's next for JUA Agri Engine
The immediate next step is expanding the crop-specific models so the engine can differentiate between the watering needs of maize versus tomatoes. Ultimately, I want to deploy this alongside JKUAT’s agricultural extension programs, allowing researchers to monitor catchment-level water usage while directly empowering the surrounding farming communities in Kenya.
Built With
- africas-talking
- ai
- conduit-api
- data-science
- machine-learning
- next.js
- node.js
- python
- react
- rest-api
- sms
- tailwind-css
- typescript
- ussd
- voice-agent
Log in or sign up for Devpost to join the conversation.