All work

Founder & Lead Engineer

Sensium

A premium, offline-first blind-tasting coach for sommelier-track students and serious enthusiasts — one Kotlin Multiplatform core driving a true 10-platform suite.

Sensium logo
1,534
grape varieties
10
platforms
4
study modes
Offline
first, no tracking

Sensium is my flagship project and the clearest proof of what I can build alone: a premium blind-tasting coach that helps sommelier-track students, exam candidates, and serious enthusiasts make sharper grape calls under pressure — without carrying an encyclopedia in their pocket.

The problem

Wine study tools are either shallow flashcard apps or sprawling reference encyclopedias. Neither helps you do the thing that exams and real tastings actually demand: reason from structure and aroma to a defendable call, fast. I wanted a decision-first tool that trained the skill, not just the trivia — and one that worked everywhere, offline, with no ads and no tracking.

What I built

Sensium is organized around four decision-first surfaces:

  • Train — five focused minutes a day of confusion-pair drills with active recall and a local streak counter.
  • Grapes — a searchable atlas of 1,534 varieties whose dossiers open with the highest-signal cues first, plus “most confused with” sub-cards.
  • Compare — a separation workspace that names the single best decision rule for any two grapes and drops you into targeted drills.
  • Blind — reframed from “identify for me” to “check my reasoning,” producing a ranked, defendable shortlist with confidence buckets.

The pivotal decision: one core, many native shells

The hardest and most important architectural call was to put all the domain logic — data model, repository, search, and the blind-scoring engine — in a single Kotlin Multiplatform core, then build genuinely native shells on top of it: SwiftUI across iPhone, iPad, Mac, Apple Watch, and Vision Pro, and Jetpack Compose across Android and Wear OS, plus a static web export.

That means every platform ranks grapes identically and ships the same dataset, while each experience still feels at home on its device. It is the difference between ten apps to maintain and one brain wearing ten faces.

Under the hood

A Firebase backend (Auth, Firestore, Functions, Remote Config) handles optional cloud sync over an offline-first local JSON catalog. Subscriptions are unified across iOS, Android, and web through RevenueCat with a Stripe web checkout lane, so a customer buys once and restores everywhere. A strict Python data-validation and QA pipeline (schema, editorial, duplicate, and contrast checks) and multi-platform CI (Gradle, XcodeGen, SwiftLint, Detekt) keep every target green — with no third-party tracking SDKs anywhere.

Outcome

The web app is live at sensium.wine, with the App Store and Google Play launches rolling out and Vision Pro to follow. Sensium is the project I point to when someone asks whether I can take an idea from architecture all the way to a shipped, cross-platform product.

A representative slice of the suite — every screen is driven by the same shared engine.