Product DesignUXUIPlatformSaaS

Fanbuilder

THE·TEAM's fan engagement platform. I led all UX and UI from the ground up.

2024–present·UX/UI lead, ground-up build

Outcome

110 campaigns in H1 2026 for the WTA, European Tour and Nations Championship, live in five language markets. No custom integration work per client. Fanbuilder is now core IP, the platform the business sells.

Core IP

Product

110

Campaigns run in H1 2026

5

Language markets

Solo

Ground-up UX/UI

Campaign settings. Operators configure duration, locale and pages without dev

Campaign settings. Operators configure duration, locale and pages without dev

Real-time analytics. Entries, surveys, opt-ins and geo breakdown per campaign

Real-time analytics. Entries, surveys, opt-ins and geo breakdown per campaign

Fan-facing preview, themed per client, data capture gated behind the prize

Fan-facing preview, themed per client, data capture gated behind the prize

Theme builder. Operators restyle campaigns per client without touching code

Design decisions

01

Every mechanic is the same object

A screen per mechanic would have meant a new interface to design and maintain every time the business sold something new. So the campaign shell knows nothing about mechanics: name, dates, locale, data region, theme, identical every time. Everything a fan touches is a block added to a shared page builder from four families, and every block is configured through the same modal: field type, general settings, validation, locales, UI settings. That pattern holds across families, so a scoring matrix under Form and a voting carousel under Fan Engagement are built the same way despite being nothing alike for a fan. Growing the catalogue never means designing another interface.

02

Bespoke on the outside, shared underneath

Clients need the campaign to feel like theirs, not like a platform. Brand enters only as tokens through the theme builder: type, colour, spacing, radius, component states. Structure and interaction are fixed and shared. Operators restyle a campaign end to end without touching code, and no client can restyle their way into a broken entry flow.

03

Prize before form

Data capture is the point of the product, so the temptation is to ask early. That kills entries. I sequenced it so the prize and the mechanic land first and the form sits behind the moment of intent, which also gave the client a clean place to put consent and opt-ins without making the entry feel like an admin task.

04

Locale as configuration, not a variant

Running the Nations Championship across five language markets could have meant five campaign builds drifting apart. Locale became part of the campaign config instead, so market copy is a field rather than a fork. The layout is designed to absorb the length variance that comes with translation rather than assume English.

See it in motion

Three decisions that only make sense moving, rebuilt here in code rather than screenshotted. Hover any of them to play it again.

01Every mechanic enters the same way

Four families, one of them holds the game mechanics. Pick one and the element type appears underneath rather than sending you to a different screen.

Add block

Home page

Choose the type of content you want to add.

Static

Text, media, dividers

Form

Inputs and selects

Interactive

Buttons and triggers

Fan Engagement

Voting, predictors, quizzes

Element type
Voting Carousel

Allows fans to view, scroll and vote on one of multiple content-driven selections. Best used for campaign voting such as Moment of the Season.

Media type
Image
CancelAdd block

Add block. Every mechanic on the platform starts here.

Replay
02The spine never moves

A voting carousel and a scoring matrix are not even in the same block family. Watch the sections hold while only the last one changes.

Voting CarouselMatrix
Fan Engagement
Field type
Voting Carousel
General settings
Field ID
Mapping label
Validation
Required field
Locales
English (default)Pending
English IEPending
ArabicPending
Swedish
UI settings
IMAGE

Hovland

IMAGE

Rahm

IMAGE

Fleetwood

Field configuration. The same sections either way.

Replay
03Brand is tokens, not layout

Colour, radius and type all move when a client theme loads. The guides stay where they are, because layout is not something a theme is allowed to touch.

Theme
Default

Welcome to the Giveaway

Complete the form below to take part. All fields marked * are required.

Enter nowFull rules
Email address *
Keep me posted about future giveaways
English (GB) ▾fXin
primary#1E1E1E#FF4913
radius4px20px
h119px22px
weight700800

Theme preview. One campaign, two themes.

Replay

Process

I designed the information architecture, user flows, component library and interaction patterns. Mechanics are blocks in a shared page builder rather than bespoke screens, configured through one modal pattern and themed per client with no custom dev. The hard part was holding that consistency while keeping each fan-facing campaign feeling bespoke. It is also what lets the catalogue grow: the next mechanics on the roadmap arrive as blocks, not as new interfaces. No PM, so I worked direct with strategy, data, account and engineering.

Context

Every client runs a different tech stack, wants different data and has its own brand rules. Building each enter-win campaign from scratch did not scale, so the platform had to plug into anything.