Case study · commerce · 2026
gerboni: e-commerce CMS system with support agent.
An e-commerce store selling the coats of arms of Latvian cities on shirts. Live, taking Stripe payments, and runnable by one person, because the back office is designed like operational tooling and the support agent can actually do things.
A live product of my own, built outside this concept. Not work for Fin, and not affiliated with them.
- SKUs in the catalogue
- 360
- city coats of arms
- 10
- support agent with real tools
- 24/7
- Baltic countries shipped to
- 3
The context
Every Latvian city has a coat of arms, and most Latvians can name three. GERBONI turns that heraldry into a product line: ten cities, six colours, six sizes, 360 SKUs, live with real payments. The design problem turned out to be everything after the order.
The bet
One person can run a retail operation if the operational load is designed away. Two moves carry that: a back office built with customer-side care, and a support agent with real tools.
The design decisions
The admin panel is a product, not a chore.
An order pipeline that carries each purchase from pending to delivered, refunds handled in place, stock alerts with thresholds, CSV export for the accountant. Operational tooling earns its keep in the worst hour of the week, so it is designed for that hour.
The agent has hands.
Support runs around the clock on a Claude-powered agent over WebSocket, with tools for order status, refund requests and natural-language product search. A support bot that can only apologise is a complaint form with a typing indicator.
Guest checkout is the default.
An account is a reward for a good first experience, not a toll on the way in. Wishlist, reviews and recently-viewed reward the return visit instead of gating the first one.
Heritage carried by restraint.
A serif wordmark, flat heraldic marks, deep-red accents, Latvian first with an English toggle. The crests are the brand; the design’s job is to stay out of their way.
What shipped
Live with Stripe checkout and shipping across Latvia, Estonia and Lithuania. Designed and built solo: Next.js 16 storefront, FastAPI behind it, PostgreSQL underneath, deployed with Docker and Kubernetes configs. AI recommendations and recently-viewed round out discovery.
What I learned
A confusing refund flow is not a usability finding, it is a chargeback. The storefront earns the order; the back office earns the second one.


