Field LogField Botany · MK-VII

BEST TREE

Scan a tree. The tricorder identifies the species, scores the find by rarity, and a best man delivers a wedding roast in which the tree is the groom — and never once admits it.

Field Log · Kirk · Spock · Adam
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.
Transmit · Share One

Ten things worth knowing. There's a groom on every street — tell someone.