Home/Work/MK-ORO Jewellery

MK-ORO: a new store,
the same addresses.

A new custom store for a gold and silver jewellery retailer with two shops in Sofia. We replaced a decade-old OpenCart with a fast Next.js site, a Bulgarian-language admin and an AI assistant that helps shoppers choose.

Visit the site ↗
// CLIENT
MK-ORO Jewellery
// SECTOR
Jewellery retail
// SCOPE
Custom store + AI assistant
// YEAR
2026
mk-oro.com
mk-oro.com home page, a gold and silver jewellery store

The brief.

MK-ORO sells gold, silver and diamonds across Bulgaria and runs shops in Sofia Ring Mall and Ovcha Kupel. Its store ran on OpenCart 2.1, a 2015 release, with a theme so heavily modified that every small change took hours. The client wanted a site to last for years, without losing anything that already brought in customers from Google and ads.

Constraints

  • URLs stay put: the same URL structure and the same image paths, to keep traffic from search and Google Images.
  • Ads keep running: the Google and Meta catalogues had to keep the same addresses and product IDs, or the ads would have seen thousands of deleted items.
  • The shop trades every day: the team adds and removes pieces constantly, so the catalogue had to be moved right before launch.
  • Speed as acceptance criterion: the target was 90 out of 100 on mobile in Google PageSpeed.

Our approach.

We compared Shopify, WooCommerce and a custom build against what the store really needs: Econt offices, card payments, instalments and its own logic for product descriptions. The client chose custom. That means no monthly app fees, and the jewellery, its specs and the copy live in a system the team runs itself.

The design went through several directions before they merged into one: a warm light base, a serif for headings and pieces on white, so the jewellery does the talking. We worked in stages, and after each one the client tried the site and sent notes.

Gold jewellery with diamonds category with filters on mk-oro.com
// A category with filters for price, metal, purity and stones, each showing its count

The migration.

In the old store, specs sat in free text. We pulled them into real fields: metal, purity, weight, dimensions, stones, plus cut, colour and clarity for diamonds. Metal and weight covered 98% of the pieces on sale, and where the two sources on the old site disagreed we left the field empty and handed it to the client to check rather than guess. Those fields now feed the filters, the spec table and the meta descriptions.

We compared the URLs, titles and descriptions of both sites and mapped about 9,000 old addresses, including redirects inherited from an even older site. Each one reaches a 200 in a single hop, with no chains. Old image paths still answer, and the Google and Meta feeds sit at the same addresses with the same IDs. Pages for discontinued pieces were dropped on purpose. Customer accounts moved too, with each customer setting a new password on first login.

Before launch we ran a full rehearsal on the client's new server: import, backup, restore and a check of every address. The site went live on 28 October 2026, and the old store stayed on a separate address for reference.

Gold necklace product page with spec table on mk-oro.com
// A product page: the specs are real data now, not free text

What we built.

[01] STORE

A filtered catalogue

Categories and filters for price, metal, purity and stones, search, recently viewed pieces, matching sets and similar models.

[02] AI

An assistant for choosing jewellery

Claude searches the catalogue from plain language, shows real products and takes callback requests. The shop reads the conversations in the admin and writes the texts the assistant answers from.

[03] DELIVERY

Econt from cart to label

Office or address selection with search, cash on delivery and shipping labels right from the order in the admin.

[04] PAYMENTS

Card and instalments

Card payment through EcontPay and a prepared connection to TBI Bank for buying on instalments.

[05] ADMIN

A Bulgarian-language admin

Products, orders, photos in folders, page copy and redirects, with roles for the owner, staff and the SEO agency, and two-factor login.

[06] SPEED

Past the target

93–97 on mobile in Google PageSpeed and 100 for accessibility, measured before launch, plus schema for products, shops and FAQs.

[07] TRACKING

Purchases with their value

GA4, Meta Pixel and Google Ads from the site, with the Meta Conversions API on the server and de-duplication of purchases.

[08] HOSTING

Its own server

A VPS in the client's name in Sofia, with Docker and nightly off-site backups of the database and photos.

The stack.

  • Next.js 16 + React 19 for the storefront
  • Payload CMS + PostgreSQL for the admin and data
  • Claude for the assistant, with tools over the catalogue and a daily spend cap
  • Econt + EcontPay for delivery and card payments
  • GA4, Google Ads, Meta Pixel + Conversions API for tracking
  • Docker, Caddy, restic on a VPS in Sofia