BA-01 · Fintech · iOS · Client project

BetAlmighty®

Holding friends' money fairly. A Nigerian betting app where friends stake against each other and the money waits in escrow until both sides agree on the result.

RoleProduct designer
TeamSolo, client project
TimelineJul – Sep 2026
StatusIn development
PlatformiOS · Nigeria, NGN + crypto
Scope135 screens · 5 product areas
The brief

A requirements doc with user stories for seven modules, from the wallet to 1v1 bets.

My approach

AI-drafted mid-fi flows from every user story, critique rounds, then the final screens redesigned in Figma.

The result

135 screens and a handoff note with every open rule and risk. In development, and praised by the client for simplicity.

What I owned

  • The iOS app end to end: 135 screens across home, lottery, betting, community and wallet
  • The 10-state escrow system, mapped with engineering before any screens
  • A failure state for every money flow: declined cards, BVN mismatches, disputes
  • The responsible-gambling tools, built into the core flows
  • The dark-first token system for colour, type and spacing
The brief

A requirements doc, not a design brief

The client arrived with numbered modules, functional requirements and user stories, from the dashboard to the 1v1 personal bet. It said what the product must do. It didn't say how it should feel, or what happens when money goes wrong. That gap was the job.

Challenge 01

Holding friends' money

When two people bet against each other, someone has to hold the stakes and someone has to decide who won. Both had to feel fair.

Challenge 02

Nigerian payment realities

Bank transfer is the default, card charges get declined, and many players hold USDT. Funding and withdrawals had to work on all three.

Challenge 03

Gambling harm

Making betting social also makes it easier to overdo. Limits and breaks had to sit inside the core flows, not in a settings page.

How I worked

From user stories to final screens

I was the only designer on this project. For each module, I gave Claude the client's user stories and had it draft the flow as mid-fidelity screens. I then reviewed every flow, redesigned the final screens myself in Figma, and wrote the handoff notes.

  1. User stories in

    For each module I gave Claude the client's requirements and user stories and had it draft the whole flow as mid-fidelity screens, with the user-story number on every frame.

  2. Flow boards out

    Each flow came back as a labelled board, every state side by side, ready to paste into Figma and review end to end.

  3. Critique rounds

    I used AI as a critic too: where flows dead-end, which states are missing, where the UI promises something the product can't deliver. I acted on what held up and set aside a critique that misread the product.

  4. Redesign in Figma

    I redesigned the final screens myself in Figma and built the visual language and token system around them.

  5. Handoff notes

    I wrote up every rule the designs assumed and every question the client had to answer before build.

22flow boards, one per module or flow
147mid-fidelity screens drafted
135final screens designed in Figma
Mid-fidelity flow board: the 1v1 personal bet, from challenge to escrow, confirmation, dispute and cancellation (user stories US-060 to US-064) Tap to enlarge
Final Bet details screen, redesigned in Figma July mid-fidelity draft of the same Bet details screen July draftFinal

Same screen, two stages. Drag to compare. The structure survived; the redesign quietened the chrome so the money in escrow is the loudest thing on screen.

Key decisions

Four calls the brief didn't make

Each one started as a gap or a problem I found in the drafts.

01

Make it obvious who settles a bet

Problem: P2P market, group and 1v1 bets shared the same card, the same "escrow" wording and the same title. But one settles itself, and one needs you to chase a friend.

Decision: every bet type carries its own identity from creation to the wallet. Blue settles automatically. Gold means you and your opponent confirm. Committed Funds puts the bets that need you at the top.

July · mid-fi drafts
Choose bet typeType chosen up front
Committed fundsFlags the bets that need you
Final · Figma
New betChosen by who settles it
Committed fundsWhere every locked naira is
  1. Blue badge: the bet settles itself from the event result.
  2. Gold badge: you and your opponent confirm the winner.
  3. One question at the top: who decides the result?
02

Let people in light, but gate the money

Problem: the first sign-up draft offered Skip on registration and on the phone code, which means skipping identity checks in an app that holds money.

Decision: no skipping the phone code, and an honest four-step progress bar. BVN can wait, but until it's verified withdrawals stay locked, and the success screen says exactly what's available and what isn't.

July · mid-fi drafts
Phone codeNo skip on the phone code
BVN stepSkipping BVN, stated honestly
Final · Figma
Account createdTier 1: what's available and what's locked
BVN stepOptional, with skip terms stated
  1. What's locked is said up front: withdrawals wait for BVN.
  2. A Tier 1 badge follows the player until they verify.
  3. Verifying stays one tap away.
03

Deposits earn revenue. Withdrawals earn trust.

Problem: early drafts ended money flows at a button. Nothing told players what happened after their money left their hands.

Decision: I rebuilt withdrawal as review with fees upfront, a one-time code, a detailed receipt and a status tracker, with network guardrails and an irreversibility check for crypto. Then I gave funding the same pending-to-confirmed structure.

July · mid-fi drafts
Review withdrawalFees before you confirm
Status trackerEvery step after the button
Final · Figma
Withdrawal statusRequested → review → sent → credited
Crypto withdrawalIrreversible, double-check prompt
  1. Every step from request to credit, with times.
  2. Honest timing at the step that's in progress.
  3. Help is in the flow, not in a menu.
04

Nothing refunds until both agree

Problem: reviewing the 1v1 flow, I found there was no way to back out of a bet once the stakes were locked.

Decision: a two-sided handshake. One player proposes cancelling with a reason, the other agrees or declines, and refunds happen only when both agree, with no fee. A decline keeps the bet live and points to confirming the result or opening a dispute.

July · mid-fi drafts
ProposeWith a reason
Both agreedRefunded, no fee
DeclinedBet stays live
Final · Figma
Mutual cancelWho has agreed, refund breakdown
  1. Exactly who gets what back, and no fee.
  2. Both players' answers, visible to both.
  3. Declining is as easy as agreeing.
Escrow

I designed the state machine before the screens

Money in a personal bet can be in ten states. I mapped them for engineering first, so every screen, notification and button maps to exactly one state and nothing falls between two. Pick a state to see its screen.

event ends ↓ both match ↓ they don't ↓ evidence unclear ↓ ← either player proposes
BetAlmighty screen in the Locked stateBetAlmighty screen in the Confirming stateBetAlmighty screen in the Released stateBetAlmighty screen in the Disputed stateBetAlmighty screen in the On hold stateBetAlmighty screen in the Mutual cancel state
State 1 of 6 · Funds held

Locked

Both stakes lock the moment the opponent accepts. What's in escrow is the first thing on screen.

Amber: funds held Green: released Red: conflict Grey: paused

The same colours carry into the app, so players can read a bet's state at a glance.

Play responsibly

Safety built into the flow, not buried in settings

The Play Responsibly hub shows this week's time in the app, deposits and net result, and holds every tool: weekly deposit and loss limits, session reminders, breaks from 24 hours to 30 days, self-exclusion from 6 months to permanent, and a free, confidential support line.

Play ResponsiblyThis week, limits, tools
The hub

One place for every limit

Progress bars show how much of each weekly limit is used, so a player sees where they stand before a limit stops them.

Session reminderAfter an hour of play
Session reminder

A pause with the numbers

After an hour, a sheet shows stakes, wins and net result, with Take a Break as the main action and Keep Playing beneath it.

Deposit limitOptions, not just a wall
Deposit limit

Options instead of a dead end

Deposit what's left of the cap, wait for the weekly reset, or raise the limit. A raise takes effect after 24 hours, never instantly.

Break activeWhat's blocked, what isn't
Break

A break that means it

Betting and deposits are blocked, while withdrawals stay open and open bets still settle. The break can't be ended early.

Loss limit reachedPaused until Monday
Loss limit

Stops at the line you drew

New bets and tickets pause until the period resets, and the limit can't be raised mid-period. Withdrawals are never blocked.

"A break cannot be ended early. Not by you, not by support. That is what makes it worth setting."Copy from the Break Active screen

Also designed

The rest of the product

Group bets that show your live share of the pot, a lottery that pays out by itself, and topic communities with rules written to block betting scams.

Join group betLive payout per outcome
Not enough playersAuto-cancelled, refunded in full
Committed fundsWhere every locked naira is
Deposit USDTNetwork picker and QR
Pick your numbers5 of 36 or Quick Pick
You wonCredited automatically
CommunitiesTopics, members, private chats
Community rulesWritten to block betting scams
FeedPredictions people can agree with
Report postScam or fixed-match claims
Chat1v1 challenge sent from a chat
LotteryJackpot, active draws, upcoming
Design system

Dark-first tokens with gold as the brand

A near-black canvas, #1A1A1A cards and a gold primary. Bricolage Grotesque Bold carries the display moments (logo, wallet balances, page titles), and Geist runs the interface, small and dense. Cards, buttons and inputs share a 20px radius, on an iPhone 17 frame of 402 × 874.

App canvas#0F0F0F
Card / nav#1A1A1A
Input / raised#1E1E1E
Gold primary#E8A020
Gold bright#F5A623
Gold tint#3E371F
Success#5AC462
Danger#ED5F59
Info / active bet#4696EC
Text secondary#9E9EA3
Logo · Bricolage 700 · 36BetAlmighty
Balance · Bricolage 700 · 32₦48,500.00
Page title · Bricolage 700 · 24Play Responsibly
Button · Geist 700 · 16Create a Bet
Body · Geist 400 · 14vs @king_ade · your pick
10 · row gap
18 · card padding
28 · screen inset
40 · nav gap
52 · button height
Handoff

What engineering received, and what I asked the client

The screens came with the escrow state system, a token sheet, a failure state for every money flow, and a written handoff note.

135screens, including error, empty and edge states
10escrow states mapped with their transitions
13open questions raised before build
Rules the brief left open

I listed every rule the designs assume, covering fees, verification tiers, limits, settlement and crypto safeguards, so engineering builds what was drawn and the client can confirm each one.

Questions before build

Several touch money directly. The brief let disputed funds be held until both sides produced clear evidence, with no deadline, so I recommended a maximum hold with an automatic refund when it runs out.

A risk register

Including whether dispute handling could cost more than 1v1 bets earn, a legal check on combining crypto with real-money betting, and an honest flag: no flow had been tested with users yet.

What's not covered

Admin tools, the web app, a light theme, an accessibility audit and a motion spec, stated up front so nobody assumes they exist.

Outcome

Where it landed

BetAlmighty is in development. I designed it on my own for the client between July and September 2026, then handed over the screens, the escrow state system, the token sheet and the handoff notes.

The client commended the simplicity and usability of the platform.Client feedback

What I'd do next

Test result confirmation and group-bet payouts with real users before build. They're the two places where people have to understand money they can't see.

What I learned about AI

It's fastest at drafting flows and listing missing states. Judgement doesn't transfer: when a critique misread the product, deciding to set it aside was my job.

Designed in Figma for iPhone 17 (402 × 874). Mid-fidelity flows drafted with Claude. Back to all work