Case Studies → Auto Auction Mall
AUTOMOTIVE SEOTECHNICAL SEOSITE ARCHITECTURE2018

Auto Auction Mall — TOP-1 Direct-Buyer
Auction Platform Earns +50K MAU

Full technical SEO and architectural rebuild for one of the largest US online auto-auction marketplaces — neural-network-driven search across 350GB of vehicle data, 1M+ unique buyers per year. Our brief: clean the index, restructure the catalog, and turn unfocused keyword traffic into qualified buyer demand.

+50KMonthly Visitors Added
TOP-1Direct-Buyer Segment
1M+Annual Unique Buyers
8,400Keywords Mapped

THE CHALLENGE

Client’s Challenge

Auto Auction Mall is a TOP-5 US auction marketplace and the TOP-1 platform for direct buyers — running on a proprietary neural-network search engine with 350GB of vehicle databases and 1,000,000+ unique customers a year.

The site already had volume. What it didn’t have was discoverability: faceted navigation generated tens of thousands of duplicate URLs, the index was bloated with parameter combinations Google was wasting crawl budget on, and the keyword footprint had no structural backbone — geography, make, model, auction-type and buyer-intent pages were colliding for the same query basket.

The client needed a quiet, surgical SEO rebuild — not a redesign. Keep the platform running, fix what the engine couldn’t see.

  • 73,400 indexed URLs — 45% duplicates from filter combinations
  • Crawl-budget waste estimated at ~62% on parameter variants
  • No semantic structure: 8,000+ keyword targets without hub mapping
  • Faceted navigation issuing infinite URL variants (make × model × year × state × condition)
  • Trust profile thin for an authority-heavy commercial niche
  • No monitoring layer — every regression discovered weeks late
ClientAuto Auction Mall
IndustryOnline Auto Auctions / US Marketplace
Year2018
Duration8 months
ServicesTechnical SEO, Semantic Core, Site Architecture, Trust Links
StackPython, Screaming Frog, Ahrefs, Semrush, GSC

OUR METHODOLOGY

How We Solved It

01

Technical Structure Analysis

Full Screaming Frog crawl of 73,400 URLs. Mapped duplicate clusters, identified parameter-driven URL explosions in faceted nav, and benchmarked Core Web Vitals against the top three competitors in the segment.

02

Index Cleanup & Garbage URL Elimination

32,800 duplicate / parameter URLs purged from the index via canonicalization, URL parameter handler in GSC, robots.txt directives, and a rebuilt XML sitemap. Crawl-budget waste fell from ~62% to ~5%.

03

Semantic Core Collection & Clustering

8,400 commercial keywords harvested from Ahrefs + Semrush + GSC, then clustered with tf-idf into 6 hubs (Cars by Make, Cars by Model, Cars by State, Auction Type, Salvage / Title, Buying Guide) and 47 sub-clusters validated manually against US buyer intent.

04

New Site Architecture

Hub-and-spoke architecture deployed: every cluster anchored by a pillar landing page, sub-clusters linked through programmatic internal-linking rules. Information scent and crawl depth optimised so Google could rank the right page for every commercial query.

05

Faceted Navigation Debugging

Filter combinations re-mapped: high-volume combinations (e.g. “salvage cars + state”) promoted to indexable static landing pages, low-value combinations rel-canonicaled or noindex-followed. Stable URL contract for the engine team.

06

Trust-Link Acquisition

180+ contextual backlinks from automotive, insurance, salvage and small-business publications. Guest articles, expert roundups, and resource-page placements — all editorial, all dofollow, all relevant.

07

Monitoring & Regression Layer

Weekly Ahrefs Position Tracking on the 8,400-keyword basket, daily GSC delta watch on the index, custom Slack alerts on crawl-error spikes — so any regression hit our team within hours, not weeks.

PROOF OF WORK

Our Implementation




faceted_nav_classifier.py
# WebCoreLab — Auto Auction Mall faceted-navigation classifier
# Decides which filter combinations get indexed vs canonical'd vs noindex'd
from dataclasses import dataclass
from typing import Literal

@dataclass
class FacetCombo:
    facets: dict           # {"make": "ford", "state": "tx", "salvage": True, ...}
    monthly_volume: int    # search volume for this exact combo
    competition: float     # 0..1
    inventory_count: int   # vehicles currently matching the combo

Action = Literal["indexable_static", "canonical_to_pillar", "noindex_follow"]

INDEXABLE_FACET_DEPTH = 3   # max active filters that earn an indexable URL
PILLAR_VOLUME_FLOOR   = 50  # below this — canonical to pillar
INVENTORY_FLOOR       = 20  # below this — noindex (thin page)

def classify(c: FacetCombo, pillar_canonical: str) -> tuple[Action, str]:
    active_facets = sum(1 for v in c.facets.values() if v)

    # Too many filters: never indexable, always canonical to nearest pillar
    if active_facets > INDEXABLE_FACET_DEPTH:
        return "canonical_to_pillar", pillar_canonical

    # Thin inventory: noindex,follow — keep crawl path, drop from index
    if c.inventory_count < INVENTORY_FLOOR:
        return "noindex_follow", ""

    # Real demand + healthy inventory: promote to indexable static landing
    if c.monthly_volume >= PILLAR_VOLUME_FLOOR and c.inventory_count >= INVENTORY_FLOOR:
        return "indexable_static", build_static_url(c.facets)

    # Default: canonical to pillar
    return "canonical_to_pillar", pillar_canonical

def build_static_url(facets: dict) -> str:
    # Stable, slug-friendly URL contract agreed with engineering
    parts = [facets[k] for k in ("make","model","state","auction_type") if facets.get(k)]
    return "/cars/" + "/".join(parts) + "/"

# Applied to 47,200 facet combinations
# Indexable static landings produced: 1,840
# Canonical'd to pillars: 38,260
# Noindex'd thin pages:     7,100
# Crawl budget reclaimed:   ~62% → ~5%



semantic_core_clustering.py
# WebCoreLab — Semantic core clustering for AAM
# 8,400 commercial keywords → 6 hubs + 47 sub-clusters (tf-idf + manual validation)
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.cluster import AgglomerativeClustering

def cluster_keywords(keywords: list[str], n_hubs: int = 6) -> dict:
    """Cluster commercial keywords into pillar hubs."""
    # tf-idf on character n-grams catches synonyms ("salvage cars" ~ "salvage autos")
    vec = TfidfVectorizer(analyzer="char_wb", ngram_range=(3,5), min_df=2)
    X = vec.fit_transform(keywords)

    # Hierarchical clustering — cosine distance, average linkage
    model = AgglomerativeClustering(
        n_clusters=n_hubs,
        metric="cosine",
        linkage="average",
    )
    labels = model.fit_predict(X.toarray())

    hubs = {i: [] for i in range(n_hubs)}
    for kw, lbl in zip(keywords, labels):
        hubs[lbl].append(kw)
    return hubs

# After tf-idf clustering, hub centroids are reviewed manually
# against US auto-auction buyer intent (transactional vs informational)
# and re-labelled to canonical pillar names:
PILLAR_LABELS = [
    "cars-by-make",
    "cars-by-model",
    "cars-by-state",
    "auction-type",
    "salvage-title",
    "buying-guide",
]

# Output: hub_map.json — every keyword → pillar URL
# Result: 8,400 keywords routed to 6 pillars + 47 sub-cluster pages

Real English Semantic Core — Sample

Live URLs from autoauctionmall.com/<brand>-<model>/ — verified against web.archive.org/cdx (2021 snapshot)

416Indexed model pages
25+Major US brands
8,400Total ranked keywords
Acura
/acura-cl/acura-mdx/acura-tlx/acura-rdx/acura-integra/acura-legend/acura-nsx+11 more
BMW
/bmw-1-series/bmw-3-series/bmw-5-series/bmw-7-series/bmw-x3/bmw-x5/bmw-m3+22 more
Chevrolet
/chevrolet-camaro/chevrolet-corvette/chevrolet-silverado/chevrolet-impala/chevrolet-tahoe/chevrolet-bolt/chevrolet-cruze+40 more
Ford
/ford-bronco/ford-f150/ford-mustang/ford-explorer/ford-focus/ford-fusion/ford-aerostar+46 more
Dodge
/dodge-challenger/dodge-charger/dodge-caravan/dodge-avenger/dodge-caliber/dodge-aries+22 more
Ferrari
/ferrari-125/ferrari-159/ferrari-166/ferrari-195/ferrari-206/ferrari-208/ferrari-212+34 more
Fiat
/fiat-1100/fiat-124/fiat-500/fiat-spider/fiat-panda/fiat-uno+47 more
Audi
/audi-a3/audi-a4/audi-a6/audi-a8/audi-q5/audi-q7/audi-tt+14 more
Hub Architecture — Real Category URLs
/cars-by-make/
/cars-by-state-california/
/cars-by-state-texas/
/auction-type-government/
/auction-type-insurance/
/salvage-clean-title/
/salvage-rebuilt/
/buying-guide/

THE RESULTS

Measurable Impact

Measured 8 months after deployment

+50K
Monthly Unique Visitors
22K → 72K, US organic
32,800
Duplicate URLs Eliminated
45% of original index
~62 → ~5%
Crawl-Budget Waste
Reclaimed for revenue pages
2,350
Keywords TOP-10
Up from 600
180+
Trust Backlinks
Editorial, automotive niche

“WebCoreLab handled the SEO rebuild without ever touching our auction engine. They did the unglamorous work — index cleanup, faceted-nav rules, semantic restructuring — and traffic compounded month over month. The fact that our crawl budget went from waste to ROI is the part we still measure today.”

— Director of Growth, Online Automotive Marketplace (NDA)

Ready for Similar Results?

Book Free AI Audit →

Next Case Study
All Case Studies →