By industry

For on-chain products that need to make sense

Web3 interfaces carry unusual burdens: transactions are irreversible, they take unpredictable time, they cost money to attempt, and they can fail after the user has already paid. Designing around that honestly is most of the work.

  • Wallet and transaction UX

  • Honest state handling

  • Brand systems for protocols and DAOs

Transaction states are the product

A traditional app has loading and done. An on-chain action has wallet prompt, signature pending, submitted, confirming, confirmed, reverted, and dropped. Each needs its own honest treatment.

A spinner until something happens is how users end up double-submitting expensive transactions — a failure mode that costs them real money and costs you the relationship.

Irreversibility changes the confirmation bar

When an action cannot be undone, the confirmation needs to state precisely what will happen and what it will cost, including gas, before the wallet opens. Standard destructive-action patterns are not strong enough here.

Onboarding people who do not have a wallet

Most growth comes from users who are not crypto-native. That means a path that explains what a wallet is, does not assume seed-phrase literacy, and lets someone see value before connecting anything.

Proof it works

All case studies

Frequently asked questions

Let's build something worth shipping

One flat monthly fee. Unlimited requests. Design and engineering under one roof — pause or cancel whenever you like.