# Our Unified Condition Grading System We normalise the condition grades of all sources into a single four-tier system: | Grade | Label | Description | |-------|------------|-----------------------------------------------------------------------------| | S | Like New | Virtually indistinguishable from new. Minimal to no signs of use. Screen is perfect. | | A | Excellent | Light traces of use. Minor cosmetic marks that are barely noticeable. Fully functional. | | B | Good | Normal signs of use. Visible light scratches or marks. Fully functional. | | C | Fair | Clear cosmetic defects — dents, deep scratches, color deviations, screen marks. Still fully functional. | --- ## Source Mappings ### BilligTeknik BilligTeknik uses its own letter system (Premium, A, B, C, D). Listings can also carry a combined grade such as "A/B" meaning the device falls between two grades — we map these to the better of the two. | BilligTeknik grade | Our grade | Rationale | |--------------------|-----------|------------------------------------------------------------| | Premium | S | "Top of A-class", near-new, very few uses | | A | A | Carefully selected, excellent condition | | A/B | A | Between A and B — we favour the better grade | | B | B | Fully functional, minor marks/scratches | | B/C | B | Between B and C — we favour the better grade | | C | C | Visible wear, effective price | | C/D | C | Between C and D — we favour the better grade | | D | C | One or more clear deviations; still maps to our worst tier | ### Nuvoo Nuvoo uses Swedish descriptive labels as Shopify product variant options. | Nuvoo label (Swedish) | Our grade | Rationale | |-----------------------|-----------|--------------------------------------------------------| | Nyskick | S | "Like new" — virtually unused | | Utmärkt | A | "Excellent" — light surface traces | | Bra | B | "Good" — normal signs of use | | Okej | C | "Okay" — clear cosmetic defects | --- ## Implementation Notes - The mapping lives in `scrapers/shared.py` → `map_condition_grade(raw, source)`. - The normalised grade is stored in `laptops.condition_grade`. - The original raw label from the source is **not** stored separately (it can be derived from `condition_detail` if needed). - For BilligTeknik combined grades like "A/B", we always pick the **better** (leftmost) grade. - Unknown/unmapped values are stored as-is (so we can detect and handle new grades later).