DEV Community

Cover image for Frostline: what to plant this week, from your local frost dates
Asuran
Asuran Subscriber

Posted on

Frostline: what to plant this week, from your local frost dates

Most garden advice is a fixed calendar. But the right week to sow a carrot in Portland is not the right week in Minneapolis. A calendar does not know that. Your frost dates do.

Frostline asks for your location and tells you exactly what to sow this week, from your own last-spring and first-fall frost dates. The screen is the shortest part. Read the plan, close the laptop, go plant.

What it does

Type a US city or tap "use my location". Frostline shows your two frost dates, then a sow-this-week list drawn from 29 common vegetables and herbs, each with a plain reason like "sow kale now, it takes a light frost and keeps going into the cold". It reads at a glance and needs no sign-in.

Open-source AI is the core, not the garnish

Two open models do the real work.

Frost dates come from TabPFN, an open tabular foundation model from Prior Labs. I trained it offline on 6,784 NOAA weather stations to predict the last-spring and first-fall 32F frost dates from latitude, longitude and elevation. On 1,357 stations held out of training it is accurate to 6.9 days for the last spring frost and 9.7 days for the first fall frost, which beats a nearest-station baseline (8.7 and 10.8 days) on both.

The write-up comes from Gemma, Google's open-weight model. The live site writes it with Gemma 3 served openly through OpenRouter, with the built-in narrator as the instant fallback so the page never blanks. The result is cached per place and day, so a reload is immediate.

Why open matters here, concretely:

  • It runs cheap. Gemma 3 costs a fraction of a cent per plan, so a free gardening tool stays free.
  • Your location stays yours. Your coordinates go to the Frostline server only, where they are matched against the baked grid. They are never forwarded to a model vendor and nothing is stored. When Gemma writes the plan it sees a coarse label (your city name or just "your location") and the frost dates, never your exact position.
  • You can swap the model. Retrain the frost model on your own stations or point the advice at any open model with one environment variable.
  • It can run offline. Open weights mean the whole pipeline can run on a laptop with no internet, which is the point of a tool you use outside.

How it works

TabPFN needs PyTorch, so it never runs on a request. I bake it once, offline, into a 0.25 degree US grid of 16,353 points and ship that as a small static file. At request time a tiny lookup interpolates your location against the grid, a deterministic planner turns your frost dates and today into the sow-this-week list, then Gemma writes it up. No model sits in the hot path for the frost dates, so the plan is instant and the site cannot blank.

What is real and what is simulated

I will not dress this up:

  • Frost dates are real TabPFN predictions from NOAA 1991-2020 normals. The error above is measured on held-out stations.
  • The plan is a real deterministic function of your frost dates and today.
  • The advice prose is written live by Gemma 3, with the built-in planner as the instant fallback. The app labels which one wrote it.
  • Frost-free places like Miami and Key West are labelled from the measured NOAA freeze probability of the nearest stations, not from a guessed date, so the app never pretends a frost-free spot has a hard frost. The Reports page shows all of it.

The two partner categories

  • Best Use of TabPFN: frost-date prediction is a clean small-tabular regression, exactly what TabPFN is for. It beats the obvious baseline. The accuracy is published in the app and reproducible from bake/train_tabpfn.py.
  • Best Use of Gemma: Gemma writes every plan on the live site, grounded on a strict facts-only prompt so it never invents a date or a crop, with a deterministic fallback so the product is never at the mercy of the model.

Built to be attacked

One command gates the whole thing (./verify.sh): strict types, zero-warning lint, tests, a production build and a clean dependency audit. The site ships a strict nonce Content-Security-Policy, security headers, validated inputs and a route error boundary. The threat model is in the repo.

Try it

Open https://frostline-lime.vercel.app, type your city and see what you could put in the ground this week. Then go outside.


AI assistance (Claude) was used to build Frostline. The design, the model choices and the licence decision are mine. Every number here is measured against the code and the live site so you can check it yourself.

Top comments (0)