18/18

Planting Planner

LIVE SINCE 2026-09 LATEST 2026-10-05 CATEGORY · PERSONAL INFRA
Data flow, drawn as a garden: a garden designer's method, a local plant archive and a surveyed garden feed an AI designer, which lays out each bed and counts every plant; its plan goes through a 23-rule scripted check, which flags exceptions back, before it becomes a planting plan ready to order; a planted border of mounds, spikes, grasses and froth runs along the bottom DATA FLOW · SVG
WHAT IT DOES§ 01

I'm replanting the borders at home and wanted the plan to follow one garden designer's method to the letter. So I turned her published teaching into 23 numbered rules, each with a threshold, a severity and a citation back to where she says it, and built a checker that scores any plant list against them.

An AI designer drafts the plan. It works from the method, a local archive of 13,844 plant records, and each bed's surveyed size and sun hours, then has to run its counted list through the checker before showing me anything. Three rules can fail a border outright: every variety repeated in at least three clusters, each group reading roughly 0.7 to 1.2 m across, and something of interest in every season. The other 20 warn or are left to judgement, and every warning that survives comes back with its rule number and a reason for keeping it. What comes out is a counted list I can order from.

HOW IT'S BUILT§ 02

The checker is plain code; it runs as a tool on one of my own MCP servers, so the same list gets the same verdict every time, and each verdict names its rule and source. Every threshold lives in one JSON file: the checker reads it, the rules table in kBrain is generated from it each night, and a CI test fails if the code and the file ever disagree.

The plant records sit in SQLite with spread, seasons and growing conditions; the beds come from an RTK GPS survey of the garden, with direct sun hours computed for each one in June, at the equinox and in December. Where the data is coarse, the checker says so: it reports which spread figure it used, and anything a list can't show (layout, colour, texture) comes back as not checked.

Its first real run was on a new 19-metre bed beside a garden path. It caught four plants set as singles too small to read and 13 varieties where the method allows 9 for that depth, before anything was ordered.

TECH STACK§ 03
  • Python
  • FastAPI
  • SQLite
  • MCP
  • Home Assistant add-on
  • Claude (designer)
  • RTK GPS survey
METRICS§ 04
23RULES CODIFIED
3RULES THAT CAN FAIL A BORDER
13,800+PLANT RECORDS ARCHIVED
13BEDS SURVEYED