Buying a kitten sight unseen
A family in Italy sends four figures to a breeder in Ukraine for an animal they have never held. No showroom, no returns, no second opinion. The whole site is the answer to that.

What this was
and what I did on it
- Client
- Just Magic — a family cattery in Sumy, Ukraine, breeding Devon Rex and Maine Coon
- Audience
- Families abroad buying a pedigree kitten remotely, and Ukrainian buyers at home
- My role
- Research, UX, interface, Webflow build, CMS architecture, copy, SEO, ad campaigns — one person
- Scope
- Homepage, kitten catalogue with live statuses, breeding cats, blog, about, contact — mirrored in English and Ukrainian
- Built with
- Figma for design, Webflow for the build, CMS collections for everything that changes
- Shipped
- 2024, and still running — the screens on this page are the design as it was handed over
The stock is alive
and the owner breeds cats, not websites
Two things make this harder than it looks. The first is distance: the buyer is in Verona or Chicago, the kitten is in Sumy, and every question they would ask in a shop — is it healthy, is it papered, how does it get here, who are you — has to be answered by a page.
The second is that the catalogue will not hold still. Kittens are born, get reserved and leave for new homes every few weeks. A site that shows a kitten as available a month after it went home wastes the owner's time and burns the trust the first problem was solving. And I would not be there to update it.
Five calls that shaped it
and what each one cost
-
01
Make the kitten a page, not a row
Every kitten gets its own address, photos, breed, pedigree and price. That is what a buyer forwards to their partner, what they come back to, and what Google can index. Seventy-one of those pages exist today.
Trade-off. It moves the work onto the owner: every kitten is now a page someone has to fill. So the field set had to be short enough to complete from a phone between litters, which meant cutting fields I wanted in it. -
02
Let one dropdown move a kitten across the whole site
Available, reserved, in a new home — a CMS category, not a hand edit. Changing it moves the kitten through the catalogue, the filters and its own page at once, so the site cannot claim something that stopped being true.
Trade-off. Each state needs its own visibility condition, or the same kitten shows up in two lists. More conditions to set and more places to break — against a family enquiring about a kitten that left a month ago. Easy trade. -
03
Answer the fears before asking for contact
The panel row under the hero is not a feature list — it is the six things people actually ask before a remote purchase: delivery, support after the sale, medical checks, documents, show quality, vaccinations. Testimonials name real people and link to where they were left.
Trade-off. That is a full screen of scroll standing between the visitor and the kittens they came for. Worth it at this price point; on a cheaper product I would have put the goods first and the reassurance after. -
04
Two languages as two page trees, not a switcher
English and Ukrainian are separate collections and separate URLs, so each one is indexable on its own and search can serve the right one to the right buyer.
Trade-off. It doubles the content surface — every kitten exists twice and the owner has to remember both. A runtime switcher would have been a tenth of the work and invisible to Google. This is the price of being findable in two markets. -
05
Hand over every key, not most of them
Anything the owner might ever want to change — litters, photos, prices, statuses, articles — is a CMS field rather than markup. No maintenance retainer, no waiting on me, no dependency.
Trade-off. This is the decision that cost me the design. Full control includes the freedom to break the layout, and two years on the live homepage is no longer the one shown here. I would make the same call again — a cattery cannot wait for a designer to mark a kitten reserved — but I would now hand over a short written guide for the fields that carry the composition, and cap the ones that cannot survive free text.
What the decisions look like
in the product as it shipped
What the structure still does
Counted from the site's own sitemap on 14 August 2026. The CMS I built in 2024 is still generating every one of those pages, filled by the owner without a developer in the loop — which was the point of decision 05.
Lighthouse 12, mobile profile, measured on the live site on 14 August 2026 — not copied from launch day, and not flattering. The page now weighs 3.5 MB: a background video, marketing tags added after handover (Tag Manager, Facebook, Google Ads) and images uploaded since. The slowest element on screen is the headline, which has been rewritten into a keyword string. These are honest numbers for the site as it stands today, not for the site as it shipped — the screens above are the shipped design.