Roobet

Case study  /  Freelance UX/UI Design

Designing a promotion survey widget for Roobet within a rigid design system

A freelance UI test and design challenge — creating a new "Bonus Quiz" survey widget for Roobet's promotions detail page, built entirely from existing design system atoms and molecules, across three breakpoints.

UI Design Design systems Component design Responsive Crypto gaming Freelance
RoleFreelance UX/UI Designer
ClientRoobet
TypeUI test & design challenge
PlatformsDesktop · Tablet · Mobile
01 — Context & brief

A UI test that was also a real product problem.

Roobet is one of the world's fastest-growing online crypto casinos — operating at significant scale with a mature, award-winning design system. The brief was a structured UI test: design a new survey widget to be embedded within the promotions detail page, allowing the promotions team to collect user preference data via short, multiple-choice questionnaires.

The challenge was twofold: interpret user stories from two distinct personas to define design requirements, then execute within the strict constraints of Roobet's existing component library — determining where existing components could be reused and where new ones needed to be built from scratch.

The brief
"Design and present an additional element that can be added to any promotion and displayed on its promotion detail page — a new survey widget allowing the promotions team to gather information from users via short, multiple-choice questionnaires."
Objective
Give the promotions team a configurable survey tool that captures user preference data while maintaining total design system consistency.
Output
A fully responsive survey widget — new components built to system spec — covering all states across desktop, tablet, and mobile.

02 — Working within the design system

A rigid system with a strict token hierarchy. No deviating.

Roobet's design system was well-established and deliberately restrictive — built around a purposeful colour palette, a named token structure, and a compound component architecture using atomic design principles. Understanding it thoroughly before touching anything was a prerequisite, not a formality.

The system used atoms (individual UI elements), molecules (combinations of atoms), and compounds (complete functional modules ready to place in a page). The survey widget would need to slot in as a new compound — built from existing atoms and molecules wherever possible, with new components only created where the existing library genuinely couldn't cover the requirement.

Neutral
Background palette
#090C1D → #F2EEFF
Primary
Purple — answer buttons, progress, CTAs
#160C33 → #E4D8FD
Secondary
Gold — progress indicators, active CTAs
#33000D → #FFFDC5
System constraints I had to work within
All colour usage had to reference named token values from the design system — no ad hoc hex values or one-off shades.
New components had to follow the same construction logic as existing ones — atoms building to molecules, molecules to compounds.
Existing components had to be used wherever they could fulfil the requirement — creating new ones only when genuinely necessary, not for aesthetic reasons.
File organisation, layer naming, and component structure had to match the existing Figma file conventions established in the system.
Responsive designs had to work appropriately in Figma's responsive mode — not just visually but structurally, with auto-layout and constraints set correctly.

03 — User stories & requirements

Two personas. Very different needs from the same widget.

The brief provided two distinct sets of user stories — one from the Promotions Team Member configuring the survey, one from the end user taking it. Interpreting both accurately was essential: getting the admin requirements wrong would break the product; getting the user experience wrong would kill completion rates.

Promotions team
Add a survey to any promotion. Include up to 2 multiple choice questions per survey, with up to 5 possible answers each. Require users to enter their email before submitting.
End user
See the entire survey at once with minimal scrolling. Understand which answer is selected. Change answers before submitting. See my progress through the survey at all times. Go back to a previous question. Know when the survey is complete.

A key tension surfaced immediately: the promotions team wanted the entire survey visible on screen without scrolling across all devices, while the end user needed to see all 5 answer options clearly. On mobile particularly, this required careful vertical density management — the widget had to feel spacious enough to use comfortably without requiring the user to scroll to find the submit button.


04 — Component decisions

Reuse wherever possible. Build new only where necessary.

Before designing any screens, I audited the existing component library to determine what was reusable. The answer button component existed in two states (default and selected) — directly applicable to survey answers. The gold progress indicator atoms existed and could be combined into a step-tracker molecule. The email input field, CTA button, and container card were all pre-existing.

Existing — reused
Answer button
Default (dark purple) and selected (bright purple) states already existed. Applied directly to survey answer options.
Existing — reused
Progress indicator atoms
Individual step nodes (gold/filled = complete, cream/outlined = upcoming) existed as atoms. Combined into a new progress track molecule.
New — created
Progress track molecule
A new molecule combining the existing step nodes with a connecting line — four states covering 0/1/2/3 questions completed, built to system construction logic.
Existing — reused
Email input field
Empty and filled states existed in the form component library. Applied directly to the Step 3 submission screen.
Existing — reused
CTA button (gold)
The primary gold CTA existed as a system component. Used for Next, Back, and Submit interactions — disabled state applied when required fields were incomplete.
New — created
Survey compound widget
The complete survey widget compound — combining all atoms and molecules into the final promotions block, sized to fit within the existing Promotion Block component.

05 — The widget

Five states. Three breakpoints. One coherent experience.

The final "Bonus Quiz" widget was designed across all required states — Q1 default, Q1 with a selection made, Q2 with a selection, email submission (empty and filled), and the success confirmation — at desktop (XXL), medium (tablet), and mobile breakpoints. Every state was fully responsive and interactive in prototype.

State 1
Question 1
Default. No selection. Next CTA disabled. Progress at step 1 of 3.
State 2
Q1 selected
Answer selected in purple. Next CTA activates. Selection clearly indicated.
State 3
Question 2
Progress advances to step 2. Back button appears. New question with 5 options.
State 4
Email submission
Step 3 of 3. Email field empty → Next disabled. Email filled → Next activates.
State 5
Success
Confirmation with illustration. "Look out for tailored promotions in your email." Close window CTA.

06 — Key design decisions

Every decision had to be defensible against the system.

In a mature, constrained design system, the interesting decisions aren't about visual style — they're about construction logic, component boundaries, and where to bend without breaking. These were the calls that shaped the quality of the output.

DecisionRationaleAlternative considered
Progress track built as a new molecule from existing atoms The step nodes existed but no connected track component did. Building a new molecule from existing atoms followed the system's own construction logic — rather than creating an entirely new atom that would have been harder to justify and maintain. Custom progress bar component from scratch — faster to design but breaks the atomic hierarchy and creates technical debt in the system.
Next CTA disabled until a selection is made The user story required users to make a selection before proceeding. Disabling the CTA (using the existing disabled token state) makes this constraint visible without requiring an error message — reducing friction at the highest-drop moment. Allow Next with no selection and show an error — adds an unnecessary failure state to a flow that should be frictionless.
Back button appears only from Q2 onwards On Q1 there is nothing to go back to. Showing it from Q2 onwards keeps the UI uncluttered on first encounter while fully satisfying the user story requirement to navigate backwards. Show Back button greyed out on Q1 — adds visual noise and implies there's something behind Q1 when there isn't.
Email step positioned as Step 3 in the progress track Treating email entry as the third step (not a separate post-survey action) sets expectations accurately — users can see the whole journey length from question 1, reducing anxiety about how many steps remain. Email step outside the progress track — technically simpler, but makes the survey feel longer than it is and breaks the user's mental model of progress.
Success state uses the existing illustration component The Roobet system included illustration assets (the envelope with notification badge). Using the existing illustration for the success state maintained visual brand consistency and avoided creating new image assets that would sit outside the system. Custom success copy only, no illustration — weaker emotional close to the survey interaction, and misses an opportunity to reinforce Roobet's brand character.

07 — Outcomes

System-compliant. Measurably effective.

The widget passed Roobet's design team review and was shipped. Because it was built rigorously within the existing design system — rather than as a one-off bespoke design — it delivered benefits beyond the widget itself.

+11%
Increase in bet conversion rate following the personalised promotion survey rollout
Post-launch metric
+8%
Increase in CTR on promotional CTAs across the promotions detail page
Post-launch metric
Reduced need for bespoke one-off UI — the compound is configurable and reusable across all promotions
System-level impact

By building the survey as a proper compound within the design system, the promotions team gained a configurable tool they could apply to any promotion without engineering involvement for each instance — improving consistency across all promotional flows and significantly reducing the overhead of one-off UI requests.


08 — Reflection

What I'd do differently.

What worked
Spending real time understanding the existing design system before designing anything. In a constrained system at this level of maturity, the quality of your output is almost entirely determined by how well you understand the construction logic — not by your aesthetic instincts. Getting that right first meant every subsequent decision was faster and more defensible.
What worked
Building the progress track as a new molecule from existing atoms rather than a custom component. It was the purest expression of the brief's requirement to follow system conventions — and it meant the component integrated cleanly with existing animation and responsive behaviour that the atoms already had baked in.
What I'd change
Given more time, I'd have proposed an optional "0 of 3 questions" state on the widget header — a loading or pre-survey entry state. The brief specified all interaction states post-entry but the moment before a user taps into the survey from the promotions page is a missed engagement opportunity that a well-designed entry state could have capitalised on.
What I learned
Working within a rigid design system is a design skill, not a constraint to overcome. The best work here didn't come from bending the rules — it came from understanding the rules well enough to make every decision feel inevitable. A component that looks like it was always part of the system is the highest compliment you can receive when working this way.
Previous
Previous

Supercoin App

Next
Next

Printed.com