LAIT - Local Area Intelligence Tool

Inspiration

Moving to a new area is one of the most important decisions you'll make with the least amount of useful information. You get a postcode and a Rightmove link, and somehow you're meant to figure out whether you'll actually like living there.

Is the commute bearable? Is it safe? Are there places to eat, exercise, decompress? Will it price you out in three years?

The data to answer all of this exists - scattered across Land Registry records, OpenStreetMap, police.uk, and academic research. But nobody had stitched it together into something you could actually use in the ten minutes before submitting a rental application.

That's the gap LAIT fills.


What It Does

LAIT is a real-time neighbourhood intelligence dashboard for UK postcodes. Type in a postcode (full or district-level) and within seconds you get:

  • Area Scores for Safety, Transport, and Lifestyle, each backed by live data from OpenStreetMap and police.uk
  • Interactive Map with toggleable layers for amenities, transport, crime, gentrification signals, and green space
  • Vibe Search - type something like "good coffee and a park for my dog" and LAIT uses an LLM to translate that into precise map queries, then scores how well the area matches
  • Gentrification Pulse - measures the balance between "lifestyle" amenities (artisan cafés, delis, galleries) and legacy services (bookmakers, charity shops, pawnbrokers) to flag areas in transition
  • Biophilic Restorative Score - a nature-vs-noise index that combines proximity-weighted maths with an AI assessment grounded in environmental psychology
  • Property Finder - direct links to live Rightmove and Zoopla listings, pre-filtered for the area

How We Built It

Stack

  • Next.js 16 (App Router, TypeScript)
  • React-Leaflet for mapping, with custom layer groups per category for instant filter toggling
  • Tailwind v4 + Framer Motion for the UI
  • OpenRouter → NVIDIA Nemotron-3-Nano as the LLM backbone

Data Sources

Source Used For
postcodes.io Geocoding postcodes and outward codes
Overpass API (OpenStreetMap) Amenities, transport, nature features, road types
data.police.uk Street-level crime data
OpenRouter / Nemotron Vibe tag extraction, pivot suggestions, psychological scoring

Scoring

Every score is a deterministic function of real data - no hardcoded city profiles, no vibes-by-default.

Transport and Lifestyle use density-normalised weighted sums. A density factor adjusts for search radius so that district-level queries (3 km) aren't unfairly penalised against postcode-level ones (1 km). The overall score is a weighted average: 35% Safety, 30% Transport, 35% Lifestyle.

Gentrification Index maps a lifestyle-to-legacy amenity ratio through a sigmoid curve. Equal counts score 5.0 (neutral). A 3:1 ratio of lifestyle to legacy services scores around 8.3, flagging active transition. Areas with fewer than 5 total data points get a confidence penalty.

Biophilic Restorative Score works in two stages. First, a mathematical balance score applies proximity decay - nature features within 1 km get full weight, those further out get half. This produces a nature-vs-stressor ratio passed through a sigmoid (balanced area = 5.0). Second, the same feature list goes to the LLM with an Attention Restoration Theory prompt, which returns a psychological assessment score. The final result blends both: 70% maths, 30% AI.

Vibe Score uses a per-tag saturation function. One match for a requested tag is decent, two is good, three or more is full credit. The average across all requested tags gives the final score.

Map Performance

Each marker category (transport, amenities, safety, gentrification, biophilia, vibe) lives in its own persistent layer group. Toggling a filter on or off is a single operation - just adding or removing a layer - with no marker reconstruction. Layers only rebuild when the underlying data changes.


Challenges

Scraping property listings was a dead end. We wanted live listings plotted on the map. Zoopla blocks server-side requests behind Cloudflare challenges. Rightmove's internal API returns data structured for their own rendering pipeline, making coordinates unreliable. We cut the feature and replaced it with a smart search form that pre-filters links to Rightmove and Zoopla using the area's computed scores. Faster to ship, more reliable, and arguably more useful.

Overpass can be slow. The Overpass API is the backbone of several features, but under load the primary mirror times out. We added a mirror fallback list and per-route timeouts to keep the UI responsive. All Overpass results are cached in-memory with a one-hour TTL.

LLM output is unreliable JSON. Nemotron occasionally wraps output in markdown fences, adds commentary before the JSON object, or returns floats as strings. Every AI response goes through a regex extraction layer before parsing, with graceful fallbacks so a bad model response never breaks the UI.


What We Learned

The Biophilic Restorative Score taught us the most. Turning "how restorative is this environment" into a number forces uncomfortable decisions: what counts as nature? How much does a motorway one kilometre away actually affect wellbeing compared to one fifty metres away? We leaned on Attention Restoration Theory as a principled framework rather than inventing our own intuitions, then used the LLM not to replace the maths but to sanity-check it against qualitative reasoning.

We also learned that LLM + structured data beats LLM alone. Vibe Search doesn't ask the model to score the area. It asks the model to translate fuzzy language into precise OSM query terms, then lets deterministic code do the scoring. The model is good at language; it doesn't know whether your street has a bakery. That combination - natural language interpretation feeding live geodata - is the architecture we'd use again.

Built With

Share this project:

Updates