A scan is a lookup first, a model second
The first build sent the whole photo to Claude Sonnet and asked for everything. It worked, and it was slow and expensive for the common case, which is a bottle someone has already scanned.
The scan now has two steps. Claude Haiku reads only the wine's identity from the photo. A database function matches that against the shared catalog, ignoring case and accents and tolerating small misreads. A known wine returns at once. Only a new wine goes to Claude Sonnet, which infers the taste profile from text without resending the image, and its producer is queued for research.
The story on the result page is written once per wine per language and cached. Only the personal comparison is generated live, so the page shows immediately and fills in while you read.

