{"id":698,"date":"2026-09-04T17:08:24","date_gmt":"2026-09-04T17:08:24","guid":{"rendered":"https:\/\/basein.dev\/blog\/?p=698"},"modified":"2026-09-04T18:28:51","modified_gmt":"2026-09-04T18:28:51","slug":"location-magnet-map-city-location-score","status":"publish","type":"post","link":"https:\/\/basein.dev\/blog\/2026\/09\/04\/location-magnet-map-city-location-score\/","title":{"rendered":"I Built a Map That Scores City Locations"},"content":{"rendered":"\n<p>What if every point in a city had a visible infrastructure score?<\/p>\n\n\n\n<p>Click on a street, apartment building, or empty plot and immediately see how supermarkets, schools, parks, hospitals, public transport, industrial zones, water, recreation, and proximity to the city center affect that location.<\/p>\n\n\n\n<p>That idea became <strong>Location Magnet Map<\/strong>, a local MVP I recently built to test whether public geographic data can produce a useful picture of urban convenience.<\/p>\n\n\n\n<p>The project already works. It can search for a city, import its OpenStreetMap data, display configurable influence zones, and calculate a server-side Location Score for any selected point.<\/p>\n\n\n\n<p>It also taught me something important: creating the map is relatively straightforward. Creating a score that deserves to be trusted is the real product.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Original Product Idea<\/h2>\n\n\n\n<p>The first version of the concept was deliberately simple.<\/p>\n\n\n\n<p>Every useful or undesirable object acts as a magnet. Each category receives:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>an influence radius;<\/li>\n\n\n\n<li>a positive or negative weight;<\/li>\n\n\n\n<li>a maximum total contribution;<\/li>\n\n\n\n<li>a display color;<\/li>\n\n\n\n<li>visibility and activity controls.<\/li>\n<\/ul>\n\n\n\n<p>A supermarket might affect locations within 700 meters. A school might have a one-kilometer influence radius. A park adds points, while an industrial zone removes them.<\/p>\n\n\n\n<p>Where several influence zones overlap, their contributions are combined. Clicking anywhere on the map produces a Location Score and an explanation of how it was calculated.<\/p>\n\n\n\n<p>The baseline score is 100. Nearby useful infrastructure pushes the result higher. Negative factors pull it lower.<\/p>\n\n\n\n<p>The score is not presented as an apartment valuation or investment recommendation. It is an experimental measurement of infrastructure accessibility.<\/p>\n\n\n\n<p>That distinction matters. A number can look authoritative long before the model behind it becomes reliable.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"889\" height=\"756\" src=\"https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/image.png\" alt=\"\" class=\"wp-image-699\" srcset=\"https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/image.png 889w, https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/image-300x255.png 300w, https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/image-768x653.png 768w\" sizes=\"auto, (max-width: 889px) 100vw, 889px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">How Scoring Works<\/h2>\n\n\n\n<p>The impact of an object decreases as the distance from it increases. A supermarket across the street should contribute more than one near the outer edge of its radius.<\/p>\n\n\n\n<p>The current model uses a distance-decay formula:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>impact = weight \u00d7 (1 - distance \/ radius)\u00b2<\/code><\/pre>\n\n\n\n<p>An object is ignored when the selected point falls outside its configured radius.<\/p>\n\n\n\n<p>I also added a contribution limit for each category. Without it, a central district containing 20 pharmacies or shops could receive an absurd score simply because many similar objects are concentrated there.<\/p>\n\n\n\n<p>The category cap creates diminishing practical value. Having a second nearby supermarket is useful. Having a fifteenth does not make a location fifteen times better.<\/p>\n\n\n\n<p>The model currently includes categories such as:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>supermarkets;<\/li>\n\n\n\n<li>schools and kindergartens;<\/li>\n\n\n\n<li>parks and recreation areas;<\/li>\n\n\n\n<li>hospitals and pharmacies;<\/li>\n\n\n\n<li>public transport;<\/li>\n\n\n\n<li>railway stations;<\/li>\n\n\n\n<li>industrial zones;<\/li>\n\n\n\n<li>bodies of water;<\/li>\n\n\n\n<li>distance from the selected city center.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"294\" height=\"608\" src=\"https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/image-2.png\" alt=\"\" class=\"wp-image-701\" srcset=\"https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/image-2.png 294w, https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/image-2-145x300.png 145w\" sizes=\"auto, (max-width: 294px) 100vw, 294px\" \/><\/figure>\n\n\n\n<p>Every weight and radius can be edited through the interface. This is useful because the initial values are assumptions, not universal truths.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The MVP Architecture<\/h2>\n\n\n\n<p>The frontend is built with React, TypeScript, and MapLibre. The backend is a Node.js and TypeScript API. PostgreSQL 16 with PostGIS stores geographic objects and performs distance calculations. Everything runs locally through Docker Compose.<\/p>\n\n\n\n<p>OpenStreetMap provides the underlying infrastructure data. The application imports it through the Overpass API and stores it locally in PostGIS.<\/p>\n\n\n\n<p>This avoids requesting external data every time someone clicks the map. Once a city has been imported, scoring queries run against the local database.<\/p>\n\n\n\n<p>The import supports different types of OpenStreetMap objects, normalizes them into the application\u2019s categories, prevents duplicates, and stores the original tags for future use.<\/p>\n\n\n\n<p>When a user clicks the map, the backend finds relevant objects inside their configured radiuses, calculates the individual contributions, applies category caps, and returns both the final score and a detailed breakdown.<\/p>\n\n\n\n<p>The explanation is an essential feature. Instead of showing only \u201cLocation Score: 112,\u201d the interface can explain that parks added points, supermarkets contributed another amount, and an industrial zone reduced the result.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"574\" src=\"https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/image-1-1024x574.png\" alt=\"\" class=\"wp-image-700\" srcset=\"https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/image-1-1024x574.png 1024w, https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/image-1-300x168.png 300w, https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/image-1-768x430.png 768w, https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/image-1-1536x860.png 1536w, https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/image-1.png 1553w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">What Works Today<\/h2>\n\n\n\n<p>The current MVP can:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>search for and select a city;<\/li>\n\n\n\n<li>import public infrastructure data from OpenStreetMap;<\/li>\n\n\n\n<li>store imported objects locally;<\/li>\n\n\n\n<li>enable or disable infrastructure categories;<\/li>\n\n\n\n<li>change weights, radiuses, limits, and colors;<\/li>\n\n\n\n<li>display points of interest and their influence zones;<\/li>\n\n\n\n<li>calculate a score for any clicked location;<\/li>\n\n\n\n<li>show the contribution of individual objects;<\/li>\n\n\n\n<li>preserve evaluated points on the map;<\/li>\n\n\n\n<li>display each score directly inside its marker;<\/li>\n\n\n\n<li>color markers from red through yellow and light green to green;<\/li>\n\n\n\n<li>generate 100 random evaluations inside the current map view.<\/li>\n<\/ul>\n\n\n\n<p>The random evaluation feature is especially useful. It creates a rough sample of the visible territory and reveals patterns that are difficult to notice by clicking points individually.<\/p>\n\n\n\n<p>Dense central districts often become greener. Peripheral locations may shift toward yellow or red. Transport corridors, recreational areas, and infrastructure gaps become visible.<\/p>\n\n\n\n<p>It is not yet a continuous heatmap, but it already makes the internal structure of a city easier to read.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Testing Against Reality<\/h2>\n\n\n\n<p>I sent screenshots from several cities to friends and clients. Their feedback was mixed in exactly the way useful early feedback should be.<\/p>\n\n\n\n<p>Some parts of the scoring looked correct. Other parts clearly did not match their knowledge of the city.<\/p>\n\n\n\n<p>This does not necessarily mean the implementation is broken. It means the model is incomplete.<\/p>\n\n\n\n<p>A scoring model does not discover objective truth. It applies selected assumptions consistently. If an important part of urban life is absent from the data or formula, the score will reflect that absence.<\/p>\n\n\n\n<p>The current version cannot claim to measure the complete investment attractiveness of a district. It does not yet understand building quality, actual property prices, pedestrian comfort, traffic by time of day, noise, air pollution, crime, planned construction, school quality, or local demand.<\/p>\n\n\n\n<p>But it can still show how developed a city is, where services are concentrated, and which districts have stronger access to everyday infrastructure.<\/p>\n\n\n\n<p>That makes it a useful information layer, even before it becomes a reliable valuation model.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">My Apartment Scored Poorly<\/h2>\n\n\n\n<p>The most personally inconvenient result is that my mortgaged apartment receives a score of roughly 100\u2013110.<\/p>\n\n\n\n<p>My first instinct, naturally, was to adjust the model until my property became green. That would be excellent for morale and terrible for product credibility.<\/p>\n\n\n\n<p>Instead, the result exposed an important missing factor: the MVP does not yet properly account for residential development.<\/p>\n\n\n\n<p>A large residential district can contain thousands of apartments, internal courtyards, playgrounds, pedestrian connections, and small local services. If those objects are poorly represented in OpenStreetMap, the district can appear emptier than it really is.<\/p>\n\n\n\n<p>Residential density also changes the meaning of infrastructure. One supermarket serving 200 homes is different from one serving 5,000. A district can have many buildings but insufficient infrastructure for the number of residents.<\/p>\n\n\n\n<p>Future scoring should therefore consider:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>residential building footprints;<\/li>\n\n\n\n<li>estimated number of apartments or residents;<\/li>\n\n\n\n<li>population density;<\/li>\n\n\n\n<li>infrastructure per resident;<\/li>\n\n\n\n<li>connectivity between residential clusters and services;<\/li>\n\n\n\n<li>development maturity of new housing districts.<\/li>\n<\/ul>\n\n\n\n<p>This is why building the visual MVP was valuable. A missing factor that seemed abstract became obvious as soon as the map produced a result I could compare with everyday experience.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"501\" src=\"https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/image-3-1024x501.png\" alt=\"\" class=\"wp-image-702\" srcset=\"https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/image-3-1024x501.png 1024w, https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/image-3-300x147.png 300w, https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/image-3-768x375.png 768w, https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/image-3.png 1522w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">A Relocation Decision Layer<\/h2>\n\n\n\n<p>I have changed cities several times, and this may be the strongest consumer use case.<\/p>\n\n\n\n<p>Choosing an apartment in an unfamiliar city is difficult because property platforms mainly show the property itself. They tell you the number of rooms, show wide-angle photographs, and describe the location as convenient. They rarely explain what daily life around that address will actually feel like.<\/p>\n\n\n\n<p>A Location Score layer inside Airbnb, Idealista, or another rental platform could make comparison much easier.<\/p>\n\n\n\n<p>Two apartments can have similar prices and interiors but completely different surroundings. One may be excellent for tourism and inconvenient for a family. Another may look far from the historic center but offer better access to schools, supermarkets, parks, and practical transport.<\/p>\n\n\n\n<p>A low score is not automatically bad. It may indicate a quiet residential or low-density district. Some users would deliberately choose that environment.<\/p>\n\n\n\n<p>The more useful version of the product would allow different scoring profiles:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>family;<\/li>\n\n\n\n<li>tourist;<\/li>\n\n\n\n<li>remote worker;<\/li>\n\n\n\n<li>student;<\/li>\n\n\n\n<li>investor;<\/li>\n\n\n\n<li>retiree;<\/li>\n\n\n\n<li>car-free resident.<\/li>\n<\/ul>\n\n\n\n<p>The same location could then receive different results depending on the user\u2019s actual priorities.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Could Realtors Use It?<\/h2>\n\n\n\n<p>For real-estate agents, the map could provide a more structured way to describe location quality.<\/p>\n\n\n\n<p>Instead of saying that a property is in a \u201cgood district,\u201d an agent could show its access to transport, education, retail, healthcare, parks, and negative infrastructure.<\/p>\n\n\n\n<p>The score might also become one coefficient inside a larger property valuation model.<\/p>\n\n\n\n<p>That would require calibration against real listing or transaction data. The system would need to test whether higher infrastructure scores correlate with higher prices and how those relationships differ between cities.<\/p>\n\n\n\n<p>The effect of an object may also be nonlinear. A school 700 meters away may be attractive to a family. The same school directly outside the window may introduce noise and traffic. A railway station can be valuable at one distance and undesirable at another.<\/p>\n\n\n\n<p>Real urban value is made of curves and trade-offs, not simple positive and negative switches.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Patent Thought<\/h2>\n\n\n\n<p>My first reaction after seeing the application work was to think about patenting it and selling licenses to Idealista, Airbnb, and similar platforms.<\/p>\n\n\n\n<p>That is an entertaining idea, but probably not the right starting strategy.<\/p>\n\n\n\n<p>The general concept of scoring locations using nearby amenities is not a defensible product by itself. Major property platforms already work with geographic data and recommendation systems.<\/p>\n\n\n\n<p>The defensible layer would have to come from execution:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>better normalized data;<\/li>\n\n\n\n<li>statistically calibrated scoring;<\/li>\n\n\n\n<li>historical infrastructure changes;<\/li>\n\n\n\n<li>specialized user profiles;<\/li>\n\n\n\n<li>useful integrations;<\/li>\n\n\n\n<li>transparent explanations;<\/li>\n\n\n\n<li>proprietary property or demand data;<\/li>\n\n\n\n<li>a workflow people repeatedly use.<\/li>\n<\/ul>\n\n\n\n<p>I also considered publishing a LinkedIn post, tagging large property platforms, and using the project primarily to demonstrate my expertise.<\/p>\n\n\n\n<p>That might still happen. But my larger goal is to share ideas while building a collection of small digital assets: tools, SaaS products, bots, and microservices that can be tested without pretending that every prototype is already a company.<\/p>\n\n\n\n<p>So the idea and current progress are public.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Can Public Data Become a Product?<\/h2>\n\n\n\n<p>Most of the current inputs come from public sources, which raises an obvious question: how deeply can this be commercialized?<\/p>\n\n\n\n<p>Publicly accessible data is not the same as unrestricted data. Every source has its own license, attribution requirements, technical limits, and quality problems.<\/p>\n\n\n\n<p>More importantly, raw public data is rarely a strong product advantage. Anyone else can theoretically retrieve the same schools, supermarkets, and parks.<\/p>\n\n\n\n<p>Commercial value would need to come from what happens after collection:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>cleaning and normalization;<\/li>\n\n\n\n<li>reliable updates;<\/li>\n\n\n\n<li>combining several datasets;<\/li>\n\n\n\n<li>scoring and calibration;<\/li>\n\n\n\n<li>comparisons between properties;<\/li>\n\n\n\n<li>downloadable reports;<\/li>\n\n\n\n<li>embedded map layers;<\/li>\n\n\n\n<li>API access;<\/li>\n\n\n\n<li>workflow integrations for agents or platforms.<\/li>\n<\/ul>\n\n\n\n<p>Possible models include paid reports for buyers, subscriptions for realtors, white-label maps for agencies, API access for rental products, or lead generation for property services.<\/p>\n\n\n\n<p>Before choosing one, the project needs evidence of repeated use. The important signal is not whether someone clicks their home once out of curiosity. It is whether a person comparing rentals evaluates ten addresses, returns later, changes scoring preferences, or shares a report with an agent or family member.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What I Would Build Next<\/h2>\n\n\n\n<p>The next steps should improve decision quality rather than add decorative features.<\/p>\n\n\n\n<p>My current priority list is:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Add residential buildings and housing-density factors.<\/li>\n\n\n\n<li>Generate a continuous cached heatmap instead of random samples.<\/li>\n\n\n\n<li>Measure walking time, not only straight-line distance.<\/li>\n\n\n\n<li>Add profile-based weights for different user types.<\/li>\n\n\n\n<li>Let users compare several selected addresses side by side.<\/li>\n\n\n\n<li>Import property listings for correlation experiments.<\/li>\n\n\n\n<li>Test whether infrastructure scores explain any part of real price differences.<\/li>\n<\/ol>\n\n\n\n<p>Other possible layers include noise, air quality, traffic, terrain, flood exposure, internet availability, and future development plans. Those can wait until the core model becomes more credible.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What This MVP Proved<\/h2>\n\n\n\n<p>Location Magnet Map does not yet know which apartment someone should buy. It does not produce a scientifically validated investment score, and it should not pretend otherwise.<\/p>\n\n\n\n<p>What it proves is narrower and still useful: public city data can be turned into an understandable, interactive layer that helps people inspect urban structure and compare locations.<\/p>\n\n\n\n<p>It also demonstrates the real value of an MVP. The map did not simply confirm the original idea. It revealed missing data, weak assumptions, possible users, and several different product directions.<\/p>\n\n\n\n<p>That is progress.<\/p>\n\n\n\n<p>The next question is not whether more features can be built. They can. The next question is which user would return to this map often enough for it to become a real digital asset rather than an interesting technical experiment.<\/p>\n\n\n\n<p>If you were choosing a home in an unfamiliar city, which three factors should have the greatest influence on its Location Score?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What if every point in a city had a visible infrastructure score? Click on a street, apartment building, or empty&hellip;<\/p>\n","protected":false},"author":1,"featured_media":703,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[878],"tags":[],"class_list":["post-698","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-in-progress-build"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>I Built a Map That Scores City Locations<\/title>\n<meta name=\"description\" content=\"A build-in-public look at Location Magnet Map, an MVP that scores city locations using nearby infrastructure, OpenStreetMap, PostGIS, and configurable weights.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/basein.dev\/blog\/2026\/09\/04\/location-magnet-map-city-location-score\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"I Built a Map That Scores City Locations\" \/>\n<meta property=\"og:description\" content=\"A build-in-public look at Location Magnet Map, an MVP that scores city locations using nearby infrastructure, OpenStreetMap, PostGIS, and configurable weights.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/basein.dev\/blog\/2026\/09\/04\/location-magnet-map-city-location-score\/\" \/>\n<meta property=\"og:site_name\" content=\"Inside the Lab\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-04T17:08:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-04T18:28:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/75211a63-c7a2-41c6-b342-241abe299a96-1024x576.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"576\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Yevhen D.\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Yevhen D.\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/basein.dev\/blog\/2026\/09\/04\/location-magnet-map-city-location-score\/\",\"url\":\"https:\/\/basein.dev\/blog\/2026\/09\/04\/location-magnet-map-city-location-score\/\",\"name\":\"I Built a Map That Scores City Locations\",\"isPartOf\":{\"@id\":\"https:\/\/basein.dev\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/basein.dev\/blog\/2026\/09\/04\/location-magnet-map-city-location-score\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/basein.dev\/blog\/2026\/09\/04\/location-magnet-map-city-location-score\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/75211a63-c7a2-41c6-b342-241abe299a96.png\",\"datePublished\":\"2026-09-04T17:08:24+00:00\",\"dateModified\":\"2026-09-04T18:28:51+00:00\",\"author\":{\"@id\":\"https:\/\/basein.dev\/blog\/#\/schema\/person\/e1073793a1beab22e3970c5639ed44f3\"},\"description\":\"A build-in-public look at Location Magnet Map, an MVP that scores city locations using nearby infrastructure, OpenStreetMap, PostGIS, and configurable weights.\",\"breadcrumb\":{\"@id\":\"https:\/\/basein.dev\/blog\/2026\/09\/04\/location-magnet-map-city-location-score\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/basein.dev\/blog\/2026\/09\/04\/location-magnet-map-city-location-score\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/basein.dev\/blog\/2026\/09\/04\/location-magnet-map-city-location-score\/#primaryimage\",\"url\":\"https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/75211a63-c7a2-41c6-b342-241abe299a96.png\",\"contentUrl\":\"https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/75211a63-c7a2-41c6-b342-241abe299a96.png\",\"width\":1672,\"height\":941,\"caption\":\"I Built a Map That Scores City Locations\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/basein.dev\/blog\/2026\/09\/04\/location-magnet-map-city-location-score\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/basein.dev\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"I Built a Map That Scores City Locations\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/basein.dev\/blog\/#website\",\"url\":\"https:\/\/basein.dev\/blog\/\",\"name\":\"Inside the Lab\",\"description\":\"Experiments, systems, and monetization in motion.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/basein.dev\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/basein.dev\/blog\/#\/schema\/person\/e1073793a1beab22e3970c5639ed44f3\",\"name\":\"Yevhen D.\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/basein.dev\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/basein.dev\/blog\/wp-content\/uploads\/2025\/05\/avatar_user_1_1746891952-96x96.jpeg\",\"contentUrl\":\"https:\/\/basein.dev\/blog\/wp-content\/uploads\/2025\/05\/avatar_user_1_1746891952-96x96.jpeg\",\"caption\":\"Yevhen D.\"},\"description\":\"Business Ideas \u2022 Software ecosystems \u2022 Online business \u2022 Marketplaces \u2022 Digital Products \u2022 Startups \u2022 SaaS Tips for beginners and experienced businessmen. We help in the study of useful and effective tools for online business. Tips and guides for the services you use or would like to use. We are experts in online business, or at least our experience allows us to talk about many interesting things :)\",\"sameAs\":[\"https:\/\/basein.dev\/blog\/\"],\"url\":\"https:\/\/basein.dev\/blog\/author\/shopexpertfy\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"I Built a Map That Scores City Locations","description":"A build-in-public look at Location Magnet Map, an MVP that scores city locations using nearby infrastructure, OpenStreetMap, PostGIS, and configurable weights.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/basein.dev\/blog\/2026\/09\/04\/location-magnet-map-city-location-score\/","og_locale":"en_US","og_type":"article","og_title":"I Built a Map That Scores City Locations","og_description":"A build-in-public look at Location Magnet Map, an MVP that scores city locations using nearby infrastructure, OpenStreetMap, PostGIS, and configurable weights.","og_url":"https:\/\/basein.dev\/blog\/2026\/09\/04\/location-magnet-map-city-location-score\/","og_site_name":"Inside the Lab","article_published_time":"2026-09-04T17:08:24+00:00","article_modified_time":"2026-09-04T18:28:51+00:00","og_image":[{"width":1024,"height":576,"url":"https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/75211a63-c7a2-41c6-b342-241abe299a96-1024x576.png","type":"image\/png"}],"author":"Yevhen D.","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Yevhen D.","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/basein.dev\/blog\/2026\/09\/04\/location-magnet-map-city-location-score\/","url":"https:\/\/basein.dev\/blog\/2026\/09\/04\/location-magnet-map-city-location-score\/","name":"I Built a Map That Scores City Locations","isPartOf":{"@id":"https:\/\/basein.dev\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/basein.dev\/blog\/2026\/09\/04\/location-magnet-map-city-location-score\/#primaryimage"},"image":{"@id":"https:\/\/basein.dev\/blog\/2026\/09\/04\/location-magnet-map-city-location-score\/#primaryimage"},"thumbnailUrl":"https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/75211a63-c7a2-41c6-b342-241abe299a96.png","datePublished":"2026-09-04T17:08:24+00:00","dateModified":"2026-09-04T18:28:51+00:00","author":{"@id":"https:\/\/basein.dev\/blog\/#\/schema\/person\/e1073793a1beab22e3970c5639ed44f3"},"description":"A build-in-public look at Location Magnet Map, an MVP that scores city locations using nearby infrastructure, OpenStreetMap, PostGIS, and configurable weights.","breadcrumb":{"@id":"https:\/\/basein.dev\/blog\/2026\/09\/04\/location-magnet-map-city-location-score\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/basein.dev\/blog\/2026\/09\/04\/location-magnet-map-city-location-score\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/basein.dev\/blog\/2026\/09\/04\/location-magnet-map-city-location-score\/#primaryimage","url":"https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/75211a63-c7a2-41c6-b342-241abe299a96.png","contentUrl":"https:\/\/basein.dev\/blog\/wp-content\/uploads\/2026\/09\/75211a63-c7a2-41c6-b342-241abe299a96.png","width":1672,"height":941,"caption":"I Built a Map That Scores City Locations"},{"@type":"BreadcrumbList","@id":"https:\/\/basein.dev\/blog\/2026\/09\/04\/location-magnet-map-city-location-score\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/basein.dev\/blog\/"},{"@type":"ListItem","position":2,"name":"I Built a Map That Scores City Locations"}]},{"@type":"WebSite","@id":"https:\/\/basein.dev\/blog\/#website","url":"https:\/\/basein.dev\/blog\/","name":"Inside the Lab","description":"Experiments, systems, and monetization in motion.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/basein.dev\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/basein.dev\/blog\/#\/schema\/person\/e1073793a1beab22e3970c5639ed44f3","name":"Yevhen D.","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/basein.dev\/blog\/#\/schema\/person\/image\/","url":"https:\/\/basein.dev\/blog\/wp-content\/uploads\/2025\/05\/avatar_user_1_1746891952-96x96.jpeg","contentUrl":"https:\/\/basein.dev\/blog\/wp-content\/uploads\/2025\/05\/avatar_user_1_1746891952-96x96.jpeg","caption":"Yevhen D."},"description":"Business Ideas \u2022 Software ecosystems \u2022 Online business \u2022 Marketplaces \u2022 Digital Products \u2022 Startups \u2022 SaaS Tips for beginners and experienced businessmen. We help in the study of useful and effective tools for online business. Tips and guides for the services you use or would like to use. We are experts in online business, or at least our experience allows us to talk about many interesting things :)","sameAs":["https:\/\/basein.dev\/blog\/"],"url":"https:\/\/basein.dev\/blog\/author\/shopexpertfy\/"}]}},"_links":{"self":[{"href":"https:\/\/basein.dev\/blog\/wp-json\/wp\/v2\/posts\/698","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/basein.dev\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/basein.dev\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/basein.dev\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/basein.dev\/blog\/wp-json\/wp\/v2\/comments?post=698"}],"version-history":[{"count":1,"href":"https:\/\/basein.dev\/blog\/wp-json\/wp\/v2\/posts\/698\/revisions"}],"predecessor-version":[{"id":704,"href":"https:\/\/basein.dev\/blog\/wp-json\/wp\/v2\/posts\/698\/revisions\/704"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/basein.dev\/blog\/wp-json\/wp\/v2\/media\/703"}],"wp:attachment":[{"href":"https:\/\/basein.dev\/blog\/wp-json\/wp\/v2\/media?parent=698"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/basein.dev\/blog\/wp-json\/wp\/v2\/categories?post=698"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/basein.dev\/blog\/wp-json\/wp\/v2\/tags?post=698"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}