ServicePlatform
A full rebuild, calculators, admin panel, pudser app, and customer portal on Next.js + Supabase.

The Challenge
DM Polering's legacy PHP site couldn't scale with the business. Quote requests had to be priced manually by office staff, there was no real-time calculator for customers, no way to validate whether a postal code was inside the service area, and no admin tools for managing pricing, customers, or complaints. Employees (pudsere) had no field app, and recurring customers couldn't see their own offers or bookings.
Our Solution
A full Next.js 14 + Supabase rebuild. A database-driven pricing engine powers 5 multi-step quote calculators (window cleaning, solar panel cleaning, gutter cleaning, terrace cleaning, algae treatment) with real-time totals, frequency discounts, first-visit 50% off, 25% VAT handling, and automatic service-area validation across 191 postal codes. Token-based offer acceptance, an admin panel for pricing and customer management, a pudser dashboard for field workers, a self-service customer portal, and automated Brevo email flows + SkizBiz CRM sync, all on a single Supabase backend.
Key Features
Real-time Pricing Calculators
Five multi-step calculators with instant price updates as customers adjust frequency, area, window types, and add-ons. Prices come live from the pricing_items table, never hardcoded.
Service Area Validation
191 serviced postal codes across four områder. Automatic validation prevents quotes outside coverage and adjusts distance-based surcharges per zone.
Full Admin & Pudser Dashboards
Manage offers, customers, pricing, complaints, holidays, and field workflows in one backend. Employees get their own app for hindrance reports and recounts.
Token-based Offer Flow
Every quote generates a secure token link. Customers review, accept, and schedule visits through Brevo-powered email flows, with automatic SkizBiz CRM sync.
Technologies Used
How It Works
Real-time PricingBuilt into every flow
Every service has its own multi-step calculator backed by the pricing engine in Supabase. Customers see live totals as they adjust frequency, window types, area, and add-ons. The engine handles frequency discounts, first-visit 50% off, 25% VAT (for private customers), shared surcharges like Opstart and Kørselstillæg, and exterior/interior split pricing, all calculated on the client and validated on the server.
Service AreaIntelligence by postal code
Denmark is split into four områder across 191 serviced postal codes. When a customer enters their address, the platform validates coverage, rejects out-of-area bookings automatically, and applies distance-based surcharges based on the område. No more manual lookups, the map data lives in the database and drives every quote.
Admin + FieldWorkflows in one backend
The admin panel manages offers, customers, prices, complaints, holidays, marketing, and email templates. Field workers (pudsere) get a dedicated dm-kunde dashboard for hindrance reports, recounts, and complaint handling. Brevo powers all transactional emails, and SkizBiz CRM stays in sync automatically via Supabase Edge Functions.
Five services
One pricing engine,five calculators
Every service has its own multi-step form and pricing logic, all powered by a single database and a single backend.
Window Cleaning
Interior, exterior, and bondehus / palæ window types, priced by frame count.
Solar Panel Cleaning
Per-panel pricing with frequency discounts and access surcharges.
Gutter Cleaning
Linear meter pricing with first-visit 50% off and recurring schedules.
Terrace Cleaning
Square-meter pricing with surface-type adjustments and add-ons.
Algae Treatment
Treatment area pricing with multi-year recurring discount tiers.
All prices come live from Supabase and are updated by DM Polering's team through the admin panel, no code deploys.
Let's talk
Let's work together
Book a free demo and see how we can help your business with tailor-made AI solutions.