Twenty scripts turn one photo into an evidence trail
Geo-sleuth is an Agent Skill rather than a standalone app. You give a supported coding agent a photo, and the skill chooses among 20 Python scripts for metadata, OCR, place clues, OpenStreetMap features, satellite tiles, street views, terrain profiles, image matching, camera pose, and evidence rendering. The model is meant to form hypotheses and judge shortlists while scripts handle repeatable search, scoring, and geometry.
The working instructions and script output are Chinese. An English README explains the full system, and the project says agents can answer in the user's language. That split is easy to miss because the public landing page is polished English. A team that audits operational prompts, error text, and generated artifacts in English will still need translation or bilingual reviewers before making the skill part of a formal process.
The worked case narrows 27,335 bridge segments to one spot
The repository's main demonstration begins with a photo stripped of EXIF data: a field, railway viaduct, and mountain, with no readable sign or plate. Its documented flow scans 27,335 railway bridge segments, filters to 171 sites, evaluates 14,372 camera positions, uses skyline overlays to reach 22 candidates, then applies pier spacing. The final claim is a camera position within about 2 m of the known location.
That is a strong explanation of method, not an accuracy study. The same README lists a public blind set and an end-to-end accuracy number as future work. Existing script checks are narrower: small operator-run sets for image matching, satellite ranking, terrain fitting, and clue tables. They help show that individual parts have been exercised. They do not tell you how often an unseen photo from an arbitrary country ends at the correct city or coordinate.
What happened when we ran it
We did not execute commit e753bb3 in our sandbox. The lab detected Python, but this repository did not match a supported packaged ecosystem and had no Dockerfile to provide another route. Consequently, we have no measured dependency count, disk footprint, build result, test result, or vulnerability audit for geo-sleuth. Any claim that its scripts worked on our machine would be false.
The packaging explains part of that outcome. There is no conventional project manifest at the root. Each script declares what it needs for uv run, allowing first use to fetch dependencies for that task. This is convenient for an interactive agent because OCR, terrain, and image matching do not all need the same stack. It also makes the environment harder to preapprove, cache, scan, and reproduce as one deployable unit.
A future lab pass would need a declared entry path and real test fixture. Running a full geolocation case also reaches beyond a fresh container into live map and imagery services. A green import check would still say little about rate limits, regional service access, panorama coverage, or whether the top-ranked candidate is correct. Those are separate checks, and the current repository does not bundle them into one command.
Live data sources make an offline deployment unrealistic
The documented workflow can query OpenStreetMap Overpass, AWS terrain tiles, satellite tiles, Google Street View, Baidu panoramas, Yandex, and Baidu reverse-image search. Chrome or Playwright Chromium is optional for the reverse-search path. GEO_PROXY can route networked scripts through a SOCKS proxy. None of that is hidden, and the data-source reference records licenses and attribution requirements.
An operator still has to decide which services are permitted for the image and jurisdiction involved. Street-view and reverse-search providers have their own availability and usage rules. A sensitive photo may leave the local machine when those branches run. The evidence-first design makes the resulting files inspectable, but it does not make third-party requests private. Disable disallowed branches and review output paths before using confidential material.
Candidate scoring is structured, while judgment remains human
board.py keeps candidates, clues, likelihood ratios, exclusions, rankings, and the next search step in one place. Other scripts can import points or regions from map results instead of relying on names typed by an agent. The README also requires exclusions to rest on read or computed evidence and asks the final report to name the command and artifact behind each claim. These constraints are better than a free-form model guess.
They do not remove subjective choices. The agent still reads scene clues, picks branches, forms a regional hypothesis, and decides whether top matches are persuasive. Even the demonstration starts with a South China bet before systematic filtering. A careful operator should preserve alternate candidates, inspect overlays, and report uncertainty. The skill's required coordinate radius and graded confidence are useful only when the upstream evidence justifies them.
September fixes are active, but CI is still unchecked
GitHub showed 806 stars and zero open issues or pull requests on October 7, 2026. The last push was September 24, eight days after the first visible repository commit. Recent changes fixed a Python 3.10 and 3.11 syntax error, documented the Chinese-language internals, and repaired UTF-8 handling for Chinese Windows. That is responsive work, although the short history offers little evidence across future dependency and service changes.
There is no tagged release, and CI for Linux and Windows remains an unchecked roadmap item. Geo-sleuth is best treated as a promising analyst's kit whose strongest feature is the demand for artifacts, not as a validated location oracle. The responsible-use line belongs in the decision too: run it only on your photos or material you have permission to investigate, and keep a human accountable for the conclusion.
