Trust at the Final Tap

ROLE

Sole Product Designer

Team

Direct with engineering, no PM

Platform

Native mobile, iOS and Android

scope

Send and fund flows, component library and state specs

ByteWallet has since rebranded as ByteVault.

AFTER LAUNCH

+28%

Completed sends

-42%

Send flow support tickets

OVERVIEW

How do you make a transaction people can't undo feel safe enough to send in the first place?

Support kept answering the same questions about balances and fees, and the volume was growing. Every one of them was about a transaction that couldn't be undone.

I joined ByteWallet, the non-custodial, multi-asset wallet behind a Bitcoin ATM network serving thousands of users across 40+ states, as its first product designer.

THE PROBLEM

Users reached the final step without understanding the full transaction.

Support conversations and app reviews showed the same pattern: the information existed, but it wasn't clear what would actually leave the wallet.

01
Assumed crypto literacy

Jargon like UTXO, gas fee, little explanation.

02
Inconsistent balances

Max returned a lower number than shown, unexplained.

03
Confirmation created doubt

Dense, technical, at the highest-risk moment.

04
No recovery path

Generic errors, no cause, no next step.

RESEARCH

"I pressed Max and the number wasn't what I expected. I don't understand why it's showing me a different amount than my balance."

RECURRING SUPPORT PATTERN

RECURRING SUPPORT PATTERN

The clearest signal came from the Max button. Users expected it to match the balance they could already see. Instead, a hidden network deduction handed them a different number, with nothing on screen explaining why. The interface left people to reconcile two numbers and calculate a fee the product already knew.

It also knew three other numbers it never showed: how much was still confirming, how much was held after the ATM purchase, and how much this user was allowed to send today.

Exploring the Confirmation CopY

The final step had to answer questions, not create new ones.

Sending Bitcoin can't be undone. By the time someone reached confirmation, they'd already made the decision. The screen's job was to help them check it, not make them second-guess it.

My first pass leaned legal. A softer version didn't fix it either; it just repeated the risk. What actually worked was dropping the warning language and restating the facts.

FIRST ATTEMPT

“Please verify all transaction details before authorizing. This action cannot be reversed.”

Added anxiety without clarifying the transaction.

Added anxiety without clarifying the transaction.

STILL DIDN'T WORK

“Review carefully. Crypto transactions are irreversible.”

Repeated the risk but still left users rechecking everything.

Repeated the risk but still left users rechecking everything.

WHAT SHIPPED

“You’re sending 0.048 BTC to [address]. Network fee: $3.20.”

Restated the facts and introduced no new question.

KEY DESIGN DECISIONS

Four decisions that changed how sending felt.

DECISION 01

Users shouldn't calculate network fees.

There was no product manager, so I worked through the fee logic directly with engineering. They walked me through how the network fee was calculated and which parts of it were fixed. I couldn't change the number. What I could change was whether someone saw it before they committed instead of after.

Pressing Max exposed the biggest misunderstanding in the flow. Users expected it to match their visible balance, but hidden network deductions produced a different number.

→ Review stays disabled until a valid amount is entered

→ Network deduction explained the moment Max is selected

→ Fee repeats as a line item at confirmation

DEFAULT STATE

MAX TAPPED + MODAL

Default: $0.00 entered, Max available, Review disabled
Max selected: sendable amount fills, fee appears inline, Review enabled
DECISION 02

Funding and sending are different jobs. They should feel different.

Confusion at one step carried into the next. Separating source selection from recipient selection stopped one unresolved decision from following the user forward. It cost one extra screen, but it meant fewer compounded decisions.

Confusion at one step carried into the next. Separating source selection from recipient selection stopped one unresolved decision from following the user forward. It cost one extra screen, but it meant fewer compounded decisions.

Tradeoff

One extra screen.
Fewer compounded decisions.

STEP 01
STEP 02

Choose source

Choose recipient

DECISION 03

Friction at confirmation. Nowhere else.

Adding a screen isn't the same as adding friction. Every step before confirmation asks one question and moves on. Confirmation is the only place the flow slows down, because it's the last moment anything can change.

DECISION 04

Every error needed a next step.

I split the two failure patterns support saw most often: a network timeout reassures users their funds are safe and offers a retry; an insufficient balance explains the exact shortfall.

FINAL EXPERIENCE

Each screen answered one question.

The shipped flow separates source, recipient, amount, fee review, confirmation, processing, and recovery instead of combining several decisions on the same screen.

THE HOME SCREEN

While stabilizing the send flow, the home screen kept expanding: merchant tools, investing, rewards, ATM discovery, news. All of it competed with the one thing users actually came to do after buying Bitcoin.

"At some point, the wallet stopped feeling optimized for sending money."

"At some point, the wallet stopped feeling optimized for sending money."

FORMER TEAMMATE DURING REVIEW

I proposed a restructure that led with sending and moved merchant tools, investing, rewards, ATM discovery, and news into a secondary layer, so the home screen opened on the thing most people came to do.

The home screen served a lot of teams, and the tradeoff between them was larger than the send flow. What the redesign made clear was that clarity inside a flow can be undone by the screen that leads into it.

FROM FIGMA TO PRODUCTION

Design did not stop at handoff.

There was no product manager on this, so I worked straight with engineering from the first spec through the build. I specced the states a mockup skips: the amount field when the balance updates mid entry, the confirmation screen while a transaction is pending, what each error offers as a next step.

Some of it changed once engineering came back with the limits of real time balance data, and I reworked the balance states around what the system could report. I reviewed builds before release and caught what shows up in implementation rather than in Figma: spacing, state handling and copy that did not survive the build.

OUTCOME

What changed after the redesign.

+28%

COMPLETED SENDS

More people who started a send finished it on the same flow after the redesign shipped.

−42%

SEND FLOW SUPPORT TICKETS

The Max button and available balance questions that had been steady in the queue stopped coming in.

REFLECTION

What I'd carry forward

Validate the wait.

I'd want to know whether the processing state makes people feel secure enough to close the app, not just informed about what's happening.

Document as you go.

Most of what I compromised on, like the progress indicator and fee copy, was agreed to verbally. There was no PM to track what changed and why.

The redesign was not about making every transaction shorter. It was about making each decision easier to understand before money moved.

Let’s build something thoughtful

ceciliafiore.designer@gmail.com

BACK TO TOP

Designed + Coded by Cecilia

© Cecilia F. Lopez 2026. All rights reserved

Let’s build something thoughtful

ceciliafiore.designer@gmail.com

BACK TO TOP

Designed + Coded by Cecilia

© Cecilia F. Lopez 2026. All rights reserved

Let’s build something thoughtful

BACK TO TOP

Designed + Coded by Cecilia

© Cecilia F. Lopez 2026. All rights reserved