- Total Products: 43,641 across 10 brands
- Total Brands: 10
- Data Quality Issues:
- Missing Product Types: 4,891 (11.2%)
- Category/ProductType Mismatches: 9,441 (21.6%)
| Brand | Products | Price Range (PKR) | Avg Price | Top Categories |
|---|---|---|---|---|
| ENGINE | 13,929 | 210 - 19,999 | 1,649 | Men (8,141), Accessories (3,251), Women (2,537) |
| UNZE | 11,274 | 1 - 18,999 | 2,647 | Men (9,777), Accessories (1,330), Women (167) |
| FURORJEANS | 5,485 | 116 - 11,996 | 2,186 | Men (5,483), Accessories (2) |
| OUTFITTERS | 3,854 | 190 - 16,990 | 3,227 | TEES & POLOS (790), SWEATSHIRTS (408), TROUSERS (393) |
| LAMA RETAIL | 2,349 | 350 - 39,950 | 7,023 | Clothing (1,144), Unknown (675), Footwear (359) |
| BEONESHOPONE | 2,119 | 399 - 15,999 | 2,609 | Men (1,231), Accessories (508), Women (380) |
| BREAKOUT | 2,001 | 449 - 22,999 | 4,559 | Men (1,335), Accessories (344), Women (322) |
| ALMAS | 1,657 | 250 - 15,000 | 5,216 | Men (1,200), Accessories (457) |
| 999PK | 614 | 449 - 7,499 | 2,836 | Accessories (588), Women (26) |
| HUSTLENHOLLA | 359 | 719 - 14,999 | 3,514 | Men (359) |
Top Categories:
- Men: 27,526 (63.07%) - Dominant category
- Accessories: 6,651 (15.24%)
- Women: 3,432 (7.86%)
- Clothing: 1,144 (2.62%)
- TEES & POLOS: 790 (1.81%)
- Unknown: 675 (1.55%) - Needs cleanup
- Men: 5,537 (12.69%)
- Boys: 3,839 (8.80%)
- Girls: 2,428 (5.56%)
- Women: 2,126 (4.87%)
- Heels: 1,034 (2.37%)
- Moccasins: 945 (2.17%)
- Flats: 852 (1.95%)
- Men Shirts: 793 (1.82%)
- Block Heels: 773 (1.77%)
- Men Graphic Tees: 592 (1.36%)
Total Unique Product Types: 462 (highly fragmented)
Top Vendors:
- ENGINE: 13,929 (31.92%)
- Unze London: 11,274 (25.83%)
- Furorjeans: 5,485 (12.57%)
- LAMA RETAIL: 2,275 (5.21%)
- ALMAS: 1,610 (3.69%)
Total Unique Vendors: 33
- Comprehensive Coverage: 43K+ products across diverse categories
- Price Range Diversity: Products from PKR 1 to PKR 39,950
- Multiple Brands: Good variety across 10 different brands
- Rich Metadata: Most products have categories, tags, and specifications
-
Category Inconsistencies:
- Many products have "Accessories" as category but should be categorized by product type
- Example: 999pk has 588 products labeled "Accessories" but they're actually pants, jackets, coats, etc.
-
Missing Product Types:
- 4,891 products (11.2%) missing productType field
- Outfitters has 0 product types defined
-
Category/ProductType Mismatches:
- 9,441 products (21.6%) have mismatched categories and product types
- Example: Category="Men" but ProductType="Women Apparel"
-
Inconsistent Naming:
- Multiple variations: "Men Apparel" vs "Men's Apparel" vs "Men Apparel"
- "Women Footwear" vs "Women's Footwear"
- Case inconsistencies: "BOTTOM" vs "Bottom"
-
Vendor Inconsistencies:
- Some brands use vendor name, others use brand name
- Multiple vendor names for same brand (e.g., "ALMAS" vs "Almas")
Problem: Categories are inconsistent across brands. Some use generic "Accessories" while others use specific categories like "TEES & POLOS".
Solution: Create a unified category hierarchy:
Main Categories:
├── Men
│ ├── Apparel
│ │ ├── Tops (Shirts, Tees, Polos, Sweaters)
│ │ ├── Bottoms (Pants, Jeans, Shorts)
│ │ ├── Outerwear (Jackets, Coats, Blazers)
│ │ └── Accessories (Caps, Socks, Bags)
│ └── Footwear
│ ├── Casual (Sneakers, Trainers)
│ ├── Formal (Loafers, Moccasins)
│ └── Sports
├── Women
│ ├── Apparel
│ │ ├── Tops
│ │ ├── Bottoms
│ │ ├── Dresses
│ │ ├── Outerwear
│ │ └── Accessories
│ └── Footwear
│ ├── Heels
│ ├── Flats
│ ├── Sandals
│ └── Boots
├── Kids
│ ├── Boys
│ └── Girls
└── Unisex
Current State: Basic filters for department, category, subCategory, brand, price, and search.
Recommended Enhancements:
interface CategoryFilter {
mainCategory: 'Men' | 'Women' | 'Kids' | 'Unisex' | 'All';
subCategory?: string; // Apparel, Footwear, Accessories
productType?: string; // Shirts, Jeans, Heels, etc.
}- Group by brand families (e.g., all ENGINE variants)
- Show product count per brand
- Allow multi-select
- Replace text inputs with visual slider
- Show min/max from actual data
- Quick select buttons: "Under 1,000", "1,000-5,000", "5,000-10,000", "10,000+"
- Since productType is more specific than category, add as separate filter
- Show top 20-30 product types with counts
- Allow search within product types
- Filter by vendor (useful for multi-brand stores)
- Show vendor count per brand
- Popular tags: "Sale", "New In", "Winter", "Summer"
- Allow multiple tag selection
- Show tag counts
- Size availability
- Color (extract from tags or specifications)
- Material (extract from specifications)
- In Stock / Out of Stock
- On Sale / Regular Price
Current: Basic text search
Recommended:
- Fuzzy Search: Handle typos and variations
- Search Suggestions: Auto-complete based on product names, categories, brands
- Search Filters: After search, show relevant filters based on results
- Search History: Store recent searches
- Search Analytics: Track popular searches
// Enhanced FilterSidebar component should include:
1. Collapsible Sections
- Each filter group can be expanded/collapsed
- Remember user preferences
2. Active Filter Pills
- Show selected filters as removable pills above products
- Quick clear individual filters
3. Filter Counts
- Show product count for each filter option
- Update counts based on other active filters (faceted search)
4. Range Filters
- Price range slider
- Size range (if applicable)
5. Sort Options
- Price: Low to High / High to Low
- Name: A-Z / Z-A
- Newest First
- Most Popular (if tracking available)
- Relevance (for search results)- Grid/List Toggle: Already implemented ✓
- Product Cards: Show key info at a glance
- Brand badge
- Category tag
- Price (with original price if on sale)
- Quick view button
- Lazy Loading: Load more products as user scrolls
- Virtual Scrolling: For better performance with large datasets
Home > Scraped Products > Men > Apparel > Shirts
Showing 1-24 of 43,641 products
Filtered by: Men, Price: PKR 1,000 - 5,000, Brand: ENGINE
interface FacetedSearchResponse {
products: Product[];
pagination: {
page: number;
limit: number;
total: number;
totalPages: number;
};
facets: {
categories: { [key: string]: number }; // Count per category
subCategories: { [key: string]: number };
productTypes: { [key: string]: number };
brands: { [key: string]: number };
vendors: { [key: string]: number };
priceRanges: {
min: number;
max: number;
ranges: { [range: string]: number }; // "0-1000": 5000
};
tags: { [tag: string]: number };
// Update counts based on active filters
};
activeFilters: FilterState;
}Create an endpoint to normalize categories:
POST /api/scraped-products/normalize-categories
// Returns normalized category mappingGET /api/scraped-products/search-suggestions?q=shirt
// Returns: ["Shirt", "Men Shirts", "Women Shirts", ...]Ensure MongoDB indexes on:
categorysubCategoryproductTypebrandvendor(from specifications)pricetags(if stored as array)name(for text search)
- Cache facet counts (update on data changes)
- Cache popular searches
- Cache filter combinations
- Current: 24 products per page ✓
- Consider: Infinite scroll with "Load More" button
- Virtual scrolling for very large result sets
Create a script to:
- Map inconsistent categories to standard hierarchy
- Fix category/productType mismatches
- Fill missing productTypes based on category and name
- Normalize vendor names
- Validate category/productType consistency
- Flag products with missing critical fields
- Generate data quality reports
- ✅ Add Product Type filter to FilterSidebar
- ✅ Add Vendor filter
- ✅ Improve price range UI (slider)
- ✅ Add active filter pills
- ✅ Enhance search with debouncing
- Multi-level category filtering
- Tag-based filtering
- Faceted search (update counts based on filters)
- Advanced filters (size, color, material)
- Sort options enhancement
- Category normalization script
- Data cleanup and validation
- Vendor name standardization
- Product type inference for missing data
- Search suggestions and autocomplete
- Search analytics
- Personalized recommendations
- Filter presets/saved searches
interface EnhancedFilters {
// Main filters
mainCategory?: 'Men' | 'Women' | 'Kids' | 'Unisex' | 'All';
subCategory?: string;
productType?: string;
brand?: string;
vendor?: string;
// Price
minPrice?: number;
maxPrice?: number;
// Advanced
tags?: string[]; // Multiple tags
sizes?: string[];
colors?: string[];
materials?: string[];
inStock?: boolean;
onSale?: boolean;
// Search
search?: string;
// Sort
sortBy?: 'price-asc' | 'price-desc' | 'name-asc' | 'name-desc' | 'newest' | 'relevance';
}function useFacetedSearch(filters: EnhancedFilters) {
const [results, setResults] = useState<FacetedSearchResponse | null>(null);
const [loading, setLoading] = useState(false);
useEffect(() => {
// Fetch with faceted search
// Update facet counts based on active filters
}, [filters]);
return { results, loading };
}-
Filter Sidebar Layout:
┌─────────────────────────┐ │ Clear All Filters [X] │ ├─────────────────────────┤ │ ▼ Main Category │ │ ○ Men (27,526) │ │ ○ Women (3,432) │ │ ○ Kids │ ├─────────────────────────┤ │ ▼ Product Type │ │ ☐ Shirts (793) │ │ ☐ Jeans (283) │ │ ☐ Heels (1,034) │ ├─────────────────────────┤ │ ▼ Brand │ │ ☐ ENGINE (13,929) │ │ ☐ Unze (11,274) │ ├─────────────────────────┤ │ Price Range │ │ [━━━━●━━━━━━━━━━━━━━] │ │ PKR 1,000 - 5,000 │ ├─────────────────────────┤ │ ▼ Tags │ │ ☐ Sale (25,611) │ │ ☐ New In (5,524) │ └─────────────────────────┘ -
Active Filters Bar:
Active Filters: [Men ×] [Price: 1K-5K ×] [Brand: ENGINE ×] [Clear All] -
Results Header:
Showing 1-24 of 2,341 results for "shirt" Sort by: [Price: Low to High ▼]
Track these metrics to measure improvement:
- Search Success Rate: % of searches that return results
- Filter Usage: Which filters are used most
- Time to Find Product: Average time from landing to product view
- Bounce Rate: Users who leave without interaction
- Conversion Rate: Users who view product details
- Review this analysis with your team
- Prioritize features based on user needs
- Start with Phase 1 quick wins
- Set up data quality monitoring
- Iterate based on user feedback
For detailed implementation, refer to the existing codebase:
/src/app/scraped-products/page.tsx- Main page/src/app/api/scraped-products/route.ts- API endpoint/src/components/scraped/FilterSidebar.tsx- Filter component