{
  "title": "Disponibilité des informations préachat pour un échantillon de produits de maquillage vendus en France — 2026",
  "version": "0.1.0",
  "status": "DRAFT_SAMPLE_EXPANSION_REQUIRED",
  "updatedAt": "2026-08-22",
  "license": "LICENCE_PENDING_RIGHTS_REVIEW",
  "scope": {
    "records": 18,
    "targetRecords": 60,
    "brands": 8,
    "categories": 6,
    "market": "France",
    "selection": "Échantillon de démarrage raisonné : trois références par famille, choisies pour instruire les premières pages éditoriales. Il n'est ni aléatoire, ni pondéré par les ventes, ni représentatif du marché.",
    "samplingPlan": {
      "version": "1.0.0",
      "updatedAt": "2026-08-22",
      "market": "FR",
      "targetRecords": 60,
      "targetPerCategory": 10,
      "categories": [
        "MASCARA_WATERPROOF",
        "FOUNDATION",
        "CONCEALER",
        "EYELINER",
        "LONG_WEAR_LIP",
        "SELF_TANNER"
      ],
      "selectionRules": [
        "Une page française officielle de fabricant ou de marque-distributeur par référence",
        "Au moins six marques différentes par famille dans la version 1.0",
        "Au plus deux références d'une même marque dans une même famille",
        "Une référence et ses teintes comptent comme une seule unité d'observation",
        "La disponibilité commerciale n'est conservée que comme état daté, jamais comme permanence",
        "Les références sont choisies pour diversifier formats et promesses, pas pour simuler une part de marché"
      ],
      "exclusions": [
        "Pages de marketplace ou de revendeur non opérées par la marque",
        "Doublons de teinte, coffrets et éditions dont la page ne permet pas d'identifier la version",
        "Produits sans page française stable au jour du relevé",
        "Résultats de test, prix comparés, avis clients et images fabricant"
      ],
      "releaseStages": [
        {
          "version": "0.1",
          "records": 18,
          "status": "SITE_DRAFT",
          "purpose": "Valider le schéma, les statuts et l'intégration éditoriale"
        },
        {
          "version": "0.2",
          "records": 36,
          "status": "INTERNAL_REVIEW",
          "purpose": "Tester la diversité des marques et les cas limites"
        },
        {
          "version": "1.0",
          "records": 60,
          "status": "DATA_GOUV_ELIGIBILITY_REVIEW",
          "purpose": "Statuer sur droits, licence, méthode et publication indépendante"
        }
      ]
    }
  },
  "methodology": {
    "observationUnit": "Une page produit française de fabricant ou de marque-distributeur associée à une version identifiée.",
    "confirmedPresent": "L'information a été relevée dans le snapshot éditorial et reste attribuée à la page source.",
    "notEstablished": "L'information n'a pas été établie dans ce snapshot. Ce statut ne signifie pas qu'elle est absente de la page, de l'emballage ou d'une autre source.",
    "notApplicable": "Le champ ne s'applique pas à cette famille de produits.",
    "exclusions": [
      "Aucun test d'usage",
      "Aucun prix",
      "Aucune note",
      "Aucun classement",
      "Aucun texte promotionnel long",
      "Aucune image fabricant"
    ],
    "publicationGate": "Élargir et documenter l'échantillon, revoir les droits et exécuter une revue indépendante avant toute publication data.gouv."
  },
  "signalDefinitions": {
    "source_page": "Une page française de marque ou marque-distributeur a été consultée et conservée comme source.",
    "application_guidance": "Au moins une instruction d'application a été relevée dans le snapshot éditorial.",
    "ingredients_online": "Des ingrédients ont été relevés sur la page source. Cela ne garantit pas que la liste soit complète ou identique à l'emballage.",
    "shade_count": "Un nombre de teintes a été relevé lorsque cette notion s'applique à la famille.",
    "size_or_volume": "Un format ou volume a été relevé.",
    "wear_duration_claim": "La page source formule une durée de tenue chiffrée ; cette durée n'a pas été testée par la rédaction.",
    "hydration_duration_claim": "La page source formule une durée d'hydratation chiffrée ; cette durée n'a pas été testée par la rédaction.",
    "water_resistance_claim": "La page source emploie une mention waterproof ou de résistance à l'eau.",
    "no_transfer_claim": "La page source emploie une mention sans transfert.",
    "removal_guidance": "Une consigne explicite de démaquillage ou de retrait a été relevée.",
    "important_limitation": "Une limite importante avant achat, par exemple l'absence de protection solaire, a été relevée."
  },
  "summary": {
    "records": 18,
    "brands": 8,
    "categories": 6,
    "overall": {
      "source_page": {
        "confirmed": 18,
        "notEstablished": 0,
        "notApplicable": 0,
        "denominator": 18
      },
      "application_guidance": {
        "confirmed": 15,
        "notEstablished": 3,
        "notApplicable": 0,
        "denominator": 18
      },
      "ingredients_online": {
        "confirmed": 7,
        "notEstablished": 11,
        "notApplicable": 0,
        "denominator": 18
      },
      "shade_count": {
        "confirmed": 14,
        "notEstablished": 1,
        "notApplicable": 3,
        "denominator": 15
      },
      "size_or_volume": {
        "confirmed": 7,
        "notEstablished": 11,
        "notApplicable": 0,
        "denominator": 18
      },
      "wear_duration_claim": {
        "confirmed": 7,
        "notEstablished": 11,
        "notApplicable": 0,
        "denominator": 18
      },
      "hydration_duration_claim": {
        "confirmed": 1,
        "notEstablished": 17,
        "notApplicable": 0,
        "denominator": 18
      },
      "water_resistance_claim": {
        "confirmed": 5,
        "notEstablished": 13,
        "notApplicable": 0,
        "denominator": 18
      },
      "no_transfer_claim": {
        "confirmed": 3,
        "notEstablished": 15,
        "notApplicable": 0,
        "denominator": 18
      },
      "removal_guidance": {
        "confirmed": 1,
        "notEstablished": 17,
        "notApplicable": 0,
        "denominator": 18
      },
      "important_limitation": {
        "confirmed": 2,
        "notEstablished": 16,
        "notApplicable": 0,
        "denominator": 18
      }
    },
    "byCategory": {
      "MASCARA_WATERPROOF": {
        "label": "Mascara waterproof",
        "records": 3,
        "signals": {
          "source_page": {
            "confirmed": 3,
            "notEstablished": 0,
            "notApplicable": 0,
            "denominator": 3
          },
          "application_guidance": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "ingredients_online": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "shade_count": {
            "confirmed": 3,
            "notEstablished": 0,
            "notApplicable": 0,
            "denominator": 3
          },
          "size_or_volume": {
            "confirmed": 1,
            "notEstablished": 2,
            "notApplicable": 0,
            "denominator": 3
          },
          "wear_duration_claim": {
            "confirmed": 1,
            "notEstablished": 2,
            "notApplicable": 0,
            "denominator": 3
          },
          "hydration_duration_claim": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "water_resistance_claim": {
            "confirmed": 3,
            "notEstablished": 0,
            "notApplicable": 0,
            "denominator": 3
          },
          "no_transfer_claim": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "removal_guidance": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "important_limitation": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          }
        }
      },
      "FOUNDATION": {
        "label": "Fond de teint",
        "records": 3,
        "signals": {
          "source_page": {
            "confirmed": 3,
            "notEstablished": 0,
            "notApplicable": 0,
            "denominator": 3
          },
          "application_guidance": {
            "confirmed": 3,
            "notEstablished": 0,
            "notApplicable": 0,
            "denominator": 3
          },
          "ingredients_online": {
            "confirmed": 1,
            "notEstablished": 2,
            "notApplicable": 0,
            "denominator": 3
          },
          "shade_count": {
            "confirmed": 3,
            "notEstablished": 0,
            "notApplicable": 0,
            "denominator": 3
          },
          "size_or_volume": {
            "confirmed": 1,
            "notEstablished": 2,
            "notApplicable": 0,
            "denominator": 3
          },
          "wear_duration_claim": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "hydration_duration_claim": {
            "confirmed": 1,
            "notEstablished": 2,
            "notApplicable": 0,
            "denominator": 3
          },
          "water_resistance_claim": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "no_transfer_claim": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "removal_guidance": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "important_limitation": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          }
        }
      },
      "CONCEALER": {
        "label": "Anticernes",
        "records": 3,
        "signals": {
          "source_page": {
            "confirmed": 3,
            "notEstablished": 0,
            "notApplicable": 0,
            "denominator": 3
          },
          "application_guidance": {
            "confirmed": 3,
            "notEstablished": 0,
            "notApplicable": 0,
            "denominator": 3
          },
          "ingredients_online": {
            "confirmed": 2,
            "notEstablished": 1,
            "notApplicable": 0,
            "denominator": 3
          },
          "shade_count": {
            "confirmed": 3,
            "notEstablished": 0,
            "notApplicable": 0,
            "denominator": 3
          },
          "size_or_volume": {
            "confirmed": 1,
            "notEstablished": 2,
            "notApplicable": 0,
            "denominator": 3
          },
          "wear_duration_claim": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "hydration_duration_claim": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "water_resistance_claim": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "no_transfer_claim": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "removal_guidance": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "important_limitation": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          }
        }
      },
      "EYELINER": {
        "label": "Eyeliner",
        "records": 3,
        "signals": {
          "source_page": {
            "confirmed": 3,
            "notEstablished": 0,
            "notApplicable": 0,
            "denominator": 3
          },
          "application_guidance": {
            "confirmed": 3,
            "notEstablished": 0,
            "notApplicable": 0,
            "denominator": 3
          },
          "ingredients_online": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "shade_count": {
            "confirmed": 2,
            "notEstablished": 1,
            "notApplicable": 0,
            "denominator": 3
          },
          "size_or_volume": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "wear_duration_claim": {
            "confirmed": 3,
            "notEstablished": 0,
            "notApplicable": 0,
            "denominator": 3
          },
          "hydration_duration_claim": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "water_resistance_claim": {
            "confirmed": 2,
            "notEstablished": 1,
            "notApplicable": 0,
            "denominator": 3
          },
          "no_transfer_claim": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "removal_guidance": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "important_limitation": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          }
        }
      },
      "LONG_WEAR_LIP": {
        "label": "Rouge à lèvres longue tenue",
        "records": 3,
        "signals": {
          "source_page": {
            "confirmed": 3,
            "notEstablished": 0,
            "notApplicable": 0,
            "denominator": 3
          },
          "application_guidance": {
            "confirmed": 3,
            "notEstablished": 0,
            "notApplicable": 0,
            "denominator": 3
          },
          "ingredients_online": {
            "confirmed": 2,
            "notEstablished": 1,
            "notApplicable": 0,
            "denominator": 3
          },
          "shade_count": {
            "confirmed": 3,
            "notEstablished": 0,
            "notApplicable": 0,
            "denominator": 3
          },
          "size_or_volume": {
            "confirmed": 1,
            "notEstablished": 2,
            "notApplicable": 0,
            "denominator": 3
          },
          "wear_duration_claim": {
            "confirmed": 3,
            "notEstablished": 0,
            "notApplicable": 0,
            "denominator": 3
          },
          "hydration_duration_claim": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "water_resistance_claim": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "no_transfer_claim": {
            "confirmed": 3,
            "notEstablished": 0,
            "notApplicable": 0,
            "denominator": 3
          },
          "removal_guidance": {
            "confirmed": 1,
            "notEstablished": 2,
            "notApplicable": 0,
            "denominator": 3
          },
          "important_limitation": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          }
        }
      },
      "SELF_TANNER": {
        "label": "Autobronzant",
        "records": 3,
        "signals": {
          "source_page": {
            "confirmed": 3,
            "notEstablished": 0,
            "notApplicable": 0,
            "denominator": 3
          },
          "application_guidance": {
            "confirmed": 3,
            "notEstablished": 0,
            "notApplicable": 0,
            "denominator": 3
          },
          "ingredients_online": {
            "confirmed": 2,
            "notEstablished": 1,
            "notApplicable": 0,
            "denominator": 3
          },
          "shade_count": {
            "confirmed": 0,
            "notEstablished": 0,
            "notApplicable": 3,
            "denominator": 0
          },
          "size_or_volume": {
            "confirmed": 3,
            "notEstablished": 0,
            "notApplicable": 0,
            "denominator": 3
          },
          "wear_duration_claim": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "hydration_duration_claim": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "water_resistance_claim": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "no_transfer_claim": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "removal_guidance": {
            "confirmed": 0,
            "notEstablished": 3,
            "notApplicable": 0,
            "denominator": 3
          },
          "important_limitation": {
            "confirmed": 2,
            "notEstablished": 1,
            "notApplicable": 0,
            "denominator": 3
          }
        }
      }
    }
  },
  "records": [
    {
      "id": "QM-FR-MASCARA-001",
      "slug": "maybelline-sky-high-waterproof",
      "brand": "Maybelline New York",
      "product": "Sky High Waterproof",
      "category_key": "MASCARA_WATERPROOF",
      "category_label": "Mascara waterproof",
      "market": "FR",
      "source_url": "https://www.maybelline.fr/tous-les-produits/maquillage-des-yeux/mascaras/mascara-waterproof-cils-sensational-sky-high",
      "source_kind": "MANUFACTURER_PAGE",
      "observed_at": "2026-08-19",
      "last_verified_at": "2026-08-22",
      "selection_basis": "EDITORIAL_STARTER_SAMPLE",
      "signals": {
        "source_page": "CONFIRMED_PRESENT",
        "application_guidance": "NOT_ESTABLISHED",
        "ingredients_online": "NOT_ESTABLISHED",
        "shade_count": "CONFIRMED_PRESENT",
        "size_or_volume": "NOT_ESTABLISHED",
        "wear_duration_claim": "NOT_ESTABLISHED",
        "hydration_duration_claim": "NOT_ESTABLISHED",
        "water_resistance_claim": "CONFIRMED_PRESENT",
        "no_transfer_claim": "NOT_ESTABLISHED",
        "removal_guidance": "NOT_ESTABLISHED",
        "important_limitation": "NOT_ESTABLISHED"
      },
      "observed_values": {
        "duration_type": "NOT_ESTABLISHED",
        "duration_hours": null,
        "shade_count": 1,
        "size_or_volume": null
      }
    },
    {
      "id": "QM-FR-MASCARA-002",
      "slug": "loreal-telescopic-lift-waterproof",
      "brand": "L'Oréal Paris",
      "product": "Telescopic Lift Waterproof",
      "category_key": "MASCARA_WATERPROOF",
      "category_label": "Mascara waterproof",
      "market": "FR",
      "source_url": "https://www.loreal-paris.fr/maquillage/mascara-telescopic-lift-waterproof/OAP7434.html",
      "source_kind": "MANUFACTURER_PAGE",
      "observed_at": "2026-08-19",
      "last_verified_at": "2026-08-22",
      "selection_basis": "EDITORIAL_STARTER_SAMPLE",
      "signals": {
        "source_page": "CONFIRMED_PRESENT",
        "application_guidance": "NOT_ESTABLISHED",
        "ingredients_online": "NOT_ESTABLISHED",
        "shade_count": "CONFIRMED_PRESENT",
        "size_or_volume": "CONFIRMED_PRESENT",
        "wear_duration_claim": "NOT_ESTABLISHED",
        "hydration_duration_claim": "NOT_ESTABLISHED",
        "water_resistance_claim": "CONFIRMED_PRESENT",
        "no_transfer_claim": "NOT_ESTABLISHED",
        "removal_guidance": "NOT_ESTABLISHED",
        "important_limitation": "NOT_ESTABLISHED"
      },
      "observed_values": {
        "duration_type": "NOT_ESTABLISHED",
        "duration_hours": null,
        "shade_count": 1,
        "size_or_volume": "9,9 ml"
      }
    },
    {
      "id": "QM-FR-MASCARA-003",
      "slug": "lancome-monsieur-big-waterproof",
      "brand": "Lancôme",
      "product": "Monsieur Big Waterproof",
      "category_key": "MASCARA_WATERPROOF",
      "category_label": "Mascara waterproof",
      "market": "FR",
      "source_url": "https://www.lancome.fr/maquillage/maquillage-yeux/mascara-waterproof/monsieur-big-waterproof/A00915-LAC.html",
      "source_kind": "MANUFACTURER_PAGE",
      "observed_at": "2026-08-19",
      "last_verified_at": "2026-08-22",
      "selection_basis": "EDITORIAL_STARTER_SAMPLE",
      "signals": {
        "source_page": "CONFIRMED_PRESENT",
        "application_guidance": "NOT_ESTABLISHED",
        "ingredients_online": "NOT_ESTABLISHED",
        "shade_count": "CONFIRMED_PRESENT",
        "size_or_volume": "NOT_ESTABLISHED",
        "wear_duration_claim": "CONFIRMED_PRESENT",
        "hydration_duration_claim": "NOT_ESTABLISHED",
        "water_resistance_claim": "CONFIRMED_PRESENT",
        "no_transfer_claim": "NOT_ESTABLISHED",
        "removal_guidance": "NOT_ESTABLISHED",
        "important_limitation": "NOT_ESTABLISHED"
      },
      "observed_values": {
        "duration_type": "WEAR",
        "duration_hours": 24,
        "shade_count": 1,
        "size_or_volume": null
      }
    },
    {
      "id": "QM-FR-FOUNDATION-001",
      "slug": "maybelline-fit-me-matte-poreless",
      "brand": "Maybelline New York",
      "product": "Fit Me Matte + Poreless",
      "category_key": "FOUNDATION",
      "category_label": "Fond de teint",
      "market": "FR",
      "source_url": "https://www.maybelline.fr/tous-les-produits/maquillage-teint/fond-de-teint/fond-de-teint-fit-me-matte-poreless",
      "source_kind": "MANUFACTURER_PAGE",
      "observed_at": "2026-08-22",
      "last_verified_at": "2026-08-22",
      "selection_basis": "EDITORIAL_STARTER_SAMPLE",
      "signals": {
        "source_page": "CONFIRMED_PRESENT",
        "application_guidance": "CONFIRMED_PRESENT",
        "ingredients_online": "CONFIRMED_PRESENT",
        "shade_count": "CONFIRMED_PRESENT",
        "size_or_volume": "NOT_ESTABLISHED",
        "wear_duration_claim": "NOT_ESTABLISHED",
        "hydration_duration_claim": "NOT_ESTABLISHED",
        "water_resistance_claim": "NOT_ESTABLISHED",
        "no_transfer_claim": "NOT_ESTABLISHED",
        "removal_guidance": "NOT_ESTABLISHED",
        "important_limitation": "NOT_ESTABLISHED"
      },
      "observed_values": {
        "duration_type": "NOT_ESTABLISHED",
        "duration_hours": null,
        "shade_count": 18,
        "size_or_volume": null
      }
    },
    {
      "id": "QM-FR-FOUNDATION-002",
      "slug": "loreal-accord-parfait-fond-de-teint",
      "brand": "L'Oréal Paris",
      "product": "Accord Parfait Fond de teint",
      "category_key": "FOUNDATION",
      "category_label": "Fond de teint",
      "market": "FR",
      "source_url": "https://www.loreal-paris.fr/maquillage/teint/fond-de-teint/fond-de-teint-accord-parfait/3600523016419.html",
      "source_kind": "MANUFACTURER_PAGE",
      "observed_at": "2026-08-22",
      "last_verified_at": "2026-08-22",
      "selection_basis": "EDITORIAL_STARTER_SAMPLE",
      "signals": {
        "source_page": "CONFIRMED_PRESENT",
        "application_guidance": "CONFIRMED_PRESENT",
        "ingredients_online": "NOT_ESTABLISHED",
        "shade_count": "CONFIRMED_PRESENT",
        "size_or_volume": "NOT_ESTABLISHED",
        "wear_duration_claim": "NOT_ESTABLISHED",
        "hydration_duration_claim": "CONFIRMED_PRESENT",
        "water_resistance_claim": "NOT_ESTABLISHED",
        "no_transfer_claim": "NOT_ESTABLISHED",
        "removal_guidance": "NOT_ESTABLISHED",
        "important_limitation": "NOT_ESTABLISHED"
      },
      "observed_values": {
        "duration_type": "HYDRATION",
        "duration_hours": 24,
        "shade_count": 35,
        "size_or_volume": null
      }
    },
    {
      "id": "QM-FR-FOUNDATION-003",
      "slug": "bourjois-healthy-mix-fond-de-teint",
      "brand": "Bourjois",
      "product": "Healthy Mix Fond de teint",
      "category_key": "FOUNDATION",
      "category_label": "Fond de teint",
      "market": "FR",
      "source_url": "https://bourjois.fr/products/fond-de-teint-healthy-mix-beige-3616307172905",
      "source_kind": "MANUFACTURER_PAGE",
      "observed_at": "2026-08-22",
      "last_verified_at": "2026-08-22",
      "selection_basis": "EDITORIAL_STARTER_SAMPLE",
      "signals": {
        "source_page": "CONFIRMED_PRESENT",
        "application_guidance": "CONFIRMED_PRESENT",
        "ingredients_online": "NOT_ESTABLISHED",
        "shade_count": "CONFIRMED_PRESENT",
        "size_or_volume": "CONFIRMED_PRESENT",
        "wear_duration_claim": "NOT_ESTABLISHED",
        "hydration_duration_claim": "NOT_ESTABLISHED",
        "water_resistance_claim": "NOT_ESTABLISHED",
        "no_transfer_claim": "NOT_ESTABLISHED",
        "removal_guidance": "NOT_ESTABLISHED",
        "important_limitation": "NOT_ESTABLISHED"
      },
      "observed_values": {
        "duration_type": "NOT_ESTABLISHED",
        "duration_hours": null,
        "shade_count": 18,
        "size_or_volume": "30 ml"
      }
    },
    {
      "id": "QM-FR-CONCEALER-001",
      "slug": "loreal-accord-parfait-serum-anti-cernes",
      "brand": "L'Oréal Paris",
      "product": "Accord Parfait Sérum anti-cernes",
      "category_key": "CONCEALER",
      "category_label": "Anticernes",
      "market": "FR",
      "source_url": "https://www.loreal-paris.fr/maquillage/accord-parfait-serum-anti-cernes/30188419.html",
      "source_kind": "MANUFACTURER_PAGE",
      "observed_at": "2026-08-22",
      "last_verified_at": "2026-08-22",
      "selection_basis": "EDITORIAL_STARTER_SAMPLE",
      "signals": {
        "source_page": "CONFIRMED_PRESENT",
        "application_guidance": "CONFIRMED_PRESENT",
        "ingredients_online": "CONFIRMED_PRESENT",
        "shade_count": "CONFIRMED_PRESENT",
        "size_or_volume": "NOT_ESTABLISHED",
        "wear_duration_claim": "NOT_ESTABLISHED",
        "hydration_duration_claim": "NOT_ESTABLISHED",
        "water_resistance_claim": "NOT_ESTABLISHED",
        "no_transfer_claim": "NOT_ESTABLISHED",
        "removal_guidance": "NOT_ESTABLISHED",
        "important_limitation": "NOT_ESTABLISHED"
      },
      "observed_values": {
        "duration_type": "NOT_ESTABLISHED",
        "duration_hours": null,
        "shade_count": 18,
        "size_or_volume": null
      }
    },
    {
      "id": "QM-FR-CONCEALER-002",
      "slug": "sephora-best-skin-ever-anticernes",
      "brand": "Sephora Collection",
      "product": "Best Skin Ever Anticernes multi-usages",
      "category_key": "CONCEALER",
      "category_label": "Anticernes",
      "market": "FR",
      "source_url": "https://www.sephora.fr/p/best-skin-ever---anticerne-multi-usages-732364.html",
      "source_kind": "BRAND_RETAIL_PAGE",
      "observed_at": "2026-08-22",
      "last_verified_at": "2026-08-22",
      "selection_basis": "EDITORIAL_STARTER_SAMPLE",
      "signals": {
        "source_page": "CONFIRMED_PRESENT",
        "application_guidance": "CONFIRMED_PRESENT",
        "ingredients_online": "NOT_ESTABLISHED",
        "shade_count": "CONFIRMED_PRESENT",
        "size_or_volume": "CONFIRMED_PRESENT",
        "wear_duration_claim": "NOT_ESTABLISHED",
        "hydration_duration_claim": "NOT_ESTABLISHED",
        "water_resistance_claim": "NOT_ESTABLISHED",
        "no_transfer_claim": "NOT_ESTABLISHED",
        "removal_guidance": "NOT_ESTABLISHED",
        "important_limitation": "NOT_ESTABLISHED"
      },
      "observed_values": {
        "duration_type": "NOT_ESTABLISHED",
        "duration_hours": null,
        "shade_count": 24,
        "size_or_volume": "5 ml"
      }
    },
    {
      "id": "QM-FR-CONCEALER-003",
      "slug": "maybelline-instant-effaceur-anti-cernes",
      "brand": "Maybelline New York",
      "product": "Instant Effaceur Anti-Cernes",
      "category_key": "CONCEALER",
      "category_label": "Anticernes",
      "market": "FR",
      "source_url": "https://www.maybelline.fr/tous-les-produits/maquillage-teint/correcteurs/maybelline-leffaceur-instant-anti-age-correcteur",
      "source_kind": "MANUFACTURER_PAGE",
      "observed_at": "2026-08-22",
      "last_verified_at": "2026-08-22",
      "selection_basis": "EDITORIAL_STARTER_SAMPLE",
      "signals": {
        "source_page": "CONFIRMED_PRESENT",
        "application_guidance": "CONFIRMED_PRESENT",
        "ingredients_online": "CONFIRMED_PRESENT",
        "shade_count": "CONFIRMED_PRESENT",
        "size_or_volume": "NOT_ESTABLISHED",
        "wear_duration_claim": "NOT_ESTABLISHED",
        "hydration_duration_claim": "NOT_ESTABLISHED",
        "water_resistance_claim": "NOT_ESTABLISHED",
        "no_transfer_claim": "NOT_ESTABLISHED",
        "removal_guidance": "NOT_ESTABLISHED",
        "important_limitation": "NOT_ESTABLISHED"
      },
      "observed_values": {
        "duration_type": "NOT_ESTABLISHED",
        "duration_hours": null,
        "shade_count": 15,
        "size_or_volume": null
      }
    },
    {
      "id": "QM-FR-EYELINER-001",
      "slug": "nyx-epic-ink-liner",
      "brand": "NYX Professional Makeup",
      "product": "Epic Ink Liner",
      "category_key": "EYELINER",
      "category_label": "Eyeliner",
      "market": "FR",
      "source_url": "https://www.nyxcosmetics.fr/yeux/eyeliner/epic-ink-liner%E2%80%8B/NYX_409.html",
      "source_kind": "MANUFACTURER_PAGE",
      "observed_at": "2026-08-22",
      "last_verified_at": "2026-08-22",
      "selection_basis": "EDITORIAL_STARTER_SAMPLE",
      "signals": {
        "source_page": "CONFIRMED_PRESENT",
        "application_guidance": "CONFIRMED_PRESENT",
        "ingredients_online": "NOT_ESTABLISHED",
        "shade_count": "CONFIRMED_PRESENT",
        "size_or_volume": "NOT_ESTABLISHED",
        "wear_duration_claim": "CONFIRMED_PRESENT",
        "hydration_duration_claim": "NOT_ESTABLISHED",
        "water_resistance_claim": "CONFIRMED_PRESENT",
        "no_transfer_claim": "NOT_ESTABLISHED",
        "removal_guidance": "NOT_ESTABLISHED",
        "important_limitation": "NOT_ESTABLISHED"
      },
      "observed_values": {
        "duration_type": "WEAR",
        "duration_hours": 24,
        "shade_count": 14,
        "size_or_volume": null
      }
    },
    {
      "id": "QM-FR-EYELINER-002",
      "slug": "loreal-infaillible-grip-36h-micro-fine-liner",
      "brand": "L'Oréal Paris",
      "product": "Infaillible Grip 36H Micro-Fine Liner",
      "category_key": "EYELINER",
      "category_label": "Eyeliner",
      "market": "FR",
      "source_url": "https://www.loreal-paris.fr/maquillage/yeux/eyeliners-et-crayons/infaillible-grip-36h-micro-fine-liner-eyeliner/OAP7315.html",
      "source_kind": "MANUFACTURER_PAGE",
      "observed_at": "2026-08-22",
      "last_verified_at": "2026-08-22",
      "selection_basis": "EDITORIAL_STARTER_SAMPLE",
      "signals": {
        "source_page": "CONFIRMED_PRESENT",
        "application_guidance": "CONFIRMED_PRESENT",
        "ingredients_online": "NOT_ESTABLISHED",
        "shade_count": "NOT_ESTABLISHED",
        "size_or_volume": "NOT_ESTABLISHED",
        "wear_duration_claim": "CONFIRMED_PRESENT",
        "hydration_duration_claim": "NOT_ESTABLISHED",
        "water_resistance_claim": "NOT_ESTABLISHED",
        "no_transfer_claim": "NOT_ESTABLISHED",
        "removal_guidance": "NOT_ESTABLISHED",
        "important_limitation": "NOT_ESTABLISHED"
      },
      "observed_values": {
        "duration_type": "WEAR",
        "duration_hours": 36,
        "shade_count": null,
        "size_or_volume": null
      }
    },
    {
      "id": "QM-FR-EYELINER-003",
      "slug": "nyx-epic-inky-stix",
      "brand": "NYX Professional Makeup",
      "product": "Epic Inky Stix",
      "category_key": "EYELINER",
      "category_label": "Eyeliner",
      "market": "FR",
      "source_url": "https://www.nyxcosmetics.fr/yeux/epic-inky-stix-liner/NYX_1167.html",
      "source_kind": "MANUFACTURER_PAGE",
      "observed_at": "2026-08-22",
      "last_verified_at": "2026-08-22",
      "selection_basis": "EDITORIAL_STARTER_SAMPLE",
      "signals": {
        "source_page": "CONFIRMED_PRESENT",
        "application_guidance": "CONFIRMED_PRESENT",
        "ingredients_online": "NOT_ESTABLISHED",
        "shade_count": "CONFIRMED_PRESENT",
        "size_or_volume": "NOT_ESTABLISHED",
        "wear_duration_claim": "CONFIRMED_PRESENT",
        "hydration_duration_claim": "NOT_ESTABLISHED",
        "water_resistance_claim": "CONFIRMED_PRESENT",
        "no_transfer_claim": "NOT_ESTABLISHED",
        "removal_guidance": "NOT_ESTABLISHED",
        "important_limitation": "NOT_ESTABLISHED"
      },
      "observed_values": {
        "duration_type": "WEAR",
        "duration_hours": 24,
        "shade_count": 16,
        "size_or_volume": null
      }
    },
    {
      "id": "QM-FR-LIP-001",
      "slug": "maybelline-superstay-vinyl-ink",
      "brand": "Maybelline New York",
      "product": "SuperStay Vinyl Ink",
      "category_key": "LONG_WEAR_LIP",
      "category_label": "Rouge à lèvres longue tenue",
      "market": "FR",
      "source_url": "https://www.maybelline.fr/tous-les-produits/maquillage-des-levres/rouges-a-levres/rouge-a-levres-liquide-longue-tenue-super-stay-vinyl-ink",
      "source_kind": "MANUFACTURER_PAGE",
      "observed_at": "2026-08-22",
      "last_verified_at": "2026-08-22",
      "selection_basis": "EDITORIAL_STARTER_SAMPLE",
      "signals": {
        "source_page": "CONFIRMED_PRESENT",
        "application_guidance": "CONFIRMED_PRESENT",
        "ingredients_online": "CONFIRMED_PRESENT",
        "shade_count": "CONFIRMED_PRESENT",
        "size_or_volume": "NOT_ESTABLISHED",
        "wear_duration_claim": "CONFIRMED_PRESENT",
        "hydration_duration_claim": "NOT_ESTABLISHED",
        "water_resistance_claim": "NOT_ESTABLISHED",
        "no_transfer_claim": "CONFIRMED_PRESENT",
        "removal_guidance": "NOT_ESTABLISHED",
        "important_limitation": "NOT_ESTABLISHED"
      },
      "observed_values": {
        "duration_type": "WEAR",
        "duration_hours": 16,
        "shade_count": 20,
        "size_or_volume": null
      }
    },
    {
      "id": "QM-FR-LIP-002",
      "slug": "loreal-infaillible-matte-resistance",
      "brand": "L'Oréal Paris",
      "product": "Infaillible Matte Resistance",
      "category_key": "LONG_WEAR_LIP",
      "category_label": "Rouge à lèvres longue tenue",
      "market": "FR",
      "source_url": "https://www.loreal-paris.fr/maquillage/levres/rouge-a-levres/infaillible-matte-resistance-rouge-a-levres/OAP7282.html",
      "source_kind": "MANUFACTURER_PAGE",
      "observed_at": "2026-08-22",
      "last_verified_at": "2026-08-22",
      "selection_basis": "EDITORIAL_STARTER_SAMPLE",
      "signals": {
        "source_page": "CONFIRMED_PRESENT",
        "application_guidance": "CONFIRMED_PRESENT",
        "ingredients_online": "CONFIRMED_PRESENT",
        "shade_count": "CONFIRMED_PRESENT",
        "size_or_volume": "CONFIRMED_PRESENT",
        "wear_duration_claim": "CONFIRMED_PRESENT",
        "hydration_duration_claim": "NOT_ESTABLISHED",
        "water_resistance_claim": "NOT_ESTABLISHED",
        "no_transfer_claim": "CONFIRMED_PRESENT",
        "removal_guidance": "CONFIRMED_PRESENT",
        "important_limitation": "NOT_ESTABLISHED"
      },
      "observed_values": {
        "duration_type": "WEAR",
        "duration_hours": 16,
        "shade_count": 9,
        "size_or_volume": "5 ml"
      }
    },
    {
      "id": "QM-FR-LIP-003",
      "slug": "nyx-lip-lingerie-xxl",
      "brand": "NYX Professional Makeup",
      "product": "Lip Lingerie XXL",
      "category_key": "LONG_WEAR_LIP",
      "category_label": "Rouge à lèvres longue tenue",
      "market": "FR",
      "source_url": "https://www.nyxcosmetics.fr/best-sellers/rouge-a-levres-mat-lip-lingerie-xxl/800897003920.html",
      "source_kind": "MANUFACTURER_PAGE",
      "observed_at": "2026-08-22",
      "last_verified_at": "2026-08-22",
      "selection_basis": "EDITORIAL_STARTER_SAMPLE",
      "signals": {
        "source_page": "CONFIRMED_PRESENT",
        "application_guidance": "CONFIRMED_PRESENT",
        "ingredients_online": "NOT_ESTABLISHED",
        "shade_count": "CONFIRMED_PRESENT",
        "size_or_volume": "NOT_ESTABLISHED",
        "wear_duration_claim": "CONFIRMED_PRESENT",
        "hydration_duration_claim": "NOT_ESTABLISHED",
        "water_resistance_claim": "NOT_ESTABLISHED",
        "no_transfer_claim": "CONFIRMED_PRESENT",
        "removal_guidance": "NOT_ESTABLISHED",
        "important_limitation": "NOT_ESTABLISHED"
      },
      "observed_values": {
        "duration_type": "WEAR",
        "duration_hours": 16,
        "shade_count": 29,
        "size_or_volume": null
      }
    },
    {
      "id": "QM-FR-SELF-TAN-001",
      "slug": "garnier-natural-bronzer-serum-visage",
      "brand": "Garnier",
      "product": "Natural Bronzer Sérum visage autobronzant",
      "category_key": "SELF_TANNER",
      "category_label": "Autobronzant",
      "market": "FR",
      "source_url": "https://www.garnier.fr/nos-marques/soin-solaire/ambre-solaire/natural-bronzer/serum-visage-autobronzant",
      "source_kind": "MANUFACTURER_PAGE",
      "observed_at": "2026-08-22",
      "last_verified_at": "2026-08-22",
      "selection_basis": "EDITORIAL_STARTER_SAMPLE",
      "signals": {
        "source_page": "CONFIRMED_PRESENT",
        "application_guidance": "CONFIRMED_PRESENT",
        "ingredients_online": "CONFIRMED_PRESENT",
        "shade_count": "NOT_APPLICABLE",
        "size_or_volume": "CONFIRMED_PRESENT",
        "wear_duration_claim": "NOT_ESTABLISHED",
        "hydration_duration_claim": "NOT_ESTABLISHED",
        "water_resistance_claim": "NOT_ESTABLISHED",
        "no_transfer_claim": "NOT_ESTABLISHED",
        "removal_guidance": "NOT_ESTABLISHED",
        "important_limitation": "CONFIRMED_PRESENT"
      },
      "observed_values": {
        "duration_type": "NOT_ESTABLISHED",
        "duration_hours": null,
        "shade_count": null,
        "size_or_volume": "30 ml"
      }
    },
    {
      "id": "QM-FR-SELF-TAN-002",
      "slug": "clarins-addition-concentre-eclat-visage",
      "brand": "Clarins",
      "product": "Addition Concentré Éclat Visage",
      "category_key": "SELF_TANNER",
      "category_label": "Autobronzant",
      "market": "FR",
      "source_url": "https://www.clarins.fr/addition-concentre-eclat-auto-bronzant-visage/CS00356124.html",
      "source_kind": "MANUFACTURER_PAGE",
      "observed_at": "2026-08-22",
      "last_verified_at": "2026-08-22",
      "selection_basis": "EDITORIAL_STARTER_SAMPLE",
      "signals": {
        "source_page": "CONFIRMED_PRESENT",
        "application_guidance": "CONFIRMED_PRESENT",
        "ingredients_online": "CONFIRMED_PRESENT",
        "shade_count": "NOT_APPLICABLE",
        "size_or_volume": "CONFIRMED_PRESENT",
        "wear_duration_claim": "NOT_ESTABLISHED",
        "hydration_duration_claim": "NOT_ESTABLISHED",
        "water_resistance_claim": "NOT_ESTABLISHED",
        "no_transfer_claim": "NOT_ESTABLISHED",
        "removal_guidance": "NOT_ESTABLISHED",
        "important_limitation": "CONFIRMED_PRESENT"
      },
      "observed_values": {
        "duration_type": "NOT_ESTABLISHED",
        "duration_hours": null,
        "shade_count": null,
        "size_or_volume": "15 ml"
      }
    },
    {
      "id": "QM-FR-SELF-TAN-003",
      "slug": "sephora-gouttes-autobronzantes-progressives",
      "brand": "Sephora Collection",
      "product": "Gouttes autobronzantes progressives",
      "category_key": "SELF_TANNER",
      "category_label": "Autobronzant",
      "market": "FR",
      "source_url": "https://www.sephora.fr/p/gouttes-autobronzantes-progressives---a-la-dha-et-a-l-acide-hyaluronique-P1000213375.html",
      "source_kind": "BRAND_RETAIL_PAGE",
      "observed_at": "2026-08-22",
      "last_verified_at": "2026-08-22",
      "selection_basis": "EDITORIAL_STARTER_SAMPLE",
      "signals": {
        "source_page": "CONFIRMED_PRESENT",
        "application_guidance": "CONFIRMED_PRESENT",
        "ingredients_online": "NOT_ESTABLISHED",
        "shade_count": "NOT_APPLICABLE",
        "size_or_volume": "CONFIRMED_PRESENT",
        "wear_duration_claim": "NOT_ESTABLISHED",
        "hydration_duration_claim": "NOT_ESTABLISHED",
        "water_resistance_claim": "NOT_ESTABLISHED",
        "no_transfer_claim": "NOT_ESTABLISHED",
        "removal_guidance": "NOT_ESTABLISHED",
        "important_limitation": "NOT_ESTABLISHED"
      },
      "observed_values": {
        "duration_type": "NOT_ESTABLISHED",
        "duration_hours": null,
        "shade_count": null,
        "size_or_volume": "30 ml"
      }
    }
  ]
}
