
Discord
Personal Project
WumpusBox Integration
WumpusBox Integration
WumpusBox Integration
WumpusBox Integration
WumpusBox Integration
Discord's 10MB limit frustrates its most valuable users — the 1% who create content that keeps servers active. I designed a solution that solves their pain without costing Discord a dollar in bandwidth.
Discord's 10MB limit frustrates its most valuable users — the 1% who create content that keeps servers active. I designed a solution that solves their pain without costing Discord a dollar in bandwidth.
Discord's 10MB limit frustrates its most valuable users — the 1% who create content that keeps servers active. I designed a solution that solves their pain without costing Discord a dollar in bandwidth.
Discord's 10MB limit frustrates its most valuable users — the 1% who create content that keeps servers active. I designed a solution that solves their pain without costing Discord a dollar in bandwidth.
Discord's 10MB limit frustrates its most valuable users — the 1% who create content that keeps servers active. I designed a solution that solves their pain without costing Discord a dollar in bandwidth.
Role: Product Designer (End-to-End)
Timeline: 8 Weeks
Tools: Figma, Usability Testing
Platform: Desktop App
Role: Product Designer (End-to-End)
Timeline: 8 Weeks
Tools: Figma, Usability Testing
Platform: Desktop App
Role: Product Designer (End-to-End)
Timeline: 8 Weeks
Tools: Figma, Usability Testing
Platform: Desktop App
Role: Product Designer (End-to-End)
Timeline: 8 Weeks
Tools: Figma, Usability Testing
Platform: Desktop App
Role: Product Designer (End-to-End)
Timeline: 8 Weeks
Tools: Figma, Usability Testing
Platform: Desktop App
WumpusBox: Solving the "Boycott" vs. "Bandwidth" Conflict
WumpusBox: Solving the "Boycott" vs. "Bandwidth" Conflict
WumpusBox: Solving the "Boycott" vs. "Bandwidth" Conflict
WumpusBox: Solving the "Boycott" vs. "Bandwidth" Conflict
WumpusBox: Solving the "Boycott" vs. "Bandwidth" Conflict
Discord users have long frustratedly 'boycotted' the 10MB file limit, using clumsy workarounds that kill social interaction. My initial challenge was to solve this frustration.
However, after researching the business constraints, I realized a simple limit increase would be unsustainable due to bandwidth costs. This case study documents my pivot from a failed 'gamified storage' concept to WumpusBox: a native integration that solves the user's need for instant sharing while offloading 100% of the storage cost to the user's own cloud.
Discord users have long frustratedly 'boycotted' the 10MB file limit, using clumsy workarounds that kill social interaction. My initial challenge was to solve this frustration.
However, after researching the business constraints, I realized a simple limit increase would be unsustainable due to bandwidth costs. This case study documents my pivot from a failed 'gamified storage' concept to WumpusBox: a native integration that solves the user's need for instant sharing while offloading 100% of the storage cost to the user's own cloud.
Discord users have long frustratedly 'boycotted' the 10MB file limit, using clumsy workarounds that kill social interaction. My initial challenge was to solve this frustration.
However, after researching the business constraints, I realized a simple limit increase would be unsustainable due to bandwidth costs. This case study documents my pivot from a failed 'gamified storage' concept to WumpusBox: a native integration that solves the user's need for instant sharing while offloading 100% of the storage cost to the user's own cloud.
Discord users have long frustratedly 'boycotted' the 10MB file limit, using clumsy workarounds that kill social interaction. My initial challenge was to solve this frustration.
However, after researching the business constraints, I realized a simple limit increase would be unsustainable due to bandwidth costs. This case study documents my pivot from a failed 'gamified storage' concept to WumpusBox: a native integration that solves the user's need for instant sharing while offloading 100% of the storage cost to the user's own cloud.
Discord users have long frustratedly 'boycotted' the 10MB file limit, using clumsy workarounds that kill social interaction. My initial challenge was to solve this frustration.
However, after researching the business constraints, I realized a simple limit increase would be unsustainable due to bandwidth costs. This case study documents my pivot from a failed 'gamified storage' concept to WumpusBox: a native integration that solves the user's need for instant sharing while offloading 100% of the storage cost to the user's own cloud.
Discord users have long frustratedly 'boycotted' the 10MB file limit, using clumsy workarounds that kill social interaction. My initial challenge was to solve this frustration.
However, after researching the business constraints, I realized a simple limit increase would be unsustainable due to bandwidth costs. This case study documents my pivot from a failed 'gamified storage' concept to WumpusBox: a native integration that solves the user's need for instant sharing while offloading 100% of the storage cost to the user's own cloud.





01 The Problem
01 The Problem
01 The Problem
01 The Problem
The Conflict Discord users want "in-the-moment" gratification. When they try to share a funny clip or a high-quality art piece, the 10MB limit acts as a hard wall. This forces them to leave the app—a friction that kills the social vibe.
The Conflict Discord users want "in-the-moment" gratification. When they try to share a funny clip or a high-quality art piece, the 10MB limit acts as a hard wall. This forces them to leave the app—a friction that kills the social vibe.
The Conflict Discord users want "in-the-moment" gratification. When they try to share a funny clip or a high-quality art piece, the 10MB limit acts as a hard wall. This forces them to leave the app—a friction that kills the social vibe.
The Conflict Discord users want "in-the-moment" gratification. When they try to share a funny clip or a high-quality art piece, the 10MB limit acts as a hard wall. This forces them to leave the app—a friction that kills the social vibe.




Why This Problem Matters
Discord's 10MB limit isn't a bug — it's a cost control. But it's pushing power users (artists, gamers, creators) to boycott Nitro and use workarounds that pull them out of the app. These users are the heart of active communities. Losing their engagement risks server health.

The Opportunity
If Discord can solve this without increasing bandwidth costs, they retain high-value users, protect Nitro revenue, and keep conversations flowing.

The Persona
The Persona
The Persona
The Persona
The Persona
"The High-Fidelity Socializer"
"The High-Fidelity Socializer"
"The High-Fidelity Socializer"
"The High-Fidelity Socializer"
"The High-Fidelity Socializer"





Gamers and Artists using modern hardware (4K clips, large PSDs) are hit hardest by the limit.
Gamers and Artists using modern hardware (4K clips, large PSDs) are hit hardest by the limit.
Gamers and Artists using modern hardware (4K clips, large PSDs) are hit hardest by the limit.
Gamers and Artists using modern hardware (4K clips, large PSDs) are hit hardest by the limit.
Gamers and Artists using modern hardware (4K clips, large PSDs) are hit hardest by the limit.
The Frustration
The Frustration
The Frustration
The Frustration
The Frustration
"I hate the file limit so much... if I try to send [photos] it stops me because the files are too big."
"I hate the file limit so much... if I try to send [photos] it stops me because the files are too big."
"I hate the file limit so much... if I try to send [photos] it stops me because the files are too big."
"I hate the file limit so much... if I try to send [photos] it stops me because the files are too big."
"I hate the file limit so much... if I try to send [photos] it stops me because the files are too big."
The "Boycott" Risk
The "Boycott" Risk
The "Boycott" Risk
The "Boycott" Risk
The "Boycott" Risk
Although a minority (1%), these users create the high-value content that keeps servers active. Their frustration leads to a sentiment of "boycotting" Nitro.
Although a minority (1%), these users create the high-value content that keeps servers active. Their frustration leads to a sentiment of "boycotting" Nitro.
Although a minority (1%), these users create the high-value content that keeps servers active. Their frustration leads to a sentiment of "boycotting" Nitro.
Although a minority (1%), these users create the high-value content that keeps servers active. Their frustration leads to a sentiment of "boycotting" Nitro.
Although a minority (1%), these users create the high-value content that keeps servers active. Their frustration leads to a sentiment of "boycotting" Nitro.
Problem Validation
I surveyed 21 Discord users to understand the impact of the limit on their social interactions.
81%
of users admitted to using "clunky workarounds" (like Google Drive, compression, or switching apps) to bypass the limit, proving that the desire to share outweighs the friction of leaving the platform.
Problem Validation
I surveyed 21 Discord users to understand the impact of the limit on their social interactions.
81%
of users admitted to using "clunky workarounds" (like Google Drive, compression, or switching apps) to bypass the limit, proving that the desire to share outweighs the friction of leaving the platform.
Problem Validation
I surveyed 21 Discord users to understand the impact of the limit on their social interactions.
81%
of users admitted to using "clunky workarounds" (like Google Drive, compression, or switching apps) to bypass the limit, proving that the desire to share outweighs the friction of leaving the platform.
The Villain
The Villain
The Villain
The Villain
The Villain





10MB Error popup
10MB Error popup
10MB Error popup
10MB Error popup
10MB Error popup
The Business Constraint: Bandwidth Costs
The Business Constraint: Bandwidth Costs
The Business Constraint: Bandwidth Costs
The Business Constraint: Bandwidth Costs
The Business Constraint: Bandwidth Costs
I analyzed competitors like Telegram (2GB) and Guilded (500MB). While users expect these limits, matching them would be financially disastrous for Discord due to its significantly higher daily media throughput.
I analyzed competitors like Telegram (2GB) and Guilded (500MB). While users expect these limits, matching them would be financially disastrous for Discord due to its significantly higher daily media throughput.
I analyzed competitors like Telegram (2GB) and Guilded (500MB). While users expect these limits, matching them would be financially disastrous for Discord due to its significantly higher daily media throughput.
I analyzed competitors like Telegram (2GB) and Guilded (500MB). While users expect these limits, matching them would be financially disastrous for Discord due to its significantly higher daily media throughput.
I analyzed competitors like Telegram (2GB) and Guilded (500MB). While users expect these limits, matching them would be financially disastrous for Discord due to its significantly higher daily media throughput.
The Expectation Gap:
Telegram: 2GB ✅
Discord: 10MB ❌
The Expectation Gap:
Telegram: 2GB ✅
Discord: 10MB ❌
The Expectation Gap:
Telegram: 2GB ✅
Discord: 10MB ❌
The Expectation Gap:
Telegram: 2GB ✅
Discord: 10MB ❌
The Expectation Gap:
Telegram: 2GB ✅
Discord: 10MB ❌
The Insight: "This confirmed that a simple limit increase (native storage) was unsustainable, forcing me to look for a solution that cost Discord $0."
The Insight: "This confirmed that a simple limit increase (native storage) was unsustainable, forcing me to look for a solution that cost Discord $0."
The Insight: "This confirmed that a simple limit increase (native storage) was unsustainable, forcing me to look for a solution that cost Discord $0."
The Insight: "This confirmed that a simple limit increase (native storage) was unsustainable, forcing me to look for a solution that cost Discord $0."
The Insight: "This confirmed that a simple limit increase (native storage) was unsustainable, forcing me to look for a solution that cost Discord $0."
02 Initial Exploration
02 Initial Exploration
02 Initial Exploration
02 Initial Exploration
02 Initial Exploration
The Hypothesis: Gamifying Friction
The Hypothesis: Gamifying Friction
The Hypothesis: Gamifying Friction
The Hypothesis: Gamifying Friction
The Hypothesis: Gamifying Friction
My initial hypothesis focused on converting 'Heavy Passive Users'... personified as Wumpus eating files... introducing 'Variable Duration' logic to make friction feel natural.
My initial hypothesis focused on converting 'Heavy Passive Users'... personified as Wumpus eating files... introducing 'Variable Duration' logic to make friction feel natural.
My initial hypothesis focused on converting 'Heavy Passive Users'... personified as Wumpus eating files... introducing 'Variable Duration' logic to make friction feel natural.
My initial hypothesis focused on converting 'Heavy Passive Users'... personified as Wumpus eating files... introducing 'Variable Duration' logic to make friction feel natural.
My initial hypothesis focused on converting 'Heavy Passive Users'... personified as Wumpus eating files... introducing 'Variable Duration' logic to make friction feel natural.





























































Emotional Rejection
Emotional Rejection
Emotional Rejection
Emotional Rejection
Emotional Rejection
Users didn't find Wumpus eating files playful. They found it 'disturbing' and felt 'guilt' for making the mascot sick.
Users didn't find Wumpus eating files playful. They found it 'disturbing' and felt 'guilt' for making the mascot sick.
Users didn't find Wumpus eating files playful. They found it 'disturbing' and felt 'guilt' for making the mascot sick.
Users didn't find Wumpus eating files playful. They found it 'disturbing' and felt 'guilt' for making the mascot sick.
Users didn't find Wumpus eating files playful. They found it 'disturbing' and felt 'guilt' for making the mascot sick.
"It prompted feelings of guilt... I felt like I made a cute creature sick."
"It prompted feelings of guilt... I felt like I made a cute creature sick."
"It prompted feelings of guilt... I felt like I made a cute creature sick."
"It prompted feelings of guilt... I felt like I made a cute creature sick."
"It prompted feelings of guilt... I felt like I made a cute creature sick."





Strategic Failure
Strategic Failure
Strategic Failure
Strategic Failure
Strategic Failure
I realized I had ignored a massive technical constraint: Bandwidth Costs. Allowing 1GB uploads for free users would skyrocket 'cost to send', making the feature financially impossible regardless of the UI.
I realized I had ignored a massive technical constraint: Bandwidth Costs. Allowing 1GB uploads for free users would skyrocket 'cost to send', making the feature financially impossible regardless of the UI.
I realized I had ignored a massive technical constraint: Bandwidth Costs. Allowing 1GB uploads for free users would skyrocket 'cost to send', making the feature financially impossible regardless of the UI.
I realized I had ignored a massive technical constraint: Bandwidth Costs. Allowing 1GB uploads for free users would skyrocket 'cost to send', making the feature financially impossible regardless of the UI.
I realized I had ignored a massive technical constraint: Bandwidth Costs. Allowing 1GB uploads for free users would skyrocket 'cost to send', making the feature financially impossible regardless of the UI.





High-Fidelity iteration using 'Toybox' metaphor to reduce guilt.
High-Fidelity iteration using 'Toybox' metaphor to reduce guilt.
High-Fidelity iteration using 'Toybox' metaphor to reduce guilt.
High-Fidelity iteration using 'Toybox' metaphor to reduce guilt.
High-Fidelity iteration using 'Toybox' metaphor to reduce guilt.
Experiment 2: The Toybox Trap
Experiment 2: The Toybox Trap
Experiment 2: The Toybox Trap
Experiment 2: The Toybox Trap
Experiment 2: The Toybox Trap
I iterated to a Toybox metaphor. While it fixed the emotional guilt, the business logic remained broken.
I iterated to a Toybox metaphor. While it fixed the emotional guilt, the business logic remained broken.
I iterated to a Toybox metaphor. While it fixed the emotional guilt, the business logic remained broken.
I iterated to a Toybox metaphor. While it fixed the emotional guilt, the business logic remained broken.
I iterated to a Toybox metaphor. While it fixed the emotional guilt, the business logic remained broken.
Users Loved It
Users Loved It
Users Loved It
Users Loved It
Users Loved It
100% Positive Sentiment
100% Positive Sentiment
100% Positive Sentiment
100% Positive Sentiment
100% Positive Sentiment
Business Failure
Business Failure
Business Failure
Business Failure
Business Failure
22% Conversion Rate
22% Conversion Rate
22% Conversion Rate
22% Conversion Rate
22% Conversion Rate
Mid-Fidelity prototype demonstrating the 'Hold-to-Delete' friction that users ultimately rejected.
Mid-Fidelity prototype demonstrating the 'Hold-to-Delete' friction that users ultimately rejected.
Mid-Fidelity prototype demonstrating the 'Hold-to-Delete' friction that users ultimately rejected.
Mid-Fidelity prototype demonstrating the 'Hold-to-Delete' friction that users ultimately rejected.
Mid-Fidelity prototype demonstrating the 'Hold-to-Delete' friction that users ultimately rejected.
The Strategic Pivot
The Strategic Pivot
The Strategic Pivot
The Strategic Pivot
The Toybox data revealed the hard truth: I had built a feature users loved, but one that would bankrupt the company via bandwidth costs. I realized I couldn't solve this with native storage. This forced the pivot to the Zero-Cost Integration model.
The Toybox data revealed the hard truth: I had built a feature users loved, but one that would bankrupt the company via bandwidth costs. I realized I couldn't solve this with native storage. This forced the pivot to the Zero-Cost Integration model.
The Toybox data revealed the hard truth: I had built a feature users loved, but one that would bankrupt the company via bandwidth costs. I realized I couldn't solve this with native storage. This forced the pivot to the Zero-Cost Integration model.
The Toybox data revealed the hard truth: I had built a feature users loved, but one that would bankrupt the company via bandwidth costs. I realized I couldn't solve this with native storage. This forced the pivot to the Zero-Cost Integration model.
03 Design Execution
03 Design Execution
03 Design Execution
03 Design Execution
03 Design Execution
Transforming the Error into a Choice
Transforming the Error into a Choice
Transforming the Error into a Choice
Transforming the Error into a Choice
Transforming the Error into a Choice
Instead of a dead end, the popup presents a strategic choice: Pay for convenience (Nitro) or trade time for free access (WumpusBox).
Instead of a dead end, the popup presents a strategic choice: Pay for convenience (Nitro) or trade time for free access (WumpusBox).
Instead of a dead end, the popup presents a strategic choice: Pay for convenience (Nitro) or trade time for free access (WumpusBox).
Instead of a dead end, the popup presents a strategic choice: Pay for convenience (Nitro) or trade time for free access (WumpusBox).
Instead of a dead end, the popup presents a strategic choice: Pay for convenience (Nitro) or trade time for free access (WumpusBox).
Placing 'Setup' next to 'Nitro' respects the user's budget while keeping the upsell visible.
Placing 'Setup' next to 'Nitro' respects the user's budget while keeping the upsell visible.
Placing 'Setup' next to 'Nitro' respects the user's budget while keeping the upsell visible.
Placing 'Setup' next to 'Nitro' respects the user's budget while keeping the upsell visible.
Placing 'Setup' next to 'Nitro' respects the user's budget while keeping the upsell visible.





Trust-Based Onboarding
Trust-Based Onboarding
Trust-Based Onboarding
Trust-Based Onboarding
Utilizing familiar OAuth patterns and a visual diagram to explain the technical concept, reducing anxiety around installing the helper app.
Utilizing familiar OAuth patterns and a visual diagram to explain the technical concept, reducing anxiety around installing the helper app.
Utilizing familiar OAuth patterns and a visual diagram to explain the technical concept, reducing anxiety around installing the helper app.
Utilizing familiar OAuth patterns and a visual diagram to explain the technical concept, reducing anxiety around installing the helper app.
















Native Integration (Jakob's Law)
Native Integration (Jakob's Law)
Leveraging Discord's existing "+" Menu and Sticker Picker layouts ensures users don't have to learn a new interface.
Leveraging Discord's existing "+" Menu and Sticker Picker layouts ensures users don't have to learn a new interface.
The custom picker visually represents the cloud state, proving they are browsing their Drive.
The custom picker visually represents the cloud state, proving they are browsing their Drive.










Optimistic Feedback & The Result
Optimistic Feedback & The Result
Optimistic Feedback & The Result
Optimistic Feedback & The Result
A skeleton loader manages latency expectations while the API fetches the stream. The final result is indistinguishable from a native upload.
A skeleton loader manages latency expectations while the API fetches the stream. The final result is indistinguishable from a native upload.
A skeleton loader manages latency expectations while the API fetches the stream. The final result is indistinguishable from a native upload.
A skeleton loader manages latency expectations while the API fetches the stream. The final result is indistinguishable from a native upload.
Projected Impact
This project wasn't shipped, so I can't share real metrics. However, if implemented, WumpusBox could:
Reduce friction for the 1% of power users hitting the limit
Maintain $0 bandwidth cost for Discord
Keep file sharing inside the app instead of pushing users to Google Drive
04 Key Learnings
04 Key Learnings
04 Key Learnings
04 Key Learnings
Technical Literacy is Critical
Technical Literacy is Critical
Technical Literacy is Critical
Technical Literacy is Critical
Technical Literacy is Critical
I learned that a design can fail if it ignores backend realities. My initial 'Storage' solution failed because I didn't account for Bandwidth Costs. Understanding 'Cost to Send' was the key to unlocking the correct integration model.
I learned that a design can fail if it ignores backend realities. My initial 'Storage' solution failed because I didn't account for Bandwidth Costs. Understanding 'Cost to Send' was the key to unlocking the correct integration model.
I learned that a design can fail if it ignores backend realities. My initial 'Storage' solution failed because I didn't account for Bandwidth Costs. Understanding 'Cost to Send' was the key to unlocking the correct integration model.
I learned that a design can fail if it ignores backend realities. My initial 'Storage' solution failed because I didn't account for Bandwidth Costs. Understanding 'Cost to Send' was the key to unlocking the correct integration model.
I learned that a design can fail if it ignores backend realities. My initial 'Storage' solution failed because I didn't account for Bandwidth Costs. Understanding 'Cost to Send' was the key to unlocking the correct integration model.
Prototyping as a Filter
Prototyping as a Filter
Prototyping as a Filter
Prototyping as a Filter
Prototyping as a Filter
Building the high-fidelity 'Toybox' prototype wasn't a waste—it was a necessary filter. It allowed me to catch critical flaws in the business logic before any engineering code was written, saving the company expensive development cycles.
Building the high-fidelity 'Toybox' prototype wasn't a waste—it was a necessary filter. It allowed me to catch critical flaws in the business logic before any engineering code was written, saving the company expensive development cycles.
Building the high-fidelity 'Toybox' prototype wasn't a waste—it was a necessary filter. It allowed me to catch critical flaws in the business logic before any engineering code was written, saving the company expensive development cycles.
Building the high-fidelity 'Toybox' prototype wasn't a waste—it was a necessary filter. It allowed me to catch critical flaws in the business logic before any engineering code was written, saving the company expensive development cycles.
Building the high-fidelity 'Toybox' prototype wasn't a waste—it was a necessary filter. It allowed me to catch critical flaws in the business logic before any engineering code was written, saving the company expensive development cycles.
Efficiency via Jakob's Law
Efficiency via Jakob's Law
Efficiency via Jakob's Law
By adapting Discord's existing Internal Media Pickers (like the GIF/Sticker menus), I eliminated the need for new onboarding. The interface felt familiar to users from day one.
By adapting Discord's existing Internal Media Pickers (like the GIF/Sticker menus), I eliminated the need for new onboarding. The interface felt familiar to users from day one.
By adapting Discord's existing Internal Media Pickers (like the GIF/Sticker menus), I eliminated the need for new onboarding. The interface felt familiar to users from day one.





WumpusBox transforms a hostile 'boycott' situation into a positive feature discovery. It respects the user's need for instant sharing, protects the business's bottom line (zero bandwidth cost), and integrates seamlessly into the platform they love.
WumpusBox transforms a hostile 'boycott' situation into a positive feature discovery. It respects the user's need for instant sharing, protects the business's bottom line (zero bandwidth cost), and integrates seamlessly into the platform they love.
WumpusBox transforms a hostile 'boycott' situation into a positive feature discovery. It respects the user's need for instant sharing, protects the business's bottom line (zero bandwidth cost), and integrates seamlessly into the platform they love.
WumpusBox transforms a hostile 'boycott' situation into a positive feature discovery. It respects the user's need for instant sharing, protects the business's bottom line (zero bandwidth cost), and integrates seamlessly into the platform they love.
WumpusBox transforms a hostile 'boycott' situation into a positive feature discovery. It respects the user's need for instant sharing, protects the business's bottom line (zero bandwidth cost), and integrates seamlessly into the platform they love.