Loading 1 month of trips…
Geolink · urban activity demo

How Manhattan breathes, hour by hour

Every column is a quadkey cell. Height and color show how many bike trips start or end there in that hour, averaged over October 2026. Glowing lines are real trips from one Wednesday, routed along the street and bike-lane network.

Cell signature

Tap a column

quadkey · zoom 17
–peak hour
–idle hours
–trips/day
–
08:00weekday
trips per cell-hour0 → max·live trip, Oct 14
What the map is built from

Real data, one month, one grid

The map runs on public data only: every Citi Bike trip in October 2026 and every shop, restaurant, bar and office mapped in OpenStreetMap. Both are joined on the same quadkey grid, so each cell carries its own 24-hour pulse and its own business mix.

–trips processed
–active cells on the map
–businesses joined to cells
–cell-hours below 10% of their own peak
Ground truth

Activity data shows when a place is busy. A field check shows what is there today.

The cells where the business mix and the daily pulse disagree are the ones worth a visit. Open, vacant or for lease, a 5-minute count and a photo go into the same grid the same day, even with no signal on the street.

1

Flag. The map ranks cells by mismatch between pulse and mix. The top ones become a visit list.

2

Check. A field app records status, a foot-traffic count, a photo and GPS. It saves on the phone when there is no signal.

3

Sync. One server receives every check and updates the cell, so the score and the evidence sit together.

08:00LTE ▮▮▮

Visit list · cell 1 of 5

Pick a column on the map
Ground floor status
People passing, 5 minutes
0
Photo
Tap to attach
GPS ±4 m
Ready. Checks sync to one server.
For location-analytics and proptech teams

Where Geolink plugs in

Small analytics teams usually have the models. What slows them down is everything around the model: the map clients see, the data getting in on time, and proof from the street. These are the pieces we build.

Client-facing map

A time-aware web map on your own grid

A browser map like the one above, reading straight from your grid store (ClickHouse, Postgres or files), with a time slider, cell inspector and your brand.

Clients see the pulse behind a score, not only the number.

Portfolio screening

Upload a list, get every address scored

Lenders and insurers start with a whole portfolio. A screen that geocodes a CSV, scores each address, sorts by risk and exports back to Excel or BI tools.

One screen that turns a property list into a ranked risk view.

Field ground truth

Offline field app that feeds the score

Inspectors or partners record status, counts and photos. It works without signal and syncs to one server. Each check is tied to its cell and timestamp.

Public storefront vacancy data is self-reported once or twice a year. This captures what is on the street the day it is visited.

Data pipelines

Monthly loads that check themselves

Scheduled jobs that pull new mobility and business data, compare it to last month, log where it came from, and stop a release when a source drops or drifts.

Fewer surprises when a data vendor changes, and an audit trail for consent and provenance rules.

Method and limits

How this demo was made

GridBing-style quadkeys at zoom 17, about 230 m a side in Manhattan. Trip starts and ends are counted per cell and hour, then divided by the number of weekdays or weekend days in the month.
SignatureEach cell's weekday curve is compared with its business mix. A cell full of bars that is quiet at night, or full of offices that is busy at midnight, gets a high mismatch. This is a simple illustration, not a production risk model.
SourcesCiti Bike System Data, October 2026 (citibikenyc.com/system-data). OpenStreetMap contributors, POIs under ODbL. Basemap by CARTO. Bikes are one signal of street life, not all of it.
RoutesCiti Bike records only where a trip starts and ends, not its GPS track. Each trip is routed on the OpenStreetMap street network, favoring bike lanes and greenways and following one-way rules, and its real start and end times are spread along that path. 29,570/30,000 trips · 98.6% routed; the rest start and end at the same station or have no connected path.