Data Platform
The Marble Group: Natural Stone Inventory Intelligence Platform for UK Stone Buyers
One dashboard for 10 UK stone suppliers — automated price reconciliation, real-time stock alerts, instant PDF/Excel export. Replace 15+ hours of manual supplier research every week.
Django
Docker
PostgreSQL
Python
Redis
10
UK Suppliers Integrated
50+
Raw Stone Types Normalised
100%
Automated Supplier Price Reconciliation
The Problem
Stone Buyers Waste 15+ Hours Every Week on Manual Research
The UK natural stone trade is fragmented across dozens of independent wholesalers, each with a completely custom inventory system. Some suppliers run Algolia-powered catalogue search. Others require full browser automation through login walls with infinite scroll. Others expose internal REST or JSON APIs with no public documentation. And others serve classic paginated HTML.
Buyers and trade professionals had no way to compare inventory or pricing across suppliers without visiting each site individually and manually reconciling data — a process measured in hours, not minutes. Price lists arrived as Excel files that had to be manually cross-referenced against product pages. There was no single source of truth.
Our Solution
An Async Scraping Platform Purpose-Built for Natural Stone
We designed a Django application with a dedicated scraper module for each of the 10 suppliers, all feeding into a single normalised PostgreSQL schema. Each scraper uses the right tool for the job: Playwright with authenticated sessions and infinite scroll detection for Slabware-platform suppliers, async aiohttp with BeautifulSoup for REST/HTML endpoints, and Algolia API integration for catalogue-search-backed suppliers.
A shared normalisation layer ('common.py') standardises every incoming record before it touches the database — mapping raw stone type strings and finish names to canonical values via case-normalised lookup tables with 50+ and 60+ entries respectively. The Slabware bundle parser handles unit conversion (mm/cm/m), HTML-stripped price extraction, dimension fallback parsing, and computed price-per-slab calculation in a single reusable function.
A web dashboard exposes the aggregated inventory with django-filter-powered search and filtering. A price reconciliation module accepts uploaded supplier Excel price lists (parsed with pandas + openpyxl), matches rows by name and thickness, and updates price fields in bulk. PDF and colour-highlighted Excel exports are generated with ReportLab and openpyxl. Discord webhooks deliver scraper run summaries and tracebacks.
Architecture
Django 5 + Django REST Framework API. PostgreSQL database with Supplier, StoneItemFormatted, StoneItemImage, and SupplierPDF models. Celery for scheduled scraper runs. Playwright (headless Chromium) for authenticated browser automation. async aiohttp with 10 concurrent connections for high-throughput detail fetching. BeautifulSoup HTML parsing. pandas + openpyxl for Excel price list reconciliation. ReportLab for PDF generation. Discord webhook notifications per scraper run.
The Result
15+ Hours Saved Weekly — One Dashboard Replaces 10 Supplier Portals
The Marble Group saved the buying team 15+ hours every week by replacing fragmented manual research with a single live dashboard. All 10 UK suppliers are automatically scraped on schedule — with normalised stone types and finish categories enabling direct cross-supplier price and availability comparisons that were previously impossible without hours of manual work.
The automated price reconciliation tool eliminated the Excel-matching workflow entirely. Buyers upload one price list and the system updates hundreds of product records in seconds — a task that previously took the better part of a day. Instant Discord alerts fire the moment any supplier changes a price or stock level, ensuring every buying decision is made on the freshest available data.
The platform now powers every purchasing and pricing decision across the business, turning what was a research burden into a genuine competitive intelligence advantage.
Want scalable architecture and measurable results like this?
Book an Architecture Audit
Build Something Like This
// free scoping call · senior engineers · no commitment
Project scope, timelines, and architecture options in one 45-minute session.
More Work