{
    "product": "reference_publishable_territory_page_pack",
    "status": "copy_ready",
    "generated_at": "2026-07-07T22:21:21+00:00",
    "blueprint_count": 4,
    "section_count": 6,
    "cms_field_count": 10,
    "gate_count": 5,
    "copy_block_count": 4,
    "input_template": "sources/reference-publishable-territory-page-template.csv",
    "source_products": [
        "reference_user_need_kpi_map",
        "reference_kpi_copy_pack",
        "reference_page_publication_kit",
        "reference_territory_page_kit",
        "reference_territory_publication_bundle"
    ],
    "sections": [
        {
            "key": "hero",
            "label": "Hero territoire",
            "purpose": "Dire en 8 secondes pourquoi le territoire compte pour le vin et l oenotourisme.",
            "required_slots": [
                "territory_name",
                "territory_type",
                "hero_claim",
                "oenotourism_score",
                "source_trust_score"
            ],
            "kpi_keys": [
                "oenotourism_score",
                "source_trust_score"
            ],
            "copy_prompt": "{territory_name} est {hero_claim}. Score oenotourisme : {oenotourism_score}/100. Confiance data : {source_trust_score}/100.",
            "must_show": [
                "date_source",
                "maille",
                "caveat_score_composite"
            ]
        },
        {
            "key": "proof_strip",
            "label": "Bandeau preuves",
            "purpose": "Afficher les 3 preuves les plus lisibles sans noyer l utilisateur.",
            "required_slots": [
                "proof_1_label",
                "proof_1_value",
                "proof_2_label",
                "proof_2_value",
                "proof_3_label",
                "proof_3_value"
            ],
            "kpi_keys": [
                "tourism_demand_signal",
                "quality_reception_signal",
                "organic_wine_signal"
            ],
            "copy_prompt": "Les preuves principales : {proof_1_label} {proof_1_value}, {proof_2_label} {proof_2_value}, {proof_3_label} {proof_3_value}.",
            "must_show": [
                "source_name_per_proof",
                "period_per_proof"
            ]
        },
        {
            "key": "demand_offer_story",
            "label": "Lecture demande / offre",
            "purpose": "Separarer attractivite touristique, offre vin et capacite d accueil avant interpretation.",
            "required_slots": [
                "demand_signal_level",
                "offer_signal_level",
                "reception_signal_level",
                "interpretation"
            ],
            "kpi_keys": [
                "tourism_demand_signal",
                "demand_offer_balance",
                "quality_reception_signal"
            ],
            "copy_prompt": "Lecture : la demande est {demand_signal_level}, l offre vin est {offer_signal_level}, l accueil est {reception_signal_level}. Interpretation : {interpretation}.",
            "must_show": [
                "no_direct_visit_prediction",
                "source_family_split"
            ]
        },
        {
            "key": "comparison_module",
            "label": "Comparaison territoires",
            "purpose": "Montrer un rang ou un ecart uniquement si les mailles et periodes sont compatibles.",
            "required_slots": [
                "comparison_set",
                "rank_label",
                "rank_value",
                "comparison_caveat"
            ],
            "kpi_keys": [
                "territory_reference_score",
                "freshness_score",
                "source_trust_score"
            ],
            "copy_prompt": "Dans le panel {comparison_set}, {territory_name} se classe {rank_value}. Limite : {comparison_caveat}.",
            "must_show": [
                "same_granularity_gate",
                "same_period_gate"
            ]
        },
        {
            "key": "source_trust_panel",
            "label": "Panneau confiance source",
            "purpose": "Rendre visible pourquoi un KPI peut etre publie ou seulement utilise en interne.",
            "required_slots": [
                "publication_status",
                "source_trust_score",
                "source_count",
                "main_caveat"
            ],
            "kpi_keys": [
                "publication_certificate",
                "source_attribution",
                "public_footnote"
            ],
            "copy_prompt": "Statut publication : {publication_status}. Sources mobilisees : {source_count}. Limite principale : {main_caveat}.",
            "must_show": [
                "license_status",
                "last_refresh",
                "attribution"
            ]
        },
        {
            "key": "source_gap_cta",
            "label": "CTA source manquante",
            "purpose": "Transformer les limites data en prochaine action concrete plutot qu en faiblesse cachee.",
            "required_slots": [
                "source_gap_label",
                "producer_name",
                "sample_expected",
                "next_action"
            ],
            "kpi_keys": [
                "source_demand_score",
                "acceptance_gate_count",
                "research_now_count"
            ],
            "copy_prompt": "Source a renforcer : {source_gap_label}. Prochaine action : contacter {producer_name} pour obtenir {sample_expected}.",
            "must_show": [
                "no_access_guarantee",
                "license_gate"
            ]
        }
    ],
    "blueprints": [
        {
            "key": "public_territory_profile",
            "label": "Page territoire publique",
            "target_user_need": "publish_territory_profile",
            "sections": [
                "hero",
                "proof_strip",
                "demand_offer_story",
                "source_trust_panel",
                "source_gap_cta"
            ],
            "tone": "clair, institutionnel, confiant mais prudent",
            "copy_destination": "site public, observatoire, page destination",
            "minimum_publication_gate": "hero, preuves, sources et caveat visibles au-dessus du fold ou dans la note methode."
        },
        {
            "key": "comparison_landing",
            "label": "Landing comparative",
            "target_user_need": "compare_destinations",
            "sections": [
                "hero",
                "comparison_module",
                "proof_strip",
                "source_trust_panel"
            ],
            "tone": "analytique, direct, defensible",
            "copy_destination": "benchmark, deck direction, article data",
            "minimum_publication_gate": "aucun rang sans maille et periode compatibles."
        },
        {
            "key": "commercial_one_pager",
            "label": "One-pager commercial",
            "target_user_need": "sell_market_story",
            "sections": [
                "hero",
                "demand_offer_story",
                "proof_strip",
                "source_gap_cta"
            ],
            "tone": "vendeur, concret, sans surpromesse",
            "copy_destination": "PDF sales, CRM, note partenaire",
            "minimum_publication_gate": "au moins deux familles de preuves independantes avant interpretation."
        },
        {
            "key": "method_citation_page",
            "label": "Page methode / citation",
            "target_user_need": "cite_public_metric",
            "sections": [
                "source_trust_panel",
                "proof_strip",
                "comparison_module"
            ],
            "tone": "methodologique, citeable, sobre",
            "copy_destination": "annexe, page methode, data room",
            "minimum_publication_gate": "source, date, maille, licence et caveat presents pour chaque chiffre."
        }
    ],
    "cms_fields": [
        {
            "key": "territory_key",
            "type": "string",
            "required": true,
            "description": "Identifiant stable du territoire."
        },
        {
            "key": "territory_name",
            "type": "string",
            "required": true,
            "description": "Nom public du territoire."
        },
        {
            "key": "territory_type",
            "type": "enum",
            "required": true,
            "description": "Commune, appellation, destination, departement, region ou cluster."
        },
        {
            "key": "hero_claim",
            "type": "string",
            "required": true,
            "description": "Accroche publique prudente et defensible."
        },
        {
            "key": "oenotourism_score",
            "type": "number",
            "required": false,
            "description": "Score composite a publier avec caveat."
        },
        {
            "key": "source_trust_score",
            "type": "number",
            "required": true,
            "description": "Score de confiance data."
        },
        {
            "key": "publication_status",
            "type": "enum",
            "required": true,
            "description": "publishable, publish_with_caveat, internal_only ou blocked."
        },
        {
            "key": "main_sources",
            "type": "list",
            "required": true,
            "description": "Sources affichees dans la note publique."
        },
        {
            "key": "main_caveat",
            "type": "text",
            "required": true,
            "description": "Limite principale a garder visible."
        },
        {
            "key": "next_source_action",
            "type": "text",
            "required": false,
            "description": "Action source a pousser si la page revele un manque."
        }
    ],
    "gates": [
        {
            "key": "need_is_explicit",
            "label": "Besoin utilisateur explicite",
            "rule": "Chaque page doit pointer vers un besoin de la User Need KPI Map.",
            "failure_mode": "Page jolie mais non actionnable."
        },
        {
            "key": "no_kpi_without_source",
            "label": "Aucun KPI sans source",
            "rule": "Chaque KPI affiche doit avoir source, date ou periode, maille et caveat.",
            "failure_mode": "Chiffre repris hors contexte."
        },
        {
            "key": "composite_score_disclosed",
            "label": "Score composite disclose",
            "rule": "Tout score agrege doit etre nomme comme score composite et non comme fait brut.",
            "failure_mode": "Surpromesse methodologique."
        },
        {
            "key": "comparison_is_compatible",
            "label": "Comparaison compatible",
            "rule": "Aucun rang ou benchmark sans maille, periode et definition comparables.",
            "failure_mode": "Classement trompeur."
        },
        {
            "key": "copy_is_reusable",
            "label": "Copie reutilisable",
            "rule": "Le bloc doit pouvoir etre colle dans un deck ou une page sans explication orale.",
            "failure_mode": "Dependance a un contexte implicite."
        }
    ],
    "blocks": [
        {
            "key": "hero_markdown",
            "label": "Hero Markdown",
            "format": "markdown",
            "block": "## {territory_name}\\n{hero_claim}\\n\\n- Score oenotourisme : {oenotourism_score}/100\\n- Confiance data : {source_trust_score}/100\\n- Statut publication : {publication_status}\\n\\n_Limite : {main_caveat}_"
        },
        {
            "key": "proof_cards",
            "label": "Cartes preuves",
            "format": "markdown",
            "block": "### Preuves principales\\n1. {proof_1_label} : {proof_1_value} ({proof_1_source})\\n2. {proof_2_label} : {proof_2_value} ({proof_2_source})\\n3. {proof_3_label} : {proof_3_value} ({proof_3_source})"
        },
        {
            "key": "method_note",
            "label": "Note methode",
            "format": "markdown",
            "block": "Sources : {main_sources}. Maille : {granularity}. Periode : {period}. Licence/statut : {license_status}. Caveat : {main_caveat}."
        },
        {
            "key": "source_gap_action",
            "label": "Action source",
            "format": "markdown",
            "block": "Source a renforcer : {source_gap_label}. Producteur cible : {producer_name}. Echantillon attendu : {sample_expected}. Prochaine action : {next_source_action}."
        }
    ],
    "user_need_map_summary": {
        "persona_count": 5,
        "need_count": 5,
        "unique_kpi_count": 19
    },
    "publication_caveat": "Ce pack assemble des pages copiables. Il ne remplace pas l alimentation reelle des valeurs KPI, les certificats de publication ou les controles runtime."
}