Layout
The Explorer ships with two layouts. The default is integrated; fullscreen is a one-click fallback when you want the original map-first workflow.| Layout | When to use | How to switch |
|---|---|---|
| Integrated (default) | Scoring a specific cell while keeping portfolio and market context visible. | Default on /explore. |
| Fullscreen map | Pure map scanning — wide-area pattern recognition, demos, screenshots. | Click Full map in the top-right of the map, or visit /explore?mode=fullscreen. |
Integrated mode
Three regions, left to right:- Left sidebar — cell-level score breakdown for the currently selected cell. Click a hex on the map to populate it.
- Map — H3 grid, ~1/4 of the viewport width at
lg(420 px),xl(520 px), and2xl(600 px) breakpoints. Resizes automatically when the window or layout changes. - Intelligence Rail — fills the remaining width with metro-level context. Independent of cell selection.
Fullscreen mode
The rail is hidden and the map expands to fill the available space. The left sidebar with the cell breakdown stays visible. This matches the layout from before the integrated view shipped — use it when you just want to scan.Mobile and tablet
Below thelg breakpoint (1024 px) the Intelligence Rail is hidden automatically and the map reverts to a flexible map-first layout. You can still open the cell sidebar by selecting a cell.
Left sidebar
The left sidebar is anchored to the cell you have selected on the map. It surfaces information in priority order, with the highest-signal items pinned above the fold:- Location header — resolved place name and metro for the selected cell.
- Score panel — composite score and the full per-signal breakdown for the cell. This is the canonical drill-in for what does this score mean? Each row in the breakdown’s contribution waterfall is click-through: rows for the eight canonical signal groups (
business_vitality,population_momentum,demographics,economic_strength,development_pipeline,accessibility,safety_environment,amenity_demand) link to the corresponding/signals/[group]detail subpage so you can dig into how that signal is computed without leaving the Explorer. Legacy or composite signal labels that have no detail page render as plain text. Each row also carries a small freshness chip showing how long ago the score was refreshed (for example,2h,3d,5w), color-coded against an SLA (see Score freshness chips below). The score-panel section header carries the same chip beside the title for a glanceable read of the cell’s overall freshness. - Score robustness badge — a one-line “Stable core” / “Ambiguity shell” / “Stable (low)” label that tells you whether the composite score above survives a grid-resolution change. Renders the cell’s consensus class with a percent-agreement score (for example, Stable core · 92% support agreement); hover for the full explanation. Hidden when the cell has not yet been classified.
- Nearby intelligence summary — at-a-glance badges that count the eateries, services, recreation, and retail amenities within the cell’s neighborhood. Renders without a click.
- Crime safety — a one-line safety read for the cell, sourced from the same data that feeds the Safety & Environment signal.
- Nearby POIs — a collapsible accordion of every individual point of interest within range, with photos, distance, type, and an expander for per-POI detail (address, phone, website, Google Maps link).
The Nearby POIs accordion is collapsed by default. POI is a supporting due-diligence detail, not a primary nav element — the Nearby intelligence summary and Crime safety above it carry the headline counts and the safety read without requiring a click. Click the row labelled Nearby POIs (it shows the count, e.g. 15 shown) to expand the full list, and click again to collapse it.
Score freshness chips
Every row of the contribution waterfall carries a small relative-age chip (now, 5m, 2h, 3d, 5w) showing how long ago the cell’s signals were last refreshed. The same chip renders next to the score-panel section header so the freshness picture is readable at a glance, before any drilling.
Chips are color-coded against the score-refresh SLA:
| Tone | Age | Meaning |
|---|---|---|
| Dim | ≤ 72 hours | Fresh. The score reflects the current data window. |
| Amber | 72 – 168 hours (3 – 7 days) | Aging. Refresh is pending; treat the score as directional. |
| Red | > 168 hours (> 1 week) | Stale. The score has missed at least one refresh window — re-score before relying on it. |
All eight signal groups currently share a single refresh snapshot —
score_history updates atomically per cell, so per-row chips on the same cell display the same age. The chips are repeated on every row deliberately: it makes freshness un-missable when scanning the waterfall, and reserves the per-row slot for a future per-signal differential refresh without changing the layout.prime / stale / unscored) is a separate, longer-window annotation and is unchanged. The freshness chips described here are a finer-grained per-refresh indicator, not a replacement for the tier.
Intelligence Rail
The rail surfaces the same data that powers the dashboard, scoped to the metro you’re currently viewing. It refreshes when the page loads. The rail has two modes that flip automatically based on whether a cell is selected on the map:- Metro default — no cell selected. All monitors and alerts in scope. Header subtitle reads
Live signal feed for the current map. - Cell context — a hex is selected. A Selected-cell panel pins to the top of the rail and the Portfolio section filters to the active metro. Header subtitle reads
Cell selected · {METRO} context.
Selected cell
Appears at the top of the rail when a hex is picked on the map. Anchors the rail’s metro context to the active cell with three glanceable visualizations:- Header — location name (or lat/lng), composite score with tier color, and the metro plus a truncated H3 index.
- 90-day trajectory — a compact SVG sparkline of the cell’s composite score over the last 90 days. The stroke is trend-colored: emerald when the score is rising, red when declining, and dim when flat. When the underlying data is a synthetic flat-trend stand-in for a cell with no real history, the line renders dashed at reduced opacity and the label reads
90-day trajectory (estimated)so you can tell estimated lines from real measurements. Hidden when fewer than two snapshots are available. - Signal contribution — a horizontal-bar waterfall of the cell’s eight signal groups, sorted by score so the strongest signals lead. Each bar is tier-colored (the same palette as composite scores) with the rounded score on the right. Groups with confidence below 0.4 render dim with a tooltip that names the underlying coverage gap (for example,
Low confidence (28%) — limited source coverage), so a high score backed by sparse data is visually distinguishable from a confident one.
Metro key stats
A three-up strip of synchronous metro stats that renders without a network round-trip:| Stat | Source |
|---|---|
| Composite | Average of the metro’s eight signals. |
| GDP YoY | Year-over-year GDP growth, color-coded green for positive and red for negative. |
| Top signal | The highest-scoring signal for the metro, surfacing what’s actually strong about it instead of dumping all eight. |
Safety tier distribution
A stacked-bar visualization directly under the key stats showing how the metro’s scored cells distribute across five safety tiers — Prime (≥80), Strong (60–79), Solid (40–59), Watch (20–39), and Elevated (<20). Each segment’s width is proportional to the share of cells in that tier, and the legend below the bar lists exact counts. The view answers “is this metro mostly safe, or mostly elevated?” without leaving the page. The bar is backed byGET /api/metro-tier-distribution and defaults to the safety_environment signal. The same component can render distributions for any signal group (development pipeline, business vitality, composite) by passing a different signal prop — useful when embedding in custom dashboards.
Recent alerts
Score changes on locations in your portfolio over the last scoring window, ordered by recency. Each row links to/monitors for the full history.
Top movers
The four largest absolute score swings from the recent-alerts pool — the locations whose intelligence picture moved most, regardless of direction.Portfolio
Your monitored locations, with their latest score color-coded:- Green — score ≥ 70
- Cyan — score 50–69
- Amber — score < 50
- Dim — no score yet
{N} in {METRO} and the empty state explains why (No monitored locations in {METRO} yet. Click any cell to add one.).
Market Pulse
A snapshot of the focused metro: composite score, population growth, development pipeline, and a short narrative. Click through for the full Pulse page.Recent alerts and Portfolio pull from
/api/alerts/history and /api/monitors — the same endpoints the dashboard uses. If those endpoints are unavailable the rail shows empty states instead of failing the page. The Selected-cell panel, Metro key stats, and Market Pulse render from local data and never make a network call.URL parameters
The Explorer supports deep links via query string. Combine these to land users in a specific view.| Parameter | Values | Description |
|---|---|---|
lat | number | Latitude to center the map on. |
lng | number | Longitude to center the map on. |
mode | fullscreen (omit for integrated) | Force fullscreen layout. |
Deep link to a cell in fullscreen mode
Default integrated layout at the same coordinates
Related
Dashboard
The national overview that feeds into the Explorer.
Scoring conventions
How signals roll up into the cell scores you see in the sidebar.