A prototype. Joining the list is not a sign-up for alerts.
Example, simulated weather. The engine’s own messages for one batch in woven sacks in Kitale. The warning is from its demo scenario, 15 October 2026, after the farmer’s earlier SALT YES reply (not shown). The weather credit in the welcome is the designed live version’s wording: this demo, and the Telegram test bot, use simulated weather. No real farmer has received them.Mfano, hali ya hewa ya kuigwa. Ujumbe wenyewe wa mfumo kwa kundi la mahindi kwenye magunia ya kusokotwa huko Kitale. Onyo linatoka kwenye mfano wake wa majaribio, 15 Oktoba 2026, baada ya jibu la awali la mkulima CHUMVI NDIYO (halionyeshwi). Neno la sifa ya data ya hali ya hewa kwenye ujumbe wa kukaribisha ni la toleo lililobuniwa: onyesho hili na bot ya majaribio ya Telegram vinatumia hali ya hewa ya kuigwa. Hakuna mkulima halisi aliyeyapokea.
17:04
HarvestlyHarvestly (example)Harvestly (mfano)
JOIN KITALE SACK 12SAJILI KITALE MAGUNIA 12
Harvestly: Welcome. These messages give storage advice for your maize by SMS. It is an estimate. Weather data by Open-Meteo.com (CC BY 4.0). Reply STOP at any time to stop all messages.Harvestly: Karibu. Ujumbe huu unatoa ushauri wa kuhifadhi mahindi yako kwa SMS. Ni makadirio. Data ya hali ya hewa: Open-Meteo.com (CC BY 4.0). Jibu SIMAMISHA wakati wowote kusimamisha ujumbe wote.
Harvestly: Your maize is too wet to store (estimate from salt test). Storage time left: about 34 days (estimate). Dry it on a tarpaulin in full sun and reply DRYING, then test again. Simulated weather 15/10.Harvestly: Mahindi yako yana unyevu mwingi mno kuhifadhiwa (makadirio ya kipimo cha chumvi). Muda uliobaki: siku 34 hivi (makadirio). Yaanike juu ya turubai juani na ujibu ANIKA, kisha pima tena. Hali ya hewa ya kuigwa 15/10.
Example text conversation, simulated weather. The farmer registers with JOIN KITALE SACK 12. Harvestly welcomes them. On 15 Oct at 17:00 Harvestly warns: Harvestly: Your maize is too wet to store (estimate from salt test). Storage time left: about 34 days (estimate). Dry it on a tarpaulin in full sun and reply DRYING, then test again. Simulated weather 15/10. The farmer replies DRYING. Harvestly answers: Harvestly: Thank you, noted.Mfano wa mazungumzo ya ujumbe, hali ya hewa ya kuigwa. Mkulima anasajili kwa SAJILI KITALE MAGUNIA 12. Harvestly inamkaribisha. Tarehe 15 Okt saa 17:00 Harvestly inaonya: Harvestly: Mahindi yako yana unyevu mwingi mno kuhifadhiwa (makadirio ya kipimo cha chumvi). Muda uliobaki: siku 34 hivi (makadirio). Yaanike juu ya turubai juani na ujibu ANIKA, kisha pima tena. Hali ya hewa ya kuigwa 15/10. Mkulima anajibu ANIKA. Harvestly inajibu: Harvestly: Asante, tumepokea.
02 The problem
The sack doesn’t tell you.
Day 0. The harvest comes in. It looks fine.
These two sacks hold maize from the same field. One is at 13% moisture. The other is at 18%. You cannot tell which is which by looking. Moisture is invisible, and the weather changes it every day.
?
Sack ALooks fine.13% Under the 13.5% limit.
?
Sack BLooks fine.18% About 45 storage days at 18 °C 7.
How long maize keeps, at 18 °C
15% moisture213 storage days
19% moisture30 storage days
23% moisture11 storage days
One tick is one day: storage period to about 0.5% dry-matter loss, University of Arkansas Extension FSA1058, Table 1 7. The East African standard limit for maize is 13.5% moisture 3. These are US corn tables; see the limits.
03 Why now
Trans Nzoia, October 2026
Less grain, coming in wet.
2.2 Mt
The US Department of Agriculture cut its forecast for Kenya’s 2026/27 maize crop by half, to 2.2 million tonnes, after the drought hit the North Rift 89.
Above‑average rain
The Kenya Meteorological Department (KMD) expects it from October to December in Trans Nzoia and Uasin Gishu, continuing into January 12.
What the KMD seasonal advisory calls for, 31 August 2026 12. Harvestly is designed to turn that advice into a prompt for each farmer’s own grain.
04 One week, replayed
What happens in a week.
The engine’s demo run on simulated weather, replayed one day at a time from its reference results. An illustration, not a result. Scroll, and the days pass.
What the replay assumes
The fall from 261 days to 34 depends on our assumption that a sack closes 5% of the gap to the air’s moisture each day. That rate has not been tested in the field. The count starts at the first test, not at harvest.
Countdown level is the engine’s own name (Low, Medium, High) for how soon the storage time runs out. It does not say the grain is dry: wet grain can have a long countdown, so moisture is shown on its own line.
The printed page shows the first day of the replay only. In short: on day 3 the forecast turned damp and the countdown fell from 261 days to 34, on simulated weather; on day 12 a meter reading cleared the grain and it was sealed. The day-by-day replay needs the live page.
Day 0of 12
–days left
Countdown level
Low
Moisture estimate
–
Storage life used
–
Weather, with the forecast issued that evening happenedforecastrainMoisture estimate, % 13.5% limit
While grain is being dried the engine keeps its last tested moisture, so the line moves only when a new reading is recorded.
Kiswahili is a draft, not yet reviewed by a native speaker.
17:00
HarvestlyThe farmer's phone
Text messageUjumbe
05 Your turn
How long will your sacks last?
Enter what you know. This runs the engine’s two tables and its drift rule in your browser. Nothing you type is sent anywhere.
The calculator needs JavaScript. It runs the engine’s two tables and its drift rule in your browser. The tables and the rule are on How it works.
Enter moisture, temperature and humidity to see the result.
–days left
A full ring is 60 days or more.
Heading for
–
Storage days at today’s moisture
–
Engine countdown
–
Moisture, day by day, if the air stays like this 13.5% limit
Messages below are the engine’s own draft wording.
Kiswahili is a draft, not yet reviewed by a native speaker.
1
Only a meter or hygrometer reading clears grain as dry.
A salt test that flows says “about 15% or less”. That is not 13.5%. So the answer is “not yet proven”, with a place to get a reading. A meter reading of 13.0% is different.
17:04
HarvestlyExample, engine draft wording
SALT NOCHUMVI HAPANA
Harvestly: Not yet proven dry enough to seal or sell (salt test: below about 15%); the limit is 13.5%. Dry more in full sun if needed, then confirm with a meter at your co-op or NCPB depot. Reply METER and the number.Harvestly: Bado haijathibitishwa kuwa mahindi yamekauka vya kutosha kufungwa au kuuzwa (kipimo cha chumvi: chini ya 15% hivi); kiwango ni 13.5%. Anika zaidi juani ikihitajika, kisha thibitisha kwa mita katika chama chako au bohari ya NCPB. Jibu MITA na namba.
METER 13.0MITA 13.0
Harvestly: Dry enough to store (meter 13.0%). Seal it in hermetic bags (an agro-dealer near you) or deposit it at a certified warehouse for a warehouse receipt. Reply SEALED, SOLD or DEPOSITED when done.Harvestly: Mahindi yamekauka vya kutosha (mita 13.0%). Yafunge kwenye mifuko isiyopitisha hewa (duka la pembejeo karibu nawe) au yaweke kwenye ghala lililoidhinishwa upate stakabadhi ya ghala. Ukimaliza jibu NIMEFUNGA, NIMEUZA au GHALANI.
Text messageUjumbe
2
An estimate only triggers a re-test.
If damp air moves the engine’s estimate a full point past the salt-test line, the farmer is asked to test again. The engine never orders drying on an estimate alone.
17:04
HarvestlyExample, engine draft wording
Harvestly: Damp air has probably re-wetted your stored maize (estimate 16.0%). Storage time left: about 34 days (estimate). Do the salt test today and reply SALT YES or SALT NO. Simulated weather 22/10.Harvestly: Hewa yenye unyevu huenda imeongeza unyevu wa mahindi yako ghalani (makadirio 16.0%). Muda uliobaki: siku 34 hivi (makadirio). Fanya kipimo cha chumvi leo kisha jibu CHUMVI NDIYO au CHUMVI HAPANA. Hali ya hewa ya kuigwa 22/10.
Day 10 of a damp spell
Text messageUjumbe
3
Every repeat is spaced and capped.
Seventy days of damp air at 19 °C and 92% humidity (the table ends at 90%, so the engine treats it as 90%), on grain that started at a measured 13.0%: 7 messages in all. An unanswered urgent warning goes out weekly, at most four times, and the fourth says it is the last reminder. The other limits are on How it works.
Each tick is a day from day 0. Tall amber ticks are days a message was sent; the last is shown below.
17:04
HarvestlyExample, engine draft wording
Harvestly: This batch has used most of its estimated storage time. Check it today: remove mouldy or discoloured grain (do not eat it or feed it to animals), then sell or use this batch first.Harvestly: Mahindi haya yametumia sehemu kubwa ya muda wa uhifadhi uliokadiriwa. Yakague leo: ondoa punje zenye kuvu au zilizobadilika rangi (usizile wala usiwalishe mifugo), kisha yauze au uyatumie kwanza.
Day 39
Text messageUjumbe
07 What we know
What we know, and what we do not.
Every number in the engine carries a label. They are listed on How it works, with their sources on Sources. The limits, once:
The pilot has not run. Nothing on this site is a result. No farmer has been enrolled; the test bot answers whoever messages it, on simulated weather.
13.5% is the limit for sale, not a year’s guarantee. It is the East African standard limit 3. Arkansas guidance for keeping corn for a full year is 12% 6. A countdown of 365 days means 365 or more at the weather entered.
The storage clock starts at the first test, not at harvest. The source counts from harvest, so grain that sat wet before its first test has already used part of its life.
The tables are for US corn. Kenyan white maize has a different moisture curve 36, and we have not validated against it. The moisture table reads about 0.6–0.7 points wetter than measured maize points 19, which errs toward a false alarm. Below 15% moisture the storage-days figure is extended past its table and flagged.
The salt test is a coarse screen at about 15%18. It asks for non-iodised salt, and Kenyan table salt is normally iodised. We do not know yet what that does.
Two simplifications. Daily air temperature stands in for grain temperature. Insects are not modelled: the engine sends one reminder at week 7 and points to hermetic bags.
Status, 12 October 2026. The engine exists as a tested Python reference. A Telegram test bot (@HarvestlyBot) answers with simulated weather; it replies only after you message it and sends no unprompted alerts. The Oracle version, SMS, USSD and the dashboard are planned, not built.
08 Where it goes next
The warehouse gate.
13.5% is also the intake line used by the National Cereals and Produce Board (NCPB) and the warehouse receipt system 317. Depots with driers may accept wetter grain and dry it, so the line matters most for grain that goes to a depot without one. Grain that leaves the farm already measured and dry meets it before it gets there.
A pilot is proposed for Trans Nzoia, October 2026 to January 2027. It is a plan, not a pledge, and it has not started. Read the pilot plan
09 For partners
For co-operatives, extension officers, counties and warehouses.
Harvestly is designed to run inside the services you already use, as a post-harvest module: a ward, a batch and a reading go in; a message code and the text, in English or Kiswahili, come out. What each of you would get is on the Partners page.