All work

Personal product system

Wine Cellar

I built the app after standing in front of the cellar with dinner underway, knowing I owned the right bottle and having no reliable way to find it.

Wine Cellar scans labels, tracks bottle provenance and physical rack position, estimates value, and recommends what to drink from the wines actually on hand.

The database knew I owned the bottle, yet the rack gave me no corresponding position, and the record mixed purchase facts with inferred attributes in ways that made both harder to trust.

I wanted label recognition, taste profiles, market values, and recommendations, but each generated judgment needed to remain visibly separate from provenance and other facts I already knew.

Wine Cellar dual-section rack map showing the live collection state
FIG. 01 - DUAL-SECTION RACK MAP, LIVE COLLECTION STATE

Production capture, 2026-08-30.

Open full-size image

I mapped both cellar sections as a 6 by 8 grid and connected the physical position to collection records, label scanning, market-value estimates, taste modeling, grounded recommendations, an AI sommelier, and scheduled backups in one phone-friendly product.

The app runs on private infrastructure with configurable AI providers, field-specific data authority, and deterministic behavior available when a model path is unavailable.

Design choices

Separate enrichment from provenance

I allow taste-profile fields to refresh when better research arrives, while provenance fields fill only when empty so a model cannot overwrite known bottle facts.

Wine Cellar bottle record separating human-owned facts from an AI estimate with visible confidence
FIG. 02 - BOTTLE RECORD: HUMAN-OWNED FACTS, AI ESTIMATE WITH VISIBLE CONFIDENCE

Production capture, 2026-08-30; panels arranged for the figure.

Open full-size image

Map the physical system

I made the digital rack mirror the real cellar, using drag and drop on desktop and a deliberate tap-to-move interaction on mobile.

Ground recommendations

I ground the sommelier and next-bottle ranking in wines I own, stated preferences, ratings, tasting notes, drinking windows, and clear dislikes.

Repair drift at startup

I run schema initialization idempotently on every container start and keep scheduled compressed backups because a production drift incident made recoverability a design requirement.

Market values are estimates, not appraisals. Recommendations depend on the collection history and tasting data available.