JM Skin
JM Skin is a skincare store I built and operate end to end: headless commerce on Medusa, a Next.js storefront with its own design system and self-hosted type, and a curated 197-product catalog. Behind the storefront sits the machinery that actually sells — campaigns that reach the inbox, promotions that win old customers back, and automation that runs every day.

The store is its own design system — self-hosted type, custom componentry, nothing off a theme shelf. And it adapts to the person using it: a skin-analysis quiz builds a personalized routine with one-tap add-to-cart, backed by a first-party visitor profile and event pipeline living in the store's own database — the foundation the storefront keeps learning from.


The product images are custom too. The brand needed imagery it didn't have, so I created stylized covers for the whole catalog — one consistent look across every product, set as the primary image storewide — and new pieces for whatever the store needed next. The plain supplier photos are gone.



The distinctive part is the store operator: an AI agent the owner messages on Telegram to check sales, capture payments, and update prices. Anything that touches money waits for a human yes, and every change gets written down.
Deliverability is engineered, not hoped for. Campaigns and win-back promotions run on the store's own data, gift-with-purchase promos are built so they can't accidentally discount, and deploys pass readiness gates with rollback tags — the store is operated like software, because it is.


