Platform specifics
What makes Namshi data different from other fashion platforms
These are the reasons a Namshi dataset needs its own handling rather than a shared retail schema.
VAT rates diverge sharply between storefronts on one platform
The GCC states apply materially different VAT rates. A displayed price in one storefront and a displayed price
in another are gross of very different tax, so comparing them directly is not comparing pricing.
- A raw cross-country comparison will show one market as systematically dearer when a large part of the
gap is statutory.
- A net-of-VAT comparison isolates the commercial decision, but requires the rate to be explicit and
recorded per row.
- Silent normalisation is the worst option, because the reader cannot tell whether a movement is a price
change or a rate change.
country and vat_basis are mandatory on every record, prices are retained gross in
local currency, and the rate used for any net view is supplied as its own field. Both gross and net series can
then be produced and the basis stated.
Several currencies, and one of them has three decimal places
The platform trades in multiple GCC currencies, and they do not share a convention. Some are quoted to two
decimal places and at least one to three, which breaks naive rounding and comparison logic written for a
two-decimal world.
We retain the price exactly as displayed, with currency and the minor-unit precision recorded, and never
convert inside the price field. Where a converted view is needed the daily rate is supplied separately.
This sounds like a formatting detail and is not. A pipeline that rounds a three-decimal currency to two
introduces a systematic error into every figure derived from it, and the error is invisible in the output.
Size level, with several size systems in one catalogue
Fashion availability is meaningless above variant level, and this catalogue carries brands using EU, UK, US
and numeric size systems side by side, sometimes within one category.
We collect one row per product per size with size_offered kept separate from
size_in_stock, and normalise to one internal scale with the published mapping table shipped and the
original label retained.
A style listed as available with only its extreme sizes remaining is unavailable to most of its buyers, and
page-level data records it as available. That is the same discipline applied on our other fashion pages, and it
matters more here because the size-system mix makes naive comparison worse.
Cash on delivery is an availability field, not a payment detail
Cash on delivery remains widely used across the region, and its availability varies by country, by order value
and sometimes by category.
A listing without cash-on-delivery is effectively unavailable to a share of buyers regardless of price, which
makes this an availability question wearing a payment label. We capture cod_available for the
storefront and order context observed, where displayed.
For a brand assessing reach in the region, this field frequently explains a conversion gap that price and
assortment data cannot.
Modest fashion is a category structure, not a filter
The catalogue carries modest-fashion categories with their own hierarchy, attributes and sizing conventions
— abayas, kaftans, hijabs and related lines — that do not map onto Western fashion taxonomies.
We capture the category path as published, with translation supplied as a separate field rather than replacing
the original, and we do not force these lines into a Western category tree. Where a client needs a mapping onto
their own taxonomy it is built as an explicit layer with the raw path retained beneath.
Forcing the mapping is how a category that is commercially significant in this market ends up scattered
across three unrelated buckets in the output.