Permaculture design studio
Find Your Food Forest reads your site — climate, soil, sun, slope and the way water moves — then drafts a permaculture plan you refine and deliver. Calm, clear, and entirely in your browser.
Works offline · Your client data stays on your device
Every element carries its reasoning, in plain language. Why this species. Why this spot. Ready for the client conversation.
Real contours, flow and rainfall shape each plan. Swales, ponds and tanks land where the water already goes.
Companions, antagonists and toxicity are reviewed against pets and children before a plan reaches your client.
Local-first and offline-capable. Designs and client records live on your device, not on someone's server.
One studio carries the whole journey — no exports between tools, no lost context.
Type an address. The parcel appears on satellite imagery with a decade of climate history.
Contours, sun, wind, soil and water flow — gathered and modeled for you.
Trace or auto-detect canopy, buildings, paving and water.
Zones, water systems and climate-matched plantings — each with its why.
Move, swap and reshape anything. Nothing is ever locked.
Print-ready plans, sections, schedules and a water budget for the client's table.
Sample voices for layout review — swap in your clients' words.
The site assessment that used to eat my week now takes an afternoon — and the client sees why every tree sits where it sits.
My first paid design came out of this studio. The draft explained zones and guilds better than my course notes did.
We pinned the plan to the fridge. Two seasons in, the swales have held every storm the hill has thrown at them.
Installable as an app on Mac, iPad and the web
Bring the tool you already use. The app reads a Clients table/tab and a
Questionnaire table/tab (canonical columns in AIRTABLE_BASE_TEMPLATE.md — names are
matched flexibly, missing fields get safe defaults). Credentials are stored only in this browser;
never paste an invite link, and never share your token.
Projects
One project per site. Each holds its sheets — site plan, detail plans, sections and the client set.
Find Your Food Forest · your work is stored on this device — use Backup on a project card · · ·
Projects are saved on this device first and backed up to the studio's cloud a few seconds later. Sign in on another device and the same projects are there.
No cloud connection yet — connect the plant database (Plant library → Connect) or add a cloud block to fyff.config.json.
A project is one site for one client. Start by finding it on the map — an address, a town, or even coordinates all work.
Every design starts with the property boundary — it's what zones, water and plantings are drawn inside.
Drawing: click each corner of the property on the photo, double-click to finish. Importing: KML, KMZ, GeoJSON and zipped shapefiles from a surveyor or county GIS all work. Then hit Generate for a first draft you can edit freely.
Teach the AI from your finished designs. Adding a design as an example records the species palette and guild pairings for its climate & goals, and Generate will favour what's worked before. Any plant not yet in your database is validated against the authoritative USDA PLANTS database (confirms the species is real and correctly named, and its growth form); growing details USDA doesn't publish (zones, spread, toxicity) are flagged for your review. Confident matches are added and synced to your Airtable; unsure ones wait for review.
USDA's API isn't directly reachable from a browser (no CORS), so lookups go through a relay proxy. The default usually works; if lookups fail with a 403/network error, paste your own CORS-proxy prefix (e.g. a cors.sh key URL). Leave blank to reset to default. The proxy only relays a public, read-only USDA request.
Tick what to show, click a swatch to recolour (plant roles and map layers recolour on the map too — the key never shows a colour the map doesn't draw), and edit any label or the reference text beside it. Lidar terrain colours come from USGS and stay as served. Everything saves with this project and prints in the report's design key.
A section-elevation sheet: the cut you choose (A–A), titled by the way it looks, plants on the line drawn heavy and plants behind it fading with distance, real ground with a datum, numbered tags with a plant schedule. It redraws live; the cut marker with its view arrows shows on the map while this window is open. Concept drawing — not survey-accurate.
Transparent-background PNGs (cut-out tree/shrub silhouettes) look best. Images stay on this device and apply to every project. Mind image licences for client deliverables.
Every species on this cut, in schedule order. Rename how it reads on the sheet, pick the symbol it is drawn with, set the drawn height and spread, move it up or down, or hide it from the section. Changes apply to every placement of that species in this design and preview live below.
Drop files here or click to browse
KML · KMZ · GeoJSON · GPX · Shapefile (.zip) — boundaries, survey contours, utilities, any overlay
Auto-drafts zones, sectors, water concept and climate-matched plantings over your basemap. Everything it creates is editable — nothing is locked.
Contours come from a public elevation sample (Copernicus ~30 m data) — great for concept design, not survey-grade. Changing these re-computes from the cached grid with no new API call.
Imported survey contours outrank the public-DEM set — while any are on the map, “Regenerate” keeps them and skips DEM generation.
Without a key, a built-in rule engine selects species. With a key, Claude composes the guild selections and writes the design concept from your goals — output is validated against the plant database before rendering.
Pick a category, then click real examples of it on the map (include "None of these" on bare ground). Learning is automatic — every click retrains the detector in under a second and repaints the live tint, so you see immediately what it now believes. Move a wrong click, and it un-learns it just as fast.
Changes apply to the next Detect run. The old training-passes and learning-rate knobs are retired — training is automatic with tested defaults, and the accuracy shown is cross-validated (scored on examples the model was NOT trained on), so it finally matches what you see on the map.
Colour-segments the current satellite view into canopy, structures and paved surfaces, then adds them as editable polygons. This is a heuristic first pass — always review and correct. Pan/zoom so the parcel fills the view, and use the Satellite basemap.
Pick a category, then click real examples of it on the map (do a few categories, including "None of these" on bare ground). Learning is automatic — every click retrains instantly and repaints the live tint. Everything runs and stays on this device — no network, no uploads, near-zero resource cost.
Search the Permapeople database (CC BY-SA 4.0). Needs your free API key pair from permapeople.org — stored only in this browser. Imported data inherits the CC BY-SA share-alike licence.
Import a CSV, Excel (.xlsx) or JSON export from any plant database or spreadsheet. Column names are matched flexibly — and you can download the whole current database below, curate it in Excel, and drop it back in.
USDA PLANTS bulk import (offline, authoritative): at plants.usda.gov → Advanced Search, pick your filters and add characteristics columns (Growth Habit, Shade Tolerance, Moisture Use, Height, Temperature Minimum, Toxicity), then Download CSV and drop it here. It's auto-detected and mapped (feet→metres, min-temp→hardiness zone, growth habit→layer); missing columns default and are flagged for review.
Drop CSV / Excel / JSON or click to browse
Paste a JSON array of plant objects. Unknown fields are ignored; missing fields get safe defaults.
Link a living source once; re-pull whenever it changes. Rows flow through the same validate → dedupe pipeline as any import (USDA sheets auto-detected). For Airtable, use the sync section below — it's two-way.
Share the sheet "anyone with the link (viewer)" or File → Publish to web. Keyless and read-only; the link is remembered on this device.
Repository species register per session and refresh automatically before every Generate — the folder stays the source of truth; nothing is copied into browser storage.
This browser can't keep a live link to local files (Safari/iPad) — use the Import tab's drop zone instead; it's the same pipeline.
Mirror the local plant/site cache to an Airtable base so a team shares one corpus. Sign in once with Airtable (SSO — the same session as the Designer dashboard) or use a Personal Access Token; credentials stay in this browser. Create a base with a Plants table (fields: Key, Botanical, Common, Data, UpdatedAt), a SiteData table (Key, Kind, Data, UpdatedAt), and — for project sync — a Projects table (Key, Name, Data, UpdatedAt). Push writes/updates by Key; Pull downloads, and a newer remote copy updates the local one.
Final review of every planted species carrying a toxicity rating. Nothing is changed automatically — review each and swap in a non-toxic alternative with one click if you choose.
Named snapshots of the whole design — a safety net beyond undo that survives reload. Save one before big experiments (regenerating, bulk edits, client revisions). Restoring is itself undoable.
Every external call this project makes — AI plans, climate/soil/elevation lookups, geocoding — is tracked here with an estimate of the energy and water it used, and what the local-first cache and efficiency router avoided. Figures are order-of-magnitude estimates, not audits.
The router learns from you: deleting, swapping, or regenerating auto-planted elements counts against the route that produced them. Routes that make designs you keep get used more, so resource use falls over time without sacrificing quality. Your edits always win — nothing is ever locked.
AI calls: metered by real token counts from the API; energy ≈ 0.05 Wh base + 0.06 Wh/1k prompt tokens + 0.45 Wh/1k generated tokens (small models ≈ 15% of that). Data API request ≈ 0.02 Wh. Water = energy × 1.8 mL/Wh (typical datacenter Water-Usage-Effectiveness, incl. cooling). Public per-query estimates for large models range ~0.3–3 Wh and ~10–50 mL; these constants sit mid-range and live in one place (js/resource.js) for tuning.
Harvest = area × rainfall × runoff coefficient (1 mm on 1 m² = 1 L). Numbers update live as you draw or edit catchments. Concept-level, from public climate and ~30 m elevation data — not engineered stormwater design.
Click a key, then press the new one. Backspace unbinds; Esc cancels. Bindings save on this device and apply immediately.
Applies to the Projects, Clients and Plant library screens. The design studio stays dark so drawings read against it.
Every sheet draws from the same site model — plants and shapes live once. A sheet keeps its own layers (eye · print · lock), extent, scale and title.
Split the proposed work into phases. Pick a strategy to assign every proposed element at once, then rename, reorder or retag anything; or build the phases by hand. Existing conditions (boundary, contours, the house, existing plants, detected paving) are never phased.
Your identity across the landing page, studio, print sheets and reports — applied live, stored on this device, exportable as a brand kit. The built-in look is locked; duplicate it to make yours.
This is the locked built-in look — click + New to create an editable profile based on it.