← All work
Proactive ProjectUX DesignMobile · 2024

Optimizing the
Yaga Listing
& Drop Flow

Streamlining the seller upload experience to reduce drop-offs while maintaining database integrity.

Scroll to explore
·Proactive Project
01Problem Framing

A high-friction form
on a small mobile screen

Concept case study — not affiliated with Yaga. Based on observing the public listing flow and how I would approach a redesign.

In a secondhand marketplace, the listing form is the primary revenue touchpoint. Sellers who abandon mid-form mean lost inventory and lower GMV. Three friction points drove the most drop-offs.

Problem 01 — Core UX Flaw
Wrong size options for category
Selecting "Shoes" but seeing clothing sizes (XS / S / M / L) forces sellers to guess — or abandon.
Problem 02 — Silent Failure
Uncompressed image upload failures
A 15MB photo over 3G fails silently — no feedback, no retry path, no indication the listing is incomplete.
Problem 03 — Downstream Friction
Shipping misclassification
Flat shipping options without item-size context leads to wrong tier selection and friction at drop-off.
Before state
CATEGORY
Tops
Shoes
Dresses
Bags
SIZE
XS
S
M
L
XL
Clothing sizes shown for Shoes
PHOTOS

Shoes selected — clothing sizes displayed

02Design Solution

Form fields that respond
to what came before

The key insight: the size picker isn't a generic field — it's a contextual field that only makes sense relative to the selected category. Conditional logic at the form layer eliminates invalid inputs before they ever reach the API.

Try it — select a category
CATEGORY
Clothing
SIZE
XS
S
M
L
XL
XXL
Clothing size schema — XS through XXL
PHOTOS
The conditional logic
if category == "shoes":
  size_schema = uk_shoe_sizes
elif category == "clothing":
  size_schema = clothing_sizes
else: # accessories
  size_schema = None # skip step
03User Flow

Decision tree for
the full listing flow

Every branch mapped — including the image compression edge case — to create an error-proof, database-aware mobile experience.

STARTSelect CategoryCategorytype?ClothingShoesAccessoriesClothing SizesXS · S · M · L · XL · XXLShoe SizesUK 3 · 4 · 5 · 6 · 7 · 8 · 9+No SizeStep skippedAdd PhotosPhoto>5MB?YESNOCompress → UploadDirect UploadListed ✓
04Technical Artifact

From user input
to database schema

The back-end constraint that makes conditional logic essential: size_id is a foreign key constrained by category_id. A shoe size value has no valid row in the clothing size table.

USER INPUTcategory_idenumsize_valuestringimage_files[ ]File[]pricenumbershipping_tierenumVALIDATIONcategory → size_schemaValidates size_value againstcorrect schema for categoryimage → compress if neededFile size check; compress to<800KB before CDN uploadshipping → auto-suggest tierCategory infers defaultshipping tier (small/med/large)DATABASElistings tableid, seller_id, titlecategory_id → FK categoriessize_id → FK size_optionsimage_urls: ARRAYshipping_tier: ENUM
05Skills Demonstrated

The Dev/PM edge
in this work

Conditional Form Logic
Designed the UI rule that makes category selection dynamically reconfigure downstream fields — preventing invalid submissions before they reach the API.
Edge Case Design
Mapped the image upload failure state: slow connections trigger a progress indicator and retry flow — not a silent failure. A common mobile-first oversight.
Backend Awareness
Recognised that category_id constrains valid size_id values — and designed the UI to enforce that visually, before it's an API error.
Proactive Project