Perspective Labs2026

An operating system for commerce.

Hero image for An operating system for commerce.

Role

Head of Design Engineering

Timeline

2026

Team

Founding team
Engineering

Skills

Systems Design

Design Systems

Agentic AI

Design Engineering

Overview

Others generate a website. Potter generates a business.

Most commerce tools hand a merchant a prettier storefront. Potter is an operating system for commerce: a merchant describes their business in plain language, Potter stands up a real store, wires in payments, then runs the operations underneath, orders, money, and customers.

I was Head of Design Engineering: I set the visual system, designed across every surface, and shipped the front-end in code.

One person owning the money model, the information architecture, and the components kept a sprawling platform speaking one language instead of three.

A site that sells is table stakes. Running the business behind it is the product.
IMAGE · placeholderthe operator dashboard, orders and money in one view.potter-thumb-placeholder.jpg
IMAGE · placeholdera store standing up from a plain-language description.ecommerce-hero.svg

The problem

African merchants run real businesses on cash, transfers, and a DM.

Off-the-shelf commerce tools assume the easy path: a card online, a clean state machine.

The merchants Potter is for, a baker in Lagos, a salon in Accra, run on bank transfers with no reference, deposits, and cash on delivery. A buyer sends ₦24,500 with no order number. A client books a slot and never shows. Someone owes a balance that never arrives.

The storefront was never the hard part. The money is.

IMAGE · placeholdera reference-less transfer landing with no order number attached.fintech-hero.svg

Research

I pressure-tested the bet before we built it.

I didn’t want to design on assumptions, so we ran the wedge through a deep-research pass: dozens of agents, sources adversarially verified, the comfortable claims killed.

The big one: “nobody ships prompt-to-store” was false, Wix already does it. So the wedge sharpened away from generation and toward the jobs actually missing for an African SME. We designed for one real merchant, Amara Cakes in Lagos, not a persona.

What the market was missing

No one shipped deposits.

The proven anti-no-show mechanism in every global booking leader, absent from every Nigerian tool we surveyed. For a salon, a full chair instead of a ghost.

“Who owes me” is the real CRM.

Balance tracking, ignored by Western tools, is a daily local job. The money not yet arrived is the merchant’s biggest anxiety.

The money leg lives outside the chat.

In-chat payment doesn’t exist here, so every flow is an attached pay-link plus a confirmation, never an in-chat charge.

IMAGE · placeholderfield notes from watching merchants reconcile by hand, a notebook and a bank app.analytics-hero.svg
IMAGE · placeholderthe research synthesis, claims verified and killed, the wedge that survived.research-synthesis.png

The bet

Build the operator, not another storefront builder.

The market was racing to ship one thing: a prettier storefront builder. But a storefront is the part that already works.

The hard call was resisting it. A builder is judged on its themes; an operator on whether the money is right at the close of business. I optimised for the second test, because deposits, the balance-due chase, and customer memory are where merchants lose money.

The principle: free where it delights, locked where it transacts. Generation can play with layout and copy; it stays strict around anything that moves money.

A builder demos well in a pitch. An operator proves itself when the money either matches, or it doesn’t.
IMAGE · placeholderthe operator console, not a theme gallery.fintech-hero.svg
IMAGE · placeholderthe exploration, storefront builder vs operator, sketched side by side.bet-exploration.png

The money path

Confident about catalog and copy. Humble about money and conflict.

Letting Potter build a catalog is easy. Letting it touch money is the design problem, and the rule was simple: confident about content, humble about money.

Deposits, held

The wedge ships as a deposit-first booking loop. A client books, pays a deposit on Paystack, and the slot is held; the balance is due in person. Non-refundable inside a cancellation window, so the empty-chair problem is solved by data the order already carries.

Money that surfaces, never hides

Payments run on Paystack in Naira, the platform earns a flat 0.5% through a native split, and a reconciler makes a merchant whole when a settlement lands in the wrong account.

The messier money, reference-less transfers and cash on delivery, is the next layer: every ambiguous case surfaces to the merchant, never auto-confirmed.

Potter never auto-confirms an ambiguous payment. Money and disputes always surface to the merchant.
IMAGE · placeholderthe deposit hold on a booking, balance due in person.devtools-hero.svg
IMAGE · placeholderthe reconciliation surface, settlements typed auto, withdrawal, reconciliation.analytics-hero.svg
IMAGE · placeholderthe order-to-money state machine, confirm → deposit → fulfil → reconcile → settled.order-state-machine.png

One system

One order means the same thing across every surface.

Potter is one loop seen from many sides. A customer chats on WhatsApp or Instagram, lands on a real showroom, transacts on Potter’s rails, and the merchant’s one account gets smarter. Order, confirm, deposit, fulfil, reconcile, settled: one path on a real backend.

Software that adapts to the business

Most tools make a business fit one model. Potter inverts it: a merchant declares what they do, sell, book, rent, ticket, or subscribe, and that intent decides which flows render. One template contract becomes a shop, a booking site, or a box office.

One object, every console

Every surface speaks the same order, so nothing is re-explained when a merchant moves between them.

Four surfaces, one system

Dashboard

The operator console where a merchant runs the day: orders, money, customers, inventory.

Storefront

The rendered store the customer sees, one tenant per subdomain, the same order underneath.

Admin

The cross-tenant view the platform team works from: tenants, finance, risk, moderation.

Potter API

The real backend everything runs on: Paystack rails, tenants, content, and intents.

IMAGE · placeholderone order object, rendered across the dashboard, storefront, and admin.design-system-hero.svg
IMAGE · placeholderthe intent → behavior map, one contract rendering a shop, a booking site, or a box office.intent-behavior-map.png

The design direction

Potter is black and white. Your business is the colour.

A platform hosting thousands of merchants can’t impose its own loud brand on every store, so the decision was restraint.

Potter’s system is monochrome, Squarespace-calm with the density of a Square operator tool, and the merchant’s brand is the only colour on screen.

The thesis was “warm craft, fired with precision”, because in a market of fintech-clean blue and developer-dark builders, nobody owned warm.

IMAGE · placeholderthe monochrome system, the merchant’s brand the only colour.design-system-hero.svg
IMAGE · placeholderthe token, type, and colour spec, one accent doing all the work.token-spec.png
IMAGE · placeholderthe ~250-component library, primitives through to full operator surfaces.design-system-sheet.png

Outcomes

A coherent platform, live on real rails.

Potter went from a research bet to a coherent platform on real rails. The dashboard, the storefront renderer, and the admin console share one design language and one order object, ~250 components shipped in code.

Payments are live on Paystack in Naira: orders, deposits, the flat 0.5% split, and a reconciler that makes a merchant whole when a settlement lands wrong, all in production.

~250components, one design language across every surface
3operator surfaces on one shared order model
Liveon Paystack rails: deposits, splits, reconciliation
IMAGE · placeholderthe settled state, an order closed with the money in.potter-thumb-placeholder.jpg

Reflection

What I learned.

Potter is the most systemic thing I’ve designed: a money model, an information architecture, and a brand, held together by one person in code so they couldn’t drift apart.

Design the money path first.

I began in the storefront and almost shipped a prettier builder. Once deposits and reconciliation became the spine, the rest fell out cleanly. The money model is the design; everything else is decoration.

A moat can become the thing you cut.

We sold “you cannot break your store” as the differentiator, then tore it up once the agent was good enough to trust with real code. The durable edge was the rails and the operate layer, not the cage.

One owner keeps a platform coherent.

A sprawling product splinters into dialects fast. Owning the visual system, the components, and the money model in code kept every surface speaking one language.