E-commerce · Comparison

DeBuget — price comparison with 750,000 products and daily feeds from 70+ stores

DeBuget.ro compares prices across 750,000+ products from 70+ Romanian online stores. The technical challenge: daily feed ingestion (millions of rows), full-text search under 200ms, product pages loading under 1s LCP — all on infrastructure costing under €100/month.

IndustryE-commerce / Price Comparison
Duration6 months
StatusLive · daily crawler active
Team2 developers
CountryRomania

Business context

The price comparison model (compari.ro, price.ro) has existed in Romania since 2000, but most platforms run legacy infrastructure: slow pages (3-5s LCP), clunky search, data updated weekly. DeBuget needed to solve three problems: (1) ingestion of 70+ feeds in different formats (CSV, XML, JSON, sometimes HTML crawling), (2) intelligent deduplication — the same product listed by 5 stores under slightly different names, (3) mobile speed where 80% of traffic comes from.

The real constraint: €80-100/month infrastructure budget. No AWS, no Google Cloud. A Hetzner VPS with MariaDB and Docker. Every architecture decision had to fit that budget, including the daily crawl processing 2-3 million rows.

Tech stack & key decisions

MariaDB + composite indexes for comparison queries

Chose MariaDB over PostgreSQL for cost: MariaDB on a Hetzner VPS with 16GB RAM processes comparison queries on 750K products under 100ms with properly built composite indexes. Key index: (category_id, is_active, offer_count) — allows category filtering with active offers in a single index scan.

Deduplication via product hash + fuzzy matching

Same product appears under 5 different names in feeds. Stage 1: normalized hash (brand + model + capacity) for exact matching. Stage 2: Levenshtein algorithm on normalized names for approximate matching. Deduplication rate: 92% automatic, 8% manual verification via admin dashboard.

Async crawler with Celery + per-store rate limiting

Daily ingestion runs on Celery workers with per-store rate limiting (we respect robots.txt and send max 1 request/second per domain). Full feeds (CSV/XML) download once daily at 2AM. Incremental price updates every 4 hours for top 1000 products (most searched). Total ingestion time: 3-4 hours on VPS.

Python Django MariaDB Celery Redis Docker Nginx Hetzner VPS Cloudflare

Measured outcomes

750K+Products indexed from 70+ stores
<200msAverage search time (Meilisearch)
0.8sAverage mobile LCP (Lighthouse 98)
€85Monthly infrastructure cost (VPS + CF)
3-4hDaily full ingestion time
92%Automatic deduplication rate

Key takeaways

  1. MariaDB + composite indexes beat PostgreSQL on cost for comparison workloads with 500K+ rows on a single VPS.
  2. Meilisearch as a search layer eliminates the full-text problem on large datasets. Under 50ms for 750K products.
  3. Crawling with per-domain rate limiting respects robots.txt and maintains good relationships with partner stores.
  4. Deduplication is 80% of a comparison engine's value. Without it, users see the same product 5 times and lose trust.
  5. Server-side affiliate tracking survives ad-blockers. Cookie-only = 30-40% conversion loss in 2026.

«DeBuget grew from 0 to 750,000 indexed products in 6 months, on infrastructure under €100/month. Faintech chose the right stack for our budget constraint without sacrificing speed.» — Eduard Gridan, founder DeBuget

Have a similar project?

Written discovery in 48h with detailed technical specification.

Get a custom quote