type: decision
status: active
timestamp: 2026-06-20
tags: [decisions, architecture, geocoding, nominatim, mapbox, cf-ipcountry, deferred]

Geocoding — deferred (no current need); CF-IPCountry covers geo-routing today

No geocoding, deferred \ need address\u2194coordinate translation. Cloudflare's free `CF-IPCountry` request\ \ header covers all current geo-routing needs (consent banner geo, payment-route\ \ geo). When a site lands a map feature, the swap target is OpenStreetMap Nominatim\ \ or Mapbox \u2014 both free, no card."

Geocoding — deferred (no current need); CF-IPCountry covers today

Decision

The family adopts no geocoding service in 2026-06-20. No account at OpenStreetMap Nominatim, no Mapbox account, no Google Geocoding key. The CF-IPCountry header that Cloudflare attaches to every request at the edge — free, included with the existing Cloudflare Pages zone, requires no third-party account — is sufficient for every geo-shaped need the family has today.

When a future site lands a feature that needs address ? coordinate translation (forward or reverse geocoding), the swap target is documented as OpenStreetMap Nominatim or Mapbox — picked at adoption time based on volume, neither requires a card on the free tier.

Why

Implications

What we don’t do

When this flips — promote deferred ? active

Promote when any one of these holds:

  1. oriz-finance lands a map view (e.g. “where my brokers are” / “regional regulator map”) that needs forward / reverse geocoding for office addresses.
  2. oriz-me lands a “visited cities” / “lifestream geo-tagging” feature that needs reverse-geocoding GPS coordinates from JSONL events to city / country names.
  3. Any future site lands an “address input” form that needs to validate and standardise addresses (e.g. shipping, event venues).
  4. A consent-banner surface needs sub-country geo-targeting that CF-IPCountry cannot serve.

Swap targets — pick at adoption time

ProviderFree tierCardWhen to pick
OpenStreetMap Nominatim (public)1 req/sec, no authNoLow volume, OSS-friendly, attribution-on-page acceptable
Mapbox100K geocoding requests / month, 50K map loads / monthNoModerate volume, polished map tiles, brand-mark acceptable

The picked provider must:

What stays

Cross-refs


Edit on GitHub · Back to index