This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
In Port Harcourt, the light goes and the room changes in about two seconds. The fan stops. The router dies. The laptop drops to battery. Then somebody shouts "on the gen!"
I used to just sit there. Phone on mobile data, laptop on battery, waiting for the gen to come on so I could keep working.
That gap, between NEPA taking light and someone starting the generator, is the one moment in my day when the screen is already losing. Light don go uses it. When my laptop switches to battery for more than 30 seconds, a full-screen page opens on top of whatever I'm doing:
The real outage at 12:31 on 8 October. The big line is Gemma's. The line above it is code.
It gives me one plan, a 60-second stretch timer (stand up, reach up, roll the shoulders, touch the toes, go outside), and a button: "I don stand up. Close am." When the timer ends, it says "You self don try." The page doesn't open again until the next cut.
The sky follows the situation. It is warm in the day and counts down to rain or sunset. It is dark at night, with the plan kept near the house:
Day and night are simulated runs (ldg simulate). The nudges are real Gemma output from those runs, taken from the log.
The page works with no internet, because the router is already off: it uses no web fonts and loads nothing from a CDN.
It is for anyone who works from a laptop where the power cuts are routine: Nigeria, load-shedding in South Africa, a lot of India and Pakistan. You don't need to explain the problem to any of them.
| Word | Meaning | |---|---| | NEPA | What Nigerians still call the power company (the old National Electric Power Authority). "NEPA takes light" means the grid power goes off. | | Light don go | "The power is gone." | | Gen, "on the gen" | The petrol generator most homes start by hand when the grid fails. "On the gen" means start it. | | Hold the gen | Keep the generator off. "₦1,500 saved every hour e rest" means each hour it stays off saves ₦1,500 of petrol. | | Abeg · waka · close am · fit | Please · walk · close it · may ("rain fit start" = rain may start) | | You self don try | "You have done well." | | Mineral · kiosk · junction | Soft drink · small roadside shop · the street corner where food sellers sit | | WAT | West Africa Time, UTC+1 |
| Time | Event | What the tool did | |---|---|---| | 12:23 | NEPA cut | Rain path, indoor activity. Gemma timed out; fallback sentence shown | | 12:25 | Power back after 123 s | Logged (the gen) | | 12:31 | NEPA cut again | Gemma: "Abeg shut that laptop, waka go stand by the window stretch back and legs, rain dey down." Passed the guard first try | | 12:34 | Power back after 225 s | Logged | | 12:53 | NEPA cut | First cut with the full-screen page. Gemma: "Abeg shut that laptop, walk to the kiosk for cold mineral and come back quick." Passed first try. Facts line: rain around 15:00, about 2 hours left | | 13:34 | NEPA cut, laptop asleep | Timed out, fallback logged. The Windows event log shows the laptop was in Modern Standby: it woke for a moment at the cut, went back to sleep mid-call, and woke again at 13:56. The model was still loaded. Nobody was at the screen | | 9 Oct, 07:33 | NEPA cut | Gemma: "Abeg shut that laptop, walk to the kiosk find cold mineral and come back quick." Passed first try |
What I did when it told me to go. I closed my laptop, took a walk outside in my neighbourhood in Port Harcourt, visited my cousins and played with their children. That was the 07:33 cut on 9 October. The light came back at about 12:05.
Detection. There is no inverter in my house, so when NEPA goes, the laptop really does go to battery. psutil reads the power state every 5 seconds. A drop shorter than 30 seconds is a flicker. A second cut within 15 minutes gets logged but not nudged, so NEPA flashing the light on and off doesn't spam you.
Weather without internet. When the light goes, the router goes with it. So while power is on, the tool saves the hourly Open-Meteo forecast every 30 minutes. After the cut, it reads only that file. Sunset comes from the NOAA solar formula, computed on the laptop. It gives 18:21 for Port Harcourt on 7 October; Open-Meteo says 18:21 and sunrise-sunset.org says 18:22.
One rule had to change for the rainy season. I first counted an hour as "wet" at a 50% chance of rain. In October in Port Harcourt, almost every hour is over 50%, so the tool kept everyone indoors all day. Now an hour is wet at 70%, or at 0.5 mm of expected rain.
The model: Gemma 4 E2B, on my CPU. gemma4:e2b-it-qat through Ollama. It is a 4.3 GB download. My laptop is an i5-1135G7 with no NVIDIA GPU. Measured: 14 s cold, 3.6 to 4.0 s warm, about 15 to 20 tokens per second.
My first version let Gemma write the whole message from the facts. In 4 test runs it dropped every number, and twice it turned the meaning upside down:
