Postal Codes Dataset for Anguilla, AI

222
Updated:
Files:1
Size:852 B
Rows:14
Formats:csv
License:CC-BY-4.0

Postal Codes Dataset for Anguilla, AI including name of the city, town, or place, various administrative divisions and alternative city names.

Part of a Data Solution

  • Postal Codes Solution

    Every worldwide postal-code dataset in one bundle — the ultimate global reference for precise postal codes.

    Explore →

API Access

Access dataset files directly from scripts, code, or AI agents.

Browse dataset files
Dataset Files

Each file has a stable URL (r-link) that you can use directly in scripts, apps, or AI agents. These URLs are permanent and safe to hardcode.

/logistics/postal-codes-ai/
https://datahub.io/logistics/postal-codes-ai/_r/-/.licensing-notes.md
https://datahub.io/logistics/postal-codes-ai/_r/-/.migration-notes.md
https://datahub.io/logistics/postal-codes-ai/_r/-/ATTRIBUTION.txt
https://datahub.io/logistics/postal-codes-ai/_r/-/README.md
https://datahub.io/logistics/postal-codes-ai/_r/-/datapackage.yaml
Key Files

Start with these files — they give you everything you need to understand and access the dataset.

datapackage.yaml— metadata & schema
https://datahub.io/logistics/postal-codes-ai/_r/-/datapackage.yaml
README.md— documentation
https://datahub.io/logistics/postal-codes-ai/_r/-/README.md
Typical Usage
  1. 1. Fetch datapackage.yaml to inspect schema and resources
  2. 2. Download data resources listed in datapackage.yaml
  3. 3. Read README.md for full context

Data Files

Explore with AI

postal-codes-ai


About this dataset

Anguilla (AI): migration notes

Internal record of the P6 migration from the old script to the producer: the discrepancies found, their causes, and who decided what. This is a dated record, so the numbers are as of the migration and not kept current. It is not shipped.

  • Issue: pc-28e.8.1
  • Commit: the worktree commit P6 ai: SST producer; parity format-only (none) (pc-28e.8.1)
  • Parity verdict: format-only (gate: pass, exit 0) against the live public CSV
  • Producer: custom, refresh disabled

Sources

InputURLNotes
GeoNames main gazetteer dumphttps://download.geonames.org/export/dump/AI.zipMember AI.txt; the ADM1 entries with country code AI are the districts. Same URL the old builder's docstring and the descriptor sources name (the old builder read a local copy at sources/postal_raw/AI_gazetteer.txt)
  • The URL is stable, not versioned. The fetched size and sha256 are recorded in data/ai.inputs.json; --no-fetch reuses the cached copy.

Parity against the live public CSV (2026-10-05)

Rows: 14 live and 14 fresh, none only on one side, 0 changed cells, no cell classes. The only difference is line endings: live uses CRLF, the producer writes LF (sha256 differs, content identical). Covered by the standing CRLF→LF sign-off.

No discrepancies to trace.

Decisions

DecisionByBasis
Accept CRLF→LFStanding rule (user, P5 standing sign-off)Format only, equal rows, 0 changed cells
Hardcode the known district names and fail on an unknown, missing or duplicate districtAgent: port choiceReplaces the old assert len(districts) == 14 with a structural check (every admin unit present, known names) rather than a row-count assert
Keep postal_code = AI-2640 as a constantAgent: faithful portThe old builder's THE_ONLY_CODE; Anguilla has one territory-wide code
Don't fetch GeoNames' postal export (export/zip/AI.zip)Agent: faithful portThe old builder never read it; the single code is a constant
latitude/longitude → number; primaryKey: [place_name]Standing rule (real types, user decision), derived from the produced CSVplace_name is unique; the old builder's own datapackage used the same PK
accuracy stays stringAgentThe column is always empty (no GeoNames accuracy for dump coordinates); the old builder typed it string. Not the GeoNames postal accuracy field, so the standard accuracy description wasn't applied
Field descriptions for postal_code, place_name, latitude, longitude taken from the old builder's datapackage (counts removed)Agent: port choiceThe P3 generic descriptions said nothing about the single code or districts
Coordinates must be finite numbers (else ProducerError)AgentNew guard against a nan/empty cell reaching a number field

Transforms carried over

From build_postal_codes_product.py:

  • Districts = dump rows with feature code ADM1 and country code AI; place_name is the dump's name, latitude/longitude its coordinate, copied verbatim.
  • Rows sorted by place_name.
  • admin_*, accuracy and alternative_city_name empty (the old fix for literal "nan" in admin_name1/2/3; the producer uses csv, no pandas).
  • Old asserts (district count, no "nan", unique place_name) are ProducerErrors.

Not ported

  • The old builder's generated README/ATTRIBUTION/datapackage.json and zip: build.py and the committed descriptor/README own those; free datasets get no zip.
  • publish_r2.py: removed; publishing is the shared pipeline's job.

Open questions

  • None needing the user. .licensing-notes.md and ATTRIBUTION.txt were left verbatim (pc-hfz sweep).