{
  "generated": "2026-09-16",
  "window_days": 7,
  "city_weekly_qualified": 13,
  "citywide_by_trade": {
    "electrical": 5,
    "hvac": 4,
    "plumbing": 3,
    "remodel-gc": 8,
    "solar": 1,
    "roofing": 4
  },
  "region_by_trade": {
    "SD-NORTH": {
      "electrical": 2,
      "hvac": 1,
      "plumbing": 1,
      "remodel-gc": 4,
      "solar": 1,
      "roofing": 2
    },
    "SD-SOUTH": {
      "electrical": 3,
      "hvac": 3,
      "plumbing": 2,
      "remodel-gc": 4,
      "solar": 0,
      "roofing": 2
    },
    "OC-COUNTYWIDE": {
      "electrical": 181,
      "hvac": 94,
      "plumbing": 81,
      "remodel-gc": 193,
      "solar": 66,
      "roofing": 175
    }
  },
  "markets": [
    {
      "id": "sd-city:SD-NORTH",
      "jurisdiction": "sd-city",
      "region": "SD-NORTH",
      "tier": "A",
      "name": "City of San Diego — north of I-8",
      "total": 7,
      "trades": {
        "electrical": 2,
        "hvac": 1,
        "plumbing": 1,
        "remodel-gc": 4,
        "solar": 1,
        "roofing": 2
      }
    },
    {
      "id": "sd-city:SD-SOUTH",
      "jurisdiction": "sd-city",
      "region": "SD-SOUTH",
      "tier": "A",
      "name": "City of San Diego — I-8 and south",
      "total": 6,
      "trades": {
        "electrical": 3,
        "hvac": 3,
        "plumbing": 2,
        "remodel-gc": 4,
        "solar": 0,
        "roofing": 2
      }
    },
    {
      "id": "carlsbad",
      "jurisdiction": "carlsbad",
      "region": "SD-NORTH-COUNTY",
      "tier": "B",
      "name": "Carlsbad",
      "total": 110,
      "residential": 96,
      "with_parcel": 106,
      "trades": {
        "electrical": 68,
        "hvac": 64,
        "plumbing": 65,
        "remodel-gc": 18,
        "solar": 8,
        "roofing": 14
      }
    },
    {
      "id": "santee",
      "jurisdiction": "santee",
      "region": "SD-EAST-COUNTY",
      "tier": "B",
      "name": "Santee",
      "total": 8,
      "residential": 0,
      "with_parcel": 7,
      "trades": {
        "electrical": 0,
        "hvac": 0,
        "plumbing": 0,
        "remodel-gc": 3,
        "solar": 5,
        "roofing": 5
      }
    },
    {
      "id": "el-cajon",
      "jurisdiction": "el-cajon",
      "region": "SD-EAST-COUNTY",
      "tier": "B",
      "name": "El Cajon",
      "total": 24,
      "residential": 5,
      "with_parcel": 24,
      "trades": {
        "electrical": 0,
        "hvac": 5,
        "plumbing": 3,
        "remodel-gc": 8,
        "solar": 0,
        "roofing": 0
      }
    },
    {
      "id": "imperial-beach",
      "jurisdiction": "imperial-beach",
      "region": "SD-SOUTH-BAY",
      "tier": "B",
      "name": "Imperial Beach",
      "total": 13,
      "residential": 10,
      "with_parcel": 12,
      "trades": {
        "electrical": 3,
        "hvac": 1,
        "plumbing": 2,
        "remodel-gc": 4,
        "solar": 1,
        "roofing": 4
      }
    },
    {
      "id": "chula-vista",
      "jurisdiction": "chula-vista",
      "region": "SD-SOUTH-BAY",
      "tier": "B",
      "name": "Chula Vista",
      "total": 114,
      "residential": 83,
      "with_parcel": 0,
      "trades": {
        "electrical": 7,
        "hvac": 12,
        "plumbing": 14,
        "remodel-gc": 12,
        "solar": 44,
        "roofing": 35
      }
    },
    {
      "id": "coronado",
      "jurisdiction": "coronado",
      "region": "SD-SOUTH-BAY",
      "tier": "A",
      "name": "Coronado",
      "total": 0,
      "residential": 0,
      "with_parcel": 0,
      "trades": {
        "electrical": 0,
        "hvac": 0,
        "plumbing": 0,
        "remodel-gc": 0,
        "solar": 0,
        "roofing": 0
      },
      "lag_days": 47,
      "last_edit": "2026-07-31",
      "stale_after_days": 75,
      "window_note": "issued in the 7 days ending 2026-07-31, from the city's monthly permit report"
    },
    {
      "id": "vista",
      "jurisdiction": "vista",
      "region": "SD-NORTH-COUNTY",
      "tier": "A",
      "name": "Vista",
      "total": 0,
      "residential": 0,
      "with_parcel": 0,
      "trades": {
        "electrical": 0,
        "hvac": 0,
        "plumbing": 0,
        "remodel-gc": 0,
        "solar": 0,
        "roofing": 0
      }
    },
    {
      "id": "oceanside",
      "jurisdiction": "oceanside",
      "region": "SD-NORTH-COUNTY",
      "tier": "A",
      "name": "Oceanside",
      "total": 3,
      "residential": 1,
      "with_parcel": 3,
      "trades": {
        "electrical": 1,
        "hvac": 1,
        "plumbing": 1,
        "remodel-gc": 1,
        "solar": 0,
        "roofing": 0
      }
    },
    {
      "id": "del-mar",
      "jurisdiction": "del-mar",
      "region": "SD-NORTH-COUNTY",
      "tier": "B",
      "name": "Del Mar",
      "total": 6,
      "residential": 0,
      "with_parcel": 6,
      "trades": {
        "electrical": 3,
        "hvac": 1,
        "plumbing": 0,
        "remodel-gc": 2,
        "solar": 0,
        "roofing": 0
      }
    },
    {
      "id": "solana-beach",
      "jurisdiction": "solana-beach",
      "region": "SD-NORTH-COUNTY",
      "tier": "B",
      "name": "Solana Beach",
      "total": 9,
      "residential": 0,
      "with_parcel": 0,
      "trades": {
        "electrical": 1,
        "hvac": 0,
        "plumbing": 0,
        "remodel-gc": 2,
        "solar": 1,
        "roofing": 2
      }
    },
    {
      "id": "encinitas",
      "jurisdiction": "encinitas",
      "region": "SD-NORTH-COUNTY",
      "tier": "B",
      "name": "Encinitas",
      "total": 5,
      "residential": 5,
      "with_parcel": 0,
      "trades": {
        "electrical": 0,
        "hvac": 0,
        "plumbing": 0,
        "remodel-gc": 3,
        "solar": 0,
        "roofing": 2
      }
    },
    {
      "id": "escondido",
      "jurisdiction": "escondido",
      "region": "SD-NORTH-COUNTY",
      "tier": "B",
      "name": "Escondido",
      "total": 49,
      "residential": 44,
      "with_parcel": 49,
      "trades": {
        "electrical": 7,
        "hvac": 15,
        "plumbing": 6,
        "remodel-gc": 6,
        "solar": 8,
        "roofing": 10
      },
      "lag_days": 47,
      "last_edit": "2026-07-31",
      "stale_after_days": 49,
      "window_note": "issued in the week ending 2026-07-31 — Escondido publishes its permit reports about a month later"
    },
    {
      "id": "san-marcos",
      "jurisdiction": "san-marcos",
      "region": "SD-NORTH-COUNTY",
      "tier": "B",
      "name": "San Marcos",
      "total": 40,
      "residential": 34,
      "with_parcel": 0,
      "trades": {
        "electrical": 9,
        "hvac": 7,
        "plumbing": 6,
        "remodel-gc": 9,
        "solar": 7,
        "roofing": 6
      },
      "lag_days": 47,
      "last_edit": "2026-07-31",
      "stale_after_days": 75,
      "window_note": "issued in the 7 days ending 2026-07-31, from the city's monthly permit report"
    },
    {
      "id": "sd-county-unincorporated",
      "jurisdiction": "sd-county-unincorporated",
      "region": "SD-UNINCORPORATED",
      "tier": "A",
      "name": "Unincorporated San Diego County",
      "total": 25,
      "residential": 25,
      "with_parcel": 25,
      "trades": {
        "electrical": 4,
        "hvac": 0,
        "plumbing": 3,
        "remodel-gc": 17,
        "solar": 1,
        "roofing": 1
      }
    },
    {
      "id": "anaheim",
      "jurisdiction": "anaheim",
      "region": "OC-COUNTYWIDE",
      "tier": "A",
      "name": "Anaheim",
      "total": null,
      "measured": false,
      "suppressed": true,
      "lag_days": 41,
      "last_edit": "2026-08-06",
      "stale_after_days": 21,
      "window_note": "The city's permit layer is 41 days behind, so Anaheim is not quoted this week.",
      "trades": {
        "electrical": 0,
        "hvac": 0,
        "plumbing": 0,
        "remodel-gc": 0,
        "solar": 0,
        "roofing": 0
      }
    },
    {
      "id": "huntington-beach",
      "jurisdiction": "huntington-beach",
      "region": "OC-COUNTYWIDE",
      "tier": "B",
      "name": "Huntington Beach",
      "total": 186,
      "residential": 145,
      "with_parcel": 0,
      "trades": {
        "electrical": 61,
        "hvac": 9,
        "plumbing": 10,
        "remodel-gc": 18,
        "solar": 21,
        "roofing": 57
      }
    },
    {
      "id": "brea",
      "jurisdiction": "brea",
      "region": "OC-COUNTYWIDE",
      "tier": "B",
      "name": "Brea",
      "total": 35,
      "residential": 17,
      "with_parcel": 0,
      "trades": {
        "electrical": 7,
        "hvac": 4,
        "plumbing": 2,
        "remodel-gc": 7,
        "solar": 7,
        "roofing": 7
      }
    },
    {
      "id": "aliso-viejo",
      "jurisdiction": "aliso-viejo",
      "region": "OC-COUNTYWIDE",
      "tier": "B",
      "name": "Aliso Viejo",
      "total": 32,
      "residential": 29,
      "with_parcel": 30,
      "trades": {
        "electrical": 5,
        "hvac": 5,
        "plumbing": 8,
        "remodel-gc": 7,
        "solar": 1,
        "roofing": 4
      }
    },
    {
      "id": "laguna-hills",
      "jurisdiction": "laguna-hills",
      "region": "OC-COUNTYWIDE",
      "tier": "B",
      "name": "Laguna Hills",
      "total": 25,
      "residential": 24,
      "with_parcel": 20,
      "trades": {
        "electrical": 3,
        "hvac": 9,
        "plumbing": 3,
        "remodel-gc": 1,
        "solar": 0,
        "roofing": 4
      }
    },
    {
      "id": "laguna-niguel",
      "jurisdiction": "laguna-niguel",
      "region": "OC-COUNTYWIDE",
      "tier": "B",
      "name": "Laguna Niguel",
      "total": 57,
      "residential": 7,
      "with_parcel": 48,
      "trades": {
        "electrical": 11,
        "hvac": 20,
        "plumbing": 14,
        "remodel-gc": 7,
        "solar": 5,
        "roofing": 11
      }
    },
    {
      "id": "lake-forest",
      "jurisdiction": "lake-forest",
      "region": "OC-COUNTYWIDE",
      "tier": "B",
      "name": "Lake Forest",
      "total": 45,
      "residential": 41,
      "with_parcel": 43,
      "trades": {
        "electrical": 15,
        "hvac": 14,
        "plumbing": 3,
        "remodel-gc": 31,
        "solar": 2,
        "roofing": 4
      }
    },
    {
      "id": "costa-mesa",
      "jurisdiction": "costa-mesa",
      "region": "OC-COUNTYWIDE",
      "tier": "B",
      "name": "Costa Mesa",
      "total": 70,
      "residential": 39,
      "with_parcel": 67,
      "trades": {
        "electrical": 12,
        "hvac": 3,
        "plumbing": 0,
        "remodel-gc": 13,
        "solar": 5,
        "roofing": 15
      }
    },
    {
      "id": "fullerton",
      "jurisdiction": "fullerton",
      "region": "OC-COUNTYWIDE",
      "tier": "B",
      "name": "Fullerton",
      "total": 84,
      "residential": 57,
      "with_parcel": 80,
      "trades": {
        "electrical": 18,
        "hvac": 13,
        "plumbing": 10,
        "remodel-gc": 37,
        "solar": 5,
        "roofing": 19
      }
    },
    {
      "id": "la-habra",
      "jurisdiction": "la-habra",
      "region": "OC-COUNTYWIDE",
      "tier": "B",
      "name": "La Habra",
      "total": 25,
      "residential": 20,
      "with_parcel": 23,
      "trades": {
        "electrical": 4,
        "hvac": 3,
        "plumbing": 2,
        "remodel-gc": 1,
        "solar": 3,
        "roofing": 10
      }
    },
    {
      "id": "tustin",
      "jurisdiction": "tustin",
      "region": "OC-COUNTYWIDE",
      "tier": "B",
      "name": "Tustin",
      "total": 48,
      "residential": 21,
      "with_parcel": 45,
      "trades": {
        "electrical": 9,
        "hvac": 13,
        "plumbing": 2,
        "remodel-gc": 13,
        "solar": 4,
        "roofing": 6
      }
    },
    {
      "id": "newport-beach",
      "jurisdiction": "newport-beach",
      "region": "OC-COUNTYWIDE",
      "tier": "B",
      "name": "Newport Beach",
      "total": 83,
      "residential": 25,
      "with_parcel": 0,
      "trades": {
        "electrical": 1,
        "hvac": 0,
        "plumbing": 6,
        "remodel-gc": 34,
        "solar": 7,
        "roofing": 18
      }
    },
    {
      "id": "westminster",
      "jurisdiction": "westminster",
      "region": "OC-COUNTYWIDE",
      "tier": "B",
      "name": "Westminster",
      "total": 80,
      "residential": 59,
      "with_parcel": 78,
      "trades": {
        "electrical": 35,
        "hvac": 1,
        "plumbing": 1,
        "remodel-gc": 20,
        "solar": 5,
        "roofing": 13
      }
    },
    {
      "id": "yorba-linda",
      "jurisdiction": "yorba-linda",
      "region": "OC-COUNTYWIDE",
      "tier": "B",
      "name": "Yorba Linda",
      "total": 38,
      "residential": 37,
      "with_parcel": 0,
      "trades": {
        "electrical": 0,
        "hvac": 0,
        "plumbing": 20,
        "remodel-gc": 4,
        "solar": 1,
        "roofing": 7
      }
    }
  ],
  "coverage": {
    "county_jurisdictions": 28,
    "measured": [
      "sd-city",
      "carlsbad",
      "santee",
      "el-cajon",
      "imperial-beach",
      "chula-vista",
      "coronado",
      "vista",
      "oceanside",
      "del-mar",
      "solana-beach",
      "encinitas",
      "escondido",
      "san-marcos",
      "sd-county-unincorporated",
      "huntington-beach",
      "brea",
      "aliso-viejo",
      "laguna-hills",
      "laguna-niguel",
      "lake-forest",
      "costa-mesa",
      "fullerton",
      "la-habra",
      "tustin",
      "newport-beach",
      "westminster",
      "yorba-linda"
    ],
    "unreachable": [],
    "suppressed": [
      {
        "id": "anaheim",
        "name": "Anaheim",
        "note": "The city's permit layer is 41 days behind, so Anaheim is not quoted this week."
      }
    ]
  },
  "history": [
    {
      "week": "2026-08-31",
      "measured": "2026-09-03",
      "city_weekly_qualified": 37,
      "by_trade": {
        "electrical": 15,
        "hvac": 6,
        "plumbing": 8,
        "remodel-gc": 27,
        "solar": 2,
        "roofing": 6
      },
      "market_totals": {
        "sd-city:SD-NORTH": 20,
        "sd-city:SD-SOUTH": 17,
        "carlsbad": 65,
        "santee": 8,
        "el-cajon": 14,
        "imperial-beach": 12,
        "chula-vista": 69,
        "coronado": 0,
        "vista": 0,
        "oceanside": 3,
        "del-mar": 6,
        "solana-beach": 11,
        "encinitas": 0,
        "escondido": 49,
        "san-marcos": 40,
        "sd-county-unincorporated": 29,
        "anaheim": null,
        "huntington-beach": 152,
        "brea": 33,
        "aliso-viejo": 27,
        "laguna-hills": 10,
        "laguna-niguel": 72,
        "lake-forest": 15,
        "costa-mesa": 46,
        "fullerton": 70,
        "la-habra": 30,
        "tustin": 45,
        "newport-beach": 48,
        "westminster": 47,
        "yorba-linda": 25
      }
    },
    {
      "week": "2026-09-07",
      "measured": "2026-09-07",
      "city_weekly_qualified": 40,
      "by_trade": {
        "electrical": 16,
        "hvac": 7,
        "plumbing": 7,
        "remodel-gc": 33,
        "solar": 1,
        "roofing": 6
      },
      "market_totals": {
        "sd-city:SD-NORTH": 20,
        "sd-city:SD-SOUTH": 20,
        "carlsbad": 64,
        "santee": 7,
        "el-cajon": 17,
        "imperial-beach": 6,
        "chula-vista": 81,
        "coronado": 0,
        "vista": 0,
        "oceanside": 5,
        "del-mar": 7,
        "solana-beach": 8,
        "encinitas": 0,
        "escondido": 49,
        "san-marcos": 40,
        "sd-county-unincorporated": 28,
        "anaheim": null,
        "huntington-beach": 174,
        "brea": 37,
        "aliso-viejo": 28,
        "laguna-hills": 7,
        "laguna-niguel": 80,
        "lake-forest": 24,
        "costa-mesa": 60,
        "fullerton": 75,
        "la-habra": 15,
        "tustin": 31,
        "newport-beach": 56,
        "westminster": 89,
        "yorba-linda": 38
      }
    },
    {
      "week": "2026-09-14",
      "measured": "2026-09-16",
      "city_weekly_qualified": 13,
      "by_trade": {
        "electrical": 5,
        "hvac": 4,
        "plumbing": 3,
        "remodel-gc": 8,
        "solar": 1,
        "roofing": 4
      },
      "market_totals": {
        "sd-city:SD-NORTH": 7,
        "sd-city:SD-SOUTH": 6,
        "carlsbad": 110,
        "santee": 8,
        "el-cajon": 24,
        "imperial-beach": 13,
        "chula-vista": 114,
        "coronado": 0,
        "vista": 0,
        "oceanside": 3,
        "del-mar": 6,
        "solana-beach": 9,
        "encinitas": 5,
        "escondido": 49,
        "san-marcos": 40,
        "sd-county-unincorporated": 25,
        "anaheim": null,
        "huntington-beach": 186,
        "brea": 35,
        "aliso-viejo": 32,
        "laguna-hills": 25,
        "laguna-niguel": 57,
        "lake-forest": 45,
        "costa-mesa": 70,
        "fullerton": 84,
        "la-habra": 25,
        "tustin": 48,
        "newport-beach": 83,
        "westminster": 80,
        "yorba-linda": 38
      }
    }
  ]
}
