Catalog Schema Validation Audit: image_url / price / url
Date: 2026-04-19
Issue: BUY-3425
Status: Complete
Scope: Catalog-wide validation of three critical schema fields: image_url, price, url
Summary
| Source | Total | Missing Image | Zero/Missing Price | Missing URL | Flagged |
|---|---|---|---|---|---|
| amazon_jp | 2,397 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| amazon_sg | 126,290 | 0 (0.0%) | 3,789 (3.0%) | 0 | No |
| amazon_us | 289,153 | 0 (0.0%) | 108 (0.04%) | 0 | No |
| apple-authorised-sg | 2,408 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| beauty-lab-sg | 2,382 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| beauty-secrets-sg | 2,352 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| bestdenki_sg | 120 | 0 (0.0%) | 23 (19.2%) | 0 | YES |
| carousell | 1,856 | 10 (0.5%) | 0 (0.0%) | 0 | No |
| challenger | 15,759 | 5 (0.03%) | 0 (0.0%) | 0 | No |
| challenger.sg | 15,958 | 6 (0.04%) | 212 (1.3%) | 0 | No |
| challenger_sg | 16,016 | 6 (0.04%) | 219 (1.4%) | 0 | No |
| cold_storage_sg | 101 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| coldstorage | 1,765 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| courts | 4,257 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| courts_sg | 4,131 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| dailymart-sg | 2,432 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| decathlon | 9,402 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| decathlon_sg | 9,875 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| digital-mall-sg | 2,402 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| fairprice | 73,675 | 2 (0.0%) | 0 (0.0%) | 0 | No |
| fairprice_sg | 72,696 | 2 (0.0%) | 0 (0.0%) | 0 | No |
| fashion-villa-sg | 2,437 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| flipkart_in | 26,299 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| fortytwo | 3,861 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| fortytwo_sg | 3,861 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| gaincity | 2,160 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| guardian | 7,997 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| guardian_sg | 8,024 | 1 (0.01%) | 1 (0.01%) | 0 | No |
| harvey_norman | 9,709 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| home-essentials-sg | 2,430 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| homecraft-sg | 2,364 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| laz-global-sg | 2,421 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| lazada | 110,100 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| lazada_sg | 1,567 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| lifestyle-hub-sg | 2,395 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| medimart-sg | 2,350 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| nexus-tech-sg | 2,239 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| nike | 24 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| nike_sg | 27 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| nike_us | 40 | 0 (0.0%) | 10 (25.0%) | 0 | YES |
| petloverscentre | 7,464 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| popular_sg | 12,501 | 25 (0.2%) | 3 (0.02%) | 0 | No |
| samsung-official-sg | 2,358 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| sasa | 100 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| sg-electronics-mall | 2,378 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| sg-mart-official | 2,355 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| shengsiong_sg | 4,362 | 4 (0.09%) | 0 (0.0%) | 0 | No |
| sports-zone-sg | 2,377 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| tangs | 7,096 | 1 (0.01%) | 0 (0.0%) | 0 | No |
| tangs_sg | 13,222 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| techhub-sg | 2,377 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| tiki_vn | 3,366 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| toysrus | 3,385 | 3,385 (100.0%) | 0 (0.0%) | 0 | YES |
| trendy-closet-sg | 2,290 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| ulta_us | 700 | 0 (0.0%) | 700 (100.0%) | 0 | YES |
| uniqlo-official-sg | 2,299 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| xiaomi-official-sg | 2,384 | 0 (0.0%) | 0 (0.0%) | 0 | No |
| zappos_us | 712 | 644 (90.5%) | 0 (0.0%) | 0 | YES |
Total products: 917,458
Aggregate Findings
| Metric | Count | Rate |
|---|---|---|
| Missing image_url | 4,090 | 0.45% |
| Zero/missing price | 5,065 | 0.55% |
| Missing url | 0 | 0.0% |
Flagged Sources (>10% data quality issues in any field)
1. toysrus — 100% missing image_url
- Issue: All 3,385 products have no image URL
- Action required: Re-scrape Toys R Us feed to populate image URLs, or flag for immediate remediation before any product listing use
2. zappos_us — 90.5% missing image_url
- Issue: 644 of 712 products have no image URL
- Action required: Investigate zappos_us scraper — image extraction may have regressed. Block from agent-facing product display until remediated
3. ulta_us — 100% zero/missing price
- Issue: All 700 products have zero or missing price
- Action required: Investigate ulta_us price extraction pipeline. Likely scraping issue since this affects 100% of products
4. nike_us — 25% zero/missing price
- Issue: 10 of 40 products have zero or missing price
- Action required: Re-scrape Nike US feed or fix price extraction logic
5. bestdenki_sg — 19.2% zero/missing price
- Issue: 23 of 120 products have zero or missing price
- Action required: Investigate bestdenki_sg scraper price extraction
Clean Sources (Within Threshold)
All other sources pass the 10% threshold for all three schema fields.
URL Field Status
The url field (product page URL on the source site) shows 0 missing values across all 917,458 products. This field is fully populated.
Recommendation
- Block toysrus, zappos_us, and ulta_us from any agent-facing product display until schema completeness is remediated
- Investigate nike_us and bestdenki_sg price extraction — 25% and 19.2% missing prices indicate likely scraper regressions
- Monitor zappos_us image_url recovery — 90.5% missing is severe but may be recoverable if scraper fix is straightforward
Next Steps
- Assign toysrus re-scrape to scraping team (priority: critical)
- Investigate zappos_us image extraction regression (priority: critical)
- Audit ulta_us price pipeline (priority: critical)
- Fix nike_us and bestdenki_sg price scrapers (priority: high)
- Re-run audit after remediation