Skip to content
DA DataAcuity by The Geek Network

GeoGlobal — Geocoding, POI Discovery & Africa Routing

Status: LIVE on .106 (DataAcuity Maps server) as of 2026-05-28 Owner: Tinashe Bhengu Network: data-warehouse_data_stack (all .106 containers can reach by service name)

GeoGlobal is the global geo intelligence layer for The Geek Network. It backs:

  • Place lookup — find any of 13.4M populated places worldwide by exact name, fuzzy text, or coordinates
  • POI discovery — surface 3.5M+ points of interest (museums, tourism, historic sites, hotels, nature, archaeology, religious sites) ranked by interest score, distance, and theme
  • Africa-wide turn-by-turn routing — driving / pedestrian / bicycle / motorcycle / truck across 38,822 tiles built from the latest Africa OpenStreetMap extract (May 2026)
  • Quest composition — synthesis tool that finds the most interesting POIs near a location and routes through them in optimal order (round-trip)

Why this exists

Both TagMe and Takemehome.co.za already call maps.dataacuity.co.za for geocoding, reverse-geocoding, and directions — but most of the geo plumbing is either stubbed or unwired in the UI. GeoGlobal adds the missing capabilities (turn-by-turn routing, ranked POI discovery, multi-stop quest planning, fuzzy place search) and surfaces them as both:

  • A REST API (proxied through maps_api on .106:5020) — the easiest way for the .NET/Blazor apps to consume
  • An MCP server (geo_mcp on .106:5026) — for Butler (B! AI) and any other AI agent that should reason over geographic context

The two surfaces share the same backing data (geo_db PostgreSQL/PostGIS + valhalla routing container), so behavior is identical regardless of which entry point you use.

What's in this folder

File Audience Purpose
GeoGlobal_README.md Everyone This file — overview, where it lives, capabilities summary
GeoGlobal_API_Reference.md Backend / API consumers Complete endpoint and MCP tool reference with request/response schemas and curl examples
GeoGlobal_Integration_Guide.md TagMe & Takemehome developers Copy-paste C# / Blazor / Razor patterns ranked by value
GeoGlobal_Data_Schema.md DBAs / data engineers Database schemas for geo_db (geonames + interesting_locations) and Valhalla tile metadata
GeoGlobal_Deployment.md Ops / SRE Where containers run, networks, ports, env vars, monitoring, restart procedures

Capabilities at a glance

Capability Coverage Backing
Exact-name geocoding Global (13.4M places) geo_db.geonames (GeoNames database)
Fuzzy / misspelled geocoding Global, trigram similarity geo_db.geonames with pg_trgm
Reverse geocoding Global geo_db.geonames + PostGIS KNN
POI discovery near a coord Global (3.5M POIs) geo_db.interesting_locations (OSM + Wikipedia)
POI tags / themes tourism, natural, peak, historic, place_of_worship, hotel, museum, archaeological_site, viewpoint, attraction, art, camp_site, etc. interesting_locations.tags[]
Interest score (0–1) Computed from OSM popularity + Wikipedia presence + visitor data interesting_locations.interest_score
Turn-by-turn directions Africa only (Phase 1) valhalla container with 38,822 tiles
Routing modes auto, bicycle, pedestrian, motorcycle, truck Valhalla v3.5.1
Optimized multi-stop quest Africa only Valhalla /optimized_route

Geographic coverage

  • Place data and POIs: truly global. African coverage is best (this is what we built first), with very strong fill for Europe, North America, parts of Asia, and reasonable fill for the rest.
  • Routing: Africa only for now. Calls outside the bounding box return a 400 with "No suitable edges near location". Future phases may add Europe, MENA, etc. as separate Valhalla containers or a hosted-routing fallback.

If a feature needs global routing today, point the call at the public Valhalla mirror or OpenRouteService API — but be aware of rate limits and SLAs.

Quick start — the smallest useful call

# Find Cape Town and the 5 most interesting things within 10 km
curl -s "http://197.97.200.106:5026/sse" # ... see GeoGlobal_API_Reference.md for the MCP/REST shapes
// In a TagMe or Takemehome service:
var client = httpClientFactory.CreateClient("GeoGlobal");
var result = await client.GetFromJsonAsync<List<Place>>(
    "/api/v2/geocode?query=Cape%20Town&include_interesting=true&max_interesting=5");

See GeoGlobal_API_Reference.md for every endpoint and GeoGlobal_Integration_Guide.md for end-to-end app patterns.

Performance notes

  • Geocoding / reverse / search: typically <50 ms (indexed PostGIS query)
  • POI nearby (within_km≤20, limit≤10): typically <150 ms
  • Single-leg Valhalla route within Africa: typically 100–800 ms depending on distance
  • discover_quest (POI search + optimized_route): typically 500 ms – 3 s for 5 POIs

These figures assume the caller is on .106 or .118 (in-cluster). External callers add WAN latency.

Versioning

  • MCP server: v0.5 (2026-05-28 — adds interesting_nearby as a standalone tool plus three new tools: isochrone, distance_matrix, snap_to_road. Nine tools total)
  • Prior: v0.4 (geocode + reverse + search + route + discover_quest + interesting_nearby enrichment)
  • Valhalla: v3.5.1 with gis-ops/docker-valhalla wrapper
  • GeoNames data snapshot: 2026-05-20
  • OSM Africa extract: 2026-05-27 (openstreetmap.fr mirror)
  • Wikipedia geo-tagged articles: not yet seeded (pending future work)

Breaking changes will bump the major version of the REST /api/v2/ namespace. The MCP tool surface follows MCP's standard semver discipline (additive changes within the same protocol version).

Where to go next

  • You're building app featuresGeoGlobal_Integration_Guide.md
  • You're writing backend that calls the API directlyGeoGlobal_API_Reference.md
  • You're an AI agent or B! Butler skill builderGeoGlobal_API_Reference.md (MCP Tools section)
  • You're operating the service / on callGeoGlobal_Deployment.md
  • You're querying the database directlyGeoGlobal_Data_Schema.md

Open items / not yet built

  1. Wikipedia geo-tagged article seeding — would add ~1M more POIs with richer descriptions
  2. EU country POI gap fill — current coverage outside Africa is biased toward dense OSM regions
  3. Routing outside Africa — needs either more disk/RAM on this server, a second box, or a hosted API
  4. mcpize.com public listing — once the MCP is stable for a couple weeks

Contact

  • For app integration questions: open an issue or message in the team channel
  • For ops / outage: check GeoGlobal_Deployment.md runbook first, then escalate
Something went wrong on this page. Reload