Data Updates#
Data is kept fresh by automated GitHub Actions workflows. Each workflow fetches from upstream sources, validates the response, and writes to Cloudflare R2 (with a git-tracked fallback).
Workflow overview#
Workflow |
Schedule |
Primary Sources |
Taxonomy Product |
|---|---|---|---|
|
manual |
Inside Airbnb, Property24, PayProp |
|
|
manual |
CrimeHub, SAPS, Google News |
|
|
every 5 hours (:05) |
OurPower, Eskom |
|
|
every 5 hours (:35) |
OurPower |
|
|
weekly (Tue 06:00 UTC) |
DWS |
|
|
monthly (1st, 06:00 UTC) |
Property24, Lightstone |
— |
|
every 10 min (01:00–17:59 UTC) |
Google Maps |
— |
|
twice daily (08:00, 16:00 UTC) |
exchangerate.host |
— |
How it works#
Data Product Taxonomy#
Each data product has a DataProductManifest defining its sub-datasets,
dependencies, and refresh mechanics. These are registered in
reports/manifest_registry.py and visible in the admin at
/admin/reports/dataset/taxonomy/.
Product |
Registry |
Sub-datasets |
Composite slug |
|---|---|---|---|
Sea Point Crime & Safety |
|
7 |
|
Cape Town Dam Levels |
|
4 |
|
SA Loadshedding Status |
|
5 |
|
Cape Town Ward Crime & Safety |
|
7 |
|
Cape Town Housing Market |
|
7 |
|
See reports app docs for the full taxonomy reference.
See the Auto-generated Reference section for per-workflow details built
from data/updates.json.