SPENDING PROTECTION

Gift Guard

A mobile app giving TikTok LIVE gifters the spending protection the platform deliberately withholds. Built on real behavioral research. 9 users, all of whom had already overspent. Give freely. Spend wisely.

IXD 414

MOBILE APP

UX RESEARCH

TikTok LIVE interface showing gifting in action
Overview

Brief about TikTok Live

Problem

TikTok is engineered to keep gifters from caring

which can lead to extreme overspending

What I Thought

A visibility problem.

Show people the dollars. Add a total. Let math do the rest. Simple and easy fix.

What the Research Showed

A context problem.

Coin wallets abstract real money. Battles create urgency. Fan Clubs tie spending to identity. The dollar total is the last thing anyone sees.

4

psychological mechanisms working together

Coin abstraction hides real cost

Coin abstraction hides real cost

Coins replace dollars. The price never feels real.

Inline recharge removes friction

Inline recharge removes friction

Reload without leaving the LIVE. Impulse is the point.

Battle FOMO creates urgency

Battle FOMO creates urgency

Real-time countdowns pressure immediate gifting.

Fan Club status requires ongoing gifting

Fan Club status requires ongoing gifting

Stop gifting, lose your rank. Loyalty is weaponized.

Research methods

Two inputs shaped the form before
I asked anyone a question.

INPUT 1

Platform deep-research

Reviewed TikTok's public developer surface, Data Portability exports, and the reverse-engineered Webcast ecosystem (TikFinity, TikLeap, tiktok-live-connector) to map what is technically possible to observe, officially or otherwise.

No public gift-event API

Data Portability exposes history, not real-time

Reverse-engineered feeds carry ToS risk

tikfinity.com

tikfinity.com

sciencedirect.com/science/article/pii/S2451958821000981?

sciencedirect.com/science/article/pii/S2451958821000981?

INPUT 2

Behavioral literature

Read the body of work on friction, pre-commitment, and coin/abstracted-currency pain-of-paying, plus existing writing on parasocial spending inside live-streaming communities.

Graduated friction beats hard stops

Pre-commitment beats in-moment restraint

Morning-after regret is a harm signal

Insights

The app can't access user's spending

Which raised the question, “what CAN we access?”

Plaid bank connection example
alternate solutions

But, we can access bank statements through Plaid.

Plaid is a financial technology company that connects apps to users' bank accounts, enabling secure access to financial data for payments, budgeting, and other services.

Survey insights

Knowing the app was feasible upfront allowed the insight form to be more focused.

How old are you?

Identifies demographic patterns tied to spend behavior

Which country is your TikTok account based in?

Reveals regional differences in platform usage

How do you usually buy Coins?

Shows preferred purchase methods and friction points

When do you usually have Coins loaded?

Tracks timing patterns of coin loading behavior

About how much do you typically spend on gifting WEEKLY?

Quantifies average weekly spend for segmentation

Where do you spend the most?

Identifies top contexts driving gifting activity

What's your typical gift size?

Segments users by typical gift size behavior

How often do you reload Coins in a typical week?

Measures frequency of spending and reload habits

How often do you gift during LIVE battles or matches?

Reveals engagement intensity in competitive streams

Are you in any Fan Clubs?

Indicates deeper platform involvement and loyalty

Do you ever gift to stay active or maintain your status?

Shows retention driven by status maintenance behavior

How important is being recognized (badges, shoutouts, etc.) to you?

Measures value placed on recognition and status

When are you most likely to spend more than you planned?

Identifies emotional and situational spend triggers

Have any of the following ever happened to you related to gifting?

Reveals negative outcomes and loss-of-control patterns

How old are you?

Identifies demographic patterns tied to spend behavior

Which country is your TikTok account based in?

Reveals regional differences in platform usage

How do you usually buy Coins?

Shows preferred purchase methods and friction points

When do you usually have Coins loaded?

Tracks timing patterns of coin loading behavior

About how much do you typically spend on gifting WEEKLY?

Quantifies average weekly spend for segmentation

Where do you spend the most?

Identifies top contexts driving gifting activity

What's your typical gift size?

Segments users by typical gift size behavior

How often do you reload Coins in a typical week?

Measures frequency of spending and reload habits

How often do you gift during LIVE battles or matches?

Reveals engagement intensity in competitive streams

Are you in any Fan Clubs?

Indicates deeper platform involvement and loyalty

Do you ever gift to stay active or maintain your status?

Shows retention driven by status maintenance behavior

How important is being recognized (badges, shoutouts, etc.) to you?

Measures value placed on recognition and status

When are you most likely to spend more than you planned?

Identifies emotional and situational spend triggers

Have any of the following ever happened to you related to gifting?

Reveals negative outcomes and loss-of-control patterns

SURVEY FINDING

The same three contexts came up across almost every respondent.

And so did the same two harm signals.

When are you most likely to overspend?

During battles

7/9

Late at night

6/9

When a creator needs support

6/9

When lonely

3/9

After drinking

3/9

When stressed or anxious

2/9

What's actually happened to you?

Spent more than intended

8/9

Reloaded after already spending

8/9

Felt regret afterward

5/9

Felt like I couldn't stop

3/9

Hid gifting from someone

3/9

Live Battle Gifter

Derek, 38

$1,000 / week avg.

“It's not really about the money. It's about winning. And then the bill comes.”

About

Age35-44
LocationUS, Southeast
OccupationLogistics manager
Purchase routeTikTok website
Loads coinsMid-session, during battles
Reloads per weekDaily or more
Creators gifted4-6 (battle circuit)
Recognition sensitivity1 / 5, purely competitive

User Needs:

Battle mode as a home screen toggle, he's in battles every night

A separate battle budget so competition spending doesn't eat his overall budget

A high-risk mode he can pre-set before a night out

A translation for how much money he spends, coins don't feel real in the moment

Post-battle reflection so he starts new thinking about his habits

Plaid to catch all transaction reloads that he's lost count of

A friction layer before any mid-session reload, not just a notification

“The last 60 seconds of a battle I'm not thinking. My creator is down by 4,000 and someone's gotta do something. I reload and I send a Lion. Every time.”

Composite quote from R7 and R9 survey responses

Spend Triggers

Active battle near the endAfter drinkingLate at nightTeam losingWeekendsAfter payday

Harm Signals

Spent more than intendedReloaded after hitting limitUsed second accountFelt regret afterHidden from partner

SURVEY FINDING

The respondents who wouldn't name a weekly spend were the ones showing the most harm.

"I don't want to know."

R8 · 45+, weekly spend declined

Felt regret · felt like couldn't stop · hid gifting

"Too much."

R5 · 45+, weekly spend declined

Spent more than intended · hid gifting

2/9

refused to quantify their weekly spend, and were also the most likely to report regret, hidden gifting, or loss of control. That meant the product couldn't demand a budget on day one.

KEY INSIGHT

They don't chase status. They chase connection.

"Stay on budget" doesn't land. "Protect yourself so you can keep supporting" does.

INFORMATION ARCHITECTURE

Mapping the system before designing the screens.

Gift Guard information architecture map

THE SOLUTION

Four systems working together.

Core Protection

  • Battle Mode toggle, front-and-center, not buried in settings

  • Soft warnings at 50%, 80%, and hard lock at 100%

  • Active Time Lock via iOS Screen Time API

Data & Tracking

  • Plaid bank integration, auto-detects TikTok charges

  • Per-creator spend breakdown with weekly callout

  • Baseline builder for users who say "I don't know"

Interventions

  • Emotion-aware copy, not cold budget warnings

  • Post-session reflection prompt, non-judgmental

  • Real-dollar translation on premium gifts above threshold

Motivation

  • Budget adherence streak replaces TikTok's reward loop

  • Creator concentration map flags spend over 50% to one creator

FEASIBILITY

Not every feature could ship. Here's what the data actually allows.

Feasible

Gap

Budget cap

User sets a weekly limit during onboarding, enforced in-app only

Spending notifications

Push alerts when approaching or hitting the budget cap

Cool-down timer

Forced pause before reloading coins after a cap is hit

TikTok Live viewing history

Unable to track a users watch history

Screen Time integration

iOS Screen Time parental controls, user stays in control

Harm pattern detection

Derived from self-reported onboarding answers, reflections, and in-app behavior

Real-time coin tracking

No public API for live gift events, blocked by TikTok ToS

Accountability partner

User shares accomplishments they unlock as they progress

AI powered comparison values

AI generates new copy for comparisons on what a user could have spent their money on

Streak Rewards

Users can "lock" an amount of money and set a goal to unlock the amount back.

GAMIFICATION SYSTEM

Two parallel systems. Rewarding consistency, rewarding growth.

Streaks are volatile, they reset on a missed day or overspend. Badges are permanent, points never decrease. Badges reward cumulative growth across the user's entire journey, while streaks reward daily discipline. A bad week doesn't erase months of progress.

Streaks screen

STREAKS

Volatile. Daily. Binary.

  • Stay under daily budget + check in = streak continues
  • Miss a day or overspend = resets to 0
  • Streak shield awarded on every badge level-up, absorbs one missed day
  • Shields don’t stack, use it or lose it until next level-up
Badges screen

BADGES

Permanent. Point-based. Exponential.

  • Points are earned through protective behaviors, not spending
  • Points never decrease. A broken streak costs nothing from your badge progress
  • 50 levels across 6 tiers. Total points to reach Level 50: 77,000,000
  • The top badge is literally called Gift Guard, the full-circle moment

Why this works.

Variable reward schedules

Exponential badge systems create stronger retention than linear ones because the gap between levels widens over time, the same mechanism behind slot machines and TikTok's own gifting rewards. Gift Guard deliberately uses this mechanic to reinforce protective behavior instead of harmful spending. (Skinner, 1938, variable ratio reinforcement)

Parallel motivation systems

Streaks operate on loss aversion, don't break the chain. Badges operate on identity, I am a Level 23 Steady. They target different psychological levers. B.J. Fogg's Tiny Habits research shows that combining immediate behavioral reinforcement with long-term identity formation produces stronger habit change than either system alone.

How it works

The badge ladder

Badges reward growth over long periods of time, not just daily streaks. The higher the tier, the rarer the achievement.

300 – 700 pts / level

Aware

1 – 5

Aware

Just starting, building the habit

850 – 6K pts / level

Grounded

6 – 15

Grounded

Consistent reflection, first streaks

8K – 58K pts / level

Steady

16 – 25

Steady

Budget adherence, battle mode user

73K – 542K pts / level

Anchored

26 – 35

Anchored

Long streaks, strong protection habits

678K – 5.1M pts / level

Guardian

36 – 45

Guardian

Mastery of the system, high savings

6.3M – 15.4M pts / level

Gift Guard

46 – 50

Gift Guard

Elite. The TikTok Level 50 equivalent

how it works

Points Economy

+20,000

Daily check-in

Every day

+30,000

Under-budget session

Per session

+25,000

Post-session reflection

Per session

+80,000

Battle mode activated

Per use (daily cap)

+50,000

Locked window honored

Per day, when applicable

+40,000

Override checkpoint: stayed

Per instance

+200,000

7-day streak bonus

Weekly

+2,000,000

30-day streak bonus

Monthly

+100,000

Badge level-up bonus

Per level (x50)

COMPARISON ENGINE

Not a warning. A mirror.

As spend accumulates, the app quietly translates it into something real. Not sarcastic, not shaming. Like a friend holding up a mirror at the right moment. The comparison is powered by Claude Haiku, personalized to the user's stated goals, and memory-aware so the same line never repeats until 20 others have been shown.

HOW THE AI WORKS

01

Context in

Spend amount, user's goal category, time of day, session context (battle mode, override attempt), and the last 20 comparisons shown.

02

Rules applied

Never repeat the last 20. Weight toward the user's category. Aggregate small amounts into weekly totals when a single session is under $15.

03

One line out

A single, tonal comparison string. Never sarcastic. Never shame-based. The system prompt encodes tone as a hard constraint, not a suggestion.

WHERE IT LIVES

PRIMARY

Home tab

Ambient line beneath the spend total, always visible, updates every session. Low friction, high frequency.

HIGHEST LEVERAGE

Override Checkpoint

Shown at the exact moment a user is deciding whether to unlock TikTok during a locked window. The comparison fires when the user is most capable of changing their mind.

REFLECTIVE

Weekly + Monthly overlays

In-app notification overlay triggered on day 7 and day 30 app opens. Monthly scope shows a larger, more significant comparison. $500/month hits differently as a vacation than as a weekly total.

POST-SESSION

Reflection prompt

After a session ends, the summary shows total spent with the comparison beneath it. The user is at their most clear-headed, not mid-battle.

ONBOARDING ADDITION

What are you saving toward?

One screen added after Spend Discovery. Multi-select tiles. This single input personalizes every comparison the user ever sees: someone saving for a car sees car comparisons, someone paying off debt sees debt payoff equivalents.

Travel

Flights, hotels, Airbnb, weekend trips

Paying off debt

Credit card minimums, loan payments, interest savings

Building savings

Emergency fund, down payment progress, investment contributions

Everyday expenses

Groceries, gas, bills, subscriptions

Something specific

Free text: user defines their own goal

COMPARISON TIERS

The lookup table maps dollar ranges to real-world items. The AI selects and personalizes within each tier. Comparisons rotate so no user sees the same line twice in 20 sessions.

$1-$10

A Chipotle burrito · A month of Spotify · A latte

$11-$25

A movie ticket · A paperback book · A pizza

$26-$50

A tank of gas · A nice dinner for one · A gym day pass

$51-$100

A month of Netflix + Hulu · A concert ticket · A nice pair of shoes

$101-$200

A car payment · A weekend Airbnb · A new video game + controller

$201-$500

A flight to a nearby city · A month of groceries · A new phone bill

$501-$1,000

A round-trip flight · A month of rent · A semester textbook set

$1,001+

A used car down payment · A weekend vacation for two · A laptop and accessories

ONBOARDING

14 screens.

Welcome screen
Onboarding screen 2
Onboarding screen 3
Onboarding screen 4
Onboarding screen 5
Onboarding screen 6
Onboarding screen 7
Onboarding screen 8
Onboarding screen 9
Onboarding screen 10
Onboarding screen 11
Onboarding screen 12

The onboarding flow sets up a personalized protection profile in 14 screens. It discovers active times, sets a budget, identifies creators, maps emotional triggers, and configures battle behavior before a single gift is sent.

PROTOTYPE V1

Give freely. Spend wisely.

Walk through the full onboarding flow and budget dashboard in the interactive prototype.

Try the Prototype

AI INTEGRATION · LAYER 1 OF 3

Every comparison is generated live by Claude.

The emotion-aware copy that reframes spend isn't static. Claude Haiku 4.5 generates a fresh, contextual comparison on every trigger, accounting for amount, category, time of day, and conversation history so it never repeats.

ModelClaude Haiku 4.5
Max tokens60
Latency< 1s
Placements5 per session
FallbackTier lookup table

Spend data

Amount, category, time of day

Context assembly

History injected to prevent repeat comparisons

Claude Haiku 4.5

60 max tokens · Anthropic

Comparison line

Rendered in < 1s at 5 points in the app

Example API call

Input

{
  "amount": 167,
  "category": "dining",
  "timeOfDay": "evening",
  "history": ["About a tank of gas", "A new paperback"],
  "context": "home"
}

Output

“About what a nice dinner for two costs. Except this one happened in 20 minutes.”

If the API is unavailable, a tier-lookup table of 40+ pre-written comparisons fires instantly. The experience never breaks in demo.

AI PERSONALIZATION · LAYER 2 OF 3

A profile built from your answers. Not a default.

After onboarding, Claude classifies each user into one of four types and generates a personalization object: 13 copy and behavior fields, stored locally and used to shape every surface in the app. It fires once. It never repeats unless the user recalibrates.

ModelClaude Haiku 4.5
FiresOnce post-onboarding
PersistslocalStorage
Fields13 copy + behavior
FallbackRule-based classifier

Four user types

The Protector

Firm

Tier 3 risk · hidden spending · bills delayed

Override headline

"You set this limit for a reason."

Comparison tone

Grounding, real-dollar equivalents

Streak copy

Every day you hold the line is a day you chose yourself.

The Fan

Balanced

Emotional support trigger · one creator >50%

Override headline

"You care about this creator."

Comparison tone

Warm, relational framing

Streak copy

Supporting creators means being here next week too.

The Competitor

Balanced

Battle-heavy · achievement-driven · late night

Override headline

"The battle will end."

Comparison tone

Direct, no filler

Streak copy

Longest streak this month. Don't break it now.

The Aware Spender

Light

Tier 1 · data-curious · wants visibility

Override headline

"Here's where you stand."

Comparison tone

Informational, just the data

Streak copy

Seven days under budget. Your data is looking good.

What adapts beyond copy

Dashboard card order

What you see first depends on your biggest risk signal.

Override checkpoint

Headline and sub-text match your specific trigger.

Reflection prompt

The question asked after a session fits your pattern.

Comparison tone

Warm, direct, grounding, or informational per profile.

Budget warnings

80% and 100% messages written for your motivation style.

Notification copy

Pre-session alert written for how you respond to prompts.

Visual intensity

Amber warning thresholds scale with your risk tier.

Hidden features

Irrelevant UI (badges, social) suppressed per profile.

JOURNAL LEARNING · LAYER 3 OF 3

The app learns from what you write.

Onboarding captures what users say about themselves. Journals reveal what they actually feel. After each entry, Claude analyzes the text for emotional signals and returns a delta -- only the fields that should change. The profile evolves without the user having to do anything differently.

Three layers of intelligence

01
Per trigger

Ephemeral

Comparison values

Generated on every trigger. Reads spend amount, category, time of day, history.

02
Once · recalibratable

Persistent

Onboarding profile

Generated once post-onboarding. Shapes copy, layout, protection defaults, hidden features.

03
Per journal entry

Evolving

Journal learning

Delta updates after each journal entry. Reveals true triggers vs. self-reported onboarding answers.

Signal detection

Regret language

"I shouldn't have... I couldn't stop."

overrideSub

Checkpoint sub-text sharpens -- names the compulsion pattern.

Work stress trigger

"Hard day. Opened TikTok without thinking."

reflectionPrompt

Prompt shifts to "How was your day before the session?"

Late-night loneliness

"Alone again. Couldn't sleep."

reflectionPrompt

Prompt shifts to "What were you looking for when you opened TikTok?"

Emotional connection

"She really needed support tonight."

overrideSub

Sub-text reframes -- "Make sure it stays a choice you're proud of."

Positive growth

"Caught myself and closed the app."

streakMotivation

Streak copy reinforces self-efficacy -- "You noticed and made a different choice."

Example -- journal entry to profile delta

Journal entry

"Started watching because Kayla announced a battle. Ended up staying for two hours. $167. I didn't plan that. I genuinely couldn't stop once the battle started."

Claude detected

Compulsion pattern + battle trigger detected across 3 entries.

Delta returned

{
  "updatedFields": {
    "overrideSub": "You've noticed this happens during battles. That awareness matters.",
    "reflectionPrompt": "Did the battle outcome change how much you sent?"
  },
  "learnedSignal": "Battle sessions are your highest-spend context.",
  "protectionSuggestion": "Your reflections suggest stronger battle friction might help. Want to adjust?"
}

Journal entries are analyzed privately and never stored on a server. The delta is merged into the local profile -- only changed fields are written back. Users opt in after their third entry and can recalibrate at any time.

PROTOTYPE V2

Refined with Figma. Powered by the same AI.

V2 takes the same AI personalization system and wraps it in a UI refined directly from Figma designs.

Try V2 Prototype

User Testing

What 4 testers taught us.

4 participants. Remote sessions. Think-aloud protocol. 9 tasks across the full onboarding and main app flow, with audio recorded throughout.

4

Testers

9

Tasks

3 of 4

Couldn't trigger the override

01

The intervention was invisible

I could not find it readily, but maybe that's by design.

3 of 4 testers couldn't trigger the spending lock. The core value prop went untested.

02

Onboarding sets the right expectations

Everything in the onboarding stage was very clear and easy to understand.

The setup flow landed well across testers. A post-onboarding quick-reference could push it further.

03

Gamification creates tension

Earning points in an app that is meant to control impulse spending seems maybe a small bit unnecessary.

Split opinion on the points system, worth revisiting whether it rewards restraint or just engagement.

Task Completion

TaskT1T2T3T4
Understand the app
Set a budget
Add creators
Complete onboarding
Log a gift
Check spending
Find the rewards
Override the limit
Find reflection tools
Completed
Partial
Not completed

Next Steps

01

Resurface the override entry point. The spending lock needs to be something users encounter naturally, not hunt for.

02

Add a quick-reference or FAQ accessible from settings so users can understand the app's full behavior after onboarding.

03

Run a second test round with the redesigned intervention flow before committing to a production build.

Prototype V3

The Final Prototype.

Refined from user testing findings. This is the version currently being iterated on.

Try V3 Prototype

What Came Next

This project led to something new.

Running user testing for Gift Guard exposed how clunky and unreliable the process can be. I ended up building TestPilot, a niche product that makes remote user testing streamlined and accurate, so the behavior you observe actually reflects how real users think.

See TestPilot