Skip to main content

GeoSQL

Claude Code, Codex, GitHub Copilot, OpenCode, and Mistral Vibe skill for data scientists and analysts working with geospatial data on PostGIS, BigQuery, Snowflake, and Wherobots.

Note: No SaaS account needed. Works 100% locally or self-hosted.

GeoSQL demo

4x improvement on geospatial tasks with map in the loop.

Agent with maps loop, 4x performance

Quick Start

With Python (interactive mode):

pip install geosql && geosql

GeoSQL first installs the skill into your detected agent. It then checks whether the optional Dekart CLI is ready and, only when needed, asks before installing or initializing it. The prompt shows the exact commands and defaults to the recommended install option.

After installing, prompt your agent like this:

/geosql Show EV charger density along major roads and render a map

How to update

Upgrade GeoSQL in the Python environment where it is installed:

pip install --upgrade geosql

If you use the optional Dekart CLI, update it too:

pip install --upgrade dekart

Then rerun the installer so the latest GeoSQL skill and references are copied to your detected agent:

geosql

Version telemetry

GeoSQL sends a best-effort version check with its package version and an opaque random installation ID. GeoSQL and Dekart CLI share the ID at ${XDG_CONFIG_HOME:-~/.config}/dekart/installation_id; deleting that file resets it. Set DO_NOT_TRACK=1 (or DNT=1) to disable the version check before an ID is created. CI sends a reserved non-persisted test ID.

Example prompts to try in your agent:

Real estate analysis:

/geosql Show buildings with low school accessibility in Ottawa, render as a map

Site selection:

/geosql Find the top 10 locations for Sporting Goods Store in Seattle based on POI co-location and distance to the nearest competitor. Create a map.

EV charging infrastructure:

/geosql create map EV charger density along major Romanian roads, highlighting how many charging stations are within 5 km of each motorway, trunk, or primary road segment.

How it works

GeoSQL runs an agent loop with a map in it.

How GeoSQL connects the agent, Dekart CLI, data sources, and deployment

  1. Discovery. The skill explores your warehouse metadata (tables, columns, types) instead of guessing schemas. Works with Overture Maps shares on BigQuery and Snowflake, and your private tables on PostGIS, BigQuery, Snowflake, or Wherobots.
  2. SQL. The agent writes spatial SQL using the right functions for your engine (ST_INTERSECTS, ST_DISTANCE, H3, bbox overlap for partition pruning, and so on).
  3. Cost check. On BigQuery, every query is dry-run first to estimate bytes scanned. A 10 GiB billing cap is enforced by default. Over-budget queries get rewritten cheaper (tighter bbox, lower H3 resolution, more filters) instead of executed.
  4. Geometry validation. The agent computes total area (polygons) or total length (lines) as a sanity check, and cross-checks against domain knowledge.
  5. Map feedback. When available, the agent renders the result through Dekart, looks at the rendered image, and corrects geometry mistakes the text-only loop would miss. This is the loop that gets the 4x improvement.

The skill uses your local CLI authentication (bq, snow, dekart), so warehouse credentials never go to the agent.

Benchmarks

GeoSQL ships with a reproducible eval suite under evals/. Each case asserts specific behaviors (cost guardrails, validation steps, correct result), not just "did the agent answer."

Current results on the included suite:

Case Assertions Pass rate
london-boroughs 4 100%
berlin-create-map 3 100%
paris-boundaries 1 100%
Total 8 100%

Average: 3,085 tokens per turn, 72 s duration per turn.

The 4x improvement chart above compares the same task set with and without the map-in-loop step. Without maps, the agent's text-only validation misses geometry-class errors (mistaking a neighborhood polygon for a metro-area perimeter, double-counting overlapping features, picking the wrong join key on coordinate-reference systems). Adding the rendered map as a tool call lets the agent see those mistakes and self-correct.

Run the suite yourself:

python evals/run.py

See evals/RUNBOOK.md for setup and how to add new cases. PRs with new evals welcome.

Metadata

Release files for geosql 0.38.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for geosql 0.38.0
File Size Uploaded Provenance Actions
geosql-0.38.0.tar.gz 7.4 MB Without provenance Details for geosql-0.38.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for geosql 0.38.0
File Interpreter ABI Platform Actions
geosql-0.38.0-py3-none-any.whl Python 3 none any Details for geosql-0.38.0-py3-none-any.whl

Total release size: 7.5 MB

Release files / geosql-0.38.0.tar.gz

Download URL geosql-0.38.0.tar.gz
Size 7.4 MB
Tags Source
SHA-256 checksum
How to use checksums
8be11e2729ff42ef8a82312fd5f775ff83da61033de304cf63e42bff381d08fe
BLAKE2b-256 checksum
How to use checksums
d9aa710052e80b4345926c0cfa457df65bd522db626aa03ace1c5d47f0b3446b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.7

Release files / geosql-0.38.0-py3-none-any.whl

Download URL geosql-0.38.0-py3-none-any.whl
Size 41.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2cacbf359cbca04ed7e89c55e0074473fbb938b612b0089f6fba8017949fc463
BLAKE2b-256 checksum
How to use checksums
3ea92edee450b7a4ace8772a9af0ee69e0d7517550319d79e6298c09ecd3561e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.7

Security for geosql 0.38.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.38.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page