Lead Product Designer. I set the design direction, the culture, and much of what got built at a fast-moving startup, iterating fast and verifying hypotheses before polishing.
Client
EARN'M, Rafli (raffle and sweepstakes platform)
Years
2025 to 2026
Role
Lead Product Designer, contract, remote
Tools
Figma, Storybook, Claude Code, Cursor, Figma Make
Targets are goals, not measured results.
Context
A team with no design direction, and me to set it
Rafli runs online sweepstakes inside the EARN'M rewards ecosystem, from cash pools to graded collector cards. Every draw uses Chainlink VRF and an on-chain commitment, so anyone can verify the winner. A free entry route exists by law; paid users buy monthly credit packs.
Design had no owner: one freelancer on demand, two business developers and three engineers, no shared visual language. My job: set the direction, spread a design culture, and build much of the product myself.
Several consumer apps under EARN'M each had their own login, wallet and navigation, and were heading for a merger. The parent company, Mode.Inc, spoke to partners, hosts and brands through its website. Design touched product, merger and company brand.
Challenge
Three product problems, five leadership ones
In-product feedback and community channels pointed to three problems:
Users dropped off before their first entry.
Reward value was unclear at the moment of decision.
Few people came back after a first win.
Constraint: the business planned to lead pricing with the $25 and $100 packs.
Leadership challenges:
No design owner, shared visual language or review process
Several apps with separate logins, wallets and navigation, heading for a merger
A company website with no shared brand system
Non-designers building with AI, with no rules for quality
No definition of done, so quality depended on who built the screen
Design leadership
Head of design without the title
Five areas carried the leadership work.
1. First 90 days as design lead
Days 1 to 30, listen: 1:1s with business, marketing and engineering. An audit of files, tools, delivery flow and every product surface.
Days 31 to 60, align: design principles written with the team, a decision owner list (who decides, who reviews), a vision prototype to anchor the roadmap.
Days 61 to 90, scale: the shared system, review rituals, delivery standards.
Throughout: a written decision log and a weekly async design update for leadership.
Leadership started with listening. The system came third, after the team agreed on principles.
2. Merging several apps into one
The EARN'M and Rafli merge sat on the parking list with an owner and a review date. I scoped the approach:
Product inventory: every feature on one board, sorted into keep, merge or kill with usage data
Top-task analysis: users vote on the tasks they come for, so navigation follows real demand
Card sorting and tree testing to validate one information architecture before any screen
Service blueprint: front stage, back stage, support and payments across apps in one view
Identity and balance migration: one account and wallet, rewards and credits carried over with a clear receipt
Principle: one account, one wallet, one entry flow
Targets: zero lost balances, migration completion above 90% before sunset, support tickets per migrated user below the pre-merge baseline.
Approach
What I built, and how
1. Decide what to build next
I ran a remote workshop, "What We Build Next", with business, marketing and engineering. We framed the goal, reviewed the signal, then dot-voted. Three dots each, silent vote first, discussion after.
Rafli · What We Build Next
Priority workshop · Remote · Facilitated by me
AgendaFrame the goal, review the signal, dot-vote, decide the next cycle
VotingThree dots each, silent vote first, then discuss
In the roomBusiness, marketing, engineering
Participant pains, ranked by votes
Low repeat engagement after the first win●●●●●●●●● 9
Onboarding drops off before the first entry●●●●●●● 7
Reward value isn't clear at the point of decision●●●●● 5
Notifications don't bring people back●●●● 4
Community signal never reaches the roadmap●●● 3
What we agreed to build next
Rework first-run onboarding into one clear path to a first entry
Surface reward value on the decision screen, not after
In-product feedback prompts feeding one shared board
Merge EARN'M and Rafli into a single entry flow
Decision
Fix first-run onboarding and reward clarity first, since they blocked everything downstream. Competitor synthesis and the merge were parked with owners and a review date, so nothing stayed open-ended.
A recreation of a "What We Build Next" workshop I ran: pains ranked by dot vote, turned into a small, owned set of decisions for the next cycle.
Repeat engagement won the vote, but I argued to fix onboarding and reward clarity first: nobody repeats without a first entry. The room agreed. Competitor synthesis and the EARN'M and Rafli merge went to a parking list, each with an owner and a review date.
Signal behind the vote:
Moderated usability sessions: 5 to 8 users per round on the first-entry flow, tracking task success and time
Unmoderated tests: first-click and 5-second tests on pricing and the draw page, 30 to 50 users each
Surveys: in-app intercepts after a first entry and after a loss, plus a quarterly trust survey
Business analysis: funnel and cost per acquisition by channel, revenue per pack, prize cost against entry revenue
Blockchain research: on-chain entry and payout data, wallet behavior, how competitors show provable fairness
Partner input: interviews with hosts and brands on what they need to launch and trust the audience
Synthesis: a discovery table and an opportunity tree tied to one outcome, more first entries. Every opportunity carried a test, so hypotheses were verified in short, fast cycles.
Every opportunity carries its evidence, a solution and a test. Demo content.
The tree shows why the team built three things and skipped the rest. Demo content.
2. Pricing argued in the room
I sat in the meetings on how to present, onboard and acquire users, and brought working prototypes instead of opinions, so each hypothesis could be tested fast. The business wanted to lead with $25 and $100. I argued to keep both and add an easier way in, because a high entry price kills the first purchase before the product proves itself. I also pushed for pricing per acquisition channel.
Both shipped: a $10 ghost-button entry under the main packs, and channel-based pricing.
Option C kept stakeholder alignment and removed the first-purchase barrier.
How I would build the pricing with full evidence:
Willingness to pay: ask users at what entry price the draw feels too cheap to trust, a bargain, getting expensive and too expensive to try. Then test specific prices one at a time.
Package design: show small sets of perks and ask which users value most and least, to see what drives the choice
A good, better, best ladder with one value metric users understand: price per entry
Unit economics per channel: cost per acquisition, first-purchase rate, 90-day revenue per user, prize cost against entry revenue
Competitor benchmark of entry prices, free entry routes and subscription perks
Live tests: price A/B by channel with a holdout, read on first purchase and 30-day revenue, guardrails on refunds and chargebacks
Ethics: honest anchors, no fake countdowns, free entry with equal weight
The entry price comes from users' price thresholds, not from a round number.
Each step adds one clear reason to move up, measured in price per entry.The Starter ($25) and Pro ($100) pricing page, the packs and per-entry discounts behind the pricing conversation.Pro unlocked, the top-tier confirmation with the full perk set and peak odds.
3. A closed design-to-code loop
One freelancer could not keep pace, so I went hands-on: design, rapid prototypes, frontend and releases, shipped to GitHub's staging branch for engineer review. I worked across three roles: designer, frontend developer, project manager.
Ideas started in Claude, with iteration and research, then got polished by hand in Figma, then moved into code to test in real material. Some started in code and came back to Figma for direction. Each step was a fast iteration to verify a hypothesis before investing in polish.
Mini-games
Situation: few people came back after a first win, the top pain in the workshop vote
Goal: give returning users a reason to open the app between draws
Constraints: no near-miss effects on a loss, one free play a day with credits after that, every state built from the shared system
Process: three mechanics, scratch card, coin flip and mystery cards, each designed with idle, playing, win and loss states, then built as a playable prototype, iterated fast to verify the hypothesis and test interaction feel and animation
Result: a playable prototype taken from development to production
Rafli mini-games Live prototype · playableOpen full ↗
The loss state points to the next draw, without near-miss effects.
Entry confirmation
Situation: reward value was unclear at the moment of decision, and first-purchase engagement needed a stronger close
Goal: make the reward tier clear right after entering, and give first-time buyers a reason to come back
Constraints: payment states had to stay clear and honest, three reward tiers had to read as a hierarchy at a glance, animation could not slow the flow
Process: mapped the flow from payment through processing to three tiers, then built each as a state with animation, a confirmation screen and notifications, and tuned the timing through fast iterations in the prototype
Result: a playable flow, not yet usability-tested (see Reflections)
Entry confirmation Live prototype · playableOpen full ↗
Three tiers create a clear hierarchy of reward value at a glance.
4. One system, four homes
I moved scattered files into a replicable system, reused instead of rebuilt. The system kept moving to a better format as the team grew:
Figma library: styles and components, nothing redrawn
Storybook: decisions encoded as real, testable components
Markdown spec: rules coding agents and teammates build from
Mode.Inc brand system: the parent company extended the practice company-wide
Business, marketing and engineering prototyped on the same system with the spec. I reviewed, we fixed issues together, then shipped.
Mode.Inc Design System Live · company-wide brand foundationOpen full ↗
The company-wide system the work grew into: the same practice scaled from one product to the global brand.
A design system isn't a component library. It's a set of decisions, written down clearly enough that a teammate or an AI agent can build from them without asking me.
5. AI workflow
Step 1, Claude: iterate on ideas and research the problem before opening Figma
Step 2, Figma: polish by hand, visual direction, hierarchy and copy
Step 3, Claude Code: turn the polished design into working front-end, testing interaction feel, animation and states
Output: functioning prototypes for fast iteration and hypothesis checks, then taken to production
Agent context: the Markdown spec told agents which components and tokens to use