(Case study) · 2026

DentalCheck

The dental supplies comparison tool: six supplier catalogues collected daily, over 61,000 matched references and a cart automatically split to the best price.

Type
SaaS · Price comparison
Role
Design, full-stack development & data
Year
2026
Visit the live site
DentalCheck home page with a price comparison example

The problem

A dental practice buys supplies from several distributors, and the same reference can differ by tens of euros from one to another. Finding the right price means opening six websites, searching for the same bur or composite everywhere and keeping a spreadsheet up to date.

The solution

DentalCheck collects the public catalogues of six suppliers every day (Mega Dental, GACD, Dental Click, Dental Privé, Discount Dentaire, Dental Good Deal) and groups them by manufacturer reference: one row per product, every price side by side.

Practitioners search once, by name, reference or EAN code, and instantly see the gap between the most and least expensive offer. Every price is dated and kept over 90 records to track its trend. The cart then sends each line to the cheapest supplier and shows the money saved.

The data pipeline

Collection is handled by Python scrapers that query the catalogues directly over HTTP and extract product data with compiled regular expressions, without loading a browser: fast and cheap. Playwright is only used as a last resort, to get past a Cloudflare challenge.

A matching engine merges duplicates by manufacturer part number (MPN), then product images are synced to Cloudinary in parallel. From the admin panel, I run the scrapers and follow their logs live through Server-Sent Events.

A real SaaS product

Sign-up works by email or with Google, with a 14-day trial and no credit card. The Pro plan at €20 excl. VAT per month is handled by Stripe and unlocks favourite lists, per-product notes, the split cart and anomaly reports. An admin area manages accounts and allows bulk catalogue fixes.

Tech stack

  • Next.js 16 & React 19UI, API routes and pre-rendered pages (App Router)
  • MongoDB AtlasCatalogue, price history, accounts and favourites
  • PythonCatalogue scrapers (Requests, lxml, compiled regex), manufacturer-reference matching
  • StripeSubscriptions, free trial and customer portal
  • Better AuthEmail or Google sign-in, trial / pro / admin roles
  • CloudinaryProduct images served via CDN, synced multi-threaded
  • NodemailerTransactional emails
  • VercelHosting and static page caching

SEO, performance & accessibility

  • Public pages pre-rendered by Next.js and served from Vercel's cache: near-instant display
  • Carefully written title, meta description and Open Graph tags for Google and social sharing
  • Declared language, clean heading structure and readable URLs
  • No ad trackers or third-party analytics: lighter pages and a GDPR-compliant site
  • Reading comfort panel: light, dark or high-contrast theme, text size up to 150%, spacing, dyslexia-friendly font, underlined links, reduced motion and stronger focus
  • Bottom navigation bar on mobile, designed for use in the practice

Screenshots

DentalCheck reading comfort panel
DentalCheck reading comfort panel
The six tracked suppliers and the two subscription plans
The six tracked suppliers and the two subscription plans
DentalCheck on mobile
DentalCheck on mobile

A similar project?

Let's talk about what you want to build. Reply within 24h.

Contact me
Next projectPro Concept Agencement