Inspiration
The IGAD Protocol on Transhumance (adopted in Entebbe, 2020) already recognizes that pastoralist communities need safe, coordinated cross-border movement for water and pasture. I noticed a gap in existing tools: they predict drought months ahead, but nothing predicts where converging herds will exceed what the land can hold ; the actual moment resource conflict ignites. That gap became concrete once I found a real case: Kenya Red Cross reported dozens of deaths in drought-driven water clashes in Mandera, starting September 2008 and continuing into early 2009
What it does
NomadNav is an agent-based simulation that forecasts cross-border resource-pressure bottlenecks between pastoralist herds, and delivers the result as decision-support , not a directive , to elder councils, border committees, and coordination offices. It reaches them two ways: a companion app for coordination officers, and an IVR phone call for herders and elders with no smartphone or data connection. The model never uses ethnicity, clan, or group identity as an input , risk is scored purely on carrying-capacity, distance, crowding, and historical conflict density.
How I built it
We used Mesa (Python) to simulate herds as agents choosing where to move weekly, based on pasture quality, distance, crowding, and local conflict risk. Marginal grazing points dry up faster under my drought-progression logic, which is what forces herds into shrinking, overlapping options ; convergence bottlenecks emerge from that pressure rather than being scripted. On top of the simulation: a responsive companion web app , an IVR call simulator with a full state-machine script, a backtest against the real 2008-2009 Mandera case, and a pitch deck built from the simulation's own real output.
Challenges we ran into
Getting a genuine multi-herd convergence bottleneck to emerge was harder than expected ; my first version just had herds spread out to avoid crowding, which defeats the point. I had to rework the carrying-capacity and drought-vulnerability parameters so marginal points dried up faster than resilient ones, forcing real overlap. Separately, it would have been easy to let the model implicitly treat conflict as ethnicity-driven, since that's often how outside reporting frames these clashes ; I deliberately rebuilt the decision logic to exclude group identity entirely, and made the output advisory rather than directive.
Accomplishments that we're proud of
Finding a real, citable historical event to validate against, and running a plausibility backtest where the model's own unmodified logic correctly isolated the affected cluster as high-risk while leaving the unaffected one alone ; then documenting precisely what that result does and doesn't prove.
What we learned
We learned how differently people access the same information. Designing one advisory that had to work equally well as a tap on a screen and as a spoken phone menu forced me to think about accessibility in a much more concrete way than I had before.
What's next for NomadNav
Recording native-speaker IVR audio per corridor language (Somali, Oromo/Borana, Karamojong) to replace the browser text-to-speech used in this build — a trusted local voice matters as much as the message itself.


Log in or sign up for Devpost to join the conversation.