Changelog

What actually happened, version by version — including the parts that didn't work the first time.

October 8, 2026

Only flag an alternate guess when genuinely unsurebuild 11

The plant identifier's "could also be" second guess used to show up next to every result. Now it only appears when the top guess is below 50% confidence, so a confident match isn't cluttered with a low-odds alternative.

October 8, 2026

Cleaning up the training data, not just adding morebuild 10

Ran an outlier detector across the weakest crops' training photos and found real contamination: scanned herbarium specimens, a 19th-century engraving, a museum placard, and off-subject photos (a crop field with no fruit visible, a statistics chart) mixed into chili, oregano, and shallot's training sets. Removed them and retrained the full 4-model ensemble. Oregano jumped from 40% to 47% held-out accuracy — confirmed the contamination really was hurting it. Chili and shallot stayed exactly flat, which was itself useful: it confirmed those two need a different kind of fix (chili looks genuinely similar to pepper in photos; most of shallot's real photos are flower heads, not bulbs) rather than more data cleanup.

October 8, 2026

Fixing a real labeling bugbuild 9

Found that several crop pairs — onion/shallot, celeriac/celery, cherry-tomato/tomato, chili/pepper, broccoli/cauliflower — had the exact same source photo duplicated into both crops' training folders, literally teaching the model that one photo was two different things. Fixed the duplicates, fetched several hundred more photos for the crops that stayed weak across multiple retrains, and pushed held-out accuracy (tested on photos the model never trained on) from 68.4% to 73.5%.

October 7, 2026

Rebuilding the classifier from scratch

Switched the plant classifier from Create ML to a fully fine-tuned PyTorch model, since Create ML's frozen-backbone transfer learning failed outright past ~8,500-16,000 training images on this machine. Moved to a 4-model ensemble that averages each model's confidence per crop, hardened the data filtering to close a contamination path, and dropped ambiguous photo sources for crops that share the same scientific species name.

October 6, 2026

On-device plant identification

Added a Core ML plant classifier covering 21 fruit and nut crops, built a photo fetcher against iNaturalist to expand the training set, and added a true held-out evaluation harness — a fixed set of photos carved out before training and never touched again, so accuracy numbers reflect photos the model has genuinely never seen.

September 21, 2026

Garden Tracker begins

First build: an iPhone garden planner for iOS 27 — beds, plantings, and a daily checklist, with the app icon, name, and French localization in place.