01·440
The Capture
Every find begins with a single scan of a leaf, a branch, or a strip of bark. The image posts to /api/identify, which runs it through a plant-ID adapter and returns a species, a Latin name, and a confidence. Identification and roast are two separate server calls behind one tap — so a blurry, low-confidence scan is turned away before a single word of speech is spent on it.
02·117
The Rarity Ladder
Four tiers: Common (10), Notable (25), Hidden Gem (60), Rare Find (150). The rarity source is a hand-curated table — defensible and immune to the observation bias that makes a common urban tree read as “rare” just because nobody logs it. Seeded for the Saskatchewan prairie; unknown species default to Notable until classified.
03·209
The Roast
The speech is generated live by Groq, server-side, for whatever species came back — never pre-written. The best man describes real botanical facts (growth speed, wood, litter habit, allergens, invasiveness) as if they were the groom's human virtues and flaws, and addresses him by his species name. A rare find earns one dry line of credit — never a participation trophy.
04·330
The Scoring
All scoring is server-side; the client never computes or submits points. First find of a species pays full tier value; a repeat pays a quarter. A scan under 60% confidence holds its points and its speech and asks for a clearer shot. Five distinct species in one day adds a variety bonus. Score and Scan Log persist in Postgres — no reset on refresh.
05·712
The Stack
Next.js and React on Postgres and Prisma. The plant-ID provider sits behind one adapter interface — Pl@ntNet, Plant.id, or an offline mock — chosen by environment, so a route never touches a provider SDK directly. The roast key stays on the server. No port literal lives in any committed file.
06·064
The Open Decisions
Next API routes over a split backend — one runtime, not two. The hand-curated rarity table as the primary source, with live occurrence counts as optional enrichment only. And the ID provider chosen at config time: Pl@ntNet's free non-commercial tier, Plant.id's paid commercial tier, or the mock for a keyless run.