# axxiomaspa/codigopais-datos architecture

> Architecture diagram of the GitHub repository axxiomaspa/codigopais-datos, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/axxiomaspa/codigopais-datos
- Repository: https://github.com/axxiomaspa/codigopais-datos

## Overview

This repository is Código País’s public-data processing kitchen: scripts fetch and validate government data, then publish JSON consumed by the site. The main workflow covers national DIPRES budget/execution, municipal invoice purchases, and census population inputs; a separate Voz vecinal method generator publishes topic, question, and spending-equivalence files. The README documents the outputs and quality gates. Municipal and census source excerpts show their inputs and processing; gaps in the DIPRES and method excerpts limit some internal detail.

Main entry points: [`cocina/municipios.py`](https://github.com/axxiomaspa/codigopais-datos/blob/main/cocina/municipios.py) (Municipal processing), [`cocina/dipres.py`](https://github.com/axxiomaspa/codigopais-datos/blob/main/cocina/dipres.py) (DIPRES processing), [`cocina/censo_poblacion.py`](https://github.com/axxiomaspa/codigopais-datos/blob/main/cocina/censo_poblacion.py) (Census counting), [`datos/poblacion_comunas_censo2024.csv`](https://github.com/axxiomaspa/codigopais-datos/blob/main/datos/poblacion_comunas_censo2024.csv) (Population CSV)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_national["National budget"]
  node_dipres["DIPRES processing<br/>[dipres.py]"]
end

subgraph group_municipal["Municipal data"]
  node_censo["Census counting<br/>[censo_poblacion.py]"]
  node_population["Population CSV"]
  node_municipios["Municipal processing<br/>[municipios.py]"]
end

subgraph group_method["Voz vecinal method"]
  node_generator["Method generator<br/>[generar.py]"]
  node_method_json["Method JSON"]
  node_equivalence_test["Equivalence classifier"]
end

subgraph group_published["Published data"]
  node_gasto_out["Budget JSON"]
  node_municipal_out["Municipal JSON"]
end

node_user(("Site users"))
node_dipres_source[("DIPRES datasets")]
node_ipc_dipres["INE IPC"]
node_census_source[("Census microdata")]
node_monitor[("Purchase monitor")]
node_ipc_muni["INE IPC service"]

node_user -->|"reads"| node_gasto_out
node_user -->|"reads"| node_municipal_out
node_dipres_source -->|"downloads"| node_dipres
node_ipc_dipres -->|"provides IPC"| node_dipres
node_dipres -->|"writes"| node_gasto_out
node_census_source -->|"downloads"| node_censo
node_censo -->|"writes"| node_population
node_population -->|"loads"| node_municipios
node_monitor -->|"queries"| node_municipios
node_ipc_muni -->|"provides IPC"| node_municipios
node_municipios -->|"writes"| node_municipal_out
node_generator -->|"generates"| node_method_json
node_method_json -->|"classifies with"| node_equivalence_test

click node_dipres "https://github.com/axxiomaspa/codigopais-datos/blob/main/cocina/dipres.py"
click node_gasto_out "https://github.com/axxiomaspa/codigopais-datos/tree/main/salida/gasto"
click node_censo "https://github.com/axxiomaspa/codigopais-datos/blob/main/cocina/censo_poblacion.py"
click node_population "https://github.com/axxiomaspa/codigopais-datos/blob/main/datos/poblacion_comunas_censo2024.csv"
click node_municipios "https://github.com/axxiomaspa/codigopais-datos/blob/main/cocina/municipios.py"
click node_municipal_out "https://github.com/axxiomaspa/codigopais-datos/tree/main/salida/municipios"
click node_generator "https://github.com/axxiomaspa/codigopais-datos/blob/main/metodo/voz-vecinal/generar.py"
click node_method_json "https://github.com/axxiomaspa/codigopais-datos/tree/main/metodo/voz-vecinal"
click node_equivalence_test "https://github.com/axxiomaspa/codigopais-datos/blob/main/metodo/voz-vecinal/probar_equivalencias.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_dipres,node_user toneBlue
class node_censo,node_population,node_municipios,node_dipres_source,node_census_source,node_monitor toneAmber
class node_generator,node_method_json,node_equivalence_test toneMint
class node_gasto_out,node_municipal_out toneRose
class node_ipc_dipres,node_ipc_muni toneIndigo
```

## Components

### National budget

- [DIPRES processing](https://github.com/axxiomaspa/codigopais-datos/blob/main/cocina/dipres.py): `cocina/dipres.py`

### Municipal data

- [Census counting](https://github.com/axxiomaspa/codigopais-datos/blob/main/cocina/censo_poblacion.py): `cocina/censo_poblacion.py`
- [Population CSV](https://github.com/axxiomaspa/codigopais-datos/blob/main/datos/poblacion_comunas_censo2024.csv): `datos/poblacion_comunas_censo2024.csv`
- [Municipal processing](https://github.com/axxiomaspa/codigopais-datos/blob/main/cocina/municipios.py): `cocina/municipios.py`

### Voz vecinal method

- [Method generator](https://github.com/axxiomaspa/codigopais-datos/blob/main/metodo/voz-vecinal/generar.py): `metodo/voz-vecinal/generar.py`
- [Method JSON](https://github.com/axxiomaspa/codigopais-datos/tree/main/metodo/voz-vecinal): `metodo/voz-vecinal`
- [Equivalence classifier](https://github.com/axxiomaspa/codigopais-datos/blob/main/metodo/voz-vecinal/probar_equivalencias.py): `metodo/voz-vecinal/probar_equivalencias.py`

### Published data

- [Budget JSON](https://github.com/axxiomaspa/codigopais-datos/tree/main/salida/gasto): `salida/gasto`
- [Municipal JSON](https://github.com/axxiomaspa/codigopais-datos/tree/main/salida/municipios): `salida/municipios`

### Other components

- **Site users**
- **DIPRES datasets**
- **INE IPC**
- **Census microdata**
- **Purchase monitor**
- **INE IPC service**

## Connections

- Site users → Budget JSON: reads (evidence: `README.md`)
- Site users → Municipal JSON: reads (evidence: `README.md`)
- DIPRES datasets → DIPRES processing: downloads (evidence: `cocina/dipres.py`)
- INE IPC → DIPRES processing: provides IPC (evidence: `cocina/dipres.py`)
- DIPRES processing → Budget JSON: writes (evidence: `README.md`)
- Census microdata → Census counting: downloads (evidence: `cocina/censo_poblacion.py`)
- Census counting → Population CSV: writes (evidence: `cocina/censo_poblacion.py`)
- Population CSV → Municipal processing: loads (evidence: `cocina/municipios.py`)
- Purchase monitor → Municipal processing: queries (evidence: `cocina/municipios.py`)
- INE IPC service → Municipal processing: provides IPC (evidence: `cocina/municipios.py`)
- Municipal processing → Municipal JSON: writes (evidence: `cocina/municipios.py`)
- Method generator → Method JSON: generates (evidence: `metodo/voz-vecinal/generar.py`)
- Method JSON → Equivalence classifier: classifies with (evidence: `metodo/voz-vecinal/probar_equivalencias.py`)
