All Services Website Design Perth SEO Perth Google Ads Perth Facebook Ads Perth Content & Video Real Estate Videography Shopify Perth AI Services Perth Case Studies Free Strategy Call
Equipment Group parts search website built by Source Digital Perth
Custom Website Development Perth — Case Study

From Brochure Site
to 35,000 Pages.

How a Perth web development project grew into a custom RFQ system and a 35,268-page SEO catalog — extracted from 13 PDFs across 13 drill rig models.

Client
Equipment Group
Industry
Mining & Construction
Location
Perth, WA
Engagement
Ongoing
Stack
Custom HTML · Python · Shopify · Netlify
Custom HTML/CSS/JS
13 PDFs Processed
35,268 Pages Generated
Ongoing Client
Pages Live
Unique Parts
Machines Covered
Keyword Variants
Redirect Rules
Image Coverage
01
Phase One

The Brochure Website

Equipment Group came to Source Digital needing a website that matched the professionalism of their operation. They supply spare parts to mining companies globally — the kind of business where first impressions and technical credibility matter.

We built a full custom dark-theme site from scratch. No templates, no page builders. The design system used Fraunces for display headings, DM Mono for technical part data, and a restrained blue accent that reads cleanly in industrial environments.

The homepage includes a world map built with D3.js and TopoJSON — a canvas-rendered interactive showing Equipment Group's 24 service countries, with animated pulse rings on hover. Hero video, scan-line icon animations, and three supporting pages rounded out the build.

  • Full custom dark-theme website
  • D3.js interactive world map — 24 countries
  • About, What We Do, Contact pages
  • Full SEO — schema markup, Open Graph, canonical URLs
  • Google Analytics 4 + Facebook Pixel
  • Deployed to Netlify
Equipment Group parts search mobile view
02
Phase Two

Custom Parts Search & RFQ System

With the site live, the next challenge was adding genuine utility. The Atlas Copco SmartROC T45 spare parts catalog existed only as a PDF. We extracted 3,927 parts, built a structured JavaScript data file, and uploaded all assembly diagram images to Shopify CDN.

The centrepiece was the RFQ system — built entirely from scratch. A quote drawer that slides in from the right. Customers search, add parts with quantities, and build a quote list that persists across page navigation via localStorage. No lost quotes.

Submit fires a mailto: link first — opening Outlook, Apple Mail, or whatever the customer has. If nothing opens within 800ms, Gmail opens automatically with the full quote pre-formatted. Works on every device, every browser, every email setup.

  • 3,927 parts extracted from PDF
  • Real-time search — part number or description
  • Custom RFQ system — quote drawer, localStorage, dual email submit
  • Multi-image diagram gallery — 753 parts with multiple images
  • 3,927 individual SEO part pages generated via Node.js
  • Schema.org Product markup + sitemap
Built from scratch. Zero plugins.
The RFQ system uses no third-party tools — no Typeform, no Formspree, no jQuery. Pure vanilla JavaScript with localStorage persistence, slide-in drawer, quantity controls, and button state restoration on page load.
Dual mailto + Gmail fallback
Most desktop users have no default email client set. Our submit logic fires mailto: first, then opens Gmail 800ms later as a fallback — so the quote always reaches the client regardless of device or setup.
753 parts with multiple diagrams
Parts that appear in multiple assemblies show all relevant diagrams — thumbnail strip, click to cycle, counter. A mechanic identifying a seal can see every assembly context at once.

Thirteen machines. Thirteen PDFs. Four completely different proprietary documentation formats from different Epiroc and Atlas Copco internal systems. No existing digital data. No shared structure between formats.

We wrote custom Python extraction scripts for each format — pulling part numbers, descriptions, assembly groupings, reference numbers, quantities, specifications, and embedded diagram images directly from the PDFs. 76,770 raw part records and 4,041 images extracted. Zero rows entered manually.

After deduplication, 31,354 unique products imported to Shopify. A cross-machine image lookup built — a part appearing in 7 assemblies across 3 machines gets all 7 relevant diagrams. 433 blank and corrupt images automatically detected and excluded.

Then a custom Python static site generator produced 35,268 fully self-contained HTML pages. Every page generated with unique SEO markup, JSON-LD structured data, part numbers in all 3 search formats, up to 15 assembly diagrams, and the full RFQ system.

The RFQ system was extended for the new page types — assembly pages let customers add all parts in an assembly with one click. Button states restore from localStorage on page load. Quote persists across all 35,268 pages.

62,708 redirect rules ensure every possible URL format resolves correctly. Netlify's CDN diffing means subsequent deploys only push files that actually changed — typically 2,000–5,000 files rather than all 35,000.

4 PDF formats
Each catalog used a different internal documentation system. We wrote a custom Python extractor for each. No off-the-shelf tool could handle them all.
35,268 pages. No CMS.
Pure static HTML. No WordPress, no database, no runtime server. Pages load under 1 second. Hosting costs are near zero.
94,062 keyword variants
Every part number indexed in 3 formats — spaced, compact, dashed. 31,354 × 3 = 94,062 search queries with a dedicated page.
62,708 redirects
Every URL format variation resolves to the canonical page. Zero 404s regardless of how a part number is formatted.

The Numbers

Full scope across all three phases.

MetricPhase 2 (T45)Phase 3 (All Machines)Total
PDFs processed11313
Parts3,927+27,42731,354
Pages generated3,927+31,34135,268
Multi-image parts75310,89010,890
Redirect rules~7,85462,70862,708
Keyword variants~11,78194,06294,062
Machines covered11313
Zero Competition
94,062
Part number keyword variants. Almost none have competing pages. Nobody else has published individual HTML pages for these part numbers.
Product Schema
31,354
Parts with schema.org Product markup — SKU, MPN in 3 formats, brand, manufacturer, offer with AUD pricing and AU area served. Rich results eligible.
Image Coverage
99%
Assembly diagram images on 30,908 of 31,354 parts. Google uses product images for indexing and rich result eligibility.
Sitemap
35,270
URLs submitted to Google Search Console with priority weighting — machines first, then assemblies, then individual parts.
Expected Rank
#1
For exact part number searches. Zero competing indexed pages. Once Google crawls the page, it ranks — there's nothing else to beat.
Redirects
62,708
Rules ensuring every URL format resolves. No broken links, no diluted link equity, no 404s for any part number variation.

Every component was chosen for performance, maintainability, and cost. The entire site is static HTML — no CMS overhead, no database queries, no plugin vulnerabilities. It loads fast, ranks well, and costs almost nothing to host.

Vanilla HTML/CSS/JS Python (pdfplumber, PyMuPDF) Node.js (custom generator) Python (site generator) D3.js + TopoJSON Shopify (product catalog) Shopify CDN (images) Netlify (hosting) Netlify CLI (deployment) Google Analytics 4 Facebook Pixel Fraunces + DM Sans
Why static HTML?
35,268 pages served as flat files from Netlify's CDN. No server render time, no database lookups, no CMS plugin conflicts. Sub-second load times globally. Hosting costs near zero. Google can crawl every page without JavaScript rendering.
Why Shopify for the backend?
Shopify provides free image CDN hosting, a searchable product admin, and a second indexable product layer. The static site references Shopify CDN image URLs — no self-hosted image infrastructure needed.
"
Source Digital took our entire parts catalogue — 13 machines, 13 PDFs — and built something we couldn't have imagined. The website, the search tool, the quote system, and now 35,000 pages. They handled everything from design to data extraction to deployment.
Equipment Group Pty Ltd — Perth, Western Australia

Have a Similar
Challenge? Let's Talk.

Product data locked in PDFs, spreadsheets, or legacy systems? We build data pipelines, custom RFQ systems, and SEO-optimised pages at scale.