Geospot

Teaching models to geoguess

Open Geospot GeoVLM GeoVLM Dashboard Explorer Model GeoVLM App Infinity Base

Update: October 2026: I have acquired 2.4% of all of streetview(~170m panoramas, 150tb) representing 95%+ of SV earth coverage over the past 17 years. We're securing compute to train the best geoguessing model.

Geospot-VL is Qwen3VL-30B post-trained to geo-guess, and on IM2GPS3K it scores below GPT-5.2 and Opus-4.5 while closing most of the gap at the coarser distance thresholds. I'd taken a run at this a year earlier with a GeoCLIP-based app, but that was a contrastive embedding model and I ended up pouring most of the effort into the app rather than the model, so this time I started from the model itself by reimplementing Qwen3VL by hand in JAX as an RL gym, vlm-gym.

The training data came from scraping 50M+ Street View images with Modal and narrowing them down to roughly 50k curated pairs, which I then post-trained on with Tinker in two stages: first SFT to teach the format — how to think through a guess and how to call the zoom-in tool baked into Qwen3VL — and then RL to predict country, region, and coordinates against a log-distance reward. That left me with three variants, baseline, thinking, and agent, where the agent learned to spend test-time compute iterating through the same loop a human does, thinking, zooming into a region, and thinking again before it commits to a guess.

You can watch the thinking variant reason through guesses live — each marker is a rollout on the globe, and the panel shows the model thinking, calling the zoom-in tool, and committing to coordinates.


Geospot was an app that used image embeddings to guess where you were in the world from a single image and no GPS. It was contrastively trained between GPS coordinate pairs and images from 11.7 million street view images.

On its first day it maxxed out all Testflight(10k) capacity since people wanted to use it for anything from finding chilhood memories to trying to un-gatekeep restaurants.


Inspired by Cursor's online RL blog I wondered if it would be possible to train a tiny head on top of this embedding model to try to learn "online".

Geospot Infinity was an online RL where the a frozen Geospot embedding model proposed ten candidates for a given uploaded photo; a 330k parameter policy would update everytime as people selected one of the 10 options we'd give them and keep on updating that head. Unfortunately it didn't --work very well.


In the pursuit of building the best geoguessing model in the world I made a simple geoguessing RL environment. I SFT'd it on a bunch of GPT 5.2 traces and used format rewards to get it in the right format and saying the right sort of things-- this was Qwen3-VL. I gave it a reward to use <tool_call> and <think> to think and to use qwen3-vl's "built-in" zoom_in tool it was taught for the purpose of computer-use.

You can see only after a couple hundred steps it already learned how to "think" like a geoguesser and not only zooms in but zooms in and thinks about the cropped image it can see in its rollout.

GeoVLM is live and a pretty nice visualization to see how the rollouts look!


Being bitter lesson pilled I wondered well what if I just get hundreds of millions of streetview images, distill all of rainbolts videos and post-trained a VLM to get SoTA on Im2GPS3k and YFCC4k

Over a course of a few months I spent weekends labeling data, segmenting rainbolt videos

and looking over if any panoramas were improperly flattened

in total we have 400 million+ images

I haven't had time to revist this project but will make an update on progress soon.