VF ← All work
UX AUDIT · E-COMMERCE · 2025 · SPECIALTY COFFEE

E-commerce
UX Audit

One of Ukraine’s leading specialty roasters — roastery, café and barista school in Dnipro, a business that has kept roasting and shipping through Russia’s full-scale war. The owner asked for an audit of the online shop: find what to improve, so that buying the coffee feels as good as the coffee itself.

CLIENT
Specialty roaster, Dnipro
ROLE
Experience Designer
FORMAT
Audit report + plan · UA
TOOLS
Lighthouse, GA4 / GTM, Figma
22.9 s
until the product image appears on mobile · norm ≤ 2.5 s
0
address or parcel-branch fields in the order form
3 / 6
buyer scenarios with no path on the site at all
2 / 10
repeat-purchase score — the most expensive line of the report
FILTER FINDINGS
01 / CONTEXT

A site that shows coffee — and barely helps to choose it.

THE BRAND

One of Ukraine’s leading specialty roasters. A roastery, a café and a barista school in Dnipro whose graduates have opened cafés of their own; wholesale to coffee shops across the country; beans, drip bags and merch online. Through Russia’s full-scale war — in a city under regular missile attacks — the business has kept roasting, teaching and shipping. That resilience is the brand’s strongest story; the site is where it is least visible.

THE BRIEF

The owner came with one request: audit the site and find what to improve — where buyers get lost, what stops them from ordering — so that the quality of interaction with the product matches the quality of the coffee. Traffic comes from Instagram; the site is custom-built on React.

WHAT’S NOT HERE

No analytics data and no tests with real buyers were available. Impact estimates are reasoned hypotheses — the report names no expected conversion figure. The first step of the engagement is to wire up measurement so changes can be measured, not felt.

HOW FINDINGS ARE TAGGED
CRITICALaffects orders today
IMPORTANTaffects confidence in the choice
MINORthe feel of quality, the details
GOODworks — keep it
WHAT WAS CHECKED
01Heuristic evaluation of every desktop page: home, catalogue, product, cart, checkout, school, accessories, contacts
02Six buyer scenarios and how complete each path is
03Purchase funnel: catalogue → card → cart → checkout → payment
04End-to-end mobile walkthrough of the same path on a phone
05Order-form usability: fields, labels, states, validation, microcopy
06Performance: Lighthouse in mobile mode, LCP and CLS
07Accessibility heuristics: contrast, field labels, selection states, tap targets
08Measurability: GTM and GA4, e-commerce events, Meta pixel
09Technical SEO: structured data, URLs, risks of restructuring
10Information architecture and navigation
11Data consistency across sections: countries, prices, terms, company details
12Benchmark against standard specialty-coffee retail patterns

The client is not named in the copy. Screenshots are from the site as it was during the audit (August 2025); every number is from the report.

02 / OVERALL ASSESSMENT

The problem isn’t the visual design.

The site is not template-built: strong identity, quality product photography, clean typography. It looks more expensive than most Ukrainian coffee shops.

The problem is that the site shows the product while barely helping to choose it. Tasting notes exist on the product page — but not in the catalogue, where the choice actually happens.

The second half of the path is weaker than the first: the order form has no address or parcel-branch field at all, and the delivery cost is shown nowhere before the end.

The stack itself is modern and fit to build on — but on mobile the product page’s main content appears after 22.9 seconds, losing buyers before they ever see the coffee.

So a full redesign isn’t needed. The choosing and buying scenarios need to be built onto an already strong foundation.

STATE BY AREAtap a bar → jump to the finding

Not a benchmark — the report’s findings on one scale: 9–10 nothing to fix, 6–8 the buyer lacks what they need to decide, 4–5 loses some buyers, 3 and below breaks orders or data.

03 / WHAT ALREADY WORKS

The foundation to keep.

This is what holds the brand’s positioning — none of it should be touched during the changes.

Strong identity and product photography 4 photos per product Tasting notes on the product page Grind options for every brew method 250 g / 1 kg weight options Detailed origin and fermentation story Specs: roast, process, variety Four delivery methods, including marketplace delivery Card payment with Apple / Google Pay Promo codes and “often bought together” Wholesale price list from 3 kg Map with a route to the roastery School: 5 courses, duration, trainer, application form “You don’t have to call me” option at checkout
04 / SIX BUYER SCENARIOS

Four menu items. Six real reasons to come.

The menu has Coffee, Accessories, Barista School and Contacts. Every second real scenario has no path of its own.

CRITICAL
“I buy coffee for home but don’t know much about it”
WHERE IT BREAKS

Under each coffee in the catalogue: only “100% arabica, Honduras”. Tasting notes exist — but only inside the product. Comparing six lots is impossible, so the choice goes by price.

FIX

A three-question picker: how you brew, what taste, whether you want acidity. Notes and acidity straight on the card.

CRITICAL
“I know what I want: Ethiopia, natural, for filter”
WHERE IT BREAKS

No filters, no sorting, no search in the top bar. Process and roast level sit at the bottom of the product page — to compare, you open every coffee.

FIX

Filters: brew method, country, process, notes, acidity, roast, decaf. Search in the top bar. Roast date on the card.

IMPORTANT
“I’m looking for a gift”
WHERE IT BREAKS

The scenario doesn’t exist: no sets, no gift wrap, no voucher. “Mix your flavours” is the closest thing — but it’s framed as a bulk discount.

FIX

A set of three lots or drip bags, gift wrap as a cart option, a signed card, a voucher for an amount.

CRITICAL
“I run a café and need wholesale”
WHERE IT BREAKS

A wholesale price sits in every card, yet there is no business section: no terms, no samples, no request form, no café cases. Meanwhile the retail buyer keeps seeing “Wholesale: 308 ₴”.

FIX

A “For cafés” page: volume discounts, free samples, equipment and training support, a request form with a “monthly volume” field.

IMPORTANT
“I want to join a barista course”
WHERE IT BREAKS

The page is strong: five courses with duration (8–30 h) and group size, a trainer, stats, a call to action and a labelled form. Missing the two things that decide: the price of any course and the dates of the next groups.

FIX

Price next to duration, a calendar of groups with seats left, what’s included, booking with a deposit.

CRITICAL
“I bought a month ago and want more”
WHERE IT BREAKS

No account, no order history, no subscription. The cheapest kind of sale walks the whole path again — including typing in all the details.

FIX

A “running low?” email on day 21, one-tap reorder, a subscription with a skip-a-month option.

Three of six scenarios have no path at all: gift, wholesale, repeat purchase.

Each has its own upside: wholesale grows the size of one order, gift sets lift the average basket, a repeat purchase needs no re-acquisition. Today the site serves only the buyer who already knows which coffee they want — and doesn’t let even them compare.

05 / BUYER JOURNEY · INTERACTIVE

Where the buyer loses heart.

The retail buyer’s path from an Instagram post to payment. The curve is reconstructed from the report’s findings, not from interviews — every drop matches a concrete obstacle. Tap a stage.

CALM
READY TO LEAVE
STAGE 1 OF 7 · MOOD
Curious

Sees a post, taps the link; the site opens in the in-app browser.

THE OBSTACLE

The brand looks premium in the feed. The wait starts here: on mobile the page’s main image arrives after 13.5 s on the catalogue and 22.9 s on the product page — the norm is 2.5.

STAGE 2 OF 7 · MOOD
Likes the brand — but where next?

Scrolls the home page: hero photo, brand name, a carousel.

THE OBSTACLE

No primary action on the first screen. The catalogue, drip bags, wholesale pitch, merch, subscription, map and contacts all sit on one page — a coffee buyer scrolls past wholesale and merch, a café owner scrolls past retail cards.

STAGE 3 OF 7 · MOOD
Choosing blind

Tries to compare six coffees.

THE OBSTACLE · DROP 1

Cards show a name, a photo, a price and the same line “100% arabica” — no tasting notes, acidity or roast; no filter by brew method, no search. Tasting notes exist, but only after the choice, on the product page. The choice falls back to price.

STAGE 4 OF 7 · MOOD
Waiting, then a wall of text

Reads about the lot, picks grind and weight.

THE OBSTACLE · DROP 2

22.9 s to the main image; the layout shifts while loading (CLS 0.72) — people aim at a button and miss. Two prices at the same size, an unlabelled grind select, a small buy button glued to the quantity field, a 15-line paragraph.

STAGE 5 OF 7 · MOOD
Counting a sum that isn’t final

Checks the total before committing.

THE OBSTACLE

“Total” and “To pay” are identical lines — the delivery cost appears nowhere, although the product page promises 100 ₴ under 2 kg. Two black buttons compete; “often bought together” shows no prices and no buttons.

STAGE 6 OF 7 · MOOD
Nowhere to type the address

Enters name, phone, email; picks delivery and payment.

THE OBSTACLE · DEEPEST DROP

The parcel network is selected, yet there is no city or branch field. Pickup in Dnipro is preselected. Selection markers read backwards. “Don’t call me” sits under the button — where nobody sees it before pressing.

STAGE 7 OF 7 · MOOD
Waiting for a call

Waits for a call or an email.

THE OBSTACLE

No order number, no dispatch date, no tracking number — the order is completed by a manager’s phone call. And nothing brings the person back in three weeks, when the bag runs out.

06 / CATALOGUE CARD · INTERACTIVE

The choice happens on the card, not on the product page.

Catalogue card as it was on the site: price above the name, a wholesale line, the generic caption 100% arabica, Honduras
WHAT THE MARKS POINT TO
1“565 ₴” — the retail price, set above the name
2“Wholesale order: 452 ₴” — a line the retail buyer doesn’t need
3“100% arabica, Honduras” — the same line on every card; the button reads “Add to cart”
PRODUCT PHOTOROASTED 05.08
Honduras La Paz
Sweet, with pear and jasmine — for those who don’t like acidity
pearjasminesea buckthorn
Aciditylow
Roastfor filter
Best in V60 · Chemex · Aeropress
565 ₴250 g · ≈ 35–40 ₴ per cup
Add to cart
CRITICAL
One of the main points of loss
1The price sits above the name — the eye reads the number first, not the coffee.
2The second line is a wholesale price the retail buyer doesn’t need.
3“100% arabica, Honduras” is identical on every card. No notes, acidity, roast, brew method or roast date.
A decision without opening the product
One line of “who it’s for” — instead of guessing from the name.
Notes, acidity and roast compare at a glance between cards.
Roast date and price per cup justify the price.

Left: the card exactly as it was on the site (August 2025); the numbers point to the findings. “Should be” is a schematic of the proposed card.

07 / ERRORS IN DATA & COPY

The cheapest work — and the fastest effect on perceived quality.

Three catalogue cards, all captioned 100% arabica, Colombia
FROM THE SITE · 08.2025“Mix your flavours”: two Honduras lots and one Colombian — all three captioned “100% arabica, Colombia”.
WHAT THE MARKS POINT TO
1Honduras San Marcos — the caption reads “100% arabica, Colombia”
2Honduras La Paz — the same “Colombia” caption
3Colombia El Diviso — the only card where the caption is right
SHOULD BE
Origin comes from one place
Honduras San Marcos100% arabica, Honduras
1 530 ₴ / 1 kg
Honduras La Paz100% arabica, Honduras
2 160 ₴ / 1 kg
Colombia El Diviso100% arabica, Colombia
4 200 ₴ / 1 kg
The origin line is generated from the product record — typed once, shown everywhere.
Where two lots share a country, the card shows what differs: region, process, notes.
CRITICAL
Wrong country of origin

Two Honduras lots in the “Mix your flavours” block are captioned “100% arabica, Colombia”. Same on the drip bags: a Kenyan and a Rwandan coffee — also “Colombia”.

CRITICAL
Why this one is expensive

For specialty coffee, origin is the main argument for the price. A buyer who knows coffee reads “Honduras — Colombia” as carelessness in everything else: roasting, freshness, logistics.

CRITICAL
Delivery terms contradict each other

Home page: “free delivery from 6 kg”. Product page: “free from 2 kg for retail buyers, otherwise 100 ₴”. The buyer doesn’t know which to believe.

IMPORTANT
Russian calques in one sentence

Three non-Ukrainian word forms in a single delivery note — on a brand built on Ukrainian craft. And the terms themselves are two list items instead of a block with icons.

CRITICAL
Wholesale price duplicates retail

On accessories: “400 ₴” and “Wholesale order: 400 ₴”. The line adds nothing, eats space in every card and undermines the very idea of a wholesale price.

IMPORTANT
Accessories and merch in one list

Pour-overs, filters, jars and a T-shirt sit side by side without categories; the T-shirt is set in lowercase among uppercase names — with a typo in its own name.

IMPORTANT
Terms of sale can’t be reached

The footer’s “Terms and condotions” link (sic) opens nothing. The copyright line reads “© 2022 – Form | All right”: an old year, the starter template’s name and an unfinished phrase.

MINOR
Terminology isn’t unified

“Clear basket” under the heading “Cart”; “roast type” next to “roasting”; a space before a colon; “E-MAIL” misspelt on the contacts page; an unexplained “UA|18+” element in the top bar.

CRITICAL
Three different postal codes

Company details, footer and contacts page each show a different postal code. A small thing — but exactly the kind a buyer reads as “nobody checks details here” and carries over to roasting and freshness.

08 / PRODUCT PAGE

Strong base, weak accents.

Desktop buy box: two equal prices, an unlabelled grind select, Add to cart merged with the quantity control
FROM THE SITE · 08.2025Buy box: two prices of equal weight, a grind select with no label, “Add to cart” merged with the quantity field.
WHAT THE MARKS POINT TO
1Tasting notes “Pear, jasmine, sea buckthorn”; below — “100% arabica, Honduras”
2“Regular price 565 ₴” next to “Wholesale price (from 3 kg) 452 ₴” — equal size
3“Whole bean” — the grind select, no field label
4“250 g” / “1 kg” — weight; the filled chip is the chosen one
5“Add to cart” and “− 1 +” in one capsule
SHOULD BE
One price, a labelled grind, a button that stands alone
Honduras La PazSweet, with pear and jasmine — for those who don’t like acidity
Honduras · La Pazfor filterroasted 05.08
565 ₴250 g ≈ 15 cups · ≈ 38 ₴ a cup
For cafés: from 3 kg — 452 ₴ per 250 g →
Grind
Whole bean ▾
Not sure? Pick the device you brew with.
Weight
250 g1 kg ≈ 58 cups
−1+
Add to cart · 565 ₴
The retail price is the only big number; wholesale becomes a link to the B2B page.
Every control has a name; the grind gets a one-line hint.
Quantity and the button are two elements with a gap; the button carries the total.
CRITICAL
The buy button is weaker than the toggles

“Add to cart” is set small, with a lock icon, and visually merges with the quantity field. The page’s main action should be its most visible element — right now that’s the price.

IMPORTANT
Two prices compete

“Regular price” and “Wholesale price (from 3 kg)” are set equally large. The retail buyer reads the smaller number first — then learns it isn’t for them.

IMPORTANT
Grind without a label or a hint

The select shows “Whole bean” with no field name. Ten options — a newcomer can’t tell “Filter” from “V60”, and “Home coffee maker” is ambiguous. Needs a “Grind” label and one line: “Not sure? Pick the device you brew with.”

IMPORTANT
Weight without cups

“250 g / 1 kg” works, but doesn’t answer “how much should I take”. Add: 250 g ≈ 14–16 cups, 1 kg ≈ 55–60 cups.

IMPORTANT
Specs below the wall of text

Roast level, process and variety sit under the description — where nobody gets to. These are the key facts for choosing; their place is next to price and grind.

IMPORTANT
What’s missing entirely

Roast date, a brew recommendation, similar coffees, reviews, return terms. “For filter” needs one line: “espresso works too, but it opens up best in V60, Chemex, Aeropress”.

CRITICAL
The most valuable material in the worst shape

“More about the coffee”: one paragraph fifteen lines long — on a phone, the same paragraph has no end. The material is genuinely valuable — the farm, the region, 120 hours of dry fermentation, drying to 10–12% moisture. It’s what justifies a price above the supermarket. In this shape nobody reads it.

More about the coffee: a single fifteen-line paragraph
FROM THE SITE · 08.2025
1“More about the coffee” — the farm Las Delicias in Montecillos, La Paz; cherry flotation; 120 hours of dry fermentation; drying to 10–12% moisture — one heading, one paragraph

The same amount of text — but the person reads what they need and doesn’t have to fight through the rest.

HOW THE SAME TEXT SHOULD LOOK
Who will like it

One line: “sweet, with pear and jasmine — for those who don’t like acidity”.

About the region

Farm, altitude, soils — what justifies a price above the supermarket.

About fermentation

120 hours of dry fermentation, dried to 10–12% moisture.

How to brew

Grind, temperature, ratio — and where this coffee opens up best.

Farm and region name, fermentation method and duration, moisture after drying, the history of the region’s cooperatives — it’s all already there. Ready material for four blocks; nothing to invent or negotiate.

09 / CART & ORDER FORM

The buyer has decided to buy — and this is where the losses cost most.

The weakest part of the site — weaker than the catalogue. Numbers on the reconstruction point to the four critical findings.

Cart drawer: Total and To pay identical, Often bought together cards without prices, Place order and Clear basket buttons
FROM THE SITE · 08.2025Cart: “Total” equals “To pay” — no delivery line; the second button says “basket”.
WHAT THE MARKS POINT TO
1“Total: 565 ₴ / To pay: 565 ₴” — identical
2“Often bought together” — cards with no price or button
3“Place order” / “Clear basket” — under a heading that says “Cart”
SHOULD BE
The cart tells the real total
Honduras La PazWhole bean · 250 g · 1 pc
565 ₴
Coffee565 ₴
Delivery · Nova Poshta100 ₴
To pay665 ₴
Free delivery from 2 kg — 1.75 kg to go
Often bought together
Rwanda Kayumbu · 250 g — 385 ₴+ Add
Place order
Have a promo code?
Delivery cost is shown before the form, and the total matches what gets paid.
One primary button; promo and “clear cart” are text links.
Delivery and payment radio lists: pickup in Dnipro and cash on delivery preselected; unselected options drawn as filled circles
FROM THE SITE · 08.2025Delivery and payment: pickup in Dnipro and cash preselected; the filled circles are the unselected ones.
WHAT THE MARKS POINT TO
1“Pickup (Dnipro, Hrushevskoho St 50, Mon–Fri 9:00–17:00)” — preselected
2Filled circles = NOT selected; the ring with a dot is the choice
3“Nova Poshta” — the parcel network most of Ukraine orders through
4“Cash on delivery” — first and preselected; card and Apple / Google Pay last
SHOULD BE
Parcel network by default, filled means chosen
DELIVERY
Nova Poshta — 100 ₴, free from 2 kg
City
Kyiv
Branch or parcel locker
Search by number or street…
Courier — Dnipro only
Pickup — Dnipro, Hrushevskoho St 50, Mon–Fri 9–17
PAYMENT
Card online — Apple Pay, Google Pay
Cash on delivery
The default is what most buyers need; pickup is last and names the city.
Selected = filled, everywhere on the site. Bank transfer moves to the B2B section.
Order form: first name, last name, phone, email, additional information, Place order — no address fields
FROM THE SITE · 08.2025The whole form: first name, last name, phone, email, a note — no city, no parcel branch.
WHAT THE MARKS POINT TO
1“First name*”, “Last name*”, “Phone*”, “Email*” — labels only as placeholders
2“Additional information” — the only place to type a city and a branch
3“Place order” — and nothing else: no consent, no “we’ll call to confirm”
SHOULD BE
Labels stay visible, choices come before the button
Name
Olena
Phone
+380 __ ___ __ __
Email — for the order confirmation
olena@…
Confirmation call
Call meNo need — I’ll get an email
✓I agree to the terms of sale and the privacy policy
Place order · 665 ₴
Ships in 1–2 days · tracking number by email
Labels sit above the fields and never disappear; one name field instead of two.
Everything that affects the order — call or not, consent — comes before the button.
ORDER FORM · RECONSTRUCTION
delivery:4
Pickup, Dnipro3
Nova Poshta (parcel network)
Courier
City — no field1
Parcel branch — no field
payment:
Cash on delivery
Card online
First name*
Last name*
Phone*
Email*
Total:770 ₴
To pay:770 ₴
Delivery:—2
Check promo
Place order
○ Call me after ordering● You don’t have to call me
1CRITICAL
No address or branch field

The form has first name, last name, phone, email and “additional information”. Having chosen the parcel network, the buyer has nowhere to type the city and branch. Either a lost order or a manager’s call for every one.

2CRITICAL
Delivery cost appears nowhere

“Total” and “To pay” are two identical lines without delivery, although the product page says it costs 100 ₴ under 2 kg. The cart total doesn’t match what the person will actually pay.

3CRITICAL
Pickup in Dnipro is the default

The first option is preselected. A buyer from Kyiv who doesn’t change it orders pickup from a street in another city. The default should be the parcel network — or nothing.

4CRITICAL
Selection markers read backwards

Unselected options are filled dark; the selected one has a white dot inside. The eye reads filled as active — the person isn’t sure what they chose. On the product page, by contrast, the selected weight is the filled one: two opposite logics in one purchase.

IMPORTANT
Two black buttons compete

“Check promo” looks as important as “Place order” and sits above it. There should be one primary button; the rest in a secondary style. Cash on delivery is also listed first and preselected — so money arrives later, and some parcels are never collected.

IMPORTANT
“Often bought together” doesn’t work

Cards have only a name and a photo — no price, no button, the third one is cut by the screen edge. This is the simplest place to lift the basket: filters for the Aeropress, or a second coffee with a price and “+ add”. Field labels exist only as placeholders; no consent checkbox; no “we’ll call to confirm” promise.

HOW THE PATH SHOULD LOOK
1A cart that shows the delivery cost right away
2Step 1: contact and parcel branch — search by city, not a long list
3Step 2: payment — card first, with what was typed kept
4Order number, dispatch date and tracking number by email
10 / TRUST & REPEAT PURCHASES

Coffee runs out. The site doesn’t use that.

A 250 g bag is roughly 14–16 cups — a natural repurchase cycle every 2–4 weeks. The site does nothing with it. And before the first purchase it offers no proof that an unfamiliar brand deserves 385 ₴ (≈ 8 €) for a bag.

BEFORE THE FIRST PURCHASE
SECOND PURCHASE AND ON
CRITICAL
Not a single review

No ratings, no reviews, no buyer mentions — at a price above the supermarket. Someone seeing the brand for the first time has no confirmation but your own words. 5–10 real quotes from Instagram messages would be enough.

CRITICAL
Nothing to come back to

No account, no order history, no subscription, no reminder email. Someone who has already paid walks the whole path again — including typing in all the details.

IMPORTANT
No return or guarantee terms

What happens if the coffee disappoints or arrives damaged is written nowhere. Clear terms for quality or damage problems lower the risk of a first purchase.

CRITICAL
Email is collected only at checkout

Whoever didn’t buy disappears for good. Instagram brings traffic but gives no list you can return to without an advertising budget.

IMPORTANT
Freshness is claimed, not proven

Roasting in-house is the main edge over the supermarket. But there is no roast date, no dispatch time, no “roasted to order”.

IMPORTANT
Subscription — the biggest unused lever

The cheapest sale: one decision by the buyer instead of twelve. The minimum: one-tap reorder, an email on day 21, a subscription with a skip-a-month option.

×4

The same buyer returning four times a year instead of once brings €32 instead of €8 (1 540 ₴ vs 385 ₴) — with no repeat acquisition cost. I count with the cheapest bag so the numbers don’t look inflated.

That’s why “repeat purchases — 2/10” in the scorecard is the most expensive line of the whole report, if not the most visible.

11 / FIRST SCREEN & STRUCTURE

A hero without an action, a catalogue without a page.

Home page first screen: brand name, tagline, a product carousel — no button
FROM THE SITE · CURRENTThe first screen: brand name, a tagline, a carousel — and nothing to press.
WHAT THE MARKS POINT TO
1Menu: “Coffee ▾ · Accessories · Barista school · Contacts” — no search, no “For cafés”
2“UA ▾” — a language switch with no second language, where the eye looks for search and account
3“Roasting and selling quality coffee in Ukraine” — a description, not a reason to buy; no button
4“Peru Cajamarca” — the carousel, the only thing that looks tappable
SHOULD BE
A value and one action above the fold
Coffee · Drip · For cafés · School · ContactsSearch · Cart
Freshly roasted specialty coffee, delivered across UkraineRoasted in Dnipro, shipped within 1–2 days · free delivery from 2 kg
Choose coffeePick a coffee for me
Own roastery in DniproWholesale to cafés across UkraineBarista school
The headline says what and for whom; the button says what to do.
Search and cart where the eye expects them; “For cafés” and “Pick a coffee” in the first-level menu.
CRITICAL
A first screen with no primary action

The photo is strong, but the brand name and “Roasting and selling quality coffee in Ukraine” don’t say what to do next. The carousel is the only element that resembles an action, and it doesn’t read as a button.

Needs a “Choose coffee” button and a concrete value: “Freshly roasted specialty coffee, delivered across Ukraine”.

IMPORTANT
The catalogue needs its own page

Everything sits on the home page at once: catalogue, drip bags, bulk discount, B2B text, merch, subscription, map, contacts. While the catalogue is part of the home page it can’t grow into a real choosing tool — with filters, sorting, search and its own URL to run ads to, share on Instagram and rank in Google.

Leave the home page a short road to purchase: hero with a button → 6 popular lots → coffee picker → drip → “For cafés” → about roasting → contacts.

IMPORTANT
The top bar’s right side goes to the wrong thing

Where the eye looks for search and account sits “UA|18+”. If there is no second language, the “UA” switch is dead — the space should go to search.

IMPORTANT
The menu doesn’t cover the scenarios

No search in the top bar; drip bags and wholesale have no pages of their own although they sell on the home page. Lift the “Coffee” submenu categories to the first level, together with “For cafés” and “Pick a coffee”.

12 / TONE SWITCH 18+ & MUSIC

The site’s strongest idea — under-delivered.

Barista school hero in 18+ mode: a blunt headline and a button that both promises details and jokes
FROM THE SITE · 08.202518+ mode, the school page: the button promises details and makes a joke in the same breath.
WHAT THE MARKS POINT TO
1Headline: “We train coffee pros in Dnipro — and anyone who wants to manage more than pouring boiling water into a 3-in-1.” The 18+ tone
2Button: “More about the course — down there, don’t be a wimp” — a promise and a joke in one
SHOULD BE
The button names one action; the joke gets its own line
Tone: calm / unfiltered
We train coffee pros in Dnipro — and anyone who wants to manage more than pouring boiling water into a 3-in-1.
Open coursesThey’re down there. Don’t be a wimp.
The switch says what it does and stays visible; the choice is remembered.
Character lives in subheads and asides — never in buttons, prices or field names.

A switch in the top bar turns the tone of the whole site direct and conversational. Very untypical for Ukrainian roasters’ sites.

A blunt tone across a whole site is always a risk: a café owner looking for a supplier, or someone choosing a gift, walk away from it. The switch removes that risk — everyone sees the calm version by default, and the sharp one is turned on by those who like it.

And the copy itself is good — it sounds like a person, not a shop. The one problem: the idea wasn’t pushed through. Nobody can discover it, and the tone crept into places where it does harm.

THE IDEA
8/10
THE EXECUTION
4/10
CRITICAL
The feature can’t be discovered

“UA|18+” reads as a language plus an age mark. Nothing says it switches the site’s style, and “18+” hints at adult content that isn’t there. Call it what it is — “Tone: calm / unfiltered” — plus a one-time hint on the first visit.

CRITICAL
The tone crept into a button

In 18+ mode the course button carries two things at once: a promise to show details and a joke. A button names one action — “Open courses”; the joke moves to a line beneath it.

IMPORTANT
Character set in the smallest type

The 18+ course descriptions carry the whole character of the brand, yet they’re set small and grey under the key facts. These are the lines people remember — they need body-text size.

IMPORTANT
Jokes in brackets, keywords in headings

Half the lines arrive as bracketed asides — the rhythm breaks. And a joke in a heading removes the search query from it. Give the lines their own row; keep keyword headings calm and put the character into subheadings.

MINOR
The calm version is weaker than 18+

“10+ cafés opened” is ambiguous — whose? The 18+ copy is precise: “cafés opened by our graduates”. Pull the calm version up to the same precision.

WHAT TO DO NEXT
Rename the switch and make it visible
Remember the choice between visits
Never send paid traffic to 18+ by default
WHAT CAN SWITCH
Subheads and course descriptionsTaste descriptions and “who it’s for”Set names, package insertsEmails, social media, the 404Empty cart and the thank-you page
WHAT NEVER SWITCHES
Buttons and field namesPrices, weight, delivery costCart, checkout, paymentValidation errors and order statusesB2B section, offer, legal texts

Music — the same case.

A second attempt at what the tone switch does — conveying the brand’s atmosphere. Right for a roaster with its own café, but the two tools live apart and neither is framed as part of the experience.

GOOD
Doesn’t autoplay

Sound is manual only — the right call. Autoplay on a commercial site means an instantly closed tab, especially on a phone.

IMPORTANT
Nobody knows what it is or why

An icon without a label or a promise. People don’t press an unknown sound on a work laptop. Give it a reason — “Our café’s playlist” — and it becomes brand, not a surprise.

IMPORTANT
The player works but says nothing about itself

Playback survives page changes and tracks can be skipped — the mechanics are good. Missing: a volume control and the name of what’s playing. The playlist keeps one mood — that’s worth a caption.

MINOR
Rights to the tracks

Make sure the music is licensed for a commercial site. Rarely checked — and the reason music sometimes has to be removed after launch.

What I propose: merge music and tone into one labelled “atmosphere” block instead of two nameless icons in a corner. One gesture — and the site sounds and speaks like your café.

Music must never be on in the cart or at checkout — there people count money and type details. And the player weighs 1.25 MB, loading for every visitor even if nobody presses play (more in the technical section).

13 / MOBILE WALKTHROUGH · 10 SCREENS

Mobile is the main sales screen.

Coffee is bought from a phone: someone sees an Instagram post and opens the site right there. I walked the whole path — from the home page to the “Place order” button. Below are the actual screenshots from that walkthrough. Switch to the schematic view to see each issue marked in red — and to “Should be” for the minimal fix of every screen.

01 Home — The floating player covers the start of the product name
01 Home
The floating player covers the start of the product nameREADS: The dark circle bottom-left is the music player; it sits on a coffee name
02 Product top — Half a screen of emptiness between the header and the name
02 Product top
Half a screen of emptiness between the header and the nameREADS: “HOME ‹ COFFEE ‹” breadcrumbs, then blank space, then the name
03 Buy box — Two equal prices, an unlabelled grind select, the button glued to the quantity
03 Buy box
Two equal prices, an unlabelled grind select, the button glued to the quantityREADS: “Rwanda Kayumbu · Honey, jasmine, bergamot · Regular price 385 ₴ / Wholesale price (from 3 kg) 308 ₴ · Whole bean · 250 g / 1 kg · Add to cart”
04 Description — One paragraph with no end
04 Description
One paragraph with no endREADS: “More about the coffee” — one paragraph about the farm, fermentation and drying
05 Specs — Roast, process and variety only at the very bottom, before the footer
05 Specs
Roast, process and variety only at the very bottom, before the footerREADS: “Roast type · Process · Variety” — the specs table, right above the footer
06 Cart — “Check promo” as heavy as “Place order” — and above it
06 Cart
“Check promo” as heavy as “Place order” — and above itREADS: “Check promo” above “Place order” — both black
07 Cart total — “Total” equals “To pay” — the delivery line doesn’t exist
07 Cart total
“Total” equals “To pay” — the delivery line doesn’t existREADS: “Total” and “To pay” — identical amounts, no delivery line
08 Delivery — Pickup preselected; solid circles read as chosen
08 Delivery
Pickup preselected; solid circles read as chosenREADS: “Delivery: Pickup (Dnipro…) · Courier (Dnipro only) · Nova Poshta · Rozetka Delivery”
09 Form — Labels only as placeholders; the player sits on the phone field
09 Form
Labels only as placeholders; the player sits on the phone fieldREADS: “First name* · Last name* · Phone* · Email*” — written inside the fields
10 Submit — No address fields; “don’t call me” only under the button
10 Submit
No address fields; “don’t call me” only under the buttonREADS: “Place order”, then below it: “Call me after ordering / You don’t have to call me”
01 Home
The floating player covers the start of the product name
02 Product top
Half a screen of emptiness between the header and the name
03 Buy box
Two equal prices, an unlabelled grind select, the button glued to the quantity
04 Description
One paragraph with no end
05 Specs
Roast, process and variety only at the very bottom, before the footer
06 Cart
“Check promo” as heavy as “Place order” — and above it
07 Cart total
“Total” equals “To pay” — the delivery line doesn’t exist
08 Delivery
Pickup preselected; solid circles read as chosen
09 Form
Labels only as placeholders; the player sits on the phone field
10 Submit
No address fields; “don’t call me” only under the button
01 Home
Player docked in the header; a “Choose coffee” button; the product name uncovered
02 Product top
Gallery right under the header; the name right under the gallery
03 Buy box
One price; a labelled grind; quantity and button apart, the button carries the total
04 Description
Four short blocks with headings — read what you need
05 Specs
Roast, process, variety next to the price — not under the essay
06 Cart
Delivery inside the total; one primary button; promo and “clear” are text links
07 Cart total
“Coffee 565 · Delivery 100 · To pay 665” — the delivery line exists
08 Delivery
Nova Poshta selected by default with city and branch under it; hollow = not chosen
09 Form
Labels above the fields, always visible; nothing floats over them
10 Submit
Call preference and consent above the button; the button shows the total
CRITICAL
The music player covers content — including a form field

A round vinyl icon hangs in the bottom-left corner and overlaps text on every screen: it eats the start of the coffee name on the home page, the delivery terms on the product page — and in the order form it sits right on top of the required “Phone” field. The person can’t tap the field they must fill in. Fixed with a single offset.

CRITICAL
Order controls sit UNDER the “Place order” button

The “Call me after ordering / You don’t have to call me” switch is placed below the main button. People press the button before they see the options — the choice exists, but nobody uses it. The form itself ends without an address: name, surname, phone, email — and the button.

CRITICAL
Button and quantity glued into one element

The black button and “— 1 +” sit in one white capsule, flush, with no gap — so they read as one control, not an action and a field. “Add to cart” is smaller than “250 g” and wraps under the icon: the page’s main action looks like a caption inside the quantity field.

IMPORTANT
The first product screen is almost empty

About half a screen of emptiness between the header and the coffee name. Plus breadcrumbs “HOME ‹ COFFEE ‹” with arrows pointing backwards and a stray separator at the end. On the screen that decides whether the person stays, nothing is shown.

IMPORTANT
Labels exist only as placeholders

“First name*”, “Last name*”, “Phone*” are written inside the fields and vanish on input. On a phone, with the keyboard covering the screen, the person forgets what they’re filling in. A bank-transfer option is also offered to retail buyers — it lengthens the list and raises questions; explain it or move it to B2B.

GOOD
“You don’t have to call me” — a strong detail

Almost nobody offers this option, and it says more about respect for the buyer than any service copy. The only problem is that it sits under the button. Move it up — and it becomes an advantage people notice.

HOW MOBILE SCREENS SHOULD WORK
Filters as a half-screen bottom sheet with a “show 12 items” counter
Description: first three lines and “read more”; specs as separate rows
Parcel branch found by city name, not a long list
Two-step checkout that keeps what was typed
“Add to cart” with the price stays pinned at the bottom while scrolling the product
RULES THAT REMOVE HALF THE FINDINGS
One primary element per screen: the price and the button don’t compete with a second price
Selection looks the same everywhere — filled means chosen
Nothing floats over text or fields: the player gets its own place
Everything that affects the order comes before the button, never after
Tap targets large enough and far enough apart
WHY MOBILE IS DESIGNED FIRST

Not “responsive at the end” but the order of work: first the screen people buy from, then the desktop derived from it. Every finding above hits harder on a phone — less space, more scrolling, no way to “look side by side”. Mobile is part of every iteration’s scope and is never priced separately.

14 / TECHNICAL STATE

22.9 seconds to the product image.

Lighthouse in mobile mode. A person from Instagram opens the link on a phone and looks at an empty screen longer than they’re willing to wait — worst of all on the very page where the purchase decision is made.

MOBILE METRIC
CATALOGUE
PRODUCT
Until the main image appears (LCP)
norm — up to 2.5 s
13.5 s
22.9 s
Layout shift while loading (CLS)
norm — up to 0.1
0.155
0.72
Overall performance score
of 100
54
36
A shift of 0.72 is a very high level of layout instability: elements visibly move while loading, and mis-taps rise. The product page makes 107 requests, loads for 10.5 seconds and weighs 7.2 MB.
WHAT EATS THE SECONDS
Images: 814 kB of excess weight — heavy formats, no sizes per screen
The embedded music player: 1.25 MB — twice the site’s own code (611 kB), loaded for every visitor without a tap
Unused JavaScript: 733 kB; caching not configured — 2.5 MB downloaded anew every visit
Render-blocking scripts: 2.7 seconds of pure waiting
WHAT TO DO
Convert photos to WebP, serve different sizes for different screens
Load the player only after the button is tapped
Configure caching of static files
Reserve dimensions for blocks that load late

I write the technical requirements and check the result. These look like local changes that don’t need a rebuild; the exact scope is set after a technical estimate.

WHAT IS
What the site runs on

A custom build, not a site builder: a React front end, Node.js and Express on the server, MongoDB judging by the shape of the requests, Nginx in front. Good news for the first iteration — no platform change is needed to integrate parcel-branch selection.

CRITICAL
Accessibility: spot-checked, already visible

Light-grey service text on white fails minimum contrast — some people simply don’t read it. Field labels exist only as placeholders. Selection markers are inverted. Not a full accessibility audit, but these three are cheap — fix them first.

IMPORTANT
SEO 100/100 means less than it seems

The only green Lighthouse score — but it checks basic hygiene only: a meta description, crawlable links, readable type. It doesn’t check what sells: no Product structured data (price and stock right in search results), and the catalogue lives on the home page with no URLs to rank.

IMPORTANT
Analytics installed — order events unverified

Google Tag Manager and Analytics are on the site. Whether “added to cart”, “began checkout” and “paid” are sent is visible only from the owner’s account. Without them no change can be verified — there will only be a feeling of “seems better”.

IMPORTANT
Instagram traffic that can’t be re-reached

Visitors come from Instagram, yet I saw no Meta pixel on the site — to be confirmed on the live site together with the events. Without it there is no retargeting: showing the very coffee a person looked at.

IMPORTANT
Legal pages: one dead, one missing

“Terms” in the footer leads nowhere; I found no privacy policy. For a shop taking card payments both need to be in order, with the exact list of documents checked against the payment provider’s requirements. Company details in the footer are present — good, and rare. Moving the catalogue to its own page also needs redirects and an updated sitemap prepared in advance.

What gets done first. Analytics events — I set them up myself, because without data no change can be verified; if products, sums or the completed order aren’t passed from the site, individual events will need a developer. Then contrast, field labels and the player’s weight — local changes, no rebuild.

Structured data for products, catalogue redirects and the legal pages go on a separate list for the second iteration — so that restructuring doesn’t cost positions in Google.

15 / HOW OTHER ROASTERS SOLVE IT

Patterns buyers already expect.

Solutions that have become so common in coffee retail that the buyer takes them for granted.

COMMON SOLUTION
WHY IT WORKS
ON THIS SITE
Filter by brew method
People know their brewer, not the region name — one of the clearest filters for a buyer.
No filter, no search
Tasting notes and acidity on the card
Comparison happens at a glance between cards, without page changes.
On the product, not in the catalogue
Roast date on the bag and on the site
The main proof of freshness and the main justification of the price.
Nowhere
A 2–3-question picker for newcomers
Removes the typical fear of picking the wrong one.
None
Subscription with pause and skip-a-month
Creates a regular repurchase rhythm and helps forecast roasting volumes.
None
A separate entrance for cafés
Wholesale and retail are different people with different questions and different baskets.
Wholesale price shown to retail buyers
Parcel-branch selection in the form
The standard of Ukrainian e-commerce; without it the order is completed by phone.
No address field at all
16 / AUDIT SUMMARY & THE MATH

Not a new design — a finished buying experience.

The brand and the product are already strong. The next step is helping to choose the coffee, letting people order without a phone call, and giving them a reason to return. The most expensive things right now are the simple ones: a missing address field, an unknown delivery cost, a wrong country in captions. Days to fix, not months.

WHAT IT COSTS EVERY MONTH
≈ €240
≈ 11 500 ₴ · per month

If the address-less form, the unknown delivery cost and the 22.9-second wait cost one order a day — €8 × 30, counted at the cheapest bag (385 ₴). The sum repeats every month while the path stays as it is; the fix is made once.

A SCENARIO FOR ONE HUNDRED BUYERS
Buy once€800
Buy four times a year€3 200
DIFFERENCE PER YEAR
+ €2 400
≈ 115 500 ₴

What the same hundred buyers add if they return four times a year instead of once. Not a sales forecast — an illustration of repeat-purchase economics at the current bag price. How many orders it really is, the analytics funnel will show; that’s why it is the first work item, not the last.

I don’t forecast conversion — there is no data, and any figure would be invented. But multiplication on the client’s own prices shows the scale. Euro figures at ≈ 48 ₴ / €, the rate at the time of the audit.

17 / THE PLAN · THREE ITERATIONS

Three steps. Nothing has to launch at once.

Three iterations were proposed — each a complete stage with a result ready for implementation, so the owner can start with any one and stop after any one. The order is a recommendation: if wholesale for cafés matters more than the catalogue right now, that goes first.

ITERATION 1up to 2 weeks
Stop losing orders

Remove the barriers where the buyer has already decided to buy.

Checkout UX and logic
The cart-to-payment path built on usability and error-prevention principles: city and branch, delivery cost, sane defaults.
Visual hierarchy and typography
Readability, contrast and states — the interface itself shows what to do next.
Accessibility
Key screens against WCAG 2.2 AA: contrast, keyboard, field labels, tap targets.
Responsive consistency
The same behaviour on the phone and on the desktop.
Measurability
An analytics event structure that shows exactly where people leave the checkout.
ITERATION 23–4 weeks
Optimise the coffee choice

Help the buyer pick their lot with confidence — in ten seconds.

Information architecture
The difference between lots is visible already in the catalogue, without page changes.
Search and navigation
Paths for the expert and for the newcomer who doesn’t know coffee.
Behavioural psychology of choice
Less cognitive load and less fear of “picking the wrong one”.
Product visual system
One hierarchy for specs, price and the primary action — built for fast scanning.
Mobile-first UX
Key scenarios designed for the phone first, fully adapted for the desktop.
ITERATION 33–4 weeks
Repeat purchases and new revenue

Turn the site into a system that brings the customer back.

Retention and reorder
Return scenarios, one-tap reorder, a future subscription.
Order value
Relevant recommendations without aggressive selling or an overloaded path.
New user scenarios
Separate paths for cafés, gifts and the Barista School.
Behavioural design
Trust, social proof and lower risk of the first purchase.
Systemness
Shared components and rules so the site doesn’t fall apart into different logics.
WHY NOT A FULL REDESIGN

By the site’s current state I don’t recommend it. It makes sense only if the brand separately decides to change its positioning, packaging or the whole visual system — then one coherent project beats redoing the same thing three times. The iterations aren’t lost in that case: the work carries over into the new project.

18 / DELIVERABLE & LEARNINGS

A report the owner can act on one step at a time.

LEARNED · 01

An audit that gets acted on is an audit that prioritises. The critical / important / minor tag turned out to be the most useful thing on every page — the owner reads the red first and knows where the money leaks.

LEARNED · 02

Cheap fixes first. A wrong country in a caption and a missing address field cost more than any redesign — and are fixed in days. Leading with them made the plan credible.

LEARNED · 03

Measure before promising. I named no conversion figure anywhere and made analytics the first work item — the only honest way to show the effect of a change to a small business.

SELLING ONLINE?

Let’s find where your buyers leave.

Start a project →
NEXT PROJECT
IT Smart School
→