Methodology

Every rule behind the numbers, with the thresholds the site actually uses.

What we collect, and what we don’t

From each brand’s own shop: the prices on its product pages, whether a sale is running and how deep, the fabric words in its product text, the number of products and collections it publishes, its platform, and any store, delivery or payment detail its own pages state. Every value is a count or a quotation from the brand.

The Type facet comes from the words a catalogue itself uses: lawn, kurta, shalwar kameez and unstitched fabric on one side; jeans, t-shirts, hoodies and co-ords on the other. A catalogue that leans neither way is recorded as Not classified rather than forced into a category.

We do not collect or estimate traffic, visitor numbers or popularity; we do not fill in a price a brand has not published; and we do not treat a weave name as evidence of a fibre.

Price bands

A band comes from the median listed price of the products we read (the field Median_Price_PKR), expressed as a share of a PKR 50,000 monthly wage (stored as Cost_vs_Wage_50k_Pct). The thresholds are constants in rules.py:

BandMedian listed priceThreshold
Budgetunder PKR 3,0000% of a PKR 50,000 wage
MidPKR 3,000 to under PKR 8,0003,000% of a PKR 50,000 wage
PremiumPKR 8,000 to under PKR 20,0008,000% of a PKR 50,000 wage
LuxuryPKR 20,000 or more20,000% of a PKR 50,000 wage

Brands that publish no price we can read are grouped as No price data rather than given a band. Sale prices are included in the median: the price on a product page is the price we record.

What “the price of a brand” means

We publish the lowest, median and highest listed product price (Price_Lower_Limit_PKR, Median_Price_PKR, Price_Upper_Limit_PKR). A brand has no single price, which is why the headline figure is a range and a median. A price below PKR 100 or above PKR 1,000,000 is discarded as a data error rather than published.

Fabric rules

ClassWords we count
Naturalcotton, silk, linen, wool, cashmere, pashmina, hemp, jute
Regenerated (semi-synthetic)viscose, rayon, modal, lyocell, tencel, bamboo viscose
Syntheticpolyester, nylon, acrylic, elastane, spandex, polyamide
Weave or finish — not a fibrelawn, chiffon, georgette, organza, net, khaddar, karandi, cambric, jacquard, velvet, crepe, satin, boski

Weave names such as lawn or chiffon are not fibres; we only count a fibre when the brand states it. Natural fibres stated needs at least 3 products and 5% of the catalogue to state a natural fibre, and fewer than 20% of the products that state any fibre to also name a regenerated or synthetic one. Viscose and rayon are regenerated, so they never count as natural.

Audience rules

Women, Men and Kids come only from product titles, product types, product tags, or collection titles and handles — never from navigation, footers or banners — and need at least 5 products and 3% of the catalogue. Each brand page prints the evidence behind its tags.

The value index

Sorted as “Best value”. Two derived scores, weighted as constants in rules.py:

value = 0.5 × quality score + 0.5 × affordability score

catalogue score = 40% natural fibre mentions + 20% fibre transparency + 20% catalogue breadth (distinct types/tags, capped at 25) + 20% shop records (stores, blog, 10+ collections); minus 10 when a brand names polyester or viscose and no natural fibre at all.

affordability = 100 × (1 − min(median ÷ 50,000, 1))

Worked example, using a real record from this build: Koyo, whose median listed price is PKR 5,499 across 453 products.

  1. PKR 5,499 is 11.0% of a PKR 50,000 wage, which puts it in the Mid band.
  2. Affordability = 100 × (1 − min(11.0% , 100%)) = 89.0.
  3. Its catalogue score is 49.8.
  4. Value = 0.5 × 49.8 + 0.5 × 89.0 = 69.4, which is the 69.4 the directory publishes for it.

What each sort means

What each filter option means

How fresh the data is

The directory is rebuilt when the scraper reruns, and the footer shows the date of the build you are reading. Prices and sales in Pakistan move quickly, so treat every figure as a snapshot and confirm it on the brand’s own site. Each brand page states the date its catalogue was read.

Corrections

Every brand page has a “report an error” link that pre-fills the brand and the page URL. Corrections go to data@brandlist.pk; the listing is re-read from the brand’s own shop. Rights-holder and takedown requests go to legal@brandlist.pk instead (see the Terms).