Case study · commerce · 2026
gerboni: e-commerce CMS system with support agent.
A shop selling Latvian city coats of arms on shirts. Live, taking Stripe payments, and runnable by one person, because the back office and the support agent carry the load.
My own live product, built outside this concept. Not work for Fin.
- 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 ten cities, six colours, six sizes, 360 SKUs. The design problem turned out to be everything after the order.
The bet
One person can run a retail operation if the load is designed away: 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.
Orders from pending to delivered, refunds in place, stock alerts, 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 an agent with tools for order status, refunds and product search. A 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.
Heritage carried by restraint.
A serif wordmark, flat heraldic marks, Latvian first. The crests are the brand; the design stays out of their way.
What shipped
Live with Stripe checkout, shipping across Latvia, Estonia and Lithuania. Built solo: Next.js storefront, FastAPI and PostgreSQL behind.
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.


