FrostLine: A Garden Planner Powered by a Local Open-Source LLM
Description and use
FrostLine is a local app that computes weekly gardening tasks from a town’s 15‑year frost history and produces a concise field note using an open‑weight LLM.
Problem
Gardeners receive generic planting advice that ignores local frost history and climate cycles.
Outcome
FrostLine delivers accurate, location‑specific planting schedules and concise field notes without external API costs, enabling gardeners to act on reliable frost‑aware advice.
Workflow
- 1. User enters town name in the web UI or CLI.
- 2. The app fetches 15 years of daily minimum temperatures from Open‑Meteo and caches them.
- 3. Climate.py calculates median and 1‑in‑10 safe last‑spring and first‑fall frost dates, hemisphere‑aware.
- 4. Planner.py applies transparent rules for ~17 crops, anchoring tender crops to the safe date and hardy crops to the median.
- 5. Frost model predicts tonight’s frost risk using a gradient‑boosting classifier (or TabPFN if configured).
- 6. If the week has tasks, the local LLM (Gemma4:e4b via Ollama) narrates the plan into a short field note; otherwise a template is used.
- 7. The field note is displayed to the user, ending with a call to action.
- 8. The app runs locally or on Render’s free tier, with no external API calls after the initial data fetch.
Evidence
FrostLine tells you what to do in the garden this week. You type your town. It pulls 15 years of nightly lows, works out your median and 1-in-10 "safe" last spring frost and first fall frost, and lists what to sow, start indoors or transplant right now, plus tonight's frost risk.
A local LLM then turns the plan into a short field note that always ends the same way: put the phone down and go outside.
The LLM only narrates. Planting dates come from code, because small models invent dates. I caught mine inventing chores (compost, gloves) when the plan was empty, so empty weeks now skip the LLM and use a template.
On two held‑out years it scored a Brier of 0.054 against 0.068 for a plain day‑of‑year baseline (Minneapolis), so it does beat climatology.
- Record date: 2026-10-11T19:41:03.905Z