geo-sleuth: The Agent Skill That Turns Any Photo Into a Location — and What It Means for Your Prompt Stack
TL;DR
geo-sleuth is a Claude Code agent skill that geolocates photos by combining OpenStreetMap geometry queries, elevation profile matching, and satellite imagery analysis inside a single agentic loop. The accuracy numbers on structured test sets are compelling. Whether it holds up against real-world edge cases — low-resolution shots, generic interiors, heavily cropped images — is still an open question worth stress-testing before you wire it into a production workflow.
Key Takeaways
- geo-sleuth chains OpenStreetMap geometry lookups, SRTM elevation skyline comparisons, and satellite imagery cross-referencing in an automated agent loop, according to the oldcircle/geo-sleuth GitHub repository
- Claude Code's tool-use API lets agent skills like this one call external data sources mid-inference without breaking the reasoning chain, a pattern Anthropic's Claude Code documentation describes as the foundation of agentic workflows
- OpenStreetMap serves over 1.5 billion API requests per day and covers 99% of populated landmass with geometry data, making it the only realistic free-tier base layer for a tool like this, according to OSM's published infrastructure stats
- Elevation data from SRTM provides global 30-meter resolution terrain models — enough to match mountain profiles, valley cuts, and coastal ridgelines visible in background skylines
- Multi-model prompting (Claude, GPT-4o, Gemini) produces meaningfully different confidence scores on the same geolocation task, which matters if you're routing by cost or latency in production
- Prompt structure is the lever — the difference between a generic "where is this photo taken?" query and a structured geo-analysis prompt can be the difference between a continent-level guess and a district-level pin
What geo-sleuth Is and Why It Matters Right Now
Most people use AI to describe photos. geo-sleuth uses AI to interrogate them.
The skill treats an image not as a thing to caption but as a set of evidence streams: architectural geometry, vegetation density, shadow angles, signage language, road markings, skyline elevation profiles, and satellite-comparable land patterns. Each stream gets queried against structured geodata. The agent synthesizes the cross-referenced outputs into a location hypothesis with a confidence band.
That architecture matters for three reasons.
First, it demonstrates that agentic skills don't require proprietary datasets. OpenStreetMap, SRTM elevation tiles, and freely accessible satellite imagery are the entire data stack. No API subscriptions beyond your model provider.
Second, it's a working template for any agent skill that needs to cross-reference multiple structured data sources mid-inference. The photo-to-location use case is concrete and verifiable — you can test it against known locations — which makes it useful for benchmarking your own agentic prompt architecture.
Third, and most practically: the skill is a Claude Code agent, which means the prompt structure that drives it is inspectable, forkable, and adaptable. You're not locked into one workflow.
The Evidence: What geo-sleuth Actually Does Under the Hood
Here's the architecture without the hand-waving.
The agent receives an image and runs a sequence of tool calls:
Step 1 — Visual feature extraction. The model identifies candidate features in the image: building types, road surfaces, vegetation biomes, text fragments, and horizon profiles. These get encoded as structured queries, not free-form descriptions.
Step 2 — OSM geometry cross-reference. Structured queries hit the OpenStreetMap Overpass API to find regions matching the candidate geometry. A street with a specific intersection angle, a combination of building tag types, a waterfront with a matching pier configuration — the agent builds a spatial filter.
Step 3 — Elevation skyline matching. If a background ridge or mountain silhouette is visible, SRTM elevation profiles get pulled for candidate regions. The agent compares the visible skyline against terrain cross-sections until the profile narrows the bounding box.
Step 4 — Satellite cross-validation. The candidate area gets checked against available satellite imagery for landcover confirmation — field patterns, coastline curvature, urban grid orientation.
Step 5 — Hypothesis synthesis. The agent produces a location estimate with an explicit confidence level and the reasoning chain that produced it.
What makes this different from asking "where is this?" in ChatGPT is the tool loop. The model isn't retrieving from its training weights alone — it's executing real API calls and updating its hypothesis with each data return. That's the agent pattern. The prompt structure is what keeps the loop coherent.
The prompt architecture is the reusable part
geo-sleuth's real value isn't geolocation specifically. It's the template: structured visual feature extraction → multi-source tool calls → hypothesis synthesis with explicit confidence. That pattern applies to any domain where you're cross-referencing structured databases against unstructured inputs.
Here's the core prompt architecture, adapted for any agentic tool-call workflow:
``` You are a structured analysis agent. Your task: [SPECIFIC TASK].
Step 1 — Extract candidate features from the input as structured queries: [FEATURE TYPE 1]: [VALUE] [FEATURE TYPE 2]: [VALUE]
Step 2 — For each candidate feature, call [TOOL/API] and return structured results. Query format: [SPECIFY EXACT QUERY STRUCTURE]
Step 3 — Cross-reference results against [SECONDARY DATA SOURCE]. Elimination criteria: [SPECIFIC CRITERIA TO NARROW]
Step 4 — Synthesize. State your hypothesis, confidence level (high/medium/low), and the top 2 pieces of evidence supporting it. State the top 1 counter-evidence.
If confidence is low, request a second data source before answering. ```
Copy that. Replace the bracketed fields. You've just adapted geo-sleuth's reasoning loop to your domain.
Multi-model routing for agent skills
Different models handle the visual reasoning step differently. Claude Opus handles ambiguous architectural cues with more nuance. GPT-4o tends toward faster first-pass extraction with slightly higher false-positive rates on texture-heavy images. Gemini 1.5 Pro handles multilingual text fragments in images well, which matters for signage-heavy scenes.
The practical implication: if you're building a production workflow on this pattern, don't lock to one model. Route by task type. Use Market Logic's DeepSights MCP architecture as a reference for how to wire multi-model routing into an enterprise-grade agentic pipeline without rebuilding your orchestration layer every time a new model drops.
| Tool | Role in a geo-sleuth-adjacent workflow | Strength | Limitation |
|---|
| geo-sleuth | Core geolocation agent skill | Multi-source cross-referencing, structured output | Requires Claude Code runtime |
| CLI Manager | Runs geo-sleuth and other agent skills from a unified command interface | Batch processing, scriptable | No visual UI for non-technical users |
| AI Operator's Build Your AI Second Brain | Stores geolocation outputs, links them to research projects | Long-term memory, context retrieval | Setup overhead for one-off use cases |
| The Drive AI | File intake and routing — feeds images to geo-sleuth from cloud storage | Handles bulk image ingestion | Not optimized for real-time analysis |
| Claude Opus 5.5 Motion Graphics Tutorial | Shows the Claude Code agent skill pattern in a visual medium — useful for onboarding non-technical collaborators | Accessible walkthrough of agent skill architecture | Tutorial-specific, not a tool per se |
| Grab AI Tool | Captures and preprocesses images before they hit the agent pipeline | Lightweight image prep, fast | Limited to capture; no analysis layer |
The workflow that actually makes sense for power users: Grab AI Tool for capture → The Drive AI for storage and routing → geo-sleuth for analysis → AI Operator's Build Your AI Second Brain for storing and linking results → CLI Manager for scripting the whole chain.
Checklist: Before You Wire geo-sleuth Into Your Stack
Evaluate the input quality first.
- Does your image have visible outdoor features — architecture, terrain, vegetation, signage?
- Is the image resolution above roughly 720p? Below that, feature extraction degrades sharply.
- Does the image contain a background with spatial depth? Flat, close-up, or interior shots will bottleneck at Step 3.
Validate against known locations before deploying.
- Run 10–20 test images with confirmed locations before using this in any production context.
- Note which feature types drive the highest-confidence results in your specific image set.
- Document failure modes. Low-confidence outputs should trigger a fallback, not a guess.
Set your confidence threshold explicitly in the prompt.
- Define what "high," "medium," and "low" confidence mean operationally before the agent runs.
- Build a "refuse to answer" path for sub-threshold results. An agent that guesses is worse than one that abstains.
Understand the API call stack.
- Overpass API (OSM) has rate limits. If you're running batch analysis, throttle your requests.
- SRTM data access patterns vary by provider. Confirm your tile source before assuming coverage.
When NOT to Use geo-sleuth
Don't use it for interior or studio shots. The entire reasoning chain depends on external environmental features. An image of a desk, a conference room, or a product shot against a white backdrop gives the agent nothing to query.
Don't use it if location accuracy is safety-critical. The skill is a hypothesis engine, not a GPS. A medium-confidence result that's wrong by 50 kilometers is still wrong. Any workflow where a wrong location has real consequences needs a human-in-the-loop verification step.
Don't use it as a substitute for metadata. If the image has intact EXIF GPS data, read the EXIF. The agent is for cases where metadata is stripped or unavailable. Using a multi-step agentic loop when `exiftool` would give you the answer in 200ms is just waste.
Don't expect it to perform on heavily cropped or filtered images. Tight crops remove horizon context. Heavy filters distort color-based vegetation and climate cues. The more the image has been post-processed, the narrower the feature surface available to the agent.
Where This Is Heading
Agent skills as composable primitives
geo-sleuth is a signal that Claude Code agent skills are moving toward single-responsibility primitives — small, forkable, composable. The pattern is maturing. Expect a library of domain-specific agent skills (geolocation, document extraction, code analysis, entity resolution) that you wire together with an orchestration layer rather than building monolithic AI tools.
Elevation and geometry data getting better
SRTM's 30-meter global resolution is useful but not precise. Copernicus DEM provides 10-meter and 30-meter global coverage with better accuracy in complex terrain. As these datasets become more accessible via standard APIs, elevation-based geolocation will get significantly more precise.
Multi-modal reasoning closing the gap on human-level geolocation
Human geolocation experts (the GeoGuessr professional circuit, OSINT analysts) use contextual cues that current models still miss: specific tree species, regional power line styles, road marking paint colors, lane width standards. These details are learnable. As vision models improve on fine-grained texture and contextual cues, the gap between model-level and expert-level geolocation will close.
The OSINT applications are the most significant downstream use
Verifying the location of news images, validating claims in social media posts, cross-referencing footage in conflict reporting — these are the high-stakes applications. Tools like geo-sleuth are the foundation layer for automated OSINT workflows that currently require significant manual effort.
Prompt engineering for structured visual reasoning is an underexplored area
Most prompt engineering literature focuses on text. Structured visual reasoning prompts — where you define specific feature types to extract, specific query formats, and explicit confidence thresholds — are significantly less documented. The practitioners building these workflows now are building a durable skill.
FAQ
How accurate is geo-sleuth on typical outdoor photos? Accuracy varies widely by image type. Distinctive terrain, dense signage, or unique architectural combinations push accuracy toward district-level or better. Generic suburban shots with limited horizon depth can land at country-level or wider. The tool provides a confidence score — take it seriously.
Does geo-sleuth work with any model, or is it Claude-specific? The skill is built as a Claude Code agent skill, so it runs natively with Claude. The underlying prompt architecture — structured feature extraction, tool-call loop, hypothesis synthesis — can be adapted for GPT-4o or Gemini with modifications to the tool-call format, but you're porting it, not plug-and-playing.
What's the API cost for a single geolocation run? OpenStreetMap's Overpass API is free within rate limits. SRTM elevation data access depends on your provider. The model inference cost per run is the primary variable. A full geo-sleuth reasoning chain with multiple tool calls is more expensive than a single image query — budget accordingly if you're running batch analysis.
Can this be used for video frames? Technically, yes — extract frames and process them individually. Practically, you'd want to select keyframes with maximum spatial information rather than processing every frame. The computational cost of running the full agentic loop on each frame makes unthrottled video processing expensive fast.
Is this legal to use for identifying locations in photos of people? The tool is a location identifier, not a people identifier. Whether its use in a given context is appropriate depends entirely on that context. Using it to verify news images or check your own travel photos is unambiguous. Using it to track individuals raises significant privacy concerns and, depending on jurisdiction, may be illegal. The tool doesn't make that judgment — you have to.
How does it handle images with deliberately obscured location data? It doesn't have a mechanism for detecting deliberate obfuscation. If someone has cropped out horizon lines, replaced signage, or composited backgrounds, the agent works with what's visible. It may produce a low-confidence output or an incorrect one. There's no adversarial robustness layer built in.
What's the fastest way to start testing this without setting up the full stack? Clone the geo-sleuth repository, install Claude Code, and run the skill against a handful of images with known locations. That gives you a real-world accuracy baseline in under an hour. Don't spend time on production integration until you've validated the accuracy on your specific image types.