A team from Google Research and USC has released Mobility-Embedded POIs (ME-POIs), a framework that folds aggregate human movement into text-based place embeddings. The premise is that language models describe what a place is, but not how it is used. Two coffee shops can share a category, an address block, and a text vector, while one runs commuter turnover and the other holds customers for ninety minutes. ME-POIs encodes each visit as a contextualized vector, then uses contrastive learning to align those visits with one learnable prototype per POI. Across five map-enrichment tasks on Los Angeles and Houston mobility data, adding ME-POIs to strong text encoders improved 34 of 35 model-task pairings in Los Angeles, with relative gains up to 81.9% F1 on visit intent and a 24.7% MAE reduction on busyness. Notably, a variant trained on mobility alone beat Gemini embeddings on price-level classification.
Is it deployable?
Partially, it is a framework you rebuild, not a checkpoint you download. As of publication, Google Research has released the paper but no public code or weights. The compute bar is low: the model is ~53.7M parameters and was pretrained on a single NVIDIA Tesla V100 16GB. The real gate is data — you need licensed foot-traffic or first-party visit logs plus POI polygons.
How the framework works
Each visit is a triple: coordinates, arrival time and departure time. Three factorized encoders handle them: Space2Vec for multi-scale location, and two Time2Vec encoders for arrival and departure separately, so start time and dwell duration stay distinguishable. The concatenated vectors get sinusoidal positional encoding and pass through a 4-layer, 8-head Transformer (d_h = 512) to produce contextualized visit embeddings.
The core objective is contrastive. Every POI owns a learnable prototype, and an InfoNCE loss pulls each visit embedding toward its own POI’s prototype while pushing away the other POIs in the minibatch. The prototype becomes a functional centroid that averages out individual user schedules.
Sparsity is the hard part. Only 9.07% of Los Angeles POIs and 7.04% of Houston POIs cleared the anchor threshold (100 and 50 total visits respectively). For the long tail, ME-POIs computes normalized Gaussian kernels at three bandwidths — 0.3 km, 1.0 km, 3.0 km — and transfers anchor visit histograms to sparse POIs, then adds a KL term forcing the sparse embedding to predict that prior. A second KL term supervises anchors against their own empirical distributions. A fourth loss maximizes cosine similarity with projected text embeddings, whose prompts follow the GeoLLM recipe: coordinates, category, address, and the ten nearest POIs with distance and direction.
What the numbers say
Evaluation covers two anonymized mobility datasets — Los Angeles (39,557 POIs, 6.9M visits, full-year 2019) and Houston (28,419 POIs, 715,604 visits, 20 days in March 2020) — across five map-enrichment tasks with frozen-embedding probing. Labels come from SafeGraph for opening hours and closures, and Google Maps for visit intent, busyness, and price level.
Adding ME-POIs improved 34 of 35 model-task pairings in Los Angeles. Peak relative gains: 16.2% F1 on weekly opening hours (OpenAI-large), 81.9% F1 on visit intent (Gemini), 6.5% F1 on permanent closure (E5), and a 24.7% MAE reduction on busyness (Gemini). In Houston, price-level F1 rose 75.1% for GTR-T5. The single regression was Gemini on permanent closure, down 0.4%.
The more interesting result is the mobility-only variant. Trained with no text alignment at all, it reaches 0.600 accuracy on Los Angeles price level against Gemini’s 0.559 — collective behavior outperforming the words used to label the place. It also beats every trajectory-based baseline on every task.
Explainer: the mechanism, step by step
