There are many maps of New York City.
They show streets, subways, buildings. Where we live.
But they don't show how we live.
Every place has a story to tell.
"The city fosters art and is art; the city creates the theater and is the theater."— Lewis Mumford, 1937
And in an increasingly digital world, we have the possibilty to rediscover the physical places that define city life.
Highlight shared identity to find your community.
Select a place to reveal kindred connections across the city.
Activate the web to see connections of connections.
Select any arc to uncover what draws two places together.
Discover the city around you by exploring neighborhood and community stories.
From Bay Ridge to the Bronx, there are over 10,000 social spaces in New York City.
Find yours.A map of New York City's community gathering spaces
“The city fosters art and is art; the city creates the theater and is the theater.” — Lewis Mumford, 1937
Sociologist Ray Oldenburg coined the term “third place” in 1989 to describe the informal gathering spaces that anchor community life, distinct from home (the first place) and work (the second place). Barbershops, cafes, libraries, parks, bookshops, community centers: the places where people come together not out of obligation but out of desire.
Third places are the social infrastructure of a city. They are where neighborhoods form identities, where strangers become neighbors, where culture is made and passed on.
In an increasingly digital world, the physical experiences that define city life are at risk.
Yet the boundaries between physical and digital spaces are dissolving as technology integrates more deeply into our daily lives. This map is an exploration of how digital tools can help us rediscover and reactivate the social fabric of New York City. By leveraging community-driven data and urban scale analytics, we aim to make visible what official maps leave out.
Select any dot to open a place. You'll see its soul summary, atmosphere attributes, community identity tags, and up to 8 kindred places connected by shared social character. The size of each dot reflects how many reviews a place has received.
When a place is selected, colored arcs connect it to its kindred places. Hover over any arc to highlight it, and select it to explore the connection between the two places directly, including a breakdown of what drives their similarity. Toggle the "Web of connections" button to reveal the second-tier network: the kindred places of your kindred places.
Select the community identity tag on a place card to filter the entire map to spaces sharing that identity.
Use the search bar to find any place by name, type, or description. Filter results by borough, place type, or community identity tag.
The Discover panel, opened via the button in the top navigation, offers curated entry points into the map: neighborhood stories, community spotlights, and data-driven connection discoveries. Each entry flies you directly to the relevant places.
Each of the ~10,400 places on this map was sourced from OpenStreetMap, the community-built map of the world, then enriched with ratings, reviews, and atmosphere data from the Google Places API. Additional data were gathered from a variety of sources to provide a more comprehensive view of each place, including NYC Department of City Planning, NYC Department of Small Business Services, business websites and more. Some community identity attributes (LGBTQ+ ownership, women-owned, wheelchair accessibility, etc.) were sourced from Google Business Profiles via DataForSEO.
Soul summaries, short descriptions that capture each place's social character, were programatically generated via machine learning on the combined inputs of reviews, editorial summaries, place and community attributes, and website descriptions where available.
Each place is connected to up to 8 “kindred” places. These are places that share a similar social character, regardless of type or location. Connections are computed using a weighted similarity score across five signals:
A diversity cap ensures no more than 5 of the 8 connections share the same place type, encouraging cross-category discovery.
OpenStreetMap coverage varies across neighborhoods and place types. Some places may be missing, mislabeled, or have outdated information. Soul summaries reflect the information available at the time of generation (May 2026) and may not capture recent changes. Bias may be present in the Soul summaries and kindred connections based on input data and the weighting metrics.
Given the scale of the project, individual narratives may not represent the full diversity of experiences within each neighborhood. Missing or incomplete community identity tags, such as Black-owned or LGBTA+ Welcoming, may be the result of limited self-reported information on Google Business Profiles or errors when collecting data.
This project is built on community input and feedback. If you find any information that is inaccurate or incomplete, please let us know by submitting a report through the map interface or by using the feedback form below.
OpenStreetMap · Google Places API · Google Business API via DataForSEO · NYC DCP · NYC SBS · Mapbox
Built by James Piacentini
How this map was built, from raw geographic data to a living picture of social character across New York City's five boroughs.
The foundation is OpenStreetMap, from which we extracted all place nodes in New York City matching third place categories such as cafés, bars, libraries, parks, community centers, places of worship, bookshops, laundromats, and dozens of other types. Each place was then enriched via the Google Places API to add ratings, review counts, user reviews, atmosphere attributes (outdoor seating, live music, dog-friendly, and more), and editorial summaries. Additional community identity attributes like LGBTQ+ ownership, women-owned status, transgender safe space designation, and others were sourced from Google Business Profiles via DataForSEO. Civic data from the NYC Department of City Planning and Department of Small Business Services supplemented coverage of senior centers, youth services, and public libraries.
Each place's social character is distilled into a two to three sentence “soul summary”, a short description capturing who comes here, what draws them, and what the atmosphere feels like. These were generated using a Machine Learning model fed a curated set of up to 20 user reviews per place, sorted by rating and recency to prioritize representative experiences. Short or uninformative reviews (under 20 characters) were filtered out before processing. The model also received editorial summaries, website descriptions, atmosphere attributes, and community identity tags for each place. The prompt was designed to produce grounded, specific language that avoids generic praise in order to surface details that makes a place feel real rather than described. A quality filter then removed any summaries where the model flagged mismatched data, refused to generate, or produced generic output, resulting in approximately 12,200 usable soul summaries across the dataset.
Raw text comparison (counting shared words between two descriptions) alone cannot capture meaning. “Cozy atmoshpere” and “intimate experience” share no words but describe a similar feeling. To enable genuine semantic comparison, each soul summary was converted into a 384-dimension vector using all-MiniLM-L6-v2, an open-source sentence transformer model running entirely locally via the @xenova/transformers library. This model was trained specifically on semantic similarity tasks: it maps sentences with similar meanings close together in a high-dimensional space, regardless of the specific words used. The result is a numerical fingerprint for each place's social character, one that understands that a “worn-in neighborhood bar where the bartender remembers your order” and a “decades-old local institution where regulars sit in the same seat every Friday” are describing similar kinds of places.
Every eligible place is compared against every other using a weighted similarity score across five signals. Semantic text similarity between soul summary embeddings, computed as cosine distance between vectors, carries 40% of the total weight. Atmosphere attribute matching such as comparing boolean fields like outdoor seating, live music, and family-friendly, carries 20%, scored as the fraction of comparable attributes that match. Community identity overlap (shared LGBTQ+, religious, cultural, or ownership tags) carries another 20%. OSM place type similarity, using a hand-coded graph of related types (bar relates to pub and nightclub; library relates to café and bookshop), carries 10%. Google place type overlap, computed as Jaccard similarity between each place's category tags, carries the final 10%.
A minimum score threshold of 0.38 is applied, resulting in any connection scoring below this being dropped entirely rather than padding to fill a quota. This means some places have fewer than eight connections if strong matches genuinely don't exist in the dataset. The threshold was calibrated against the score distribution: the median connection scores 0.54, and the 10th percentile sits at 0.42, so the 0.38 floor captures genuine connections while excluding noise. A diversity cap then ensures no more than five of eight connections share the same place type, encouraging cross-category discovery. Places with fewer than two connections after this filtering are removed from the dataset entirely.
Several filtering passes were applied throughout the pipeline. Chain establishments like Starbucks, Equinox, Planet Fitness, Dunkin', and others were excluded on the grounds that they lack the community-specific character that defines third places. Places whose soul summaries were flagged as model refusals, error messages, or clearly mismatched to the wrong establishment were removed. A pattern-matching filter caught common refusal phrases (“I can't write this description,” “the reviews provided are for a different place”) that slipped through during generation. The result is approximately 10,400 places, each with at least two connections meeting the quality threshold.
The map is rendered using Mapbox GL JS with a custom Mapbox Standard style. Arc connections are drawn using deck.gl's LineLayer on a transparent canvas overlaid on the map, with each arc animated from source to destination and colored by place type. Hit-testing for arc hover and click interactions is handled by deck.gl's pickObject method, called on Mapbox canvas events, allowing full map interaction to pass through uninterrupted. The underlying data is served as a gzip-compressed JSON file (~30MB compressed from ~150MB uncompressed), decompressed in the browser using the native DecompressionStream API. The Mapbox vector tileset enables smooth dot rendering at city scale without transferring full place geometry to the client. All connection scoring, similarity computation, and data processing runs as an offline Node.js pipeline so the browser receives only the final enriched dataset.
Help us improve the Third Places map.