How It Works
Pick two emojis (🐍 + ⚡ = Snake Thunder Surge, obviously).
A combination of models “forges” a complete “tactical” scent: name, tagline, description, label.
The whole thing is encoded into the URL hash.
Share the link, and anyone can purchase the exact same soap.
Click Purchase to jump straight into checkout.
Buy that forged scent.
The tactical soaps as the demo.
The real story: custom products that live entirely in links.
Notes from Building
Designing it weird leads to new ideas. The goal was always to build a custom product checkout MVP, but trying to create our very own custom Nightpanther made it fun. That led to the emoji-mashing interface. The absurdity helped us think about the interface in a new way. Getting weird with these aspects helps you think outside the box.
Only generate what you need. The first thought here would be to generate the full rendering of the soap bottle with label. But if you actually wanted to print this, you’d just need the label. That means you’d have to extract it from the image, with inconsistent results. So we only generate what we need: keep a stock bottle image in the background, AI just for the label.
Payments were another rabbit hole. We tried LemonSqueezy. We tried PayPal. We tried Gumroad. Stripe was the only answer for accepting a custom product fast. We didn’t have to click a million buttons to make a fake product first. It just accepts our title, description, and custom image from the base64 saved in the URL. No unnecessary clicking around a dashboard.
And then there’s persistence. Yes, you read that last base64 line right. No database here. Everything about the soap — name, tagline, emojis, even the label image — gets packed into the URL itself. Refresh the page and it’s still there. Share the link and anyone else can see the exact same product. Want it shorter? Make a short link. The link is the persistence.
Put it all together and you get something that looks like a parody body but under the hood it’s an MVP pattern: custom products, instant checkout, zero backend. 🎉