Data Room
Documents
The Key
Our Team
Postcode Search
Catchment
Radius Layers
Key Workers
Pipeline
Employer locations approximate. Radius circles for planning purposes only.
Administration
Authorised access only
Access is restricted to authorised parties only.
The Opportunity Map quantifies the volume and proximity of key workers near each pipeline site by combining four data sources: ONS Census 2011 WP606EW (key-worker counts by occupation, at Workplace-Zone resolution — the headline count), OpenStreetMap (live facility locations), ONS BRES 2024 (MSOA-level employment, used for the pay/affordability model), and ONS ASHE 2024 (London pay distribution benchmarks). It answers the question: how many key workers work within walking distance of this development?
Clicking a site marker or submitting a postcode sums the key workers in every Workplace Zone inside the 1-mile circle, and fires a live Overpass API query for facility locations. The full pipeline runs client-side; no data leaves the browser except for the Overpass and postcodes.io API calls described below.
The headline "Key Workers Within 1 Mile" figure uses the same source as the KEY MASTER MODEL — ONS Census 2011 table WP606EW (Occupation, Minor groups, Workplace population) — summing a fixed set of 22 key-worker SOC minor groups across the model's eight categories (Health & social care, Education & childcare, Transport, Public safety, National & local government, Key public services, Food & necessary goods, Utilities & communication).
The difference from the master model is geography, not definition. The model sums whole MSOAs (≈5,000 employed each) chosen by hand; this map sums Workplace Zones — ONS's purpose-built micro-geography averaging ~325 workers, roughly ten per MSOA — whose ONS population-weighted centroid falls inside the 1-mile (1.609 km) circle. No manual MSOA list is required, and the catchment follows the actual circle rather than whole administrative areas.
Why this is more accurate (and verified). Summing the Workplace Zones inside the model's seven Twyford MSOAs reproduces the model's key-worker totals to the worker (13,676), confirming identical source data. But of those 13,676, only 9,029 actually fall within one mile — the model's whole-MSOA figure reaches ~1.33 miles and over-counts the true 1-mile catchment by +51%. Because Workplace Zones are ~10× finer, the boundary error is roughly an order of magnitude smaller. The same over-counting affects the previous MSOA-centroid method (between +16% and +253% across the seed sites), which is why the headline now uses Workplace Zones. The coverage is Greater London; out-of-London searches fall back to the BRES MSOA method.
Temporary — Excel parity mode is ON. While the Excel master models still use hand-picked whole MSOAs, the headline count mirrors the Excel exactly so the website and the models can be compared number-for-number: near a modelled scheme the model's own MSOA list is used (Twyford Abbey = 13,676; Enfield Elements = 9,996), elsewhere whole MSOAs are counted 100% each. The Workplace-Zone method above remains in the codebase and will be restored (flag MASTER_MODEL_PARITY) once the Excel models adopt it.
Seven seed sites are plotted. Twyford Abbey is the live benchmark (gold marker); the remaining six are pipeline candidates (blue markers). Seed coordinates and home counts are hard-coded in the application source (oppSchemes array); user-added sites (green markers) are stored separately and can be edited or removed.
| Site | Area | Developer | Homes | Fit Score | Coords (lat, lng) |
|---|---|---|---|---|---|
| Twyford Abbey Benchmark | W3 | Dukelease | 150 | — | 51.5349, −0.2855 |
| Brent Cross Town | NW4 | Related Argent | 214 | 9.5 | 51.5763, −0.2219 |
| White City Living | W12 | Berkeley Group | 240 | 9.5 | 51.5100, −0.2249 |
| TwelveTrees Park | E15 | Berkeley Group | 294 | 9.2 | 51.5136, 0.0007 |
| Greenwich Peninsula | SE10 | Knight Dragon | 433 | 8.8 | 51.4989, 0.0046 |
| Canada Water | SE16 | British Land | 200 | 8.5 | 51.4983, −0.0505 |
| Silvertown | E16 | Lendlease | 189 | 8.5 | 51.5040, 0.0249 |
Site boundary polygons (for the shaded overlay on the map) are defined as axis-aligned bounding rectangles. They are visual guides only and do not affect any numerical calculation.
When a site or postcode is selected, the map issues a single Overpass QL query to https://overpass-api.de/api/interpreter via HTTP POST. The query requests all node and way elements within a 1,609 m (1 mile) radius of the selected coordinates. The server-side timeout is set to 50 seconds; a client-side AbortController fires after 55 seconds — ensuring the client always times out after the server, never before. On any network or server failure the request is retried automatically once after a 2-second delay. Results are returned as GeoJSON-like elements and plotted as coloured markers on the map.
Exact OSM tags queried per category:
Healthcare
amenity=hospital
amenity=clinic
amenity=doctors
amenity=dentist
amenity=pharmacy
healthcare=centre|clinic|health_centre|midwife|optometrist|physiotherapist
emergency=ambulance_station
Education
amenity=school
amenity=kindergarten
amenity=childcare
amenity=university
amenity=college
Social Care
amenity=nursing_home
amenity=care_home
social_facility=nursing_home|assisted_living|group_home|residential_home|day_centre|hospice|sheltered_housing|supported_housing
healthcare=hospice
Council & Government
amenity=townhall
amenity=library
amenity=courthouse
office=government|council|public
office=jobcentre
amenity=recycling|waste_transfer_station
Police & Fire
amenity=police
amenity=fire_station
Essential Retail & Post
shop=supermarket
amenity=post_office
Transport
railway=station
railway=depot
amenity=bus_station
amenity=bus_depot
For way elements (polygon features) the Overpass query appends out center tags — the API returns the polygon's centroid as a point coordinate, which is used for map placement. Duplicate deduplication (e.g. a hospital tagged as both amenity=hospital and healthcare=centre) is handled by OSM element ID: each unique node/way ID is counted once.
Note: BRES is now a fallback only. The headline key-worker count uses Census WP606EW (currently over whole MSOAs while Excel parity mode is on — see the note above; otherwise at Workplace-Zone level), and the pay/affordability model uses the master model's income method — the key-worker job mix distributed across income deciles by occupation, priced on the ASHE area deciles (Inner London, or the master model's own area choice near a modelled scheme). BRES drives the count and pay split only where Census WP606EW data is unavailable.
OSM counts buildings, not workers. To derive headcount the map cross-references the ONS Business Register and Employment Survey (BRES) 2024 — the definitive annual UK sub-regional employment dataset (reference period: September 2023, published ONS 2024). BRES data is pre-loaded at MSOA (Middle Super Output Area) level from a static file served with the application at /data/bres-msoa-2024.json. MSOA centroid coordinates are loaded from /data/msoa-centroids.json.
Geocoding step. When a postcode is entered, the coordinates are resolved by the postcodes.io public API (https://api.postcodes.io/postcodes/{postcode}). The API response includes the MSOA code (e.g. E02000062) which is used directly for the BRES lookup. For pre-set site markers the MSOA is resolved from coordinates via the same API.
MSOA distance weighting. Each MSOA centroid is compared against the selected location using the Haversine formula (Earth radius R = 6,371 km). The weighted job contribution is:
| Zone | Distance from site | Weight applied to BRES jobs |
|---|---|---|
| Core | ≤ 1.609 km (1 mile) | 100 % |
| Edge | > 1.609 km and ≤ 2.5 km | 50 % |
| Excluded | > 2.5 km | 0 % |
The 50 % edge weight accounts for MSOAs that straddle the 1-mile boundary — their centroid lies outside the radius but a material portion of their area (and workforce) falls within walking distance of the site.
BRES array index mapping. Each MSOA record in the JSON file contains an array of nine employment counts indexed as follows. These indices are fixed in the source data and must not be reordered:
| Index | SIC Sector | Mapped to display category |
|---|---|---|
| [0] | Education (SIC P) | Education |
| [1] | Human Health Activities (SIC Q86) | Healthcare (combined with [2]) |
| [2] | Residential Care (SIC Q87) | Healthcare (combined with [1]) |
| [3] | Social Work Without Accommodation (SIC Q88) | Social Care |
| [4] | Transport & Storage (SIC H) excl. postal | Transport (combined with [5] & [6]) |
| [5] | Warehousing & Support for Transport (SIC H52) | Transport (combined with [4] & [6]) |
| [6] | Postal & Courier Activities (SIC H53) | Transport (combined with [4] & [5]) |
| [7] | Retail Trade (SIC G47) | Retail & Post |
| [8] | Public Administration & Defence (SIC O) | Public Admin |
If the MSOA lookup fails (e.g. postcodes.io returns no match, or the MSOA code is absent from the pre-loaded BRES file), the map falls back to staffing estimates derived from OSM facility type and typical headcount. Fallback figures are labelled Est. Jobs in the results panel; ONS-sourced figures are labelled Jobs (ONS).
Police & Fire attribution. Police activities (SIC O84.24) and fire service activities (SIC O84.25) are sub-divisions of SIC O and are therefore included within the Public Administration & Defence BRES total (index [8]). In the results table the Police & Fire row shows OSM facility counts only — the associated jobs are not broken out separately and instead form part of the Public Admin figure, which is noted inline.
Retail coverage. BRES index [7] covers all of SIC G47 (Retail Trade), not just supermarkets and post offices. The retail job figure includes clothing, electronics, and other non-essential categories alongside essential retail workers. This category should be treated as a generous upper bound on essential retail and postal key workers.
The Pipeline list in the sidebar shows every site plotted on the map — the live Benchmark (Twyford Abbey), the seed pipeline schemes, and any sites added by users. Each entry links to that site's key-worker breakdown.
Sites are ordered with seed pipeline schemes first, user-added sites next, and the live Benchmark last. The key-worker density, sector diversity, and development scale of each site can be assessed directly from its results panel (ONS BRES jobs within 1 mile, sector breakdown, and capture rate).
Adding & editing sites. Search a postcode or address and click Add as a site to plot it on the map under your ownership. Existing sites can be edited (name, area, homes, developer) from their results panel; the owner of an added site, or any admin, may edit it.
The Capture Rate expresses the development's homes as a fraction of the total key-worker job count within 1 mile:
Capture Rate = (Homes ÷ Key Worker Jobs) × 100 %
Internally the map calculates the inverse ratio (jobs per home) and applies the following sentiment thresholds:
| Jobs-per-home ratio | Equivalent capture rate | Sentiment label |
|---|---|---|
| ≥ 20 : 1 | ≤ 5 % | Exceptionally low — strong latent demand |
| 10 – 19 : 1 | 5 – 10 % | Low — healthy demand buffer |
| 5 – 9 : 1 | 11 – 20 % | Moderate |
| < 5 : 1 | > 20 % | High — market sensitive |
All current pipeline sites fall in the Exceptionally low or Low bands, reflecting significant unmet demand relative to supply in each target area.
Affordability formula. The map uses the same formula as The Key Financial Model: affordable monthly rent = 2 × grossToNet(income) ÷ 12 × 33%. This models a two-person household where both partners work full-time, spending 33% of their combined net income on rent. Net income uses UK 2024/25 tax and NI rates: personal allowance £12,570; basic rate income tax 20% on the next £37,700; higher rate 40% above £50,270; NI at 8% on £12,570–£50,270 and 2% above.
Market rent threshold: £2,071/month. The eligibility threshold is the London market rent benchmark of £2,071/month (from The Key Financial Model). Workers whose household cannot afford this amount are counted as "cannot afford market rent" — the target demographic for The Key's near-market product. This is a more precise threshold than the ONS lower-quartile rent (£1,500/month), which understates true market pressure on middle-income households. The Key targets approximately 95% of market rent (% MMr), making the product accessible to households in the £30k–£50k individual income range.
Income by decile, following the master model. Rather than assigning each sector a fixed pay curve, the map now prices every key worker on the ASHE Inner London income deciles — the same basis as the KEY MASTER MODEL — derived via the percentile→decile method documented in the model's ASHE, Income Percentiles and Income Data tabs (ASHE weekly-earnings percentile points × a HMRC SPI percentile-to-decile conversion × an ONS EARN01 wage-inflation uplift, annualised). The corrected Inner London decile gross incomes are:
| Inner London | D1 | D2 | D3 | D4 | D5 | D6 | D7 | D8 | D9 | D10 |
|---|---|---|---|---|---|---|---|---|---|---|
| Gross p.a. | £30k | £36k | £42k | £48k | £55k | £63k | £73k | £86k | £95k | £150k |
Workers per decile come from the job mix, not a flat 10%. The number of key workers in each decile is set by the site's WP606EW occupation mix within one mile, distributed across deciles using the master model's per-category decile profiles. Lower-paid categories (caring, retail, cleaning) weight toward the bottom deciles; professional categories (health, education, IT) toward the top. The "By sector" toggle shows each of the eight key-worker categories distributed across the absolute income bands.
"Cannot afford market rent" headline figure. The count of workers whose 2-FTE household affordable rent (33% of combined net income) falls below the £2,071/month market rent benchmark — evaluated per decile and summed. Because Inner London full-time pay floors at ~£30k (ASHE p10), a two-full-time-earner household clears the market-rent bar from roughly the fourth decile up; unmet demand therefore concentrates in the lowest deciles. This directly replicates the demand-side methodology of The Key Financial Model.
When BRES data is unavailable, the results panel displays a salary reference table sourced from NHS Agenda for Change pay scales (2024/25), DfE teacher pay ranges, TfL / LUL pay agreements, and sector surveys. These figures are for reference only and are not used in any quantitative calculation:
| Healthcare & Pharmacy | |
| NHS Support Worker (AfC Band 2–4) | £22,383 – £27,596 |
| NHS Nurse / Allied Health (Band 5–6) | £28,407 – £42,618 |
| NHS Senior Clinician / Ward Manager (Band 7–8a) | £43,742 – £57,349 |
| NHS Consultant / Medical Officer | £93,666 – £126,281 |
| Community Pharmacist | £35,000 – £55,000 |
| Schools & Childcare | |
| Nursery / Childcare Worker | £17,500 – £23,000 |
| Teaching Assistant | £18,000 – £25,000 |
| Teacher — Main Pay Range | £31,650 – £49,084 |
| Headteacher / Leadership | £54,643 – £133,653 |
| Essential Retail & Postal | |
| Supermarket Customer Assistant | £21,000 – £24,500 |
| Supermarket Delivery Driver | £24,000 – £32,000 |
| Store / Depot Manager | £35,000 – £65,000 |
| Postal Worker / Sorter | £22,000 – £28,000 |
| Royal Mail Delivery Driver | £24,000 – £30,000 |
| Social Care | |
| Care Assistant / Support Worker | £18,000 – £24,000 |
| Senior Carer / Team Leader | £22,000 – £28,000 |
| Registered Nurse (Care Home) | £28,000 – £40,000 |
| Social Worker | £30,000 – £45,000 |
| Transport & Logistics | |
| Bus Driver (TfL / franchise) | £27,000 – £38,000 |
| Tube Driver (LUL) | £50,000 – £60,000 |
| Rail / Station Supervisor | £28,000 – £38,000 |
| HGV / Logistics Driver | £27,000 – £38,000 |
| Police, Fire & Council | |
| Police Constable (Met) | £27,716 – £37,645 |
| Police Sergeant | £40,128 – £45,528 |
| Firefighter (LFB) | £26,524 – £37,056 |
| Refuse Collector / Bin Worker | £22,000 – £28,000 |
| Council Officer (Grades 1–6) | £20,441 – £30,473 |
| Council Senior Officer (Grade 7+) | £30,559 – £43,735+ |
OSM is community-maintained. Facility counts may be incomplete for smaller, newer, or privately operated sites. The map is an accurate floor estimate for London (OSM coverage is high) but treat it as a minimum, not an exhaustive census.
BRES counts all employees in each SIC division, not only key workers. The Healthcare (SIC Q86/87) and Education (SIC P) categories align closely with key-worker definitions. Public Administration (SIC O) and Retail (SIC G47) include a wider range of roles. Job totals represent a key-worker-adjacent workforce rather than a formally certified key-worker count.
MSOA centroid approximation. The weighting model uses the centroid of each MSOA polygon, not every individual address within it. MSOAs straddling the 1.609 km boundary are either fully included (100 %) or half-weighted (50 %) depending on centroid position. The resulting margin of error is typically ±5–10 % of the weighted total.
Pay decile distribution is modelled, not measured. Decile mean values are interpolated from published ASHE quartile anchors using a log-normal distribution. Actual within-decile earnings will vary; the chart illustrates income range and housing affordability context across the workforce, not individual salary predictions.
Data currency. BRES figures reference September 2023 (published 2024). ASHE figures reference April 2024. OSM data is live at query time. Fit Scores and site home counts reflect the pipeline as of the date this dataroom was last updated.
No double-counting guard for Overpass. OSM elements tagged with multiple matching keys (e.g. a hospital tagged with both amenity=hospital and healthcare=centre) may be returned by multiple Overpass statement lines. The application deduplicates by OSM element ID, so each physical facility is counted once.
BRES retail (SIC G47) covers all retail trade, not just essential retail. The Retail & Post job figure includes employees in clothing shops, electronics stores, furniture retailers and other non-essential categories alongside supermarket and post office staff. Without a sub-sector BRES breakdown this category should be treated as a generous upper bound on essential retail key workers.
Police and fire workers are not broken out as a separate BRES category. They are included within Public Administration & Defence (SIC O — sub-divisions O84.24 police and O84.25 fire) alongside council and civil service roles. The results table shows police station and fire station site counts from OSM, but the associated workforce is captured within the Public Admin job total and labelled accordingly.