> ## Documentation Index
> Fetch the complete documentation index at: https://docs.scentxp.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Olfactive Classification

## Expert fragrance classification

Most e-commerce catalogs classify perfumes by brand, gender, or price — attributes that say nothing about how a fragrance actually smells. WikiParfum solves this by providing an **expert olfactive classification** for every fragrance in its database.

Every perfume is classified into an olfactive family and subfamily by fragrance experts, in partnership with [Fragrances of the World](https://fragrancesoftheworld.com/) (the leading global fragrance classification authority founded by Michael Edwards). This structured taxonomy provides a universal language for organizing, navigating, and understanding perfumes — a capability most retailers and brands don't have access to internally.

### The business problem

Without proper classification, your customers face a wall of products with no way to navigate by scent. They can't filter by "woody" or "floral", can't understand why they like certain perfumes, and can't discover new ones based on olfactive affinity. The result: confusion, abandonment, and missed sales.

### What you can build

* **Family-based navigation** — let users browse fragrances by olfactive character (Floral, Woody, Ambery, Citrus...)
* **Visual family maps** — each family includes a color and imagery for rich UI components
* **Olfactive profile cards** — show a perfume's primary and secondary family with intensity levels
* **Family-based filtering** — narrow catalogs by olfactive character across search, recommendations, and product lists
* **Educational content** — help users understand what families mean and how they relate to each other

## The family hierarchy

WikiParfum organizes fragrances into **primary families** (broad olfactive categories) and **subfamilies** (more specific character descriptions). Each perfume is classified with up to two levels:

| Level     | Field             | Description                                                    |
| --------- | ----------------- | -------------------------------------------------------------- |
| Primary   | `family`          | The dominant olfactive character (e.g., Floral, Woody, Ambery) |
| Secondary | `secondaryFamily` | A complementary olfactive dimension                            |

Each level includes an **intensity value** (`family_intensity`, `secondary_family_intensity`) that indicates how strongly that family character is expressed in the fragrance.

## Browsing the family tree

Retrieve all primary families to build top-level navigation:

<CodeGroup>
  ```graphql Query theme={null}
  query PrimaryFamilies {
    findFamilies(search: { lang: "EN", isPrimary: true, order_by: "position asc" }) {
      id
      name
      slug
      color
      description
      image {
        urls {
          low
          mid
        }
      }
    }
  }
  ```

  ```json Response theme={null}
  {
    "data": {
      "findFamilies": [
        {
          "id": "1",
          "name": "CITRUS",
          "slug": "citrus",
          "color": "#FFD33F",
          "description": "The citrus ingredients, also named hesperidian, cover natural essential oils obtained by expression of the rind of citrus fruits, but also plants or reconstitution accords that offers a sparkling freshness, energetic and tangy.",
          "image": {
            "urls": {
              "low": "https://api-assets.wikiparfum.com/_resized/ef43511fad5caeef8f15b58fbbfc9675f7568109-w100-q85.jpg",
              "mid": "https://api-assets.wikiparfum.com/_resized/ef43511fad5caeef8f15b58fbbfc9675f7568109-w500-q85.jpg"
            }
          }
        },
        {
          "id": "5",
          "name": "AROMATIC FOUGERE",
          "slug": "aromatic-fougere",
          "color": "#01918D",
          "description": "The Aromatic family, also called Fougère in perfume jargon because of the fragrance Fougère Royale, created in 1884, which was the first evoking this natural, undergrowth smell.\nInitially composed of lavender, oakmoss, coumarin and bergamot, this family evolved using a lot of different aromatic plant such as basil, sage, rosemary, thyme, etc.\nAs this kind of fragrance was used a lot in the 80’s for masculine barber products, it is associated with the **masculine world**, transmitting an energetic and clean sexiness.",
          "image": {
            "urls": {
              "low": "https://api-assets.wikiparfum.com/_resized/623d401ea7f016dc0d0eb105c93f5efe02f8ce30-w100-q85.jpg",
              "mid": "https://api-assets.wikiparfum.com/_resized/623d401ea7f016dc0d0eb105c93f5efe02f8ce30-w500-q85.jpg"
            }
          }
        }
      ]
    }
  }
  ```
</CodeGroup>

Each family includes a `color` (hex) and `image`, making it straightforward to build visual navigation grids, wheels, or maps.

To retrieve all families including subfamilies:

<CodeGroup>
  ```graphql Query theme={null}
  query AllFamilies {
    findFamilies(search: { lang: "EN" }) {
      id
      name
      slug
      color
      isPrimary
      level
    }
  }
  ```

  ```json Response theme={null}
  {
    "data": {
      "findFamilies": [
        {
          "id": "1",
          "name": "CITRUS",
          "slug": "citrus",
          "color": "#FFD33F",
          "isPrimary": true,
          "level": 1
        },
        {
          "id": "2",
          "name": "GREEN",
          "slug": "green",
          "color": "#51A84B",
          "isPrimary": false,
          "level": 2
        }
      ]
    }
  }
  ```
</CodeGroup>

See [Families](/wikiparfum-api/features/families) for the full entity reference.

## Reading a perfume's olfactive classification

Every perfume exposes its full classification:

<CodeGroup>
  ```graphql Query theme={null}
  query PerfumeClassification {
    findPerfumeById(id: "424", lang: "EN") {
      name
      family {
        name
        color
      }
      family_intensity
      secondaryFamily {
        name
        color
      }
      secondary_family_intensity
      intensity
    }
  }
  ```

  ```json Response theme={null}
  {
    "data": {
      "findPerfumeById": {
        "name": "GOOD GIRL",
        "family": {
          "name": "AMBERY (ORIENTAL)",
          "color": "#B41F24"
        },
        "family_intensity": 9,
        "secondaryFamily": {
          "name": "AMBERY (ORIENTAL)",
          "color": "#B41F24"
        },
        "secondary_family_intensity": 9,
        "intensity": 9.15
      }
    }
  }
  ```
</CodeGroup>

This data powers olfactive profile cards, radar charts, and classification badges on product pages.

## The Quadrification

The **Quadrification** is WikiParfum's proprietary visual representation of a perfume's olfactive profile. It renders the family composition and intensity as a graphic that users can instantly understand — without needing fragrance expertise.

<CodeGroup>
  ```graphql Query theme={null}
  query PerfumeQuadrification {
    findPerfumeById(id: "424", lang: "EN") {
      name
      quadrification_url {
        width100
        width500
        width1000
      }
    }
  }
  ```

  ```json Response theme={null}
  {
    "data": {
      "findPerfumeById": {
        "name": "GOOD GIRL",
        "quadrification_url": {
          "width100": "https://api-dev.wikiparfum.com/quadrification?slug=good-girl&lang=EN&size=100",
          "width500": "https://api-dev.wikiparfum.com/quadrification?slug=good-girl&lang=EN&size=500",
          "width1000": "https://api-dev.wikiparfum.com/quadrification?slug=good-girl&lang=EN&size=1000"
        }
      }
    }
  }
  ```
</CodeGroup>

The `quadrification_url` returns pre-rendered images in multiple sizes, ready to embed in product pages, comparison views, or discovery interfaces.

## Filtering by family

Use family-based filters to narrow any query — perfumes, recommendations, or search results:

<CodeGroup>
  ```graphql Query theme={null}
  query WoodyPerfumes {
    findPerfumes(search: {
      lang: "EN"
      page: "0,20"
      filters: {
        family: "woody"
      }
    }) {
      id
      name
      brand {
        name
      }
      family {
        name
        color
      }
    }
  }
  ```

  ```json Response theme={null}
  {
    "data": {
      "findPerfumes": [
        {
          "id": "6704",
          "name": "VALENTINO DONNA BORN IN ROMA",
          "brand": {
            "name": "Valentino"
          },
          "family": {
            "name": "WOODY",
            "color": "#92623B"
          }
        },
        {
          "id": "760",
          "name": "FAHRENHEIT ",
          "brand": {
            "name": "Dior"
          },
          "family": {
            "name": "WOODY",
            "color": "#92623B"
          }
        }
      ]
    }
  }
  ```
</CodeGroup>

You can also filter by subfamily, or combine primary and secondary family filters. See [Filtering & Pagination](/wikiparfum-api/features/filtering) for all family filter options.

## Family combinations

Each family includes data about its most common pairings — which families frequently appear together as primary and secondary classifications:

<CodeGroup>
  ```graphql Query theme={null}
  query FamilyCombinations {
    findFamilyById(id: "5", lang: "EN") {
      name
      combinations {
        name
        color
      }
    }
  }
  ```

  ```json Response theme={null}
  {
    "data": {
      "findFamilyById": {
        "name": "AROMATIC FOUGERE",
        "combinations": [
          {
            "name": "AROMATIC FOUGERE",
            "color": "#01918D"
          },
          {
            "name": "CITRUS",
            "color": "#FFD33F"
          }
        ]
      }
    }
  }
  ```
</CodeGroup>

This enables "related families" modules and helps users understand how olfactive families interact.
