QFix Mapping Documentation

How product data is mapped to QFix repair booking categories

Verify a Product Mapping

Enter a product ID to see exactly how it gets mapped to a QFix repair category.

Mapping Coverage

How many products per brand have a working QFix mapping.

BrandTotalMappedUnmappedCoverage
Loading...

Mapping Rules Reference

These are the actual mapping tables used by the system.

Valid QFix Clothing Types (88 types)

These are the target clothing types in the QFix system. Each product is mapped to one of these.

QFix Clothing TypeID
Material Categories

Products are classified into one of these material categories based on their composition.

QFix MaterialDescription
Standard textileCotton, polyester, nylon, viscose, elastane, and most common fabrics
Linen/WoolLinen, wool, merino, alpaca, and blends where these dominate
CashmereCashmere and cashmere-dominant blends
SilkSilk and silk-dominant blends
Leather/SuedeLeather, suede, and similar animal hides
DownDown-filled garments
FurFur garments
Other/UnsureFallback when material can't be determined
Swedish Clothing Type Mappings (~460 rules)

How Swedish scraped categories map to QFix types. Showing mapped entries only.

Swedish CategoryQFix Type
Material Composition Mappings (~110 rules)

How individual material names map to QFix material categories.

Material NameQFix Material
Unmapped Categories per Brand

Product categories that can't be mapped to a QFix clothing type (accessories, non-clothing items, missing categories). These products won't get a QFix repair URL.

Loading...
QFix Types Missing Services

Clothing types in the QFix catalog that have zero service actions defined (repair, adjustment, care, other).

Loading...
AI-Ranked Top 5 Actions per Category

For each clothing type + material combination, AI has ranked the 5 most relevant service actions per service category.

Loading...

How the Mapping Works

Each product in the database has a clothing type (e.g. "Jackor & rockar") and a material composition (e.g. "99% Bomull, 1% Elastan"). The mapping system translates these into QFix repair categories so customers can book the right repair service.

1

Identify Clothing Type

Each product's scraped Swedish category (e.g. "Jackor & rockar > Varjackor") is translated into a QFix clothing type (e.g. "Jacket"). The mapper uses four inputs:

  • clothing_type — the scraped category string
  • brand — which brand the product belongs to
  • product_name — the product's name/title
  • description — the product's description text

The category is first normalized: split on ">" into segments, lowercased, and gender prefixes (dam, herr, barn, flicka, pojke…) are stripped. For example, "Dam > Jackor & rockar > Varjackor" becomes ["jackor & rockar", "varjackor"].

The mapper then tries four strategies in priority order, returning the first match:

  1. Brand-specific exact override — A per-brand dictionary that overrides the generic mapping for specific clothing types. For example, if KappAhl's "Jacket" should map differently than the default, an entry in BRAND_CLOTHING_TYPE_OVERRIDES takes precedence.
  2. Brand-specific sub-mappings — For categories that need finer-grained classification, brand-specific logic examines the full category path and product name/description.
    Hierarchical categories (KappAhl, Gina Tricot) use sub-path segments: e.g. "Badkläder > Bikini" → Bikini, "Jackor & rockar > Västar" → Unlined Jacket/Vest.
    Flat categories (Lindex) combine the product name and description as keyword signals to disambiguate: e.g. a "badklader" product named "Bikiniset" maps to Bikini instead of Swimsuit; a "trojor koftor" product with "sweatshirt" in the name maps to Sweatshirt/Hoodie instead of Knitted Jumper.
  3. Generic mapping table — A table of ~460 Swedish category names mapped to QFix clothing types. Multi-level categories are matched segment by segment (first the full path, then just the first segment). This handles the vast majority of products.
  4. Keyword fallback — If no direct match is found, individual words from the category string are checked against known clothing keywords (e.g. "jacka" → Jacket, "byxor" → Trousers). This catches edge cases and new categories not yet in the mapping table.

Brand-Specific Sub-Mapping Rules

Click each brand to expand its rules. Categories use > for sub-paths. Rules marked with use product name/description keywords for disambiguation.

KappAhl
Category Sub-path / Condition Maps to
Badkläder > Bikini Bikini
Badkläder > (other) Swimsuit
Ytterkläder > Regnbyxor / Skalbyxor / Skidbyxor Trousers
Ytterkläder > Overaller Overall
Ytterkläder > Västar Unlined Jacket / Vest
Ytterkläder > (other) Jacket
Jackor & rockar > Västar Unlined Jacket / Vest
Jackor & rockar > (other) Jacket
Loungewear > Underdelar Trousers
Loungewear > Underställ Midlayer
Loungewear > (other sub-path) Sweatshirt / Hoodie
Loungewear (no sub-path) Trousers / Shorts
Skor & tofflor > Tofflor / Slippers Other shoes
Skor & tofflor > (other) Sneakers
Tröjor & cardigans > Hoodies / Sweatshirt Sweatshirt / Hoodie
Tröjor & cardigans > Stickade västar / Västar Unlined Jacket / Vest
Tröjor & cardigans > (other) Knitted Jumper
Träningskläder > Tights / Cykelbyxor / Leggings Trousers
Träningskläder > Shorts / Cykelshorts Trousers / Shorts
Träningskläder > Linne / Topp / Sport-BH Top / T-shirt
Träningskläder > (other) Sweatshirt / Hoodie
Mammakläder > Toppar / Tröjor / Blusar Top / T-shirt
Mammakläder > Klänningar Skirt / Dress
Mammakläder > (other) Trousers
Gina Tricot
Category Sub-path / Condition Maps to
Badklader > Bikini Bikini
Badklader > (other) Swimsuit
Skor > Boots Boots
Skor > Högklackade / Klack High heels
Skor > Sandaler Sandals
Skor > Sneakers Sneakers
Skor > Tofflor / Ballerina Other shoes
Skor (no sub-path) Other shoes
Festklader > Byxor Trousers
Festklader > (other) Skirt / Dress
Mössor & vantar > Caps / Keps Cap
Mössor & vantar > (other) Hat
Coats & Jackets > Västar Unlined Jacket / Vest
Coats & Jackets > Kavajer Suit
Coats & Jackets > (other) Jacket
Knitted > Accessories Scarf / Shawl
Knitted > Västar Unlined Jacket / Vest
Knitted > (other) Knitted Jumper
Jeans > Shorts Trousers / Shorts
Jeans > (other) Trousers
Basplagg > Shorts / Biker / Cykel Trousers / Shorts
Basplagg > (other) Top / T-shirt
Tröjor > Hoodies / Collegetröjor Sweatshirt / Hoodie
Tröjor > Västar Unlined Jacket / Vest
Tröjor > (other) Knitted Jumper
Loungewear (any) Other
Träningskläder > Pilates / Yoga Top / T-shirt
Träningskläder > (other) Sweatshirt / Hoodie
Lindex ★ uses product name/description
Category Product name/description keyword Maps to
badklader / badklader uv contains "bikini" Bikini
badklader / badklader uv (default) Swimsuit
kavajer tunna jackor contains "kavaj" or "blazer" Suit
kavajer tunna jackor (default) Jacket
performancewear contains "byxor" / "byxa" Trousers
performancewear contains "overall" Overall
performancewear contains "vantar" / "tumvantar" Gloves
performancewear contains "mössa" Hat
performancewear (default) Jacket
traningsklader contains "baddräkt" Swimsuit
traningsklader (default) Underwear
trojor koftor / trojor cardigans contains "sweatshirt" / "hoodie" / "college" Sweatshirt / Hoodie
trojor koftor / trojor cardigans (default) Knitted Jumper
linnen (always) Top / T-shirt
klimakterieklader (always) Top / T-shirt
mammaklader contains "shorts" / "cykelbyxa" Trousers / Shorts
mammaklader contains "jeans" / "byxor" / "leggings" Trousers
mammaklader contains "klänning" Skirt / Dress
mammaklader contains "topp" / "linne" / "t-shirt" / "tröja" Top / T-shirt
mammaklader (default) Other
nyfodd contains "body" / "omlottbody" Underwear
nyfodd contains "klänning" Skirt / Dress
nyfodd contains "byxor" / "leggings" / "mjukisbyxor" Trousers
nyfodd (default) Other
Eton & Nudie Jeans

No brand-specific sub-mappings needed. All categories map correctly via the generic mapping table.

2

Identify Material

The material composition string is parsed to extract individual materials and their percentages (e.g. "99% Bomull" = Cotton 99%). The dominant material (highest percentage) determines the QFix material category: Standard textile, Linen/Wool, Cashmere, Silk, Leather/Suede, Down, or Fur.

3

Resolve Gender-Specific IDs

The same clothing type (e.g. "Jacket") has different QFix IDs for Men's, Women's, and Children's clothing. The product's category (dam/herr/barn) determines which ID to use. The material also gets an ID that depends on the clothing type (shoes use different IDs than clothing).

4

Select Top 5 Service Actions

Each clothing type + material combination in the QFix catalog has many available service actions (often 20+ per category). AI has pre-ranked the top 10 most relevant actions per service category (repair, adjustment, care, other) for all 259 combinations. These are stored in the database.

Backfill mechanism: The system stores 10 actions (not 5) so that when exclusion rules (Step 6) remove irrelevant actions, the remaining slots are filled from positions 6–10 instead of leaving gaps. For example, a vest has 10 ranked adjustments → "Shorten sleeves" and "Lengthen sleeves" are excluded → 8 remain → top 5 selected (positions 6–7 backfill the gaps left by the 2 excluded actions). The final 5 are passed as services_id in the redirect URL to pre-select them on QFix.

5

Product-Specific Action Boost (Keyword Injection)

The generic top 5 is based on clothing type only, but individual products may have specific features that make certain actions more relevant. The product name and description are scanned for keywords, and matching actions are merged with the AI-ranked top 5 using a score-based ranking.

Smart variant selection: Each keyword rule has multiple action variants (e.g., "Replace button", "Replace jeans button", "Replace snap button"). Instead of injecting all variants, the system uses sub-keyword matching to pick the most relevant one for each product. For example, "Replace jeans button" only triggers when "jeans" or "denim" appears in the product text. At most 2 actions per rule are injected: the best sub-keyword match plus the generic default.

Loading keyword stats...

How the merge works: The selected keyword actions (max 2 per rule) are scored and merged with the AI-ranked top 5:

Source #1 #2 #3 #4 #5 #6 #7 #8 #9 #10
AI-ranked (stored) 10 9 8 7 6 5 4 3 2 1
Keyword-injected (max 2 per rule) 7 5

Positions #6–#10 (greyed out) are stored for backfill but normally trimmed away. They only surface when exclusion rules remove higher-ranked actions.

Exclusion check: Keyword-injected actions are also checked against the exclusion rules (Step 6). If a product triggers both a keyword injection and an exclusion for the same action, the exclusion wins. For example, leggings with "dragkedja" in the description will NOT get "Replace zipper" injected because the leggings exclusion rule blocks it.

Example: "Stickad cardigan med dragkedja" (knitted cardigan with zipper) — the merged repair list:

  1. Repair hole (AI #1, score 10)
  2. Repair wear (AI #2, score 8)
  3. Replace zipper (keyword default, score 7)
  4. Repair seam (AI #3, score 6)
  5. Replace button (AI #4, score 4)

Only 1 zipper action injected (the generic default). Important actions like "Repair hole" and "Repair seam" stay in the top 5.

Example 2: "Jeansjacka med knappar" (jeans jacket with buttons) — sub-keyword "jeans" matches "Replace jeans button":

  1. Replace main zipper (AI #1, score 10)
  2. Repair tear (AI #2, score 8)
  3. Replace jeans button (keyword sub-match, score 7)
  4. Repair seam (AI #3, score 6)
  5. Replace button (keyword default, score 5)

The sub-keyword system picks "Replace jeans button" specifically for jeans products, while a regular shirt with buttons would only get the generic "Replace button". Max 2 button actions instead of the previous 5.

6

Action Exclusion Rules

Some products are mapped to broad QFix categories (e.g., a vest mapped to "Suit") which include actions that don't apply. The system scans the product text for keywords and removes irrelevant actions:

Product keywords Excluded actions Category
väst, vest, gilet, bodywarmer Shorten sleeves, Lengthen sleeves, Tapering legs, Shorten legs, Lengthen legs adjustment
linne, singlet, tank top, ärmlös, sleeveless, bandeau, tubtopp Shorten sleeves, Lengthen sleeves adjustment
shorts Tapering legs adjustment
kjol, skirt Shorten sleeves, Lengthen sleeves, Tapering legs adjustment
badshorts, swim shorts, badbyxor Replace zipper, Replace main zipper, Replace zipper slider repair
badshorts, swim shorts, badbyxor Narrow shoulder area, Shorten sleeves, Lengthen sleeves, Shorten length adjustment
bikini, baddräkt, swimsuit, badedrakt Shorten sleeves, Lengthen sleeves, Tapering legs, Shorten length adjustment
strumpor, socks, sockor, strumpa All adjustment actions adjustment
strumpbyxa, strumpbyxor, tights, pantyhose All adjustment actions adjustment
poncho Shorten sleeves, Lengthen sleeves adjustment
cape Shorten sleeves, Lengthen sleeves adjustment
leggings Tapering legs (adj), Replace zipper (repair) both
bandeau, tubtopp, tube top, strapless Narrow shoulder area adjustment
träningstights, cykelbyxa, cykelbyxor Sleeves, shoulders (adj), Replace zipper (repair) both

Note: Keywords are matched against product name, description, and the clothing type category field. This catches products where distinguishing keywords (e.g., "leggings", "strumpbyxor", "croptops") only appear in the category, not the product name.

Processing order: Exclusions are applied before the final top 5 selection. The system has up to 10 AI-ranked actions per category. Exclusions filter the full pool of 10, then the best 5 are selected. This means excluded actions are replaced by lower-ranked ones (backfill) rather than leaving empty slots.

Example: "Väst i linnemix" (linen vest) is mapped to "Suit" which has 10 ranked adjustments. The exclusion rule removes "Shorten sleeves" (#3) and "Lengthen sleeves" (#6) → 8 remain → top 5 selected: "Take in waist", "Shorten length", "Take in sides", "Narrow shoulder area", "Take in the back". Positions #6–#7 ("Take in shoulders", "Expand waist") backfilled the gaps left by the excluded sleeve actions.

7

Build QFix URL

The final redirect URL combines all resolved IDs from the previous steps:

  • subitem_id — the gender-specific clothing type ID (Step 3)
  • material_id — the material ID (Step 3)
  • service_category_id — which service type (repair, adjustment, care)
  • services_id — the final top 5 action IDs after keyword injection and exclusion filtering (Steps 4–6)

Example URL:
https://kappahl.dev.qfixr.me/sv/?subitem_id=85&material_id=69&service_category_id=3&services_id=101,102,103,104,105

This URL pre-selects the clothing type, material, service, and the most relevant actions for the specific product, so the customer lands directly on the right booking page.

What Happens When a Product Can't Be Mapped?

If the clothing type or material doesn't match any rule, the product is marked as unmapped. This happens for:

Unmapped products can be reviewed at /unmapped and new mapping rules can be added via /remap (AI-assisted) or manually.

Why some brands have lower coverage

Coverage percentage reflects the share of all scraped products that have a QFix URL, not just clothing. Brands with large accessory catalogs will naturally show lower coverage because accessories (ties, pocket squares, cufflinks, belts, etc.) don't have QFix repair categories.

Brand Main unmapped categories Why
Eton (~65%) Accessoarer (ties, pocket squares, cufflinks, bow ties) ~35% of Eton's catalog is non-repairable accessories. Mappable accessories (swim shorts, scarves, caps, beanies) are now mapped via product name inference. All clothing items are mapped correctly.
Lindex (~58%) Accessories, home textiles, beauty products Lindex sells non-clothing items (candles, skincare, home décor) that are scraped but not repairable. Products with no category are now mapped via product name inference where possible.
Gina Tricot (~90%) Accessories (jewellery, hair clips, bags) Smaller share of non-clothing items.
KappAhl (~93%) Accessories, multi-packs Mostly clothing. Small number of accessories and edge cases.
Nudie Jeans (~98%) A few edge cases Almost entirely clothing. Very few unmapped products.

Key takeaway: Low coverage does not mean broken mappings — it means the brand's catalog includes many non-clothing products. All actual clothing items across all brands are mapped correctly.