A review of Broadfork, by Gab AI
Gab AI tried Broadfork the way someone shopping for a garden planner would, and wrote this.
On November 2, 2026, Gab AI clicked through a development build of the app in the browser and was asked for an honest review as a prospective buyer. Its questions about how the app works were answered from the code, and it revised the review from those answers. The first person below is that buyer, and the words are Gab AI's, exactly as it wrote them.
Tested on the live local build of Broadfork, Nov 2026. Written after a day of clicking around the app with a real garden: 10 beds, a mix of trellises and beds, Zone 6a in Ohio, and a history of planting things I forgot about by August.
I went into Broadfork as a lapsed-planter looking for a replacement for the usual suspects. I've used Almanac-style apps and the spreadsheet method; I've also tried planners built around drag-and-drop bed squares and ones built around a season-long calendar. My bar was simple: can I tell it what's in the ground, and will it tell me something useful in March that I didn't already know?
Short answer: Broadfork is doing something genuinely different, and for the first time in a while I stopped shopping for alternatives.
What it does that the others don't
It remembers the garden's history and uses it. This is the headline feature and it holds up. Open a bed and it tells you what's growing there now, what grew there last year, and — this is the part that got me — which plant families should rest there and for how long. When it suggested planting Garlic by 11/14 in Arch Bed, with Kale, Zucchini, Cucumber and Broccoli as alternates, I checked my own notes and it was right about my history.
It shows its homework. Every agronomic claim comes with a source — Iowa State, WSU, Illinois, Cornell, Penn State, NOAA normals for my ZIP. And when it doesn't know something, it says so instead of inventing an answer. I've been burned enough by confident wrong advice to genuinely appreciate an app that admits a gap.
The square-foot math is live, not decorative. You type "Tomato," it reads your bed's real dimensions and row spacing and tells you how many plants actually fit — "6 rows, 18 inches apart: 6 per row." When I dropped 144 Lincoln Peas into a 2'×8' patch, it recalculated the grid to 6 rows of 24 at 4 inches apart and told me the patch was 16 sq ft. Other planners give you a square grid and let you do the geometry yourself in your head.
Frost dates are editable, and the defaults are right. This surprised me. Settings → Garden plot takes a ZIP, pulls NOAA 1991–2020 normals from the nearest station (mine: Columbus Port Columbus Intl AP, ~6 miles away), and hands me four editable dates: average last spring frost, 90% frost-free spring, average first fall frost, 90% fall cutoff. The explanation is unusually good — it tells you the average pair is a 50/50 coin flip, and that the 90% pair is the safe bet — and it even handles the case where your frost season crosses New Year. That's the kind of detail most planners never think about. There's also a Log a frost field where you record a morning's low, which the app then reasons against.
It warns before it costs you. In November it told me my average first fall frost had come and ten tender plantings had nothing over them, listed which beds, and offered to set up a tunnel — with the actual protection math (medium row cover buys 4–6°F, a clear low tunnel 2–4°F) and the hard freeze date. It also nudged me that garlic should go in now, best by 11/07, last by 11/14. Both alerts have a "Why" that expands into the reasoning and a Mute button. Nothing nagged me. Nothing badgered me. There are no streaks.
It grows with the season. You log a pick, an observation, a phase change ("First fruit"), even a propagation take — I took 3 rooted cuttings off a Cherokee Purple Tomato sucker and it kept the count. It has a succession model: set what follows what, interplant, secondary crops.
The Timeline is where it reasons forward, not just backward. I initially took the app for a garden memory — what's in the ground, what was here last year. But the Timeline draws an expected harvest window on each planting's bar before you've picked anything, works out a season end from day length and heat, and then moves the bar when I log "First fruit." That forward-looking calendar is the part I hadn't noticed on day one, and it's probably the stronger product.
Every answer is computed, not guessed. I checked the code through the developer, and there's no AI call anywhere in the app — every alert, every "Why," every placement is deterministic logic running in my browser against bundled NOAA data. Two consequences: the answers are the same every time, and the app keeps working when the connection drops. That's a rarer thing to be able to say about a garden app than it sounds. One caveat now that I've seen the code: it keeps working once loaded. There's no service worker, so a cold start on a bad connection still needs the server for the frost and temperature tables. Worth fixing before "works offline" gets said out loud.
It doesn't phone home. The app sends nothing anywhere, and there's no in-app usage tracking planned. I checked, because "data-heavy" usually means "telemetry-heavy." For an app asking for a ZIP code and your whole planting history, that matters.
What I'd still want
The chart's frost lines are unlabeled. In Reports, the "When to sow" Gantt chart draws a solid line in April and a dashed line in early November — and doesn't say what either one is. (Hovering does tell you: the solid one is the average frost date, and the dashed one is today. The solid line on the Timeline is the same average pair, and the Timeline carries a proper legend — it's the Reports card that has neither.) The convention is explained beautifully in Settings, but only if you go find it. A legend, plus a note saying which dates the chart used, would fix it in an afternoon.
Overrides are invisible once made. The copy promises "your numbers always win," but there's no per-date "custom" badge and no "restore NOAA defaults." After I've overwritten a date or two — which I will, because my low bed frosts later than the airport station — I want to see at a glance which of the four numbers are mine.
The station is derived, not chosen. My ZIP picks the nearest station. But sometimes the nearest station is the wrong one: my frost runs late and I can't tell the app to use a different station, only to overwrite the numbers by hand. Editing the dates is the workaround; making the station selectable is the fix. Better than that: the source of each date should be visible after the fact — station name, distance, period — the way the rotation sources already are. Right now once you've touched a date, "mine" and "NOAA's" are indistinguishable. And "your numbers always win" needs to be true: refilling from a ZIP currently overwrites all four dates, plus the ZIP and the latitude, in one write with no warning and no way back.
The seeding chart isn't connected to my beds yet. Reports has a crop-level "When to sow" chart and Inventory has a Grow list that tells me things like "Basil can be set out as plants from 04/18/2027 to 08/20/2027 and still give a harvest, with Lemon, its fastest variety." That's the "what can still be planted" half, and it's smart. Planning's Suggested list already does the harder half of the join — it holds my crops, knocks out families still resting, and orders what can go in on today's date — so the app knows more than the chart shows. What's missing is the answer at the place I'd ask it, standing at the bed: no free-square math ("you have 4 sq ft free, one cherry tomato fits"), and the chart uses the fastest variety on record rather than the one I'm actually growing. And the Grow list is still a thing I populate by hand ("Start from 2026's crops" copied 33 lines of last year's actual plantings — not my plans) rather than something that derives from them.
I can't adjust a crop's own facts. Frost tolerance, days to maturity, rest years — those come from the catalog and can't be changed at all. The only editable crops are ones I typed in myself. So if the app's opinion of my celery is wrong, my options are wrong or "add your own crop" — which is an answer, but not a good one. A per-garden override on the handful of facts that actually vary locally would make this a model of my garden rather than of the garden.
A failed crop still counts. If the tomatoes blighted, that bed still serves the family rest years, and nothing tells me. The app quietly penalizes the bed for a loss I already know about. And I can't tell it that a family doesn't need four years of rest here.
Merging two plans deletes one of them. Undo exists, but it's 100 steps in memory and clears on reload. So one mis-merge followed by one app restart is permanent — on the part of the app that holds the most thinking. A trash would fix it; making Undo survive a reload would fix most of it.
Bottom line
Most garden planners are a calendar with drawing tools. Broadfork is trying to be a gardener's memory with an opinion — it holds what I'd otherwise keep in my head, and when it doesn't know, it says so.
It doesn't nag, it doesn't gamify, and it shows its sources. If you're the kind of gardener who's failed because you forgot what you planted last year, that's the gap it fills.
The sample garden is open to click through, with no sign-in. To hear when Broadfork opens, leave your email.