← The work

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 GERBONI admin dashboard: order and revenue tiles, orders placed today, recent orders with statuses, and low-stock alerts with per-variant counts The GERBONI order management table: sortable columns, status badges from pending to delivered, totals, item counts and CSV export The GERBONI storefront: product grid of city coat-of-arms shirts with colour and size filters, search by city name, and wishlist hearts
Orders, revenue, today’s work and low-stock alerts, surfaced before they become apologies. The shop’s most frequent user is the person running it. Tap a capture to open it full size.

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.