Skip to content
luftflow

AgriPredict's farmer line runs on luftflow

October 14, 2026

Before six in the morning, in fields and compounds across Zambia, phones with no data bundle start dialling *404#. Most of them press 2.

AgriPredict
1. Thrive
2. Weather
3. Buy/Sell
4. Langanako Market
5. Agro Services
6. Add Phone Number
7. Profile
8. Contact Us

That menu is AgriPredict's farmer line: weather for the days ahead, market prices for maize and other crops, a place to buy and sell, agro services, and registration for farmers who are new. It answers on any handset, on MTN and on Zamtel, and since September 2026 it has run on luftflow.

In the seven days to 13 October, about 33,000 different farmers dialled it, between 12,000 and 30,000 sessions a day, fewer at the weekend.

The shape of the line

The menu above is not the first thing the flow does. Before any screen is shown, it asks AgriPredict's own API who this phone number belongs to, signs the session in, and decides which of three menus this caller should see.

A farmer in a partner programme sees that programme's menu. A field officer sees the administrator's. Everyone else sees the eight options, presses 2, reads the forecast for their district, and hangs up.

That last part matters more than it looks.

Hanging up is the point

On most analytics, a caller who reads the forecast and hangs up is a failure: they left on the forecast screen. On a line where the forecast is the reason most people dial, that makes the completion chart say almost everyone gave up.

AgriPredict marks the screens where a caller is done, and labels each screen with the service it serves. So the traffic page now answers the questions the team used to answer with a database query: how many came for weather, how many for prices, how many registered, and where the ones who really left were standing when they went.

What the old engine did to a slow night

The line used to run on an older engine that nobody wanted to touch. Every screen reported itself to a tracking service and waited for that service to say "noted" before the farmer saw the next menu. On a quiet afternoon nobody could tell. On a busy evening, with the tracking service a few hundred milliseconds slower, that wait was the difference between a farmer who got the forecast and one who gave up and dialled again, which made the evening busier still.

On luftflow the tracking call is marked as one nobody waits for. It is sent once the step is saved, and the caller moves on at once.

The move

The menu was rebuilt in luftflow screen by screen, keeping how the old engine really behaved rather than what its configuration seemed to say. The old engine paged long menus on 98 and 00, treated conditions it could not read as false, and showed options in the order they were written. Each of those went on a list for AgriPredict to decide, instead of being corrected quietly and surprising a farmer who had learned the old way.

Then the rebuilt flow answered beside the live service on real calls, with writes refused, while the two replies were compared screen by screen. When they agreed, the callback URL at the operator moved on a quiet morning in late September. The short code, the operator agreements and the API stayed exactly where they were.

What a dropped call does now

A call on a basic phone in a field drops. It always has. What used to happen next was a fresh start from the top menu. Now a farmer who dials back within a few minutes is offered the place they were, so a registration that lost its signal on the fourth question does not begin again at the first.

AgriPredict runs the luftflow runtime on their own servers, so sessions and what farmers type stay on their network. The editor, publishing and the traffic pages are luftflow's.