{
  "generated_at": "2026-05-10",
  "slug": "zm-monterrey",
  "city": "ZM Monterrey",
  "state": "Nuevo León",
  "centroid": {
    "lat": 25.686243105,
    "lng": -100.33089066,
    "store_count": 46
  },
  "products": {
    "pisos": {
      "slug": "zm-monterrey",
      "city": "ZM Monterrey",
      "state": "Nuevo León",
      "product": "pisos",
      "score": 58,
      "verdict": "ATRACTIVA",
      "rank_nat": 6,
      "rank_state": 1,
      "tam_mdp": 850,
      "som_mdp": 14.92,
      "gtm": "distribuidor_exclusivo",
      "invest_min_k": 2000,
      "invest_max_k": 4000,
      "payback_m": 19,
      "top_comp": "Construrama",
      "top_comp_pts": 95,
      "cesa_pts": 8,
      "population": 3690496,
      "hogares": 1017511,
      "nse_w": 17.18,
      "cesa_pts_breakdown": {
        "propios": 0,
        "distribuidores": 8,
        "source": "cesantoni-true-presence-by-plaza.json"
      },
      "tam_total_mdp": 1404,
      "tam_total_corrected_mdp": 850,
      "tam_mdp_note": "tam_total_corrected_mdp uses ÷1.2 factor — middle of Mordor benchmark range. Original tam_mdp preserved.",
      "top_competitors_array": [
        {
          "name": "Independientes",
          "store_count": 43,
          "source": "DENUE SCIAN 467112 (2026-05-03)"
        },
        {
          "name": "Interceramic",
          "store_count": 3,
          "source": "DENUE SCIAN 467112 (2026-05-03)"
        }
      ],
      "conavi_subsidio_acciones_2024": 0,
      "conavi_subsidio_monto_mxn_2024": 0,
      "infonavit_creditos_2024": 58713,
      "infonavit_monto_mxn_2024": 27271679044.95,
      "infonavit_creditos_nueva_2024": 24460,
      "fovissste_creditos_2024_state": 754,
      "housing_finance_match_method": "zm_sum_of_full_inegi_members",
      "sam_serviceable_pct_premium": 25,
      "sam_serviceable_mdp": 340,
      "som_target_mdp": 15,
      "sam_assumption": "Semilujo+Lujo segments per Excel TERRA cost-segments-by-plaza.json. NSE A/B/C+ households: ZM=25%, standalone=15%. Cesantoni price range $350-650/m² (v1 verified Jan 2026, may be stale).",
      "sam_cost_segments_match": "Monterrey",
      "conavi_aggregation_method": "zm_sum_of_full_inegi_members",
      "infonavit_aggregation_method": "zm_sum_of_full_inegi_members",
      "top_competitors_array_v1_legacy": [
        {
          "name": "Construrama",
          "store_count": 4,
          "source": "CEMEX red distribuidor 2024"
        },
        {
          "name": "Interceramic",
          "store_count": 1,
          "source": "Grupo Lamosa reporte anual 2024"
        }
      ],
      "top_competitors_source": "DENUE 467112 (2026-05-03)",
      "aggregation_caveat": "INFONAVIT 16/18, CONAVI 0/18, population 7/18 INEGI members have source data",
      "population_aggregation_method": "zm_sum_of_members_with_source_incomplete",
      "tam_mxn": 850000000,
      "sam_mxn": 340000000,
      "sam_pct": 40,
      "som_mxn": 14920000,
      "som_pct": 4.39,
      "cesantoni_propias": 0,
      "cesantoni_distribuidores": 8,
      "revenue_target_annual_mxn": 2288696,
      "revenue_target_monthly_mxn": 190725,
      "quadrant": "PRIORIDAD_2",
      "distribuidores_exterior_count": 18,
      "cesantoni_match_method": "excel_oficial_apr20",
      "cesantoni_presence_source": "none",
      "cost_segments": {
        "interes_social": {
          "nacional": 9591,
          "local": 10358
        },
        "medio": {
          "nacional": 13914,
          "local": 15027
        },
        "semilujo": {
          "nacional": 19978,
          "local": 21576
        },
        "lujo": {
          "nacional": 27588,
          "local": 29795
        },
        "source": "Excel TERRA cost-segments-by-plaza.json (2026-03-22)",
        "unit": "MXN per m² of full vivienda construction (NOT just floor)"
      },
      "cost_segments_plaza_matched": "Monterrey",
      "cesantoni_segment_fit": {
        "verdict": "fits_partial",
        "cesantoni_range_mxn_per_m2": [
          350,
          650
        ],
        "semi_lujo_floor_band_mxn_per_m2": [
          647.28,
          1489.75
        ],
        "cesa_overlap": [
          647.28,
          650
        ],
        "method": "floor_cost = total_local * 3-5% range",
        "source": "data/cesantoni-fit-by-plaza.json (2026-05-05)"
      },
      "state_code": "19",
      "inegi_retail_unidades_economicas": 257,
      "inegi_retail_personal_ocupado": 1421,
      "inegi_retail_pbt_mxn_2023": 2490984000,
      "inegi_retail_valor_agregado_mxn_2023": 1596851000,
      "inegi_retail_inversion_mxn_2023": 104802000,
      "inegi_retail_avg_revenue_per_ue_mxn": 9692544.747081712,
      "inegi_pbt_status": "real",
      "state_real_market_share_pct_inegi": 13.077,
      "inegi_retail_source_note": "INEGI SAIC Censos Económicos 2024 (ref year 2023, SCIAN 467112 retail flooring)",
      "state_real_market_share_pct_inegi_note": "Share del mercado retail flooring nacional (INEGI SCIAN 467112, 2023) — REAL revenue share, not inferred",
      "payback_m_display": "16 meses",
      "payback_m_realistic": 19,
      "payback_quality_flag": "viable",
      "cesantoni_propias_v1": 0,
      "cesantoni_distribuidores_v1": 7,
      "nse_w_state_avg": 15.68,
      "nse_w_method": "per_plaza_heuristic_v1",
      "nse_w_adjustment": {
        "base_state": 15.68,
        "plaza_adjustment": 1.5,
        "reason": "capital_estado+industrial_corridor",
        "rules_applied": [
          {
            "delta": 0.5,
            "rule": "capital_estado"
          },
          {
            "delta": 1,
            "rule": "industrial_corridor"
          }
        ]
      },
      "industrial_corridor": {
        "is_industrial": true,
        "category": "heavy_industry",
        "key_employers": [
          "Cemex",
          "FEMSA",
          "Vitro",
          "Tenaris",
          "KIA Pesquería"
        ],
        "implication": "Demanda significativa de adhesivos industriales y SPC para piso técnico"
      },
      "verdict_consistency_score": 50,
      "verdict_review_needed": true,
      "verdict_review_reason": "verdicts span 3 categories — review per-product TAM/score",
      "_round_10_changes": "Added KIA Pesquería to key_employers (Pesquería is part of MTY ZM)",
      "_industrial_corridor_corrected_round_10": "2026-05-05T17:51:48.286175+00:00",
      "_reliability_audit": {
        "tier_1_hard_count": 20,
        "tier_2_derived_count": 17,
        "tier_3_heuristic_count": 9,
        "tier_4_approx_count": 4,
        "fields_by_tier": {
          "tier_1": [
            "cesa_pts",
            "cesantoni_distribuidores",
            "cesantoni_propias",
            "conavi_subsidio_acciones_2024",
            "conavi_subsidio_monto_mxn_2024",
            "distribuidores_exterior_count",
            "fovissste_creditos_2024_state",
            "hogares",
            "inegi_retail_avg_revenue_per_ue_mxn",
            "inegi_retail_inversion_mxn_2023",
            "inegi_retail_pbt_mxn_2023",
            "inegi_retail_personal_ocupado",
            "inegi_retail_unidades_economicas",
            "inegi_retail_valor_agregado_mxn_2023",
            "infonavit_creditos_2024",
            "infonavit_creditos_nueva_2024",
            "infonavit_monto_mxn_2024",
            "population",
            "rank_nat",
            "rank_state"
          ],
          "tier_2": [
            "invest_max_k",
            "invest_min_k",
            "payback_m_realistic",
            "revenue_target_annual_mxn",
            "revenue_target_monthly_mxn",
            "sam_mxn",
            "sam_pct",
            "sam_serviceable_mdp",
            "sam_serviceable_pct_premium",
            "som_mdp",
            "som_mxn",
            "som_pct",
            "som_target_mdp",
            "state_real_market_share_pct_inegi",
            "tam_mxn",
            "tam_total_corrected_mdp",
            "tam_total_mdp"
          ],
          "tier_3": [
            "gtm",
            "nse_w",
            "nse_w_state_avg",
            "payback_m",
            "quadrant",
            "score",
            "top_comp_pts",
            "verdict",
            "verdict_consistency_score"
          ],
          "tier_4": [
            "cesantoni_distribuidores_v1",
            "cesantoni_propias_v1",
            "tam_mdp",
            "top_competitors_array_v1_legacy"
          ]
        },
        "unknown_numeric_fields": [],
        "smell_test_flags": [],
        "smell_test_count": 0
      },
      "tam_total_corrected_mdp_reliability": "tier_2_derived_mordor_calibrated",
      "tam_total_mdp_reliability": "tier_2_derived_mordor_calibrated",
      "sam_serviceable_mdp_reliability": "tier_2_derived_premium_pct",
      "som_target_mdp_reliability": "tier_2_derived_y1_capture",
      "nse_w_reliability": "tier_3_heuristic_v1_per_plaza",
      "infonavit_creditos_2024_reliability": "tier_1_hard_sniiv_infonavit",
      "fovissste_creditos_2024_state_reliability": "tier_1_hard_sniiv_fovissste",
      "conavi_subsidio_acciones_2024_reliability": "tier_1_hard_sniiv_conavi",
      "population_reliability": "tier_1_hard_inegi_censo_2020",
      "hogares_reliability": "tier_1_hard_inegi_censo_2020",
      "cesa_pts_reliability": "tier_1_hard_cesantoni_truth_file",
      "cesantoni_propias_reliability": "tier_1_hard_cesantoni_truth_file",
      "cesantoni_distribuidores_reliability": "tier_1_hard_cesantoni_truth_file",
      "score_reliability": "tier_3_heuristic_atractivo_facilidad",
      "verdict_reliability": "tier_3_heuristic_bucket",
      "payback_m_realistic_reliability": "tier_2_derived_invest_div_som_margin",
      "tam_mdp_reliability": "tier_4_approx_v1_legacy",
      "state_real_market_share_pct_inegi_reliability": "tier_2_derived_inegi_share",
      "inegi_retail_pbt_mxn_2023_reliability": "tier_1_hard_inegi_censos_economicos_2024",
      "sam_serviceable_pct_premium_reliability": "tier_2_derived_premium_pct",
      "invest_min_k_reliability": "tier_2_derived_gtm_envelope",
      "invest_max_k_reliability": "tier_2_derived_gtm_envelope",
      "_auto_fixed": [
        {
          "test": "T2",
          "ts": "2026-05-06T01:52:51.316Z",
          "reason": "clamp SAM/TAM,SOM/SAM (was sam=58.5% som=3.0%)"
        }
      ],
      "climate": {
        "avg_temp_c": 22,
        "annual_rainfall_mm": 600,
        "rainy_months": [
          "may",
          "jun",
          "jul",
          "ago",
          "sep"
        ],
        "dry_months": [
          "oct",
          "nov",
          "dic",
          "ene",
          "feb",
          "mar",
          "abr"
        ],
        "climate_type": "semi-seco (BS) y muy seco",
        "construction_note": "Lluvias dispersas verano; calor extremo (>40°C) limita obra mediodía",
        "source": "CONAGUA SMN normales 1991-2020 (via INEGI Cuéntame + SEMARNAT)"
      },
      "enec_seasonality": {
        "peak_month": "2025-11 (nov)",
        "peak_index": 157.1,
        "trough_month": "2025-05 (may)",
        "trough_index": 74.7,
        "cv_pct": 25.34,
        "yoy_growth_pct": -30.18,
        "latest_month": "2026-02",
        "latest_index": 130.5,
        "source": "INEGI ENEC monthly bulletins (Nov 2024 - Feb 2026, indices 2018=100)"
      },
      "_round_21_climate_seasonality_added": true,
      "price_benchmark": {
        "price_per_unit_mxn": 211,
        "price_per_m2_mxn": 211,
        "unit_label": "/m²",
        "source": "terra-v1 precomputed (city benchmark, retail public sources March 2026)",
        "source_city_v1": "Monterrey"
      },
      "som_pct_old_T3": 4.4,
      "som_pct_reliability": "tier_1_derived_denue_density_corrected",
      "som_derivation_method": "(propias:0 + distrs_auth:10) / DENUE_467112(257) × 100, cap 10%",
      "som_pct_T1_correct_2026_05_10": 7.78,
      "tam_renovation_only_mdp": 763.1,
      "tam_renovation_only_mdp_reliability": "tier_2_derived_mordor_renovation",
      "tam_renovation_only_mdp_note": "Solo demanda renovación recurrente: hogares × $750/hh/yr (Mordor mid-range, NO incluye new construction)",
      "tam_share_national_mdp": 1127.5,
      "tam_share_national_mdp_reliability": "tier_2_derived_top_down",
      "tam_share_national_mdp_note": "Share proporcional hogares × $41B nacional consensus (industry 7 reports)",
      "tam_canonical_definition": "tam_total_corrected_mdp = TAM TOTAL mercado cerámicos (new construction + renovación). Para renovación solo ver tam_renovation_only_mdp; para share nacional ver tam_share_national_mdp.",
      "_top_comp_note": "Sin competidor dominante identificado en data set",
      "_cesa_pts_old": 2,
      "sam_mdp": 340,
      "_round_22_undercalibration_fix": {
        "previous_tam_mdp": 434.7,
        "top_down_anchor_mdp": 1127.5,
        "ratio": 2.59,
        "corrected_tam_mdp": 850,
        "weights": {
          "top_down": 0.6,
          "bottom_up": 0.4
        },
        "reason": "bottom-up under-calibrated (top_down/bottom_up ≥ 1.5); blended for realism",
        "applied_at": "2026-05-10"
      }
    },
    "adhesivos": {
      "slug": "zm-monterrey",
      "city": "ZM Monterrey",
      "state": "Nuevo León",
      "product": "adhesivos",
      "score": 46,
      "verdict": "OPORTUNIDAD",
      "rank_nat": 7,
      "rank_state": 1,
      "tam_mdp": 81,
      "som_mdp": 1.18,
      "gtm": "distribuidor_exclusivo",
      "invest_min_k": 2000,
      "invest_max_k": 4000,
      "payback_m": 122,
      "top_comp": "Construrama",
      "top_comp_pts": 95,
      "cesa_pts": 8,
      "population": 3690496,
      "hogares": 1017511,
      "nse_w": 17.18,
      "cesa_pts_breakdown": {
        "propios": 0,
        "distribuidores": 8,
        "source": "cesantoni-true-presence-by-plaza.json"
      },
      "tam_total_mdp": 262,
      "tam_total_corrected_mdp": 81,
      "tam_mdp_note": "tam_total_corrected_mdp uses ÷1.2 factor — middle of Mordor benchmark range. Original tam_mdp preserved.",
      "top_competitors_array": [
        {
          "name": "Independientes",
          "store_count": 43,
          "source": "DENUE SCIAN 467112 (2026-05-03)"
        },
        {
          "name": "Interceramic",
          "store_count": 3,
          "source": "DENUE SCIAN 467112 (2026-05-03)"
        }
      ],
      "conavi_subsidio_acciones_2024": 0,
      "conavi_subsidio_monto_mxn_2024": 0,
      "infonavit_creditos_2024": 58713,
      "infonavit_monto_mxn_2024": 27271679044.95,
      "infonavit_creditos_nueva_2024": 24460,
      "fovissste_creditos_2024_state": 754,
      "housing_finance_match_method": "zm_sum_of_full_inegi_members",
      "sam_serviceable_pct_premium": 25,
      "sam_serviceable_mdp": 32.4,
      "som_target_mdp": 3,
      "sam_assumption": "Semilujo+Lujo segments per Excel TERRA cost-segments-by-plaza.json. NSE A/B/C+ households: ZM=25%, standalone=15%. Cesantoni price range $350-650/m² (v1 verified Jan 2026, may be stale).",
      "sam_cost_segments_match": "Monterrey",
      "conavi_aggregation_method": "zm_sum_of_full_inegi_members",
      "infonavit_aggregation_method": "zm_sum_of_full_inegi_members",
      "top_competitors_array_v1_legacy": [
        {
          "name": "Construrama",
          "store_count": 4,
          "source": "CEMEX red distribuidor"
        },
        {
          "name": "Interceramic (Adhesivo Maestro)",
          "store_count": 1,
          "source": "Interceramic retail network"
        }
      ],
      "top_competitors_source": "DENUE 467112 (2026-05-03)",
      "verdict_overridden_from": "ATRACTIVA",
      "verdict_reason": "payback_too_long_105_months",
      "aggregation_caveat": "INFONAVIT 16/18, CONAVI 0/18, population 7/18 INEGI members have source data",
      "population_aggregation_method": "zm_sum_of_members_with_source_incomplete",
      "tam_mxn": 81000000,
      "sam_mxn": 32400000,
      "sam_pct": 40,
      "som_mxn": 1183410,
      "som_pct": 3.65,
      "cesantoni_propias": 0,
      "cesantoni_distribuidores": 8,
      "revenue_target_annual_mxn": 355023,
      "revenue_target_monthly_mxn": 29585,
      "quadrant": "PRIORIDAD_2",
      "distribuidores_exterior_count": 18,
      "cesantoni_match_method": "excel_oficial_apr20",
      "cesantoni_presence_source": "none",
      "cost_segments": {
        "interes_social": {
          "nacional": 9591,
          "local": 10358
        },
        "medio": {
          "nacional": 13914,
          "local": 15027
        },
        "semilujo": {
          "nacional": 19978,
          "local": 21576
        },
        "lujo": {
          "nacional": 27588,
          "local": 29795
        },
        "source": "Excel TERRA cost-segments-by-plaza.json (2026-03-22)",
        "unit": "MXN per m² of full vivienda construction (NOT just floor)"
      },
      "cost_segments_plaza_matched": "Monterrey",
      "cesantoni_segment_fit": {
        "verdict": "fits_partial",
        "cesantoni_range_mxn_per_m2": [
          350,
          650
        ],
        "semi_lujo_floor_band_mxn_per_m2": [
          647.28,
          1489.75
        ],
        "cesa_overlap": [
          647.28,
          650
        ],
        "method": "floor_cost = total_local * 3-5% range",
        "source": "data/cesantoni-fit-by-plaza.json (2026-05-05)"
      },
      "state_code": "19",
      "inegi_retail_unidades_economicas": 257,
      "inegi_retail_personal_ocupado": 1421,
      "inegi_retail_pbt_mxn_2023": 2490984000,
      "inegi_retail_valor_agregado_mxn_2023": 1596851000,
      "inegi_retail_inversion_mxn_2023": 104802000,
      "inegi_retail_avg_revenue_per_ue_mxn": 9692544.747081712,
      "inegi_pbt_status": "real",
      "state_real_market_share_pct_inegi": 13.077,
      "inegi_retail_source_note": "INEGI SAIC Censos Económicos 2024 (ref year 2023, SCIAN 467112 retail flooring)",
      "state_real_market_share_pct_inegi_note": "Share del mercado retail flooring nacional (INEGI SCIAN 467112, 2023) — REAL revenue share, not inferred",
      "payback_m_display": "No rentable (>5 años)",
      "payback_m_realistic": 122,
      "payback_quality_flag": "marginal",
      "cesantoni_propias_v1": 0,
      "cesantoni_distribuidores_v1": 7,
      "nse_w_state_avg": 15.68,
      "nse_w_method": "per_plaza_heuristic_v1",
      "nse_w_adjustment": {
        "base_state": 15.68,
        "plaza_adjustment": 1.5,
        "reason": "capital_estado+industrial_corridor",
        "rules_applied": [
          {
            "delta": 0.5,
            "rule": "capital_estado"
          },
          {
            "delta": 1,
            "rule": "industrial_corridor"
          }
        ]
      },
      "industrial_corridor": {
        "is_industrial": true,
        "category": "heavy_industry",
        "key_employers": [
          "Cemex",
          "FEMSA",
          "Vitro",
          "Tenaris",
          "KIA Pesquería"
        ],
        "implication": "Demanda significativa de adhesivos industriales y SPC para piso técnico"
      },
      "verdict_consistency_score": 50,
      "verdict_review_needed": true,
      "verdict_review_reason": "verdicts span 3 categories — review per-product TAM/score",
      "_round_10_changes": "Added KIA Pesquería to key_employers (Pesquería is part of MTY ZM)",
      "_industrial_corridor_corrected_round_10": "2026-05-05T17:51:48.286175+00:00",
      "_reliability_audit": {
        "tier_1_hard_count": 20,
        "tier_2_derived_count": 17,
        "tier_3_heuristic_count": 9,
        "tier_4_approx_count": 4,
        "fields_by_tier": {
          "tier_1": [
            "cesa_pts",
            "cesantoni_distribuidores",
            "cesantoni_propias",
            "conavi_subsidio_acciones_2024",
            "conavi_subsidio_monto_mxn_2024",
            "distribuidores_exterior_count",
            "fovissste_creditos_2024_state",
            "hogares",
            "inegi_retail_avg_revenue_per_ue_mxn",
            "inegi_retail_inversion_mxn_2023",
            "inegi_retail_pbt_mxn_2023",
            "inegi_retail_personal_ocupado",
            "inegi_retail_unidades_economicas",
            "inegi_retail_valor_agregado_mxn_2023",
            "infonavit_creditos_2024",
            "infonavit_creditos_nueva_2024",
            "infonavit_monto_mxn_2024",
            "population",
            "rank_nat",
            "rank_state"
          ],
          "tier_2": [
            "invest_max_k",
            "invest_min_k",
            "payback_m_realistic",
            "revenue_target_annual_mxn",
            "revenue_target_monthly_mxn",
            "sam_mxn",
            "sam_pct",
            "sam_serviceable_mdp",
            "sam_serviceable_pct_premium",
            "som_mdp",
            "som_mxn",
            "som_pct",
            "som_target_mdp",
            "state_real_market_share_pct_inegi",
            "tam_mxn",
            "tam_total_corrected_mdp",
            "tam_total_mdp"
          ],
          "tier_3": [
            "gtm",
            "nse_w",
            "nse_w_state_avg",
            "payback_m",
            "quadrant",
            "score",
            "top_comp_pts",
            "verdict",
            "verdict_consistency_score"
          ],
          "tier_4": [
            "cesantoni_distribuidores_v1",
            "cesantoni_propias_v1",
            "tam_mdp",
            "top_competitors_array_v1_legacy"
          ]
        },
        "unknown_numeric_fields": [],
        "smell_test_flags": [],
        "smell_test_count": 0
      },
      "tam_total_corrected_mdp_reliability": "tier_2_derived_mordor_calibrated",
      "tam_total_mdp_reliability": "tier_2_derived_mordor_calibrated",
      "sam_serviceable_mdp_reliability": "tier_2_derived_premium_pct",
      "som_target_mdp_reliability": "tier_2_derived_y1_capture",
      "nse_w_reliability": "tier_3_heuristic_v1_per_plaza",
      "infonavit_creditos_2024_reliability": "tier_1_hard_sniiv_infonavit",
      "fovissste_creditos_2024_state_reliability": "tier_1_hard_sniiv_fovissste",
      "conavi_subsidio_acciones_2024_reliability": "tier_1_hard_sniiv_conavi",
      "population_reliability": "tier_1_hard_inegi_censo_2020",
      "hogares_reliability": "tier_1_hard_inegi_censo_2020",
      "cesa_pts_reliability": "tier_1_hard_cesantoni_truth_file",
      "cesantoni_propias_reliability": "tier_1_hard_cesantoni_truth_file",
      "cesantoni_distribuidores_reliability": "tier_1_hard_cesantoni_truth_file",
      "score_reliability": "tier_3_heuristic_atractivo_facilidad",
      "verdict_reliability": "tier_3_heuristic_bucket",
      "payback_m_realistic_reliability": "tier_2_derived_invest_div_som_margin",
      "tam_mdp_reliability": "tier_4_approx_v1_legacy",
      "state_real_market_share_pct_inegi_reliability": "tier_2_derived_inegi_share",
      "inegi_retail_pbt_mxn_2023_reliability": "tier_1_hard_inegi_censos_economicos_2024",
      "sam_serviceable_pct_premium_reliability": "tier_2_derived_premium_pct",
      "invest_min_k_reliability": "tier_2_derived_gtm_envelope",
      "invest_max_k_reliability": "tier_2_derived_gtm_envelope",
      "_auto_fixed": [
        {
          "test": "T2",
          "ts": "2026-05-06T01:52:51.317Z",
          "reason": "clamp SAM/TAM,SOM/SAM (was sam=48.7% som=3.0%)"
        }
      ],
      "climate": {
        "avg_temp_c": 22,
        "annual_rainfall_mm": 600,
        "rainy_months": [
          "may",
          "jun",
          "jul",
          "ago",
          "sep"
        ],
        "dry_months": [
          "oct",
          "nov",
          "dic",
          "ene",
          "feb",
          "mar",
          "abr"
        ],
        "climate_type": "semi-seco (BS) y muy seco",
        "construction_note": "Lluvias dispersas verano; calor extremo (>40°C) limita obra mediodía",
        "source": "CONAGUA SMN normales 1991-2020 (via INEGI Cuéntame + SEMARNAT)"
      },
      "enec_seasonality": {
        "peak_month": "2025-11 (nov)",
        "peak_index": 157.1,
        "trough_month": "2025-05 (may)",
        "trough_index": 74.7,
        "cv_pct": 25.34,
        "yoy_growth_pct": -30.18,
        "latest_month": "2026-02",
        "latest_index": 130.5,
        "source": "INEGI ENEC monthly bulletins (Nov 2024 - Feb 2026, indices 2018=100)"
      },
      "_round_21_climate_seasonality_added": true,
      "price_benchmark": {
        "price_per_unit_mxn": 175,
        "price_per_m2_mxn": 175,
        "unit_label": "/saco 20kg",
        "source": "terra-v1 precomputed (city benchmark, retail public sources March 2026)",
        "source_city_v1": "Monterrey"
      },
      "som_pct_old_T3": 3.7,
      "som_pct_reliability": "tier_1_derived_denue_density_corrected",
      "som_derivation_method": "(propias:0 + distrs_auth:10) / DENUE_467112(257) × 100, cap 10%",
      "som_pct_T1_correct_2026_05_10": 7.78,
      "tam_renovation_only_mdp": 763.1,
      "tam_renovation_only_mdp_reliability": "tier_2_derived_mordor_renovation",
      "tam_renovation_only_mdp_note": "Solo demanda renovación recurrente: hogares × $750/hh/yr (Mordor mid-range, NO incluye new construction)",
      "tam_share_national_mdp": 1127.5,
      "tam_share_national_mdp_reliability": "tier_2_derived_top_down",
      "tam_share_national_mdp_note": "Share proporcional hogares × $41B nacional consensus (industry 7 reports)",
      "tam_canonical_definition": "tam_total_corrected_mdp = TAM TOTAL mercado cerámicos (new construction + renovación). Para renovación solo ver tam_renovation_only_mdp; para share nacional ver tam_share_national_mdp.",
      "_top_comp_note": "Sin competidor dominante identificado en data set",
      "_cesa_pts_old": 2,
      "sam_mdp": 32.4
    },
    "sanitarios": {
      "slug": "zm-monterrey",
      "city": "ZM Monterrey",
      "state": "Nuevo León",
      "product": "sanitarios",
      "score": 49,
      "verdict": "OPORTUNIDAD",
      "rank_nat": 2,
      "rank_state": 1,
      "tam_mdp": 181.1,
      "som_mdp": 2.35,
      "gtm": "distribuidor_exclusivo",
      "invest_min_k": 2000,
      "invest_max_k": 4000,
      "payback_m": 61,
      "top_comp": "Helvex",
      "top_comp_pts": 95,
      "cesa_pts": 8,
      "population": 3690496,
      "hogares": 1017511,
      "nse_w": 17.18,
      "cesa_pts_breakdown": {
        "propios": 0,
        "distribuidores": 8,
        "source": "cesantoni-true-presence-by-plaza.json"
      },
      "tam_total_mdp": 585,
      "tam_total_corrected_mdp": 181.1,
      "tam_mdp_note": "tam_total_corrected_mdp uses ÷1.2 factor — middle of Mordor benchmark range. Original tam_mdp preserved.",
      "top_competitors_array": [
        {
          "name": "Independientes",
          "store_count": 43,
          "source": "DENUE SCIAN 467112 (2026-05-03)"
        },
        {
          "name": "Interceramic",
          "store_count": 3,
          "source": "DENUE SCIAN 467112 (2026-05-03)"
        },
        {
          "name": "Helvex",
          "store_count": 12,
          "source": "Helvex.com directorio (Cerámica grupo Bohemia)",
          "_audit_added": "round3_R28_fix_sanitarios_brands_missing"
        },
        {
          "name": "Kohler",
          "store_count": 8,
          "source": "Kohler.mx directorio",
          "_audit_added": "round3_R28_fix_sanitarios_brands_missing"
        },
        {
          "name": "American Standard",
          "store_count": 6,
          "source": "AS Latin America",
          "_audit_added": "round3_R28_fix_sanitarios_brands_missing"
        },
        {
          "name": "Foset",
          "store_count": 5,
          "source": "Truper Foset",
          "_audit_added": "round3_R28_fix_sanitarios_brands_missing"
        },
        {
          "name": "Roca",
          "store_count": 3,
          "source": "Roca.mx",
          "_audit_added": "round3_R28_fix_sanitarios_brands_missing"
        }
      ],
      "conavi_subsidio_acciones_2024": 0,
      "conavi_subsidio_monto_mxn_2024": 0,
      "infonavit_creditos_2024": 58713,
      "infonavit_monto_mxn_2024": 27271679044.95,
      "infonavit_creditos_nueva_2024": 24460,
      "fovissste_creditos_2024_state": 754,
      "housing_finance_match_method": "zm_sum_of_full_inegi_members",
      "sam_serviceable_pct_premium": 25,
      "sam_serviceable_mdp": 72.44,
      "som_target_mdp": 6,
      "sam_assumption": "Semilujo+Lujo segments per Excel TERRA cost-segments-by-plaza.json. NSE A/B/C+ households: ZM=25%, standalone=15%. Cesantoni price range $350-650/m² (v1 verified Jan 2026, may be stale).",
      "sam_cost_segments_match": "Monterrey",
      "conavi_aggregation_method": "zm_sum_of_full_inegi_members",
      "infonavit_aggregation_method": "zm_sum_of_full_inegi_members",
      "top_competitors_array_v1_legacy": [
        {
          "name": "Helvex",
          "store_count": 1,
          "source": "CLAUDE.md + Helvex corporate — 280 distribuidores"
        }
      ],
      "top_competitors_source": "DENUE 467112 (2026-05-03)",
      "aggregation_caveat": "INFONAVIT 16/18, CONAVI 0/18, population 7/18 INEGI members have source data",
      "population_aggregation_method": "zm_sum_of_members_with_source_incomplete",
      "tam_mxn": 181100000,
      "sam_mxn": 72440000,
      "sam_pct": 40,
      "som_mxn": 2352489,
      "som_pct": 3.25,
      "cesantoni_propias": 0,
      "cesantoni_distribuidores": 8,
      "revenue_target_annual_mxn": 705747,
      "revenue_target_monthly_mxn": 58812,
      "quadrant": "PRIORIDAD_2",
      "distribuidores_exterior_count": 3,
      "cesantoni_match_method": "excel_oficial_apr20",
      "cesantoni_presence_source": "none",
      "cost_segments": {
        "interes_social": {
          "nacional": 9591,
          "local": 10358
        },
        "medio": {
          "nacional": 13914,
          "local": 15027
        },
        "semilujo": {
          "nacional": 19978,
          "local": 21576
        },
        "lujo": {
          "nacional": 27588,
          "local": 29795
        },
        "source": "Excel TERRA cost-segments-by-plaza.json (2026-03-22)",
        "unit": "MXN per m² of full vivienda construction (NOT just floor)"
      },
      "cost_segments_plaza_matched": "Monterrey",
      "cesantoni_segment_fit": {
        "verdict": "fits_partial",
        "cesantoni_range_mxn_per_m2": [
          350,
          650
        ],
        "semi_lujo_floor_band_mxn_per_m2": [
          647.28,
          1489.75
        ],
        "cesa_overlap": [
          647.28,
          650
        ],
        "method": "floor_cost = total_local * 3-5% range",
        "source": "data/cesantoni-fit-by-plaza.json (2026-05-05)"
      },
      "state_code": "19",
      "inegi_retail_unidades_economicas": 257,
      "inegi_retail_personal_ocupado": 1421,
      "inegi_retail_pbt_mxn_2023": 2490984000,
      "inegi_retail_valor_agregado_mxn_2023": 1596851000,
      "inegi_retail_inversion_mxn_2023": 104802000,
      "inegi_retail_avg_revenue_per_ue_mxn": 9692544.747081712,
      "inegi_pbt_status": "real",
      "state_real_market_share_pct_inegi": 13.077,
      "inegi_retail_source_note": "INEGI SAIC Censos Económicos 2024 (ref year 2023, SCIAN 467112 retail flooring)",
      "state_real_market_share_pct_inegi_note": "Share del mercado retail flooring nacional (INEGI SCIAN 467112, 2023) — REAL revenue share, not inferred",
      "payback_m_display": "53 meses",
      "payback_m_realistic": 61,
      "payback_quality_flag": "viable",
      "cesantoni_propias_v1": 0,
      "cesantoni_distribuidores_v1": 7,
      "nse_w_state_avg": 15.68,
      "nse_w_method": "per_plaza_heuristic_v1",
      "nse_w_adjustment": {
        "base_state": 15.68,
        "plaza_adjustment": 1.5,
        "reason": "capital_estado+industrial_corridor",
        "rules_applied": [
          {
            "delta": 0.5,
            "rule": "capital_estado"
          },
          {
            "delta": 1,
            "rule": "industrial_corridor"
          }
        ]
      },
      "industrial_corridor": {
        "is_industrial": true,
        "category": "heavy_industry",
        "key_employers": [
          "Cemex",
          "FEMSA",
          "Vitro",
          "Tenaris",
          "KIA Pesquería"
        ],
        "implication": "Demanda significativa de adhesivos industriales y SPC para piso técnico"
      },
      "verdict_consistency_score": 50,
      "verdict_review_needed": true,
      "verdict_review_reason": "verdicts span 3 categories — review per-product TAM/score",
      "_round_10_changes": "Added KIA Pesquería to key_employers (Pesquería is part of MTY ZM)",
      "_industrial_corridor_corrected_round_10": "2026-05-05T17:51:48.286175+00:00",
      "_reliability_audit": {
        "tier_1_hard_count": 20,
        "tier_2_derived_count": 17,
        "tier_3_heuristic_count": 9,
        "tier_4_approx_count": 4,
        "fields_by_tier": {
          "tier_1": [
            "cesa_pts",
            "cesantoni_distribuidores",
            "cesantoni_propias",
            "conavi_subsidio_acciones_2024",
            "conavi_subsidio_monto_mxn_2024",
            "distribuidores_exterior_count",
            "fovissste_creditos_2024_state",
            "hogares",
            "inegi_retail_avg_revenue_per_ue_mxn",
            "inegi_retail_inversion_mxn_2023",
            "inegi_retail_pbt_mxn_2023",
            "inegi_retail_personal_ocupado",
            "inegi_retail_unidades_economicas",
            "inegi_retail_valor_agregado_mxn_2023",
            "infonavit_creditos_2024",
            "infonavit_creditos_nueva_2024",
            "infonavit_monto_mxn_2024",
            "population",
            "rank_nat",
            "rank_state"
          ],
          "tier_2": [
            "invest_max_k",
            "invest_min_k",
            "payback_m_realistic",
            "revenue_target_annual_mxn",
            "revenue_target_monthly_mxn",
            "sam_mxn",
            "sam_pct",
            "sam_serviceable_mdp",
            "sam_serviceable_pct_premium",
            "som_mdp",
            "som_mxn",
            "som_pct",
            "som_target_mdp",
            "state_real_market_share_pct_inegi",
            "tam_mxn",
            "tam_total_corrected_mdp",
            "tam_total_mdp"
          ],
          "tier_3": [
            "gtm",
            "nse_w",
            "nse_w_state_avg",
            "payback_m",
            "quadrant",
            "score",
            "top_comp_pts",
            "verdict",
            "verdict_consistency_score"
          ],
          "tier_4": [
            "cesantoni_distribuidores_v1",
            "cesantoni_propias_v1",
            "tam_mdp",
            "top_competitors_array_v1_legacy"
          ]
        },
        "unknown_numeric_fields": [],
        "smell_test_flags": [],
        "smell_test_count": 0
      },
      "tam_total_corrected_mdp_reliability": "tier_2_derived_mordor_calibrated",
      "tam_total_mdp_reliability": "tier_2_derived_mordor_calibrated",
      "sam_serviceable_mdp_reliability": "tier_2_derived_premium_pct",
      "som_target_mdp_reliability": "tier_2_derived_y1_capture",
      "nse_w_reliability": "tier_3_heuristic_v1_per_plaza",
      "infonavit_creditos_2024_reliability": "tier_1_hard_sniiv_infonavit",
      "fovissste_creditos_2024_state_reliability": "tier_1_hard_sniiv_fovissste",
      "conavi_subsidio_acciones_2024_reliability": "tier_1_hard_sniiv_conavi",
      "population_reliability": "tier_1_hard_inegi_censo_2020",
      "hogares_reliability": "tier_1_hard_inegi_censo_2020",
      "cesa_pts_reliability": "tier_1_hard_cesantoni_truth_file",
      "cesantoni_propias_reliability": "tier_1_hard_cesantoni_truth_file",
      "cesantoni_distribuidores_reliability": "tier_1_hard_cesantoni_truth_file",
      "score_reliability": "tier_3_heuristic_atractivo_facilidad",
      "verdict_reliability": "tier_2_derived_from_T1_som",
      "payback_m_realistic_reliability": "tier_2_derived_invest_div_som_margin",
      "tam_mdp_reliability": "tier_4_approx_v1_legacy",
      "state_real_market_share_pct_inegi_reliability": "tier_2_derived_inegi_share",
      "inegi_retail_pbt_mxn_2023_reliability": "tier_1_hard_inegi_censos_economicos_2024",
      "sam_serviceable_pct_premium_reliability": "tier_2_derived_premium_pct",
      "invest_min_k_reliability": "tier_2_derived_gtm_envelope",
      "invest_max_k_reliability": "tier_2_derived_gtm_envelope",
      "_auto_fixed": [
        {
          "test": "T2",
          "ts": "2026-05-06T01:52:51.317Z",
          "reason": "clamp SAM/TAM,SOM/SAM (was sam=43.3% som=3.0%)"
        }
      ],
      "climate": {
        "avg_temp_c": 22,
        "annual_rainfall_mm": 600,
        "rainy_months": [
          "may",
          "jun",
          "jul",
          "ago",
          "sep"
        ],
        "dry_months": [
          "oct",
          "nov",
          "dic",
          "ene",
          "feb",
          "mar",
          "abr"
        ],
        "climate_type": "semi-seco (BS) y muy seco",
        "construction_note": "Lluvias dispersas verano; calor extremo (>40°C) limita obra mediodía",
        "source": "CONAGUA SMN normales 1991-2020 (via INEGI Cuéntame + SEMARNAT)"
      },
      "enec_seasonality": {
        "peak_month": "2025-11 (nov)",
        "peak_index": 157.1,
        "trough_month": "2025-05 (may)",
        "trough_index": 74.7,
        "cv_pct": 25.34,
        "yoy_growth_pct": -30.18,
        "latest_month": "2026-02",
        "latest_index": 130.5,
        "source": "INEGI ENEC monthly bulletins (Nov 2024 - Feb 2026, indices 2018=100)"
      },
      "_round_21_climate_seasonality_added": true,
      "price_benchmark": {
        "price_per_unit_mxn": 2649,
        "price_per_m2_mxn": 2649,
        "unit_label": "/pieza",
        "source": "terra-v1 precomputed (city benchmark, retail public sources March 2026)",
        "source_city_v1": "Monterrey"
      },
      "som_pct_old_T3": 3.2,
      "som_pct_reliability": "tier_1_derived_denue_density_corrected",
      "som_derivation_method": "(propias:0 + distrs_auth:10) / DENUE_467112(257) × 100, cap 10%",
      "verdict_old": "ATRACTIVA",
      "verdict_recomputed_2026_05_10": true,
      "som_pct_T1_correct_2026_05_10": 7.78,
      "tam_renovation_only_mdp": 763.1,
      "tam_renovation_only_mdp_reliability": "tier_2_derived_mordor_renovation",
      "tam_renovation_only_mdp_note": "Solo demanda renovación recurrente: hogares × $750/hh/yr (Mordor mid-range, NO incluye new construction)",
      "tam_share_national_mdp": 1127.5,
      "tam_share_national_mdp_reliability": "tier_2_derived_top_down",
      "tam_share_national_mdp_note": "Share proporcional hogares × $41B nacional consensus (industry 7 reports)",
      "tam_canonical_definition": "tam_total_corrected_mdp = TAM TOTAL mercado cerámicos (new construction + renovación). Para renovación solo ver tam_renovation_only_mdp; para share nacional ver tam_share_national_mdp.",
      "_cesa_pts_old": 2,
      "sam_mdp": 72.44
    },
    "spc": {
      "slug": "zm-monterrey",
      "city": "ZM Monterrey",
      "state": "Nuevo León",
      "product": "spc",
      "score": 46,
      "verdict": "OPORTUNIDAD",
      "rank_nat": 10,
      "rank_state": 1,
      "tam_mdp": 146.4,
      "som_mdp": 2.38,
      "gtm": "distribuidor_exclusivo",
      "invest_min_k": 2000,
      "invest_max_k": 4000,
      "payback_m": 61,
      "top_comp": "Home Depot (TrafficMaster)",
      "top_comp_pts": 95,
      "cesa_pts": 8,
      "population": 3690496,
      "hogares": 1017511,
      "nse_w": 17.18,
      "cesa_pts_breakdown": {
        "propios": 0,
        "distribuidores": 8,
        "source": "cesantoni-true-presence-by-plaza.json"
      },
      "tam_total_mdp": 473,
      "tam_total_corrected_mdp": 146.4,
      "tam_mdp_note": "tam_total_corrected_mdp uses ÷1.2 factor — middle of Mordor benchmark range. Original tam_mdp preserved.",
      "top_competitors_array": [
        {
          "name": "Independientes",
          "store_count": 43,
          "source": "DENUE SCIAN 467112 (2026-05-03)"
        },
        {
          "name": "Interceramic",
          "store_count": 3,
          "source": "DENUE SCIAN 467112 (2026-05-03)"
        }
      ],
      "top_competitors_array_note": "source has no top_competitors",
      "conavi_subsidio_acciones_2024": 0,
      "conavi_subsidio_monto_mxn_2024": 0,
      "infonavit_creditos_2024": 58713,
      "infonavit_monto_mxn_2024": 27271679044.95,
      "infonavit_creditos_nueva_2024": 24460,
      "fovissste_creditos_2024_state": 754,
      "housing_finance_match_method": "zm_sum_of_full_inegi_members",
      "sam_serviceable_pct_premium": 25,
      "sam_serviceable_mdp": 58.56,
      "som_target_mdp": 5,
      "sam_assumption": "Semilujo+Lujo segments per Excel TERRA cost-segments-by-plaza.json. NSE A/B/C+ households: ZM=25%, standalone=15%. Cesantoni price range $350-650/m² (v1 verified Jan 2026, may be stale).",
      "sam_cost_segments_match": "Monterrey",
      "conavi_aggregation_method": "zm_sum_of_full_inegi_members",
      "infonavit_aggregation_method": "zm_sum_of_full_inegi_members",
      "top_competitors_array_v1_legacy": null,
      "top_competitors_source": "DENUE 467112 (2026-05-03)",
      "aggregation_caveat": "INFONAVIT 16/18, CONAVI 0/18, population 7/18 INEGI members have source data",
      "population_aggregation_method": "zm_sum_of_members_with_source_incomplete",
      "tam_mxn": 146400000,
      "sam_mxn": 58560000,
      "sam_pct": 40,
      "som_mxn": 2376072,
      "som_pct": 4.06,
      "cesantoni_propias": 0,
      "cesantoni_distribuidores": 8,
      "revenue_target_annual_mxn": 712822,
      "revenue_target_monthly_mxn": 59402,
      "quadrant": "PRIORIDAD_2",
      "distribuidores_exterior_count": 1,
      "cesantoni_match_method": "excel_oficial_apr20",
      "cesantoni_presence_source": "none",
      "cost_segments": {
        "interes_social": {
          "nacional": 9591,
          "local": 10358
        },
        "medio": {
          "nacional": 13914,
          "local": 15027
        },
        "semilujo": {
          "nacional": 19978,
          "local": 21576
        },
        "lujo": {
          "nacional": 27588,
          "local": 29795
        },
        "source": "Excel TERRA cost-segments-by-plaza.json (2026-03-22)",
        "unit": "MXN per m² of full vivienda construction (NOT just floor)"
      },
      "cost_segments_plaza_matched": "Monterrey",
      "cesantoni_segment_fit": {
        "verdict": "fits_partial",
        "cesantoni_range_mxn_per_m2": [
          350,
          650
        ],
        "semi_lujo_floor_band_mxn_per_m2": [
          647.28,
          1489.75
        ],
        "cesa_overlap": [
          647.28,
          650
        ],
        "method": "floor_cost = total_local * 3-5% range",
        "source": "data/cesantoni-fit-by-plaza.json (2026-05-05)"
      },
      "state_code": "19",
      "inegi_retail_unidades_economicas": 257,
      "inegi_retail_personal_ocupado": 1421,
      "inegi_retail_pbt_mxn_2023": 2490984000,
      "inegi_retail_valor_agregado_mxn_2023": 1596851000,
      "inegi_retail_inversion_mxn_2023": 104802000,
      "inegi_retail_avg_revenue_per_ue_mxn": 9692544.747081712,
      "inegi_pbt_status": "real",
      "state_real_market_share_pct_inegi": 13.077,
      "inegi_retail_source_note": "INEGI SAIC Censos Económicos 2024 (ref year 2023, SCIAN 467112 retail flooring)",
      "state_real_market_share_pct_inegi_note": "Share del mercado retail flooring nacional (INEGI SCIAN 467112, 2023) — REAL revenue share, not inferred",
      "payback_m_display": "52 meses",
      "payback_m_realistic": 61,
      "payback_quality_flag": "viable",
      "cesantoni_propias_v1": 0,
      "cesantoni_distribuidores_v1": 7,
      "nse_w_state_avg": 15.68,
      "nse_w_method": "per_plaza_heuristic_v1",
      "nse_w_adjustment": {
        "base_state": 15.68,
        "plaza_adjustment": 1.5,
        "reason": "capital_estado+industrial_corridor",
        "rules_applied": [
          {
            "delta": 0.5,
            "rule": "capital_estado"
          },
          {
            "delta": 1,
            "rule": "industrial_corridor"
          }
        ]
      },
      "industrial_corridor": {
        "is_industrial": true,
        "category": "heavy_industry",
        "key_employers": [
          "Cemex",
          "FEMSA",
          "Vitro",
          "Tenaris",
          "KIA Pesquería"
        ],
        "implication": "Demanda significativa de adhesivos industriales y SPC para piso técnico"
      },
      "verdict_consistency_score": 50,
      "verdict_review_needed": true,
      "verdict_review_reason": "verdicts span 3 categories — review per-product TAM/score",
      "_round_10_changes": "Added KIA Pesquería to key_employers (Pesquería is part of MTY ZM)",
      "_industrial_corridor_corrected_round_10": "2026-05-05T17:51:48.286175+00:00",
      "_reliability_audit": {
        "tier_1_hard_count": 20,
        "tier_2_derived_count": 17,
        "tier_3_heuristic_count": 9,
        "tier_4_approx_count": 4,
        "fields_by_tier": {
          "tier_1": [
            "cesa_pts",
            "cesantoni_distribuidores",
            "cesantoni_propias",
            "conavi_subsidio_acciones_2024",
            "conavi_subsidio_monto_mxn_2024",
            "distribuidores_exterior_count",
            "fovissste_creditos_2024_state",
            "hogares",
            "inegi_retail_avg_revenue_per_ue_mxn",
            "inegi_retail_inversion_mxn_2023",
            "inegi_retail_pbt_mxn_2023",
            "inegi_retail_personal_ocupado",
            "inegi_retail_unidades_economicas",
            "inegi_retail_valor_agregado_mxn_2023",
            "infonavit_creditos_2024",
            "infonavit_creditos_nueva_2024",
            "infonavit_monto_mxn_2024",
            "population",
            "rank_nat",
            "rank_state"
          ],
          "tier_2": [
            "invest_max_k",
            "invest_min_k",
            "payback_m_realistic",
            "revenue_target_annual_mxn",
            "revenue_target_monthly_mxn",
            "sam_mxn",
            "sam_pct",
            "sam_serviceable_mdp",
            "sam_serviceable_pct_premium",
            "som_mdp",
            "som_mxn",
            "som_pct",
            "som_target_mdp",
            "state_real_market_share_pct_inegi",
            "tam_mxn",
            "tam_total_corrected_mdp",
            "tam_total_mdp"
          ],
          "tier_3": [
            "gtm",
            "nse_w",
            "nse_w_state_avg",
            "payback_m",
            "quadrant",
            "score",
            "top_comp_pts",
            "verdict",
            "verdict_consistency_score"
          ],
          "tier_4": [
            "cesantoni_distribuidores_v1",
            "cesantoni_propias_v1",
            "tam_mdp",
            "top_competitors_array_v1_legacy"
          ]
        },
        "unknown_numeric_fields": [],
        "smell_test_flags": [],
        "smell_test_count": 0
      },
      "tam_total_corrected_mdp_reliability": "tier_2_derived_mordor_calibrated",
      "tam_total_mdp_reliability": "tier_2_derived_mordor_calibrated",
      "sam_serviceable_mdp_reliability": "tier_2_derived_premium_pct",
      "som_target_mdp_reliability": "tier_2_derived_y1_capture",
      "nse_w_reliability": "tier_3_heuristic_v1_per_plaza",
      "infonavit_creditos_2024_reliability": "tier_1_hard_sniiv_infonavit",
      "fovissste_creditos_2024_state_reliability": "tier_1_hard_sniiv_fovissste",
      "conavi_subsidio_acciones_2024_reliability": "tier_1_hard_sniiv_conavi",
      "population_reliability": "tier_1_hard_inegi_censo_2020",
      "hogares_reliability": "tier_1_hard_inegi_censo_2020",
      "cesa_pts_reliability": "tier_1_hard_cesantoni_truth_file",
      "cesantoni_propias_reliability": "tier_1_hard_cesantoni_truth_file",
      "cesantoni_distribuidores_reliability": "tier_1_hard_cesantoni_truth_file",
      "score_reliability": "tier_3_heuristic_atractivo_facilidad",
      "verdict_reliability": "tier_2_derived_from_T1_som",
      "payback_m_realistic_reliability": "tier_2_derived_invest_div_som_margin",
      "tam_mdp_reliability": "tier_4_approx_v1_legacy",
      "state_real_market_share_pct_inegi_reliability": "tier_2_derived_inegi_share",
      "inegi_retail_pbt_mxn_2023_reliability": "tier_1_hard_inegi_censos_economicos_2024",
      "sam_serviceable_pct_premium_reliability": "tier_2_derived_premium_pct",
      "invest_min_k_reliability": "tier_2_derived_gtm_envelope",
      "invest_max_k_reliability": "tier_2_derived_gtm_envelope",
      "_auto_fixed": [
        {
          "test": "T2",
          "ts": "2026-05-06T01:52:51.317Z",
          "reason": "clamp SAM/TAM,SOM/SAM (was sam=54.1% som=3.0%)"
        }
      ],
      "climate": {
        "avg_temp_c": 22,
        "annual_rainfall_mm": 600,
        "rainy_months": [
          "may",
          "jun",
          "jul",
          "ago",
          "sep"
        ],
        "dry_months": [
          "oct",
          "nov",
          "dic",
          "ene",
          "feb",
          "mar",
          "abr"
        ],
        "climate_type": "semi-seco (BS) y muy seco",
        "construction_note": "Lluvias dispersas verano; calor extremo (>40°C) limita obra mediodía",
        "source": "CONAGUA SMN normales 1991-2020 (via INEGI Cuéntame + SEMARNAT)"
      },
      "enec_seasonality": {
        "peak_month": "2025-11 (nov)",
        "peak_index": 157.1,
        "trough_month": "2025-05 (may)",
        "trough_index": 74.7,
        "cv_pct": 25.34,
        "yoy_growth_pct": -30.18,
        "latest_month": "2026-02",
        "latest_index": 130.5,
        "source": "INEGI ENEC monthly bulletins (Nov 2024 - Feb 2026, indices 2018=100)"
      },
      "_round_21_climate_seasonality_added": true,
      "price_benchmark": {
        "price_per_unit_mxn": 412,
        "price_per_m2_mxn": 412,
        "unit_label": "/m²",
        "source": "terra-v1 precomputed (city benchmark, retail public sources March 2026)",
        "source_city_v1": "Monterrey"
      },
      "som_pct_old_T3": 4.1,
      "som_pct_reliability": "tier_1_derived_denue_density_corrected",
      "som_derivation_method": "(propias:0 + distrs_auth:10) / DENUE_467112(257) × 100, cap 10%",
      "verdict_old": "ATRACTIVA",
      "verdict_recomputed_2026_05_10": true,
      "som_pct_T1_correct_2026_05_10": 7.78,
      "tam_renovation_only_mdp": 763.1,
      "tam_renovation_only_mdp_reliability": "tier_2_derived_mordor_renovation",
      "tam_renovation_only_mdp_note": "Solo demanda renovación recurrente: hogares × $750/hh/yr (Mordor mid-range, NO incluye new construction)",
      "tam_share_national_mdp": 1127.5,
      "tam_share_national_mdp_reliability": "tier_2_derived_top_down",
      "tam_share_national_mdp_note": "Share proporcional hogares × $41B nacional consensus (industry 7 reports)",
      "tam_canonical_definition": "tam_total_corrected_mdp = TAM TOTAL mercado cerámicos (new construction + renovación). Para renovación solo ver tam_renovation_only_mdp; para share nacional ver tam_share_national_mdp.",
      "_top_comp_note": "Sin competidor dominante identificado en data set",
      "_cesa_pts_old": 2,
      "sam_mdp": 58.56
    },
    "wpc": {
      "slug": "zm-monterrey",
      "city": "ZM Monterrey",
      "state": "Nuevo León",
      "product": "wpc",
      "score": 56,
      "verdict": "ATRACTIVA",
      "rank_nat": 2,
      "rank_state": 1,
      "tam_mdp": 41,
      "som_mdp": 0.46,
      "gtm": "distribuidor_exclusivo",
      "invest_min_k": 2000,
      "invest_max_k": 4000,
      "payback_m": 266,
      "top_comp": "Home Depot",
      "top_comp_pts": 95,
      "cesa_pts": 8,
      "population": 3690496,
      "hogares": 1017511,
      "nse_w": 17.18,
      "cesa_pts_breakdown": {
        "propios": 0,
        "distribuidores": 8,
        "source": "cesantoni-true-presence-by-plaza.json"
      },
      "tam_total_mdp": 133,
      "tam_total_corrected_mdp": 41,
      "tam_mdp_note": "tam_total_corrected_mdp uses ÷1.2 factor — middle of Mordor benchmark range. Original tam_mdp preserved.",
      "top_competitors_array": [
        {
          "name": "Independientes",
          "store_count": 43,
          "source": "DENUE SCIAN 467112 (2026-05-03)"
        },
        {
          "name": "Interceramic",
          "store_count": 3,
          "source": "DENUE SCIAN 467112 (2026-05-03)"
        }
      ],
      "top_competitors_array_note": "source has no top_competitors",
      "conavi_subsidio_acciones_2024": 0,
      "conavi_subsidio_monto_mxn_2024": 0,
      "infonavit_creditos_2024": 58713,
      "infonavit_monto_mxn_2024": 27271679044.95,
      "infonavit_creditos_nueva_2024": 24460,
      "fovissste_creditos_2024_state": 754,
      "housing_finance_match_method": "zm_sum_of_full_inegi_members",
      "sam_serviceable_pct_premium": 25,
      "sam_serviceable_mdp": 15.5,
      "som_target_mdp": 1,
      "sam_assumption": "Semilujo+Lujo segments per Excel TERRA cost-segments-by-plaza.json. NSE A/B/C+ households: ZM=25%, standalone=15%. Cesantoni price range $350-650/m² (v1 verified Jan 2026, may be stale).",
      "sam_cost_segments_match": "Monterrey",
      "conavi_aggregation_method": "zm_sum_of_full_inegi_members",
      "infonavit_aggregation_method": "zm_sum_of_full_inegi_members",
      "top_competitors_array_v1_legacy": null,
      "top_competitors_source": "DENUE 467112 (2026-05-03)",
      "verdict_overridden_from": "ATRACTIVA",
      "verdict_reason": "payback_too_long_266_months",
      "aggregation_caveat": "INFONAVIT 16/18, CONAVI 0/18, population 7/18 INEGI members have source data",
      "population_aggregation_method": "zm_sum_of_members_with_source_incomplete",
      "tam_mxn": 41000000,
      "sam_mxn": 15498000,
      "sam_pct": 37.8,
      "som_mxn": 464940,
      "som_pct": 3,
      "cesantoni_propias": 0,
      "cesantoni_distribuidores": 8,
      "revenue_target_annual_mxn": 139482,
      "revenue_target_monthly_mxn": 11624,
      "quadrant": "PRIORIDAD_2",
      "distribuidores_exterior_count": 1,
      "cesantoni_match_method": "excel_oficial_apr20",
      "cesantoni_presence_source": "none",
      "cost_segments": {
        "interes_social": {
          "nacional": 9591,
          "local": 10358
        },
        "medio": {
          "nacional": 13914,
          "local": 15027
        },
        "semilujo": {
          "nacional": 19978,
          "local": 21576
        },
        "lujo": {
          "nacional": 27588,
          "local": 29795
        },
        "source": "Excel TERRA cost-segments-by-plaza.json (2026-03-22)",
        "unit": "MXN per m² of full vivienda construction (NOT just floor)"
      },
      "cost_segments_plaza_matched": "Monterrey",
      "cesantoni_segment_fit": {
        "verdict": "fits_partial",
        "cesantoni_range_mxn_per_m2": [
          350,
          650
        ],
        "semi_lujo_floor_band_mxn_per_m2": [
          647.28,
          1489.75
        ],
        "cesa_overlap": [
          647.28,
          650
        ],
        "method": "floor_cost = total_local * 3-5% range",
        "source": "data/cesantoni-fit-by-plaza.json (2026-05-05)"
      },
      "state_code": "19",
      "inegi_retail_unidades_economicas": 257,
      "inegi_retail_personal_ocupado": 1421,
      "inegi_retail_pbt_mxn_2023": 2490984000,
      "inegi_retail_valor_agregado_mxn_2023": 1596851000,
      "inegi_retail_inversion_mxn_2023": 104802000,
      "inegi_retail_avg_revenue_per_ue_mxn": 9692544.747081712,
      "inegi_pbt_status": "real",
      "state_real_market_share_pct_inegi": 13.077,
      "inegi_retail_source_note": "INEGI SAIC Censos Económicos 2024 (ref year 2023, SCIAN 467112 retail flooring)",
      "state_real_market_share_pct_inegi_note": "Share del mercado retail flooring nacional (INEGI SCIAN 467112, 2023) — REAL revenue share, not inferred",
      "payback_m_display": "No rentable (>5 años)",
      "payback_m_realistic": 120,
      "payback_quality_flag": "non_viable",
      "cesantoni_propias_v1": 0,
      "cesantoni_distribuidores_v1": 7,
      "nse_w_state_avg": 15.68,
      "nse_w_method": "per_plaza_heuristic_v1",
      "nse_w_adjustment": {
        "base_state": 15.68,
        "plaza_adjustment": 1.5,
        "reason": "capital_estado+industrial_corridor",
        "rules_applied": [
          {
            "delta": 0.5,
            "rule": "capital_estado"
          },
          {
            "delta": 1,
            "rule": "industrial_corridor"
          }
        ]
      },
      "industrial_corridor": {
        "is_industrial": true,
        "category": "heavy_industry",
        "key_employers": [
          "Cemex",
          "FEMSA",
          "Vitro",
          "Tenaris",
          "KIA Pesquería"
        ],
        "implication": "Demanda significativa de adhesivos industriales y SPC para piso técnico"
      },
      "verdict_consistency_score": 50,
      "verdict_review_needed": true,
      "verdict_review_reason": "verdicts span 3 categories — review per-product TAM/score",
      "_round_10_changes": "Added KIA Pesquería to key_employers (Pesquería is part of MTY ZM)",
      "_industrial_corridor_corrected_round_10": "2026-05-05T17:51:48.286175+00:00",
      "_reliability_audit": {
        "tier_1_hard_count": 20,
        "tier_2_derived_count": 17,
        "tier_3_heuristic_count": 9,
        "tier_4_approx_count": 4,
        "fields_by_tier": {
          "tier_1": [
            "cesa_pts",
            "cesantoni_distribuidores",
            "cesantoni_propias",
            "conavi_subsidio_acciones_2024",
            "conavi_subsidio_monto_mxn_2024",
            "distribuidores_exterior_count",
            "fovissste_creditos_2024_state",
            "hogares",
            "inegi_retail_avg_revenue_per_ue_mxn",
            "inegi_retail_inversion_mxn_2023",
            "inegi_retail_pbt_mxn_2023",
            "inegi_retail_personal_ocupado",
            "inegi_retail_unidades_economicas",
            "inegi_retail_valor_agregado_mxn_2023",
            "infonavit_creditos_2024",
            "infonavit_creditos_nueva_2024",
            "infonavit_monto_mxn_2024",
            "population",
            "rank_nat",
            "rank_state"
          ],
          "tier_2": [
            "invest_max_k",
            "invest_min_k",
            "payback_m_realistic",
            "revenue_target_annual_mxn",
            "revenue_target_monthly_mxn",
            "sam_mxn",
            "sam_pct",
            "sam_serviceable_mdp",
            "sam_serviceable_pct_premium",
            "som_mdp",
            "som_mxn",
            "som_pct",
            "som_target_mdp",
            "state_real_market_share_pct_inegi",
            "tam_mxn",
            "tam_total_corrected_mdp",
            "tam_total_mdp"
          ],
          "tier_3": [
            "gtm",
            "nse_w",
            "nse_w_state_avg",
            "payback_m",
            "quadrant",
            "score",
            "top_comp_pts",
            "verdict",
            "verdict_consistency_score"
          ],
          "tier_4": [
            "cesantoni_distribuidores_v1",
            "cesantoni_propias_v1",
            "tam_mdp",
            "top_competitors_array_v1_legacy"
          ]
        },
        "unknown_numeric_fields": [],
        "smell_test_flags": [
          {
            "test": "high_infonavit_low_verdict",
            "value": 58713,
            "msg": "INFONAVIT=58,713 but verdict=EMERGENTE — review"
          }
        ],
        "smell_test_count": 1
      },
      "tam_total_corrected_mdp_reliability": "tier_2_derived_mordor_calibrated",
      "tam_total_mdp_reliability": "tier_2_derived_mordor_calibrated",
      "sam_serviceable_mdp_reliability": "tier_2_derived_premium_pct",
      "som_target_mdp_reliability": "tier_2_derived_y1_capture",
      "nse_w_reliability": "tier_3_heuristic_v1_per_plaza",
      "infonavit_creditos_2024_reliability": "tier_1_hard_sniiv_infonavit",
      "fovissste_creditos_2024_state_reliability": "tier_1_hard_sniiv_fovissste",
      "conavi_subsidio_acciones_2024_reliability": "tier_1_hard_sniiv_conavi",
      "population_reliability": "tier_1_hard_inegi_censo_2020",
      "hogares_reliability": "tier_1_hard_inegi_censo_2020",
      "cesa_pts_reliability": "tier_1_hard_cesantoni_truth_file",
      "cesantoni_propias_reliability": "tier_1_hard_cesantoni_truth_file",
      "cesantoni_distribuidores_reliability": "tier_1_hard_cesantoni_truth_file",
      "score_reliability": "tier_3_heuristic_atractivo_facilidad",
      "verdict_reliability": "tier_2_derived_from_T1_som",
      "payback_m_realistic_reliability": "tier_2_derived_invest_div_som_margin",
      "tam_mdp_reliability": "tier_4_approx_v1_legacy",
      "state_real_market_share_pct_inegi_reliability": "tier_2_derived_inegi_share",
      "inegi_retail_pbt_mxn_2023_reliability": "tier_1_hard_inegi_censos_economicos_2024",
      "sam_serviceable_pct_premium_reliability": "tier_2_derived_premium_pct",
      "invest_min_k_reliability": "tier_2_derived_gtm_envelope",
      "invest_max_k_reliability": "tier_2_derived_gtm_envelope",
      "_auto_fixed": [
        {
          "test": "T5",
          "ts": "2026-05-06T01:52:51.319Z",
          "reason": "cesa_pts>=5 EMERGENTE → OPORTUNIDAD",
          "from": "EMERGENTE",
          "to": "OPORTUNIDAD"
        }
      ],
      "climate": {
        "avg_temp_c": 22,
        "annual_rainfall_mm": 600,
        "rainy_months": [
          "may",
          "jun",
          "jul",
          "ago",
          "sep"
        ],
        "dry_months": [
          "oct",
          "nov",
          "dic",
          "ene",
          "feb",
          "mar",
          "abr"
        ],
        "climate_type": "semi-seco (BS) y muy seco",
        "construction_note": "Lluvias dispersas verano; calor extremo (>40°C) limita obra mediodía",
        "source": "CONAGUA SMN normales 1991-2020 (via INEGI Cuéntame + SEMARNAT)"
      },
      "enec_seasonality": {
        "peak_month": "2025-11 (nov)",
        "peak_index": 157.1,
        "trough_month": "2025-05 (may)",
        "trough_index": 74.7,
        "cv_pct": 25.34,
        "yoy_growth_pct": -30.18,
        "latest_month": "2026-02",
        "latest_index": 130.5,
        "source": "INEGI ENEC monthly bulletins (Nov 2024 - Feb 2026, indices 2018=100)"
      },
      "_round_21_climate_seasonality_added": true,
      "price_benchmark": {
        "price_per_unit_mxn": 1219,
        "price_per_m2_mxn": 1219,
        "unit_label": "/tabla 2.4m",
        "source": "terra-v1 precomputed (city benchmark, retail public sources March 2026)",
        "source_city_v1": "Monterrey"
      },
      "som_pct_old_T3": 3,
      "som_pct_reliability": "tier_1_derived_denue_density_corrected",
      "som_derivation_method": "(propias:0 + distrs_auth:10) / DENUE_467112(257) × 100, cap 10%",
      "verdict_old": "OPORTUNIDAD",
      "verdict_recomputed_2026_05_10": true,
      "som_pct_T1_correct_2026_05_10": 7.78,
      "tam_renovation_only_mdp": 763.1,
      "tam_renovation_only_mdp_reliability": "tier_2_derived_mordor_renovation",
      "tam_renovation_only_mdp_note": "Solo demanda renovación recurrente: hogares × $750/hh/yr (Mordor mid-range, NO incluye new construction)",
      "tam_share_national_mdp": 1127.5,
      "tam_share_national_mdp_reliability": "tier_2_derived_top_down",
      "tam_share_national_mdp_note": "Share proporcional hogares × $41B nacional consensus (industry 7 reports)",
      "tam_canonical_definition": "tam_total_corrected_mdp = TAM TOTAL mercado cerámicos (new construction + renovación). Para renovación solo ver tam_renovation_only_mdp; para share nacional ver tam_share_national_mdp.",
      "_top_comp_note": "Sin competidor dominante identificado en data set",
      "_cesa_pts_old": 2,
      "sam_mdp": 15.5
    }
  }
}