Where our data comes from

Every number, sourced.

Siltwell's plant catalog is hand-curated, not scraped or licensed from a third-party database. Every value was chosen and typed in by a person against public horticultural references, so the catalog is small enough to actually review and free of the silent errors that come from bulk-importing an unvetted dataset. Here's exactly where each number comes from.

The plant catalog

The 150-plus entries in Siltwell's catalog draw on public horticultural references:

  • University extension guides (Cornell, Oregon State, University of Minnesota, RHS Grow Your Own) for in-row spacing, days-to-maturity, and minimum soil temperatures.
  • Square-Foot Gardening convention (Mel Bartholomew's 1, 4, 9, and 16 plants-per-square tiers) for planting density.
  • RHS and standard botanical taxonomy for mapping each species to its family, then to a crop-rotation bucket.
  • Seed-catalog norms (Johnny's Selected Seeds, Baker Creek) for days-to-maturity on crops that extension guides cover sparsely.

Frost dates

Your first- and last-frost estimates come from ten years of local weather history for your location, not a generic zone chart. A hardiness zone gives a rough band; the frost estimate is tuned to your actual coordinates.

Harvest value (calories and dollars)

The "you grew about $X, N kcal" harvest summary uses USDA FoodData Central for calories per 100 g, and USDA-ERS retail price data (2025–2026 US grocery averages) for dollar value. It's a deliberate estimate; the app shows "≈" and the point is motivation, not accounting.

Weather and your station

Forecasts and historical weather come from Open-Meteo. If you connect a station, per-bed soil and microclimate readings come straight from your own Ecowitt, Ambient Weather, or Tempest account through its open API: your data, read-only, never resold.

Why hand-curated?

A small, cited catalog is one a person can read end to end in an afternoon. That's the point: no license encumbrance, no opaque table, and no silent errors hiding in a hundred-thousand-row import. When a value is wrong, it's one line to fix, in the open.