Australia (AU) build pipeline
Self-contained — runs entirely from this repo. No external repo dependency: both
scripts resolve their paths relative to themselves (AUS_DIR = parent of this scripts/ folder) and fetch directly from a public source.
Reconstructed from nothing on 2026-08-19. No build script for AU survived
anywhere — a note in the source-research history said it was "Built in custom_au/",
but that folder doesn't exist on disk and was never committed to git anywhere. Only the
final delivery output survived. This was inferred by comparing rebuilt output against
that survivor field-for-field until it matched. Chosen over Australia Post's own file
(commercial-licensed, not redistributable) and plain Geoscape G-NAF (no LGA tier on its
own) — see the source-research notes preserved in fedex-agents-prototype/countries/AUS/FEASIBILITY.md
for the full comparison, if that repo is available; not required to run this pipeline.
Run order (from this directory)
python3 fetch_source.py # matthewproctor.com/australian_postcodes (community, public domain)
# writes ../data/raw_australian_postcodes.csv (gitignored, regenerable)
python3 build_base.py # groups 18,559 raw rows by postcode -> one row per postcode
# writes ../au_au_rebuilt/au.csv
build_base.py's own docstring documents exactly how it was reverse-engineered: which
raw column feeds place_name (first locality in source row order), which feeds
alternative_city_name (every other distinct locality in that group), and why —
verified against the survivor row by row, not assumed.
Sources
- matthewproctor.com/australian_postcodes (community, public domain) — integrates
Australia Post postcodes + ABS Local Government Area codes + Geoscape G-NAF
coordinates in one CSV; chosen specifically because it already does this
consolidation, per
FEASIBILITY.md's source comparison.
Verification (2026-08-19)
Exact row count match: 3,175/3,175 (grouping the 18,559-row raw source by postcode yields exactly 3,175 groups — matching the survivor's row count exactly, strong evidence this is genuinely the right source). 4 of 5 spot-checked rows byte-identical (postcodes 0200, 0801, 0803, 0804); the 5th (0800) differs only because the upstream community source has since updated which locality sorts first for that postcode — not a logic bug, the source itself is individually-dated per row and drifts over time. Not guaranteed byte-identical long-term given the source's live nature — documented in the script itself rather than claimed as a permanent guarantee.