Work

Two projects, and both open

There really are two — I have not been working long. But both are live: you can open them right now, look at them on a phone and measure them with the same tools I used. Beside each one, what was decided and why.

Nail technician, Daugavpils

svjoli.com
The svjoli.com home page: the technician's name set large, a booking button, and a row of courses below.

How the page looks now. Captured 08/10/2026, unretouched and without a device frame.

Three languages, not one
Daugavpils is bilingual, and people travel from Lithuania for the courses. Russian, English and Latvian are declared via hreflang, so search shows the right version rather than whichever came first.
Five course pages, not one price list
Each course has its own length, its own level and its own price. As a single table it reads as a choice between five rows; as separate pages, as five decisions, each with its reason.
No booking form
Bookings happen in messengers, and that suits the technician. A form on the site would add a channel nobody watches — worse than not having one.

96out of 100

Lighthouse, performance

Lighthouse 13.4.1, mobile profile · svjoli.com · 08/10/2026

0.001

Layout shift on load (CLS)

Lighthouse 13.4.1, mobile profile · svjoli.com · 08/10/2026

0px

Horizontal scroll at 390

Playwright, width 390 · svjoli.com · 08/10/2026

3languages

Declared via hreflang

Page markup · svjoli.com · 08/10/2026

Niche perfumery, Daugavpils

marco-perfume.com
The marco-perfume.com home page: a bottle on a dark ground, a heading and a way into the catalogue.

How the page looks now. Captured 08/10/2026, unretouched and without a device frame.

The catalogue is arranged three ways
Categories, brands and notes — twenty-two routes instead of one product list. People choose perfume differently: one knows the brand, another remembers only the scent. A single list serves the first and loses the second.
Ordering happens in Instagram Direct, and it says so at the top
There is no checkout on the site: sales happen in chat, where samples are chosen too. The site's job is to choose, not to pay, and it says so in the first line rather than revealing it on the third click.
Not one third-party host
Fonts and images are served by the site itself. No one else's server receives the visitor's IP address — which also settles the question the EU asks about fonts from someone else's CDN.

0violations

WCAG 2.2 AA on a page with 31 images

axe-core 4.13.0, widths 390 and 1440 · marco-perfume.com · 08/10/2026

14languages

Declared via hreflang

Page markup · marco-perfume.com · 08/10/2026

0hosts

Third-party services on the page

Playwright, request list · marco-perfume.com · 08/10/2026

3.5s

LCP on the mobile profile — worse than the 2.5 s target

Lighthouse 13.4.1, mobile profile · marco-perfume.com · 08/10/2026

I left the last figure in plain sight. The main image arrives in 3.5 seconds against a target of 2.5, and 862 KB of this page is script. It is fixable, and it is not fixed. Showing 90 out of 100 and staying quiet about why it is not 96 is the same dishonesty in a smaller font.

And about the beam in my own eye: the page you are reading arrives in the same 3.5 seconds on the same profile. Its cause is different — not scripts but render-blocking styles — but the figure is exactly the same, and fixing it is on me. Measure it yourself, it takes a minute.

What is not here

Traffic, enquiries and revenue. I have no access to these sites' analytics, so any such figure would be hearsay. I measure what is visible from outside — and those are exactly the measurements you can repeat yourself in a minute.

Reviews. I did not ask for them, so there are none. When there are, I will publish them with a name and a date, not as an anonymous quote.

Before-and-after comparisons. I never measured the old state, and drawing it from memory would mean inventing it.

Want one like these — write to me

Tell me what the business is and what you need from a site. I will answer, within three working days, and name the price and the date before the work starts.

VAT not applicable — the price in the price list is final.