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.
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.
Measured outcomes
Key takeaways
- MariaDB + composite indexes beat PostgreSQL on cost for comparison workloads with 500K+ rows on a single VPS.
- Meilisearch as a search layer eliminates the full-text problem on large datasets. Under 50ms for 750K products.
- Crawling with per-domain rate limiting respects robots.txt and maintains good relationships with partner stores.
- Deduplication is 80% of a comparison engine's value. Without it, users see the same product 5 times and lose trust.
- 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