Home/Works/JOEL

JOEL

Jewelry marketplace
Senior Designer · Product Designer2022 — 2024Baku

One marketplace, five roles — buyers, jewelers, lombards, handmade sellers and admins, each on a surface built for the way they actually work.

JOEL storefront on laptop — The Storm Diamond
JOEL storefront landing
01/ platform
One platform, five roles
A whole jewelry economy under one roof

Buyer, jeweler, lombard, handmade seller, admin — each gets its own tailored surface, all sharing one design language.

Role & contribution

Not just screens

I owned product design end-to-end — and a good deal beyond it. From the first flow to the last pixel, the small team around it, the brand, the conversations with the business, and the testing that proved it worked.

01
Product & UX
Flows, information architecture and interactive prototypes across web, tablet and three native apps.
02
UI & visual design
Pixel-level UI and a jewelry-grade visual language — every screen production-ready.
03
Design system
Built and owned the tokens, components and 32-state card matrix the whole product runs on.
04
Design leadership
Directed a junior designer — briefs, reviews, mentoring and holding the quality bar.
05
Design × engineering
Paired with developers on feasibility and handoff; turned technical constraints into shippable design.
06
MVP trade-offs
Scoped what ships first under real deadlines — without breaking the long-term vision.
07
Branding
Brand identity and its application — logo, colour and type — applied consistently across every surface.
08
Media & promo
Promotional and marketing creative: social, banners and launch materials.
09
Sales & service desks
Designed the back office — cash desk, CRM and request flows for sales and support staff.
10
Business partnership
Worked hand-in-hand with the business team on requirements, priorities and metrics.
11
QA & field testing
Tested services and apps end-to-end — including on-site with real sellers — feeding findings back into design.
12
The long game
Designed for scale — a multi-role platform meant to grow over years, not a one-off.

A custom set of 30+ marks — started from Feather Icons, then reworked into a duotone, custom-weight family and animated into looping pictograms for empty states, onboarding and brand moments.

02/ system
Design system
One system holding it together

Color, type, components and 32 card states — built once, reused across web, tablet and the mobile apps so every role looks like the same product.

Palette

Gold
#DAA627
Bright
#FBC84D
Ink
#15110A
Cream
#FBEFD2
Paper
#FFFFFF

Typography

Aa — Didot & Gilroy

Didot sets the jewelry-grade headlines; Gilroy carries every interface label and table. Neither is a web font, so this specimen is set in the case page's own type.

DisplayHeadingBodyCaption

Buttons

Add to cartReserveView certificate →

Inputs

Search by stone, carat…Metal · Gold 585Price, ₼

Status badges

NEWSALE −10%RESERVEDEFAULT · no ribbon

Four statuses — three ribbons and an empty one — drive the entire 32-variant shop-card matrix. How that matrix is built →

Shop card · live variants

NEW
A
Aurora Atelier
Solitaire ring · 1.20 ct
₼4,300★ 4.9312 views
SALE
C
Caspian Gold
Pavé wedding band
₼2,150★ 4.61,204 views
RESERVE
M
Meridian Jewels
Sapphire pendant
₼3,780★ 4.8540 views
N
Nizami Lombard
Buy-back · 18K, 6.4 g
₼1,090★ 4.588 views
03/ anatomy
How the shop card is built
One card, four verticals, 32 states

Shops, lombards, buyers and handmade sellers are listed on the same row. One component carries all four — and the library records exactly what that cost.

The matrix

Four types × four statuses × two breakpoints

Not a list of 32 screenshots — the axes themselves. Every cell is a real variant in the library and the number is its measured height in Figma, which is where the matrix starts telling on itself.

Desktop · 1224 px wide

Shop
Lombard
Buying
Handmade
Default
240
240
240
240
Sale
240
240
240
240no ribbon
Reserve
240
240
240
240stray
New
240
240
240
240

iPad · 936 px wide

Shop
Lombard
Buying
Handmade
Default
288
288
296
240
Sale
288
288
288
240
Reserve
288
288
288
240
New
288
288
288
240
New Sale — the ribbon reads “скидка 10%” Reserve Default — no ribbon Red outline — variant found broken during the audit
The Shop card component set in Figma: 32 variants laid out as four vertical types across the columns and four statuses down the rows, twice — once at desktop width and once at iPad width.
The set as it stands in the file — desktop block on top, iPad block below, rows running Default · Sale · Reserve · New. Content is the product’s own: an Azerbaijani jewellery marketplace. Look at the Handmade column: the red ribbon appears to sit on the Sale row, but it belongs to the Reserve variant below it and is floating outside that card — which is exactly why the board cannot be used to audit itself. Swipe sideways on a phone to read it.
Variants vs properties

Why it is 32 and not 8

The same file holds two cards built on opposite principles. Putting them side by side is the whole argument.

Shop card · every axis is a variant

Variant axes
Type ×4 · Status ×4 · Size ×2
Combinations drawn
32 of 32
Component properties
none
Cost of a fifth status
8 new variants, by hand

Product card · the other approach, same library

Variant axes
state ×6 · hover ×2
Combinations drawn
6 of 12 — hover exists only where hover means something
Component properties
5 booleans — promo, price, sales, carousel 3, carousel 4
Cost of a fifth toggle
one boolean

The status ribbon was already its own componentAksiya, four states including an empty one. The shop card never swaps it: a non-default variant carries all three ribbons stacked on top of each other with two switched off. Across the set that is 72 ribbon instances, 48 of them permanently invisible. Bound as an instance-swap property instead, Status leaves the axes altogether and the set becomes 4 types × 2 sizes — 8 variants instead of 32.

One structure, two data contracts

Type switches the data, not the layout

The skeleton never changes: a 176 px square, the name, a contact rail, a stats strip. Type decides which rails are filled.

TypeContact railMarketplace statsLayers
Shopaddress · hours · phone · mailviews · likes · rating · items110
Handmadephone · mailviews · likes · rating · items68
Lombardsite · address · hours · two phones · mail · WhatsApp · Telegram96
Buyingsite · address · hours · two phones · mail · WhatsApp · Telegram96

A shop and a handmade seller trade on the platform, so they carry marketplace numbers. A lombard and a buyer are reached off the platform, so they carry messengers instead and no numbers at all. One skeleton, two data contracts — which is why Type earns its place as a variant and the other two axes do not. It was not always one card: the previous file carries three separate components for the same job — Shop card Vertical, Lombard card Vertical, Shopcard Lombard M — each drawn and maintained on its own. Folding them into a single Type axis is the move that turned a set of look-alike cards into one system component. In the file the card is placed 15 times across five surfaces: the buyer’s four directory pages — Shop, Lombard, Buying, Handmade — and the jeweller’s Services desk.

The hardest constraint

Everything sits on one line, and the line has to survive 1224 → 936

The card is a single horizontal row. On iPad it loses 288 px of width with nothing allowed to drop out of it — for a lombard listing those contact routes are the entire product.

The contact rail is an auto-layout row, so at 936 px it wraps onto a second line and the card grows from 240 to 288 px instead of truncating. Nothing is hidden and all seven routes stay reachable. Handmade stays at 240 because it only ever carries two. That part works — the cost was paying for it with a third variant axis.

What that cost, found by auditing the set rather than looking at it:

  • Buying / Default / iPad is 296 px — 8 px taller than its own three siblings, with identical content.
  • Handmade / Sale shows no ribbon at all, though it is the Sale variant.
  • Handmade / Reserve carries a second, stray ribbon parked 285 px above the card, outside its own bounds.

Two of 32 are wrong, and the matrix view cannot tell you — the stray sits in the gutter between rows, where it reads as part of the layout.

The Handmade Reserve variant: the card correctly shows a teal RESERVE ribbon, while a second red discount ribbon floats far above it, outside the card’s own frame.
Handmade / Reserve / Desktop, exported straight from the component. The card is right; the red “скидка 10%” ribbon above it belongs to the Sale variant and is sitting 285 px outside the frame.
What I would change now

Three moves, 32 down to 4

  • Status → instance swap of the ribbon component that already exists. 32 → 8.
  • Size → one auto-layout card with a min width, no breakpoint axis. 8 → 4.
  • Type stays the only variant, because it is the only axis that changes the data contract rather than the styling.
JOEL — металл, камень, сувенир, подарок, дизайн, пол, золото
JOEL mobile catalog JOEL mobile product page
04/ storefront
Every piece, documented
Every stone, photographed, certified, priced

A public storefront spanning 2,000+ ateliers — real images, certificates and live pricing, so browsing rare jewelry feels like a showroom, not a classifieds page.

Who it's for

Two sides, two minds

The marketplace only works if both ends win. The whole design is anchored to these two people and what keeps them up at night.

L
Leyla A.
29 · gift & self-buyer, Baku

Goals

  • Find certified, authentic pieces
  • Compare price & quality fairly
  • Reserve before visiting a shop

Pains

  • Fear of fakes & no certificate
  • Opaque, “ask in DM” pricing
  • Driving store to store

Wants

  • Real photos & 360° views
  • Transparent, final prices
  • Card-installment options

Context

  • Shops on mobile, evenings
  • Buys for events & herself
  • Trusts reviews & badges
R
Rashad M.
41 · jewelry shop & lombard owner

Goals

  • List stock online quickly
  • Reach buyers beyond the street
  • Handle buy-back & credit cleanly

Pains

  • Paper ledgers & manual entry
  • No single view of the till
  • Slow to publish a new item

Wants

  • One cash desk for everything
  • Fast add-product flow
  • Reports & control from the phone

Context

  • Behind the counter all day
  • Staff with mixed tech skill
  • Cash, card & installments
JOEL analytics — visitors, sources, demographics and ad-view metrics
JOEL admin dashboard — users, clients, revenue KPIs and reports

Dashboards

  • Tools for business development
  • Tools for analysis
05/ product
Sets & discount logic
Sets that price themselves

Bundle rings, chains and stones into a set — with partial-set and discount pricing handled by page, not seller.

JOEL product info
JOEL in-app call
JOEL support chat
JOEL catalog filter
JOEL catalog
JOEL product card
Customer journey

The buyer's path, end to end

Where the emotion dips is where the design earns its keep — every low point maps to a concrete opportunity that shipped.

Discover
Browse
Compare
Reserve
Purchase
After-sale
Doing
Sees an ad or a friend's referral
Filters catalog by stone & price
Opens a piece, checks the specs
Reserves it to view in store
Pays — full or by card plan
Tracks order, comes back later
Thinking
“Is this shop even legit?”
“So many options…”
“Is this price fair?”
“Can I see it first?”
“Which installment plan?”
“What if I want to resell?”
Pain
Trust in unknown sellers
Hard to compare across shops
Opaque, hidden pricing
No try-before-buy
Limited payment options
No after-care or resale path
Opportunity
Verified-seller badges
Smart filters & sets
Certificates + live price
Reserve & in-store viewing
6 bank installment plans
Buy-back & loyalty
Architecture

The app, mapped

Five roles branch from one core, each carrying the handful of screens that role lives in — all sitting on one shared design system.

JOEL BuyerJewelerLombardHandmadeAdmin StorefrontCatalog & searchProduct & setsFavorites & cart Cash deskClient baseAdd / edit productStock & reports Buy-back requestsCredit requestsPawn listPayouts Maker shopCreate a setPhoto-session req.Tariff & plan Role & accessSubscriptionsCatalog moderationReports SHARED DESIGN SYSTEMIcons · cards · tables · inputs · 6 role navbars · headers · footer
06/ seller
The cash desk, built in
A full POS inside the dashboard

Sales, buy-back, credit and stock — one operational surface a jeweler runs the whole counter from.

JOEL product card
JOEL layaway
JOEL sellers
JOEL catalog filter
JOEL favorites
JOEL edit seller
JOEL weekly scheduler — tasks
JOEL photo-session scheduler

Operational control

Tasks, photo-sessions and the production pipeline — scheduled and assignable from one board.

JOEL buy-back desk
JOEL product task / edit
JOEL buy-back desk
JOEL layaway — full
JOEL warehouse stock
JOEL operations

A toolkit for every side

  • Jeweler
  • Lombard
  • Buyer
  • Content creator
  • Manager
  • …and more
07/ mobile
The whole shop, in a pocket
Run the business from the phone

Clients, stock, reports and buy-back, credit & photo-session requests — the jeweler's entire operation, mobile-first.