Overstory: Freiburg's forest, drawn by the model that found it
A classifier learns where the woods around Freiburg are from a year of satellite greenness, and every one of its decision trees is drawn as a tree.

Ten of the two hundred decision trees Overstory trained on imagery of Freiburg im Breisgau from 2024. Red buds say forest, teal buds say not, and the pale ones are verdicts the tree was unsure of. This forest gets 82.3 % of the pixels it was tested on right.
Is that dark patch on the hills above Freiburg a beech wood or a field? From one summer photograph you can't tell, because both are green. A whole year can tell them apart, and that is what Overstory learns from. Then it draws the thing that learned.
Below: what the model sees, how one of its decision trees becomes a drawn tree, the four settings that turned a navy thicket into the picture above, and what you can take away from it. Open this exact forest and change it as you read.
What the model looks at
The app reads a 12 km square around the place you pick: four seasonal composites of Sentinel-2 satellite imagery, turned into NDVI, a measure of how green a pixel is, plus ESA WorldCover's map of which pixels are tree cover. Each pixel becomes ten numbers: its greenness in each season, the change from one season to the next, the swing over the year and the mean.

One year per pixel around Freiburg, 2024. Tree cover climbs from 0.57 in winter to 0.86 in summer and stays high. Cropland's lines cross each other, because every field is sown and cut on its own calendar, and its median swing over the year is 0.44 against the forest's 0.24.
One decision tree, one drawn tree
A random forest is two hundred decision trees, each asking a few yes-or-no questions about those ten numbers. Overstory draws every one of them as a tree, root at the bottom.

The strongest tree of the forest at How hard it looks 3, as a flowchart and as Overstory draws it, from the app's own code. Leaf H, bright in both summer and autumn and 89 % forest, sits at the end of the thick limb that carries on as the trunk. The thin twigs lead to the small groups.
Nothing in the drawing is decoration. A branch is as thick as the square root of the pixels that flow down it, so the two halves of every split obey the rule Leonardo da Vinci wrote down for real trees. The side that holds more pixels carries on as the trunk. A bud is a verdict, and it fades towards the unsure colour when the tree was not sure. I take thickness, length and colour from numbers the model already carries, because a decorative tree generator with the same silhouette would say nothing about the model.
How this one got made
The first forest is a thicket
The controls open on Freiburg's coordinates. Press Grow the forest. The first read of a new place takes about forty seconds, because it fetches a year of imagery; after that it is cached. The first picture is sixty trees asking seven questions each: a navy thicket in which the buds, the actual verdicts, are too small to see.
Fewer questions draw cleaner trees
Open The classifier, set Trees in view to 5 and compare How hard it looks at 3 and at 14.

The default, then five trees at How hard it looks 3 and at 14. Going from 81.2 % to 83.5 % right costs the drawing every clean line.
That trade-off is the app's whole idea: the more accurately it sees the forest, the less it looks like one. This forest sits in between, at How hard it looks 5 with Trees in view 10, which gets 82.3 % right.
Bigger buds make the verdicts visible
Under The drawing, Bud size starts at 1, where a verdict is a dot. At 5 the buds become crowns.

Bud size 1 and 5, same ten trees. At 5 you can count the verdicts: a few big red buds where many forest pixels end up, and many smaller grey-blue ones for everything else.
Colours for yes, no and maybe
In Colours, pick Earth Tone Serenity from Quick palette and click its swatches into the slots: the pale pink for Sky and Unsure bud, the dark green for Ground and Branches, red for Forest bud and teal for Other bud. With the unsure colour the same as the sky, a doubtful verdict fades into the background and only the confident ones keep their colour.
The fork stays angled
Branch shape has a second setting, Right angles: the shape a decision tree has when it is printed in a paper, turned the right way up.

Angled and Right angles, same model and colours. Right angles reads as a diagram first and a tree second, which is why this forest stays Angled.
From screen to object
Under Downloads, tick the licence box. PNG is the picture at 1748 pixels wide, ready to print at postcard size, with the settings link and both data credits written into the file. Build tree pack draws trees for Buntwald and then offers Tree pack (ZIP).

What a visitor can take away: the picture, and the trees as a pack for Buntwald.
A pack holds eight trees by default, each drawn twice with the settings on screen: once as wood, once as leaves. That pair is what Buntwald reads a species from.

The three strongest trees of the pack, wood in navy over the leaves in grey. The buds are drawn sixteen times larger than on screen, so Buntwald has a crown big enough to cut into facets.
Order a print of this creation sends the picture off to be printed. With Right angles and square buds the same app makes a very different piece:

Sequoia, Golden Autumn Twilight: a published Overstory piece, drawn with Right angles and square buds.
Other controls, one line each
Seed: a different draw of trees and a different arrangement.
Seasonal lean: tips each fork towards the season its question is about.
Haze, Across and Depth: how far the weak trees fade, how wide the wood spreads and how far the nearest trees come forward.
Horizon: by default the ground follows how the forest is spread across the area; Hills draws it instead, and a Poly Peaks SVG gives it a real skyline.
Your turn
Open this exact forest and change one thing: type a place you know into Search and see whether the model agrees with you about where the woods are. Then send me what you made. I'll ask before I show it anywhere.
Next, the trees leave this app and grow somewhere else: Plant a machine-learning forest in Buntwald.
