All projects Standard Life · Product design case study · 2026

THE CASE

Four contradictions

changed the product.

Real client · 15 branches · Sole product designer

Three were resolved through product, accessibility and localization decisions. One operational dependency remains open.

/ OVERVIEW

EST. 2025

The app said the seats were held.

The desk disagreed.

A booking product for a 15-branch esports chain — and a record of four moments where evidence contradicted the design.

/ THE JOURNEY

A player books five adjacent seats for a group. The front desk has to honour it.

Find a club

Branch · distancePrice from

Choose seats

Zone · stationContradiction 03

Temporary hold

Held for minutesContradiction 02

Payment

Card · KaspiHold becomes booking

Desk verification

QR at receptionContradiction 01

Entry

Seated as promised

/ THE CENTRAL TENSION

CONTEXT

Seat-level booking where availability, payment and the front desk must tell the same truth.

ROLE

Research, product rules, accessibility, RU/KZ, design system, prototype and gates.

SCOPE

38 screens · 23 states · 13 events. Admin, tournaments and loyalty excluded.

STATUS

Shipped and running for six months across 15 branches. The desk-visibility blocker was closed before launch.

A hold has value only when its status matches operational reality.

The interface cannot claim more certainty than the evidence supports.

TOP GAME / CASE STUDY

01  /  EVIDENCE

Operational truth

C2–C6 ≠ C3

APP · HELD 5 SEATS

FRONT DESK · WALK-IN

Reception issued C3 while C2–C6 were under an active hold. The rule worked; the pain landed on the person it did not serve.

5 seats · 2 hours · 9 000 ₸

02  /  REJECTED

Add reassurance

It raises confidence without changing what the desk can see.

WHY IT FAILED

“The user saw a five-seat hold worth 9 000 ₸. The desk could not see it.”

Availability · Payment · Front desk

REJECTED DIRECTION

03  /  DECISION

Visibility is a contract

Availability comes from the server. Group bookings are atomic.

CLOSED

The desk cannot see the hold

Closed before launch. Six months live, no repeat.

CLOSED

02

One word changed

the product state

броньдалған

already booked

rejected through back-translation

A formally correct term implied a reservation that did not exist.

EVIDENCE

The word suggested
a confirmed reservation.

REJECTED

Literal translation
created false certainty.

DECISION

Separate choice,
temporary hold and
paid booking in the copy.

PROOF

14/14 users understood
the new state · zero
RU switches · clarity 4.8/5.

/ SCREEN READERS COULD REACH THE SEAT MAP BUT NOT USE IT · AT-GRID-01

03

Accessibility changed

the architecture

01Semantic grid roles
02Roving tabindex
03Status beyond colour
04Full status legend
05Equal List View
role="gridcell" · aria-rowindex="row + 1" · aria-colindex="column + 1" · tabindex="active ? 0 : -1"

EVIDENCE

NVDA arrows scrolled Chrome. The first fix made all 36 cells Tab stops—reachable and unusable.

REJECTED

One label for the map. Easy to audit, impossible to operate.

DECISION

Grid semantics, one Tab stop, arrow navigation, live regions and an equal List View.

BOUNDED

Seat-map navigation fixed. One screen-reader issue still open (AT-01). Large text checked by browser zoom, not a real phone.

TOP GAME

/ BOOKING FLOW

04

Proof travels with the booking.

The confirmation is not a message — it is a record. Zone, station, equipment, payment and the QR the desk scans live on one screen.

01

Server-issued state

The app never assumes a hold succeeded.

02

Atomic group bookings

Five adjacent seats commit together or not at all.

03

Cancellation window

Stated on the confirmation, before it matters.

Booking confirmation mockups
TOP GAME

/ THE METRIC THAT LIED · P0

The metric rose while the product
disappeared.

METRIC CORRECTION

138 / 138 · 100%138 / 181 · 76.2%

Counting by component name said 138/138 — a perfect score. A manual spot-check found 43 more screens that should have counted. Counting by structure gave 138/181. I published the worse number.

EVERY COMPONENT STILL RENDERS · COMPONENT INTEGRITY

PASS

38/38 renders · 0 broken links

SCREENS BUILT FROM THE SHARED LIBRARY · REUSE ADOPTION

FAIL · 76.2%

138 of 181 screens · target 90%

Retired measure — how densely screens were built from components: 1,129 / 2,102 = 53.7% · 0 nodes outside instances · 109 component-internal nodes remain diagnostic · 38-screen contact sheets in the evidence archive

TOP GAME

/ VALIDATION

Six kinds of evidence.
They do not add up to one number.

REAL PEOPLE · SCREEN READERS
NVDA-01-R2 · Windows 11 · Chrome · validation-1.5-candidate · independent · 0 help
VO-01-R1 · VoiceOver · validation-1.2-candidate · independent · 0 help
VO-02 · VoiceOver + Zoom · validation-1.3-candidate · C2–C6 → C1–C5 · 0 help
NVDA-02-R1 · Firefox · validation-1.6-candidate · independent · 0 help
LANGUAGE
Expert native-language review and back-translation.
FIELD
Real branch observations; the blocker was closed before launch.
MACHINE
Figma REST · 148 instances · integrity PASS.
PIXEL
Post-fix baseline · 38/38 exact matches.
DESKTOP BROWSER ZOOM
4 profiles × 8 steps · 32/32 after 12 initial failures on 38 px chips.
Fixed minimum: 44 px. Browser emulation, not real-device validation.
NOT EVIDENCE
No production analytics. No engineer, PM or club representative.
No native Dynamic Type, split-view or IME validation.
TOP GAME

/ STATUS

CLOSED · 6

What changed

Four accessibility findings closed with named retests
KZ release gate passed
Five masters repaired at source
Integrity and pixel regression pass 38/38
Browser-zoom checks pass 32/32
Front-desk visibility closed at launch — six months live, no repeat
OPEN · 10

What remains true

Four fixes await retest on the current build (AT-01, PAY-01, SEAT-01, QR-01)
Screens built from the shared library: 76.2% vs 90% target
No native device validation
Outcome numbers come from the client, not from instrumentation
No engineer, PM or club representative in the design phase
No approved cancellation policy
No admin panel
No payment contract
No automated interaction test suite
No measured performance evidence

Nothing was moved left to balance the columns. The open list is longer because the work is not finished.

TOP GAME

/ OUTCOMES

Six months in production.

The four contradictions were design decisions. This is what they did to the business.

STABILITY

0 bugs

in six months of live operation

BOOKING ERRORS

2 of 14

down from 6 of 14

EXPIRY DISPUTES

3 of 36

down from 5 of 10

PAYMENT CONVERSION

+5.6 pp

since launch

PUBLIC RATING

4.8

up from 4.3

SUPPORT

In-app

instead of a walk to the desk

“Six months into operation we have not encountered a single bug. The impact on our business has been both measurable and meaningful.”

AYAZBI · MANAGING DIRECTOR, TOP GAME NETWORK

TOP GAME

/ REFLECTION

01

I would build the gate before reorganising the library — not after it broke.

02

The hardest decision was rejecting the walk-in warning. It was correct on the evidence I had, and it left the only person whose experience got no better with nothing at all.

03

A case study about evidence discipline that hides its own open problems has refuted itself.

Zhandarbek · Product & UX Design · zhandarbek.021@gmail.com

TOP GAME

/ UI — SCREENS

TOP GAME app icon
TOP GAME home screen
TOP GAME

/ UI — SCREENS

Welcome screen
Phone screen
OTP screen
Location screen
TOP GAME phone mockup
TOP GAME

/ DESIGN SYSTEM

Foundations v1.

Primitive → Semantic → Component. Dark-first iOS interface foundations for Home, Map and booking flows.

MAIN TYPEFACE
Regular
Medium
SemiBold
Onest
AaBbCc01234567{(!@#$?&)}
TOP GAME
#E75503#35D07F#FFC857#FF5C6C#F7F4F2#090909
TOP GAME

/ UI — COMPONENTS

TOP GAME component columnsVenue Card componentOTP Field states
TOP GAME on Apple Watch
TOP GAME booking on phone