Authorization notice. Geo Sleuth is dual-use. Only use it on software, sites and systems you own or have explicit permission to test.
Reverse engineering. Matching a photo's skyline to terrain can reveal the place where a person stood, so confirm the purpose before running it on private photos.
Who it is forA researcher with a landscape photo that shows bare mountains and a few pylons but no text, roads or buildings.
The problemMany sites share similar ridges, so a plain skyline search often leaves several candidates that score about the same.
The outcomeThe agent narrows the candidates to a single site with a skyline score and a satellite check along the line of sight.
What you need first
- An agent that reads SKILL.md and can run shell commands (the README names Claude Code, Codex, Cursor, Gemini CLI, OpenCode and GitHub Copilot)
- Python, since the scripts are written in Python
- Node.js with npx, to run the install command (inferred from the npx install line)
- Network access for OpenStreetMap data, elevation data, satellite tiles and street view, as the README describes
- The photo to locate, with EXIF data preferably stripped or absent as in the README cases
Steps
- Install the skill with
npx skills add Oldcircle/geo-sleuthand confirm the checks in doctor.py pass. - Tell the agent which region the photo is in, such as a province or country, as a hint.
- Have the agent run
osm.py geomto pull the power lines for the region. (inferred, check the README) - Have the agent run
terrain.py scanto find sites where mountains fill the view, thenterrain.py ridgeon the photo. (inferred, check the README) - Have the agent run
terrain.py fiton the candidate sites and check the best site on satellite imagery. (inferred, check the README)
Prompt for your agent
Use the geo-sleuth skill from the Oldcircle/geo-sleuth repo to narrow where <path to photo> was taken, using power lines and the ridge line in the photo. Expect a single candidate site with its fit score and a satellite image of the line of sight. Verify that the score and the files produced by terrain.py fit are cited in the answer.
Caveat. The desert case needed a roll fit added to terrain.py fit for a 1 degree tilt, and the README says the default cluster setting can leave some hits unfit.
Get 5 new use cases every morning. Free, one short email, unsubscribe anytime.
Get them freeShare: X LinkedIn Hacker News Email Copy link
Disclaimer
Deduped lists open-source repositories that belong to other people. We do not own, maintain, audit, or vouch for any of them, and a repo appearing here is not an endorsement or a safety check. The use cases, steps, and prompts are written by AI and may be incomplete, outdated, or just wrong. Where a use case is marked "Seen in the wild", we link to public posts where someone described something similar, but we have not verified those posts and the use case itself is still our AI's own write-up. Use all of this at your own risk. Only run code, commands, or agents on systems and accounts you are authorized to use, and read the code and every command before you run it, especially anything that touches credentials, files, or the network. Nothing here is professional, security, legal, or financial advice. All trademarks and project names belong to their respective owners, and their use here does not imply affiliation. Content is provided as is, without warranties of any kind. Found a mistake, a safety problem, or something you want removed? Email [email protected] and we will look at it promptly. Full disclaimer page