Claude Code vs Aino: a geospatial agent test
by Vladi ‐ 3 min read
Same prompt, one of the best GIS agents vs Claude plus an open-source GeoSQL skill on free Overture data.

Ten months ago, Alex published a demo of the Aino agent creating a map. So I wondered if Claude could do the same now. Turns out it can do more.
What is Aino
Aino is a geospatial AI agent. You ask a question in plain English and it builds a map: it picks the data, runs the analysis, and visualizes the result. No SQL, no GIS software.
Same prompt, two agents
I took the exact prompt from Aino’s demo and gave it to Claude Code: “Show buildings with low accessibility to elementary schools in Ottawa.” It is a classic GIS task: find the homes a city underserves.
In Alex’s demo, the agent fetches the data, but a human does the final styling. In my run, Claude did both, then improved its own reasoning by seeing the result.

What is GeoSQL
GeoSQL is an open-source skill that gives Claude the SQL-first geospatial steps: schema discovery, query validation, and rendering the result on a map.
Without a map, an agent writes the SQL and prays the result is right. With the map in the loop, it sees the output and fixes its own query. On a separate eval, that one change took a geospatial skill from 2 of 8 correct to 8 of 8.
The query it wrote
WITH area AS (
SELECT geometry
FROM `bigquery-public-data.overture_maps.division_area`
WHERE names.primary = 'Ottawa'
LIMIT 1
),
schools AS (
SELECT ST_UNION_AGG(p.geometry) AS g
FROM `bigquery-public-data.overture_maps.place` p
CROSS JOIN area a
WHERE p.categories.primary = 'elementary_school'
AND ST_INTERSECTS(p.geometry, a.geometry)
-- bbox prefilter keeps the scan cheap
AND p.bbox.xmin <= -75.246 AND p.bbox.xmax >= -76.355
AND p.bbox.ymin <= 45.537 AND p.bbox.ymax >= 44.961
)
SELECT
b.id,
ST_CENTROID(b.geometry) AS geometry,
ST_DISTANCE(b.geometry, s.g) AS dist_m
FROM `bigquery-public-data.overture_maps.building` b
CROSS JOIN schools s
CROSS JOIN area a
WHERE ST_INTERSECTS(b.geometry, a.geometry)
AND ST_DISTANCE(b.geometry, s.g) > 1600; -- more than 1.6 km from any school
About 5.5 GB scanned on a dry run, well under budget. Then Claude listed its own caveats before drawing anything: Overture can miss newer or French-board schools, straight-line distance ignores rivers and highways, and “Ottawa” here is the county, so most low-access buildings are rural. It rendered 55,922 of them, shown on the map above.
Where the data comes from
The data is free. Overture Maps publishes open building, place, and administrative boundary datasets, hosted on BigQuery and Snowflake. Claude, with GeoSQL, queries them through the bq and snow CLIs. Your data stays in your warehouse. The model only sees the scoped result it asked for.
One prompt box to rule them all
I chose Aino because their agent is one of the best. There are others: CARTO, Felt. But I never believed in a future where every SaaS ships its own prompt box. I believe in one prompt box to rule them all.
If you already do geospatial with PostGIS, BigQuery, or Snowflake and you use Claude:
pip install geosql