Catalog Search Relevance Report
Generated: 2026-04-24 UTC
Issue: BUY-4004
Scope
Run 20 catalog search queries against the local BuyWhere API and document:
- top 3 results
- whether the results are relevant
- whether prices are populated
- the top ranking issues observed
Test Environment
- API endpoint:
http://localhost:8000/v1/products/search - Auth: local SHA-256 API key seeded in local Postgres for this test run
- Date tested: 2026-04-24
Coverage Check
Direct DB check on the local catalog snapshot:
- Active products:
3,845,643 country_code = SG:365,405country_code = US:385,247country_code = AU:0
This means AU has no local inventory in this snapshot. The more important finding is that AU and US-filtered searches still returned SG-tagged results instead of zero results or the correct market.
Results
Singapore Queries
-
iphone 15withcountry=SGTop 3:iPhone 15 Plus Pink 256GB(carousell_my,2050.00 MYR),IPhone 15 Pro Urgent(carousell_my,1500.00 MYR),Iphone 15 plus 128gb(carousell_my,2000.00 MYR) Verdict: Mixed relevance. Product family match is good, but SG search returnedcarousell_myitems priced in MYR. Price quality: Populated, but market/currency mismatch. -
wireless headphoneswithcountry=SGTop 3: sleep headphones headband (amazon.sg,38.55 SGD), Boean Bluetooth headphones (amazon_us_electronics,25.51 USD), ANC over-ear headphones (amazon_us_electronics,114.84 USD) Verdict: Mixed relevance. All are headphones, but the top result is a sleep mask/headband variant rather than a mainstream headphone result. Price quality: Populated. -
protein powderwithcountry=SGTop 3: protein powder travel container set (amazon_us,21.65 USD), International Protein Superior Whey Chocolate (decathlon.sg,135.00 SGD), International Protein Superior Whey Mango (decathlon.sg,135.00 SGD) Verdict: Poor ranking. An accessory container outranks actual protein powder. Price quality: Populated. -
rice cookerwithcountry=SGTop 3:Rice Cooker(carousell_sg_home_appliances,50.00 SGD), mini rice cooker (amazon_us,59.74 USD), mini rice cooker (amazon_us,34.23 USD) Verdict: Mixed relevance. The intent match is correct, but cross-market US items rank high in SG search. Price quality: Populated. -
office chairwithcountry=SGTop 3:Office Chair(carousell.sg,10.00 SGD), ergonomic desk chair (amazon_us,89.21 USD), mesh high-back office chair (amazon_us,140.19 USD) Verdict: Mixed relevance. Intent match is fine, but SG results still skew into US inventory. Price quality: Populated.
Australia Queries
-
air fryerwithcountry=AUTop 3:Air fryer(carousell_sg_home_appliances,30.00 SGD), air fryer paper liners (amazon_us,15.21 USD), 6 QT air fryer (amazon_us,71.01 USD) Verdict: Failed geo relevance. AU filter returned SG/US items. Price quality: Populated. -
laptopwithcountry=AUTop 3: laptop desk for bed/couch (amazon_us,40.77 USD), laptop bed table (amazon_us,34.40 USD), adjustable bed desk for laptop (amazon_us,89.21 USD) Verdict: Poor relevance. Accessories/furniture outrank laptops, and AU filter is ignored. Price quality: Populated. -
running shoeswithcountry=AUTop 3:Running shoes(carousell_my,50.00 MYR), recovery shoe (decathlon.sg,119.00 SGD), duplicate recovery shoe (decathlon.sg,119.00 SGD) Verdict: Failed geo relevance with duplicate results. Price quality: Populated. -
coffee machinewithcountry=AUTop 3: Nespresso Pixie (amazon_us,227.52 USD), espresso machine with grinder (amazon_us,425.85 USD), mini espresso capsule machine (amazon_us,178.42 USD) Verdict: Intent match is reasonable, but AU filter is ignored. Price quality: Populated. -
legowithcountry=AUTop 3:LEGO(amazon.sg,72.70 SGD),LEGO(amazon.sg,22.15 SGD),LEGO(amazon.sg,0.00 SGD) Verdict: Failed geo relevance. AU search returned SG results only. Price quality: Third result is0.00, which should not rank this high.
United States Queries
-
iphone 15withcountry=USTop 3:iPhone 15 Plus Pink 256GB(carousell_my,2050.00 MYR),IPhone 15 Pro Urgent(carousell_my,1500.00 MYR),Iphone 15 plus 128gb(carousell_my,2000.00 MYR) Verdict: Failed geo relevance. US filter returned SG-tagged results fromcarousell_my. Price quality: Populated, but wrong market/currency. -
wireless headphoneswithcountry=USTop 3: sleep headphones headband (amazon.sg,38.55 SGD), Boean Bluetooth headphones (amazon_us_electronics,25.51 USD), ANC over-ear headphones (amazon_us_electronics,114.84 USD) Verdict: Failed geo relevance. First result is SG; ranking also leans toward generic accessories. Price quality: Populated. -
dog foodwithcountry=USTop 3: dog food storage container (amazon_us,30.50 USD), airtight dog food container (amazon_us,44.99 USD), dog food scoop (amazon_us,12.73 USD) Verdict: Poor relevance. Containers and scoop outrank actual dog food. Price quality: Populated. -
office chairwithcountry=USTop 3:Office Chair(carousell.sg,10.00 SGD), ergonomic desk chair (amazon_us,89.21 USD), mesh high-back office chair (amazon_us,140.19 USD) Verdict: Failed geo relevance. SG listing is still rank 1 for a US-filtered query. Price quality: Populated. -
coffee makerwithcountry=USTop 3: coffee maker hot & iced (amazon_us,69.90 USD), same product duplicate (amazon.com,69.95 USD), same product duplicate (amazon.sg,142.41 SGD) Verdict: Mixed to poor. Query intent is right, but duplicate clustering is weak and SG inventory leaks into US results. Price quality: Populated.
Cross-Market Queries
-
macbook airTop 3:MacBook Air(carousell_my,3599.00 MYR), MacBook Air M2 13.6 (bestbuy_us,0.00 USD), MacBook Air M2 13.6 (bestbuy_us,0.00 USD) Verdict: Mixed relevance. Intent match is good, but zero-price duplicates rank in the top 3. Price quality: Two top results have0.00. -
sony wh-1000xm5Top 3:Sony WH-1000XM5(carousell_my,900.00 MYR),Sony WH-1000XM5(carousell_my,850.00 MYR), premium noise-canceling headphones (amazon_us_electronics,316.49 USD) Verdict: Best query in the batch. Results are clearly on-topic, though still SG-biased. Price quality: Populated. -
stanley tumblerTop 3: water bottle organizer for Stanley tumbler (amazon_us,19.11 USD), replacement straws (amazon_us,19.08 USD), Stanley Everyday Tumbler (amazon_us,38.16 USD) Verdict: Poor ranking. Accessories outrank the core tumbler product. Price quality: Populated. -
dyson vacuumTop 3: Dyson vacuum stand holder (carousell_my,28.00 MYR), Dyson battery (bestbuy_us,0.00 USD), Dyson Gen5detect cordless vacuum (bestbuy_us,0.00 USD) Verdict: Poor ranking. Accessory and replacement part outrank the actual vacuum. Price quality: Two top results have0.00. -
nintendo switchTop 3:Nintendo Switch(carousell_my,1000.00 MYR), pro controller (amazon_us_electronics,100.75 USD), Switch 2 camera (bestbuy_us,0.00 USD) Verdict: Mixed relevance. Rank 1 is correct, but accessory/peripheral results are too high. Price quality: Third result has0.00.
Top 5 Issues Found
- Geo filters appear ineffective on this endpoint.
country=US,country=AU,region=us, andregion=sgall produced the same SG-heavy top 3 foriphone 15. - Country metadata is inconsistent with source identity. Example:
carousell_myresults are returned withcountry_code=SGandregion=sg. - Ranking overweights accessories and containers. Queries like
protein powder,dog food,stanley tumbler,dyson vacuum, andlaptopranked accessories ahead of the core product. - SG bias is overwhelming, even for US-filtered queries and unfiltered cross-market searches.
- Zero-price items are allowed into top-ranked positions. At least five of the 60 top-3 results returned
0.00.
Summary
- AU is effectively unusable in the tested local snapshot because there is no AU inventory and the filter does not fail closed.
- US filtering also appears broken in the tested environment despite the catalog containing
385,247active US products. - Relevance is strongest for precise branded queries such as
sony wh-1000xm5. - Relevance is weakest for generic shopping intents where accessories can match the same token set as the target product.
Recommended Follow-Ups
- Reproduce and fix the
countryandregionfilter leak on/v1/products/search. - Audit
source -> country_code/regionnormalization, especially forcarousell_myand US retailers surfaced ascountry_code=SG. - Add ranking penalties for accessory terms like
container,holder,liner,scoop,battery,strap, andstrawwhen the head query implies a core product. - Demote or suppress
price = 0.00results from the first page unless no priced alternatives exist. - Add an automated regression suite around these 20 queries with assertions for geo correctness, price presence, and duplicate clustering.