Illustrative case study

A fictional business. The figures are a modelled scenario, not a client result.

Byalo Cleaners · Dry-cleaning chain, 14 branches · Plovdiv

Ticket BYC-0614 · Technical SEO · 6 months

0102030405060708091011121314

00SEO case study · Drop-off

Fourteen branches, one fragile website: re-engineering a dry-cleaner's stack for local search

Collected

14/14

14 of 14 branch pages indexed and ranking

  • LCP (mobile)4.1s → 1.6s
  • Crawl errors-93%
  • Organic sessions+118%
  • Branch directions requests+76%

01 · The stain

Fourteen counters in Plovdiv. Google could find three.

A page-builder site with duplicated branch pages, 4-second LCP and thousands of orphaned URLs meant Google indexed only three of fourteen locations.

Byalo Cleaners grew branch by branch over a decade, and the website grew the same way: a page builder, two migrations and a copy-pasted page for every new counter. Customers searching for a dry cleaner near Trakia or Karshiyaka were being shown the central branch, a competitor, or nothing at all.

The brief was not more content. It was to take a fragile stack apart, clean each piece, and hang it back up so search engines could crawl, understand and rank every branch on its own merits.

LCP mobile
4.1s
Crawl errors
3,120
Indexed
3/14

02Audit · Tagging

14 tickets, pinned to 14 problems.

Every finding from the crawl, log files and field data got a numbered paper ticket. Pink for speed and crawl, mint for branch pages and markup. Select a ticket to read the stain and the treatment.

Byalo · Garment ticket

No. 01

Item
Hero slider blocks LCP
Stain found
1.9 MB autoplay carousel, LCP element painted at 4.1s on a mid-range Android over 4G.
Treatment
Single static hero, AVIF at 3 widths, fetchpriority=high, slider removed.
Core Web VitalsReady · M1

03Strategy · The process

Four stations on the line, one technical plan.

The engagement runs on our Signal plan (technical seo): fix how the site is built before asking it to rank.

  1. Station 1 · Steam

    Tickets 01 02 03 04

    Core Web Vitals

    The page-builder theme shipped a 1.9 MB slider, eleven stylesheets and a chat bundle on every URL. We rebuilt the critical path: one static AVIF hero with fetchpriority, critical CSS inlined, third parties deferred behind facades and space reserved for the booking widget.

  2. Station 2 · Press

    Tickets 05 06 07

    Location page templating

    Eleven branch pages were copies with a different street name, so Google folded them into one. A single branch record now drives a data-led template: real hours, services offered at that counter, parking, the nearest tram stop, photos and turnaround times, so every page earns its own place in the index.

  3. Station 3 · Sort

    Tickets 08 09 10 11

    Crawl budget

    Server logs showed Googlebot spending 71% of its visits on filter URLs and orphaned builder pages. We closed the parameter traps, pruned 2,960 orphans, collapsed redirect chains and rebuilt the sitemap so crawl time lands on the fourteen pages that make money.

  4. Station 4 · Tag

    Tickets 12 13 14

    Schema markup

    Hours lived in images and prices in a PDF. Each branch now carries DryCleaningOrLaundry markup with geo, opening hours and its parent organisation, and the HTML price list exposes Service and Offer data for suits, wedding dresses and duvets.

04Rail log · Month by month

6 months on the rail.

  1. M1 · Sort

    Audit, crawl triage, the slider goes

    Full crawl and log-file sample. Faceted parameters cut off, hero carousel replaced, critical CSS inlined. LCP falls to 3.4s.

    3/14 indexed · LCP 3.4s

  2. M2 · Treat

    One branch template, clean data

    Branch record built for all fourteen locations; template ships with unique copy, hours and photos. New sitemap submitted. Six branches indexed.

    6/14 indexed · LCP 2.6s

  3. M3 · Press

    Orphans pruned, chains collapsed

    2,960 orphaned URLs removed or redirected, redirect chains rewritten, crawlable branch hub live. Crawl errors down 74%.

    10/14 indexed · LCP 2.0s

  4. M4 · Mark

    Structured data on every branch

    DryCleaningOrLaundry, Service and Offer markup validated. Price list moved from PDF to HTML. Thirteen branches indexed.

    13/14 indexed · LCP 1.8s

  5. M5 · Wrap

    FAQs, breadcrumbs, last branch in

    Turnaround FAQs written per branch, breadcrumbs sitewide. Belomorski, the newest branch, is indexed: 14 of 14.

    14/14 indexed · LCP 1.7s

  6. M6 · Collect

    Field data confirms it

    Chrome UX field data passes Core Web Vitals on mobile. Organic sessions +118%, directions requests +76% against baseline.

    14/14 indexed · LCP 1.6s

05Results · Collection

Pressed, wrapped and waiting at the counter.

  • LCP (mobile)

    4.1s → 1.6s

    0s5s
  • Crawl errors

    -93%

    M0M1M2M3M4M5M6
  • Organic sessions

    +118%

    M0M6
  • Branch directions requests

    +76%

Modelled scenario for a fictional business — not a client result. Rankings and traffic are never guaranteed; see our Terms.

Collection counter · month-end

14/14

branch pages indexed by end of month 6

  • Tsentar indexed
  • Kapana indexed
  • Trakia indexed
  • Karshiyaka indexed
  • Mladezhki Halm indexed
  • Kamenitsa indexed
  • Smirnenski indexed
  • Gagarin indexed
  • Marasha indexed
  • Zapaden indexed
  • Izgrev indexed
  • Proslav indexed
  • Ostromila indexed
  • Belomorski indexed
LCP mobile
1.6s
Crawl errors
218
Organic sessions
11,340 (+118%)
Directions requests
2,605 (+76%)

Rankings, before and after

Google.bg, mobile, Plovdiv location. Month 0 versus month 6.

QueryVol/moBeforeAfter
химическо чистене пловдивdry cleaning plovdiv2,400#14#1
химическо чистене тракияdry cleaning trakia320not ranking#1
пране на килими пловдивcarpet washing plovdiv880#31#3
чистене на сватбена рокляwedding dress cleaning390not ranking#2
химическо чистене кършиякаdry cleaning karshiyaka170not ranking#1
пране на завивки пловдивduvet washing plovdiv260#48#4
химическо чистене близо до менdry cleaners near me1,900#22#2
чистене на костюм ценаsuit cleaning price210not ranking#5

06 · Pick up

Get a plan like this

A technical audit, a ticket for every issue, and a rail that keeps moving until each one is fixed.

← All case studies