460 SW 21st Rd, Miami · full working version for Alan + the Brain · trim sections for the client later
What this is. The complete read of her property and the client-input tool, in one place: conditions → the full set of combinations → theme analysis → client selection. Nothing is summarised away — it's a hybrid for you and the Brain. Cut whatever you don't want the client to see.
1 · Her property — measured conditions
Full sunPart shadeDeep shade · dotted = lawn
21,936 measured squares, sun from Google Solar (tree canopy included). More shade than sun. Flat lot (2.8–2.9 m) → water uniform. Inland → no salt.
2 · The full set of combinations
The framework is sun (3) × water (3) × salt (2) × scorch (2) = 36 possible combinations. On her flat inland lot only sun varies, so these are the ones actually present (scorch not yet computed — see the data gap at the end):
Where
Sun
Water
Salt
Scorch
Cells
Plants that thrive
Bed
Full sun
Average
Inland
pending
81
465
Bed
Part shade
Average
Inland
pending
132
155
Bed
Deep shade
Average
Inland
pending
136
15
Lawn
Full sun
Average
Inland
pending
70
grass (by sun)
Lawn
Part shade
Average
Inland
pending
84
grass
Lawn
Deep shade
Average
Inland
pending
69
grass
3 · Theme analysis — which themes can carry her property
Theme
Full sun
Part shade
Deep shade
Verdict
tropical-lush
126
62
7
fills every zone
colorful
328
100
10
fills every zone
native
140
37
1
thin in shade — needs a swap or two there
modern-clean
93
30
3
thin in shade — needs a swap or two there
low-maintenance
165
45
0
cannot fill deep shade
coastal
121
21
0
cannot fill deep shade
Why a theme gets ruled out — and what it really means. The number in each cell is how many plants of that theme actually thrive there. Deep shade is the gate: a few themes have very few or zero shade options. "Cannot fill deep shade" doesn't mean the theme is wrong everywhere — it means her deep-shade spots specifically have no plants of that theme that survive there. It's spot-specific. Often it's fixable by swapping a plant or two in the shade rather than dropping the theme — that's a judgement call we surface, not an automatic ban. The picker below only offers themes that can fill every zone, but you can see the full numbers here and override.
4 · Client input — pick a theme, then build every combination
One shot, the whole property: the client picks a theme, then fills each combination (spot). Beds get a plant stack; lawns get a grass. The caps are per spot, per layer — e.g. up to 3 edge plants in the full-sun bed — they keep one spot from getting busy and do not limit the property (each spot has its own). The one property-wide rule is colour: ≤3 across the whole yard, for cohesion — that's the limit that narrows options as you go.
Data we're using (and the one gap)
Used: sun (annual flux, season + angle + tree canopy baked in), tree shade, elevation → moisture (uniform here), inland/coastal for salt, lawn (keeps its own sun → grass by sun).
The one gap — scorch & season. Annual sun can't separate gentle morning from brutal afternoon (west) sun = scorch, nor split seasons. The Brain renders hourly/monthly solar as images but doesn't sample them per cell yet. Wiring grid.js?format=json&view=hour closes it and lights up the scorch column above.