GeoAgentEval benchmark leaderboard
Building, auditing and repairing a PostGIS database, from GeoAgentEval. A standalone evaluation: its scores are shown here and on model pages, but it is not counted in any index or ranking until more models have run it.
Models76 of 76 entries
Score
GeoAgentEval score
Share of tasks passed, 0 to 100 · Higher is better
How to read this chart
What this metric means. The share of tasks the entry passed, 0 to 100.
Data table: GeoAgentEval score
GeoAgentEval: score vs. cost per task
GeoAgentEval score against average cost per task (USD) · Higher and further left is better
- Most attractive quadrant
- Pareto line
How to read this chart
What cost is measuring. What one attempt at a task would cost if paid token by token at the provider's published API prices, averaged over attempts: ordinary input tokens, input tokens served from the provider's cache at the lower cached price, tokens written to the cache where the provider charges for that, and output tokens (thinking included). Cost assumes each harness uses the model's pay-per-token API, priced at public list rates; sandboxes and our own engineering time are not included. Failed attempts count too.
How to read this chart. Each point is one entry. Further left means a lower average cost per task (log scale); higher means a higher GeoAgentEval score. Both axes fit the points shown, so the score axis does not start at zero. The shaded most attractive quadrant is the top-left quarter of the plot, split at the middle of each axis: a reading aid, not a fixed bar. The dotted Pareto line joins the points that no cheaper one beats on score. Only exact costs are plotted; the table lists every entry.
Data table: GeoAgentEval: score vs. cost per task
| Model | GeoAgentEval score | Cost per task (USD) | On the Pareto line |
|---|---|---|---|
| Claude Opus 5.5 (medium), Claude Code | 100 | $0.10 | No |
| Claude Opus 5.5 (high), Claude Code | 100 | $0.12 | No |
| Claude Sonnet 5.5 (high), Claude Code | 100 | $0.047 | Yes |
| Claude Opus 5.5 (xhigh), Claude Code | 100 | $0.15 | No |
| Claude Sonnet 5.5 (xhigh), Claude Code | 100 | $0.062 | No |
| Claude Sonnet 5.5 (medium), Claude Code | 96 | $0.037 | Yes |
| Claude Opus 5 (high), Claude Code | 96 | $0.22 | No |
| Claude Haiku 5.5 (medium), Claude Code | 92 | $0.0048 | Yes |
| Claude Haiku 5.5 (high), Claude Code | 92 | $0.0059 | No |
| Claude Haiku 5.5 (xhigh), Claude Code | 92 | $0.0077 | No |
| Claude Sonnet 5 (high), Claude Code | 92 | $0.10 | No |
| Claude Opus 4.8 (high), Claude Code | 92 | $0.17 | No |
| Claude Opus 4.7 (high), Claude Code | 92 | $0.20 | No |
| Claude Haiku 4.5 (Reasoning), Claude Code | 88 | $0.057 | No |
Token usage
GeoAgentEval: tokens per task
Average tokens per task by type · Lower is better
- Uncached input
- Cached input
- Output (reasoning included)
How to read this chart
What the parts mean. Uncached input: input tokens read at the full price. Cached input: input tokens served from the provider's cache at the lower cached price. Output: the tokens the model wrote, its reasoning included, as reported by the provider.
Compare with care. Models use different tokenisers, so the same text is a different number of tokens for different models. Use token counts to see how much work each model did, and cost to compare spending.
Data table: GeoAgentEval: tokens per task
| Model | Developer | Uncached input | Cached input | Output (reasoning included) | Total |
|---|---|---|---|---|---|
| Claude Sonnet 5.5 (medium), Claude Code | Anthropic | 5k | 70k | 918 | 76k |
| Claude Sonnet 5.5 (high), Claude Code | Anthropic | 7k | 74k | 1k | 82k |
| Claude Opus 5.5 (medium), Claude Code | Anthropic | 7k | 78k | 1k | 86k |
| Claude Opus 5.5 (high), Claude Code | Anthropic | 8k | 81k | 2k | 91k |
| Claude Sonnet 5.5 (xhigh), Claude Code | Anthropic | 9k | 92k | 2k | 102k |
| Claude Opus 4.8 (high), Claude Code | Anthropic | 7k | 108k | 2k | 117k |
| Claude Opus 5.5 (xhigh), Claude Code | Anthropic | 9k | 108k | 2k | 120k |
| Claude Opus 5 (high), Claude Code | Anthropic | 9k | 143k | 3k | 155k |
| Claude Opus 4.7 (high), Claude Code | Anthropic | 7k | 183k | 1k | 192k |
| Claude Haiku 5.5 (medium), Claude Code | Anthropic | 8k | 188k | 2k | 199k |
| Claude Haiku 5.5 (high), Claude Code | Anthropic | 11k | 207k | 3k | 221k |
| Claude Sonnet 5 (high), Claude Code | Anthropic | 9k | 225k | 2k | 235k |
| Claude Haiku 4.5 (Reasoning), Claude Code | Anthropic | 8k | 253k | 3k | 264k |
| Claude Haiku 5.5 (xhigh), Claude Code | Anthropic | 12k | 254k | 5k | 271k |
Cost
GeoAgentEval: cost per task
Average cost per task (USD) by token type · Lower is better
- Uncached input
- Cached input
- Output
- Not split by token type
How to read this chart
What cost is measuring. What one attempt at a task would cost if paid token by token at the provider's published API prices, averaged over attempts: ordinary input tokens, input tokens served from the provider's cache at the lower cached price, tokens written to the cache where the provider charges for that, and output tokens (thinking included). Cost assumes each harness uses the model's pay-per-token API, priced at public list rates; sandboxes and our own engineering time are not included. Failed attempts count too.
How the cost is split. Each part is the entry's average tokens of that type times its list price. The rest, mostly tokens written to the cache, is shown as not split by token type.
Data table: GeoAgentEval: cost per task
| Model | Developer | Uncached input | Cached input | Output | Not split by token type | Total |
|---|---|---|---|---|---|---|
| Claude Haiku 5.5 (medium), Claude Code | Anthropic | $0.00085 | $0.0019 | $0.0012 | $0.00085 | $0.0048 |
| Claude Haiku 5.5 (high), Claude Code | Anthropic | $0.0011 | $0.0021 | $0.0017 | $0.0011 | $0.0059 |
| Claude Haiku 5.5 (xhigh), Claude Code | Anthropic | $0.0012 | $0.0025 | $0.0027 | $0.0012 | $0.0077 |
| Claude Sonnet 5.5 (medium), Claude Code | Anthropic | $0.010 | $0.0070 | $0.0092 | $0.010 | $0.037 |
| Claude Sonnet 5.5 (high), Claude Code | Anthropic | $0.014 | $0.0074 | $0.012 | $0.014 | $0.047 |
| Claude Haiku 4.5 (Reasoning), Claude Code | Anthropic | $0.0082 | $0.025 | $0.015 | $0.0082 | $0.057 |
| Claude Sonnet 5.5 (xhigh), Claude Code | Anthropic | $0.017 | $0.0092 | $0.018 | $0.017 | $0.062 |
| Claude Sonnet 5 (high), Claude Code | Anthropic | $0.017 | $0.045 | $0.022 | $0.017 | $0.10 |
| Claude Opus 5.5 (medium), Claude Code | Anthropic | $0.030 | $0.016 | $0.027 | $0.030 | $0.10 |
| Claude Opus 5.5 (high), Claude Code | Anthropic | $0.034 | $0.016 | $0.033 | $0.034 | $0.12 |
| Claude Opus 5.5 (xhigh), Claude Code | Anthropic | $0.038 | $0.022 | $0.049 | $0.038 | $0.15 |
| Claude Opus 4.8 (high), Claude Code | Anthropic | $0.035 | $0.054 | $0.048 | $0.035 | $0.17 |
| Claude Opus 4.7 (high), Claude Code | Anthropic | $0.035 | $0.092 | $0.034 | $0.035 | $0.20 |
| Claude Opus 5 (high), Claude Code | Anthropic | $0.043 | $0.072 | $0.067 | $0.043 | $0.22 |
Speed
GeoAgentEval: time per task
Time per task (at 100 output tokens/s), minutes · Lower is better
How to read this chart
Time per task. Time as if every model wrote 100 output tokens per second: output tokens divided by 100, plus the time the agent's commands took. Serving speed differs between providers and is not ranked.
Data table: GeoAgentEval: time per task
GeoAgentEval: score vs. time per task
GeoAgentEval score against time per task (at 100 output tokens/s), minutes · Higher and further left is better
- Most attractive quadrant
- Pareto line
How to read this chart
Time per task. Time as if every model wrote 100 output tokens per second: output tokens divided by 100, plus the time the agent's commands took. Serving speed differs between providers and is not ranked.
How to read this chart. Each point is one entry. Further left means a lower average time per task (log scale); higher means a higher GeoAgentEval score. Both axes fit the points shown, so the score axis does not start at zero. The shaded most attractive quadrant is the top-left quarter of the plot: a reading aid, not a fixed bar. The dotted Pareto line joins the points that no faster one beats on score.
Data table: GeoAgentEval: score vs. time per task
| Model | GeoAgentEval score | Time per task (minutes) | On the Pareto line |
|---|---|---|---|
| Claude Opus 5.5 (medium), Claude Code | 100 | 0.3 min | No |
| Claude Opus 5.5 (high), Claude Code | 100 | 0.4 min | No |
| Claude Sonnet 5.5 (high), Claude Code | 100 | 0.3 min | Yes |
| Claude Opus 5.5 (xhigh), Claude Code | 100 | 0.5 min | No |
| Claude Sonnet 5.5 (xhigh), Claude Code | 100 | 0.4 min | No |
| Claude Sonnet 5.5 (medium), Claude Code | 96 | 0.2 min | Yes |
| Claude Opus 5 (high), Claude Code | 96 | 0.5 min | No |
| Claude Haiku 5.5 (medium), Claude Code | 92 | 0.5 min | No |
| Claude Haiku 5.5 (high), Claude Code | 92 | 0.7 min | No |
| Claude Haiku 5.5 (xhigh), Claude Code | 92 | 1.0 min | No |
| Claude Sonnet 5 (high), Claude Code | 92 | 0.5 min | No |
| Claude Opus 4.8 (high), Claude Code | 92 | 0.4 min | No |
| Claude Opus 4.7 (high), Claude Code | 92 | 0.3 min | No |
| Claude Haiku 4.5 (Reasoning), Claude Code | 88 | 0.6 min | No |
Score vs. release date
GeoAgentEval: score vs. release date
GeoAgentEval score against the model's public release date
How to read this chart
How to read this chart. Each point is one entry: across, the date its model was first released; up, its GeoAgentEval score. Models with no published release date are not plotted.
Data table: GeoAgentEval: score vs. release date
| Model | GeoAgentEval score | Release date |
|---|---|---|
| Claude Opus 5.5 (medium), Claude Code | 100 | 22 September 2026 |
| Claude Opus 5.5 (high), Claude Code | 100 | 22 September 2026 |
| Claude Sonnet 5.5 (high), Claude Code | 100 | 28 September 2026 |
| Claude Opus 5.5 (xhigh), Claude Code | 100 | 22 September 2026 |
| Claude Sonnet 5.5 (xhigh), Claude Code | 100 | 28 September 2026 |
| Claude Sonnet 5.5 (medium), Claude Code | 96 | 28 September 2026 |
| Claude Opus 5 (high), Claude Code | 96 | 24 July 2026 |
| Claude Haiku 5.5 (medium), Claude Code | 92 | 7 October 2026 |
| Claude Haiku 5.5 (high), Claude Code | 92 | 7 October 2026 |
| Claude Haiku 5.5 (xhigh), Claude Code | 92 | 7 October 2026 |
| Claude Sonnet 5 (high), Claude Code | 92 | 30 June 2026 |
| Claude Opus 4.8 (high), Claude Code | 92 | 28 May 2026 |
| Claude Opus 4.7 (high), Claude Code | 92 | 16 April 2026 |
| Claude Haiku 4.5 (Reasoning), Claude Code | 88 | 15 October 2025 |
Background
GeoAgentEval tests whether an agent can build, audit and repair spatial data in a PostGIS database, and decline honestly when a request cannot be done: flood zones, wards, routes, coordinate systems and stale records in one made-up town.
Licence: MIT (code, tasks and the made-up town).
Published by Harsh Dange.
Related links
Explore evaluations
- Geospatial Intelligence IndexAgent tasks, vision, guided workflows and geospatial knowledge, per model
- Geospatial Agent IndexEarth-Bench V2, GeoBenchX and GS-QA2; Text + vision adds Vision agents
- Earth-Bench V2Earth-Bench V2 poses Earth observation questions over satellite products (indices, temperatures, land cover) that are answered by computing over the data.
- GeoBenchXGeoBenchX asks for maps, numbers and lists from country-level and city-level geospatial data.
- GS-QA2GS-QA2 asks questions about places and terrain in the United States over OpenStreetMap vector layers and ASTER elevation data: nearest features, directions, distances, counts, elevations, slopes and features that meet terrain conditions.
- GeoAgentBenchGeoAgentBench gives an agent a geospatial question and the data to answer it, and expects the result files and a map.
- GeoAnalystBenchGeoAnalystBench collects GIS analyst workflows (suitability analysis, interpolation, hot spots, network and overlay work).
- OGD4AllOGD4All asks everyday questions about the City of Zurich's open government data: trees, buildings, transport, schools and more, from about 430 public datasets in GeoPackage and CSV form.
- GeoNatureAgentGeoNatureAgent asks for figures from environmental rasters over Spanish provinces and regions: here, the share of land suitable for CO₂ storage, by province, with follow-up questions that compare, rank or break the figures down.
- MultiGlobeQAMultiGlobeQA asks spatial questions about places all over the world: what lies within, next to or nearest to what, how far apart things are, and how many there are.
- GeoChronoGeoChrono asks about long-term change in a place seen over many years: what the land cover is, whether an area grew or shrank, when an object appeared and how things changed in order.
- BigEarthNet.txtBigEarthNet.txt asks about 1.2 km image patches over Europe: which land cover is present, how much, how many patches of it, what is next to what, and the country, season and climate zone.
- Geospatial knowledgeClosed-book multiple-choice questions on geospatial knowledge
- VisionQuestions answered from images
- Earth-Bench V2 imagesEarth-Bench V2 images are the Earth-Bench V2 questions that need the model to look at RGB satellite pictures: multiple choice on counting objects or scene types, ranking pictures by count or area, and comparing what changed.
- ThinkGeo imagesThinkGeo asks for one number about aerial and satellite images: a count, an area, a distance or a heading, accepted within a range.
- Vision agentsAgents that look at aerial images and use code
