{
  "api_version": "v1",
  "title": "SAPD ZIP-Year Public Safety Outcomes methodology",
  "latest_complete_year": 2025,
  "partial_year": 2026,
  "unit_of_analysis": "One ZIP code in one calendar year.",
  "metric_definitions": {
    "total_calls": "Aggregate recorded calls assigned to a ZIP-year record.",
    "total_arrests": "Arrest-source rows assigned to a ZIP-year record; not necessarily unique reports, people, incidents, or cases.",
    "total_offenses": "Offense-source rows assigned to a ZIP-year record; not necessarily unique reports, incidents, victims, or cases.",
    "arrests_per_100_offenses": "Total represented arrest-source rows divided by represented offense-source rows, multiplied by 100. This is not a clearance rate."
  },
  "interpretation_statement": "The 2025 ZIP analysis includes 59,155 arrest-source rows and 135,285 offense-source rows assigned to 76 ZIP areas. The original source files contain 59,505 arrest rows and 136,708 offense rows for 2025. Approximately 0.59% of arrest rows and 1.04% of offense rows were not represented in the ZIP-level outcome table. Source rows are not equivalent to unique reports: the arrest data contains 37,247 unique Report IDs, while the offense data contains 125,125 unique Report IDs. The arrests-per-100-offenses measure is an aggregate row-count ratio and must not be interpreted as a clearance rate.",
  "limitations": [
    "The dataset does not link a particular arrest row to a particular offense row.",
    "Source rows are not equivalent to unique Report IDs.",
    "The analysis does not measure response time, case clearance, conviction, officer conduct, or neighborhood safety.",
    "The 2026 data is partial and should not be compared directly with complete calendar years without adjustment."
  ]
}
